📄 键盘.lst
字号:
C51 COMPILER V8.05a 键盘 09/21/2008 10:48:04 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 键盘
OBJECT MODULE PLACED IN 键盘.OBJ
COMPILER INVOKED BY: D:\C51v805\C51\BIN\C51.EXE 键盘.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X51.h>
2 #include <1602.c>
3 #include <0832.c>
4 #include <TLV5638.c>
5 unsigned char a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,},da
-ta1[4]={6,7,8,9},c=0x01;
6 unsigned int jianzhi,p=0,num=0,weizhi=0,flog=1;
7 unsigned int b[3];
8 void key(void)
9 {
10 1 unsigned int hengzhi,leizhi=0,n,r=0x01;
11 1
12 1 if(P0_4==0)
13 1 hengzhi=0;
14 1 if(P0_5==0)
15 1 hengzhi=1;
16 1 if(P0_6==0)
17 1 hengzhi=2;
18 1 if(P0_7==0)
19 1 hengzhi=3;
20 1 for(n=0;n<4;n++)
21 1 {
22 2 P0=~(r<<n);
23 2 if((P0_4&&P0_5&&P0_6&&P0_7)!=1)
24 2 {leizhi=n;break;}
25 2 }
26 1
27 1 jianzhi=hengzhi*4+leizhi;
28 1
29 1 }
30 void qujiao(void);
31 void qujiao(void)//取消按键的功能
32 {
33 1 uchar i;
34 1 for(i=0;i<4;i++)
35 1 {b[i]=0x00;}
36 1 p=0;
37 1 weizhi=0;
38 1 }
39
40 void int0() interrupt 1
41 {
42 1 TH0=0x3c;
43 1 TL0=0xb0;
44 1 P3_3=~P3_3;
45 1 }
46
47
48 void qieding(void);
49 void qieding(void)//确定键的功能
50 {
51 1 uchar sum=0,da,da1,da2,da3,da4;
52 1 while(flog)
53 1 {
54 2 sum=b[0]*10+b[1];
C51 COMPILER V8.05a 键盘 09/21/2008 10:48:04 PAGE 2
55 2 da=adc0832(1);
56 2 da2=da/80;
57 2 da3=da/8;
58 2 da1=(da%80)/8;
59 2 wzhilin(0x80|0x00);
60 2 wshuju(lcd3[da2]);
61 2 wzhilin(0x80|0x01);
62 2 wshuju(lcd3[da1]);
63 2 if(sum>da3)
64 2 {
65 3 P2_4=1;
66 3 seta(fastsp,external,12,6.5);
67 3 }
68 2 else if(sum<da3)
69 2 {
70 3 P2_4=0;
71 3 da4=da3-sum;
72 3 if((da4>=30))
73 3 seta(fastsp,external,12,9.0);
74 3 if((da4>=25)&(da4<30))
75 3 seta(fastsp,external,12,8.5);
76 3 if((da4>=20)&(da4<25))
77 3 seta(fastsp,external,12,8.0);
78 3 if((da4>=15)&(da4<20))
79 3 seta(fastsp,external,12,7.5);
80 3 if((da4>=10)&(da4<15))
81 3 seta(fastsp,external,12,7.0);
82 3 if((da4>=5)&(da4<10))
83 3 seta(fastsp,external,12,6.5);
84 3 if(da4<5)
85 3 seta(fastsp,external,12,6.0);
86 3 }
87 2 else if(sum==da3)
88 2 flog=0;
89 2 }
90 1 flog=1;
91 1 wzhilin(0x01);
92 1 Delay1ms(1);
93 1 wzhilin(0xc0|0x07);
94 1 printf ("^-^");
95 1 }
96
97
98 void main(void)
99 {
100 1 uchar k=1;
101 1
102 1 TMOD=0x01;
103 1 TH0=0x3c;
104 1 TL0=0xb0;
105 1 IE=0x82;
106 1 P3_3=0;
107 1
108 1 chushihua();
109 1 Delay1ms(10);
110 1 wzhilin(0x80|0x04);
111 1 printf ("welcome!");
112 1
113 1 while(1)
114 1 {
115 2 P0=0xf0;
116 2 P2_4=0;
C51 COMPILER V8.05a 键盘 09/21/2008 10:48:04 PAGE 3
117 2 jianche:
118 2 while((P0&0xf0)==0xf0)
119 2 {
120 3 ;
121 3 }
122 2 Delay1ms(10);
123 2 if((P0&0xf0)==0xf0)
124 2 goto jianche;
125 2
126 2 key();
127 2 wzhilin(0x80|0x04);
128 2 printf (" ");
129 2
130 2 while((P0&0xf0)!=0xf0)//等待按键放开
131 2 { ;}
132 2 switch(jianzhi)
133 2 {
134 3 case 10:if(k) //灯
135 3 {
136 4 P3_3=1;
137 4 wzhilin(0x80|0x08);
138 4 printf ("open! ");
139 4 k=0;
140 4 TR0=0;
141 4 }
142 3 else
143 3 {
144 4 P3_3=1;
145 4 TR1=1;
146 4 wzhilin(0x80|0x08);
147 4 printf ("flash!");
148 4 k=1;
149 4 }
150 3 break;
151 3 case 11:wzhilin(0x01); //取消
152 3 Delay1ms(10);
153 3 wzhilin(0x80|0x04);
154 3 printf ("welcome!");
155 3 qujiao();
156 3 break;
157 3 case 12:b[p]=jianzhi; //数字
158 3 wzhilin(0xc0|weizhi);
159 3 wshuju(lcd3[jianzhi]);
160 3 weizhi++;
161 3 break;
162 3 case 13:qieding();break; //确定
163 3 default:b[p]=jianzhi;
164 3 wzhilin(0xc0|weizhi);
165 3 wshuju(lcd3[jianzhi]);
166 3 p++;
167 3 weizhi++;
168 3 break;
169 3
170 3 }
171 2
172 2 if(p>=3)
173 2 {
174 3 wzhilin(0xc0|6);
175 3 printf ("error!");
176 3 Delay1ms(500);
177 3 wzhilin(0xc0|6);
178 3 printf (" ");
C51 COMPILER V8.05a 键盘 09/21/2008 10:48:04 PAGE 4
179 3 p=3;
180 3
181 3 }
182 2 }
183 1 }
184
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1554 ----
CONSTANT SIZE = 74 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 43 34
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -