📄 text1.lst
字号:
C51 COMPILER V8.02 TEXT1 01/02/2009 16:32:43 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\KEIL\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X52.H>
2 unsigned char ppa; // ppa,ppb,ppc是1,2,3数码管显示的内容
3 unsigned char ppb;
4 unsigned char ppc;
5 unsigned char code ps[]={1,1,2};
6 unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
7 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
8 unsigned char funcount; //function key累加数
9 unsigned char errorflag; //正确标志
10 unsigned char righitflag; //错误标志
11 int aa; //一般时扫描
12 int bb; //报警时的定时
13 int cc; //开锁时扫描
14 unsigned char digitcount; //data key累加数
15 void main(void)
16 {
17 1 unsigned char i,j;
18 1 funcount=0;
19 1 digitcount=0;
20 1 errorflag=0;
21 1 righitflag=0;
22 1 ppa=0;
23 1 ppb=0;
24 1 ppc=0;
25 1 aa=0;
26 1 bb=0;
27 1 cc=0;
28 1 TMOD=0x01;
29 1 TH0=(65536-1000)/256;
30 1 TL0=(65536-1000)%256;
31 1 TR0=1;
32 1 ET0=1;
33 1 EA=1;
34 1 P2_0=0;
35 1 P3_0=0;
36 1 while(1)
37 1 { if(funcount==0)
38 2 { ppa=digitcount; //data key累加数给ppa
39 3 }
40 2 if(funcount==1)
41 2 { ppb=digitcount; //data key累加数给ppb
42 3 // digitcount=0;
43 3 }
44 2 if(funcount==2)
45 2 { ppc=digitcount; //data key累加数给ppc
46 3 //digitcount=0;
47 3 }
48 2 if(P3_7==0) //data key
49 2 {
50 3 for(i=18;i>0;i--)
51 3 for(j=248;j>0;j--);
52 3 if(P3_7==0)
53 3 {for(i=88;i>0;i--)
54 4 for(j=248;j>0;j--);
55 4 if(P3_7==1)
C51 COMPILER V8.02 TEXT1 01/02/2009 16:32:43 PAGE 2
56 4 if(digitcount==9)
57 4 {
58 5 digitcount=0;
59 5 }
60 4 else digitcount++; // data key累加
61 4
62 4 }
63 3 }
64 2
65 2 if(P3_6==0) //function key
66 2 {
67 3 for(i=18;i>0;i--)
68 3 for(j=248;j>0;j--);
69 3 if(P3_6==0)
70 3 {for(i=88;i>0;i--)
71 4 for(j=248;j>0;j--);
72 4 if(P3_6==1)
73 4 funcount++;
74 4
75 4 if(funcount==1) //第一次按下
76 4 digitcount=0; //data key累加数清0
77 4 if(funcount==2) //第二次按下
78 4 digitcount=0; //data key累加数清0
79 4
80 4 if(funcount==3) //第三次按下
81 4 {
82 5 digitcount=0;
83 5 if(ps[0]==ppa&&ps[1]==ppb&&ps[2]==ppc) //对3个数值进行比较
84 5 {righitflag=1; //数值正确
85 6 errorflag=0; //错误标志清0
86 6 }
87 5 else
88 5 { righitflag=0 ; //数值错误
89 6 errorflag++; //错误标志+1
90 6 }
91 5 }
92 4 }
93 3 }
94 2 }
95 1
96 1 }
97 void t0(void) interrupt 1 using 0
98 {TH0=(65536-1000)/256; //定时器付初值
99 1 TL0=(65536-1000)%256;
100 1 if(funcount==0)
101 1 { ppa=digitcount; //data key累加数给ppa
102 2 }
103 1 if(funcount==1)
104 1 { ppb=digitcount; //data key累加数给ppb
105 2 // digitcount=0;
106 2 }
107 1 if(funcount==2)
108 1 { ppc=digitcount; //data key累加数给ppc
109 2 //digitcount=0;
110 2 }
111 1 if(funcount==3)
112 1 {funcount=0;
113 2
114 2 }
115 1
116 1 b: if(bb==0) //判断在不在报警
117 1 { P3_0=0; //不再报警 报警器为低电平
C51 COMPILER V8.02 TEXT1 01/02/2009 16:32:43 PAGE 3
118 2 if(righitflag==1) //数值正确
119 2 { //显示 OPEN
120 3 if(cc==0)
121 3 {
122 4 P2=0xfe;
123 4 P0=dispcode[0];
124 4 }
125 3 if(cc==1)
126 3 {
127 4 P2=0xfd;
128 4 P0=0x73;
129 4 }
130 3 if(cc==2)
131 3 {
132 4 P2=0xfb;
133 4 P0=0x79;
134 4 }
135 3 if(cc==3)
136 3 {
137 4 P2=0xf7;
138 4 P0=0x37;
139 4 }
140 3 cc++;
141 3 if(cc==4)
142 3 cc=0;
143 3 }
144 2 if(errorflag==3) //连续错误输入3次
145 2 {errorflag=0; //错误标志清0
146 3 P2=0xff; //数码管不显示
147 3 P3_0=1; //报警器报警
148 3 bb=3000; //延时3秒
149 3 goto b;
150 3 }
151 2 if( righitflag!=1&&errorflag!=3) //除去特殊情况
152 2 {if(aa==0)
153 3 {
154 4 P2=0xfe; //第一个数码管亮其他息灭
155 4 P0=dispcode[ppa]; // 显示ppa
156 4 }
157 3 if(aa==1)
158 3 {
159 4 P2=0xfd; //第二个数码管亮其他息灭
160 4 P0=dispcode[ppb]; // 显示ppb
161 4 }
162 3 if(aa==2)
163 3 {
164 4 P2=0xfb; //第三个数码管亮其他息灭
165 4 P0=dispcode[ppc]; // 显示ppc
166 4 }
167 3 aa++;
168 3 if(aa==3)
169 3 aa=0;
170 3 }
171 2 }
172 1 else
173 1 {bb--;
174 2 ppa=0;
175 2 ppb=0;
176 2 ppc=0;
177 2 }
178 1 }
C51 COMPILER V8.02 TEXT1 01/02/2009 16:32:43 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 464 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -