📄 g19264.lst
字号:
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE G19264
OBJECT MODULE PLACED IN C:\Documents and Settings\Administrator.MS-C0D3DC71081D\My Documents\g19264.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE g19264.c BROWSE DEBUG OBJECTEXTEND OBJECT(C:\Documents and Settings\Adminis
-trator.MS-C0D3DC71081D\My Documents\g19264.obj)
stmt level source
1 #include "g19264-ly.h"
2 #include <stdio.h>
3 //#include<INTRINS.H>
4 //#include <absacc.h>
5
6 #define Uchar unsigned char
7 #define uchar unsigned char
8 #define uint unsigned int
9 #define ulong unsigned long int
10 #define byte unsigned char
11 #define word unsigned int
12 #define ulong unsigned long int
13
14 extern uchar data second, minute, hour, week, day, month, year;
15 extern word data date, time;//从控制器下载的时间暂存储变量
16 uchar ahour1=6,ahour2=11,ahour3=13,ahour4=20,ahour5=20,aminute1=40,aminute2=40,aminute3=30,aminute4=40,am
-inute5=40;
17 #pragma NOAREGS;
18 extern void wr_time(void); //写时间到8563
19 extern void byt_to_time(void); //计算时间
20 extern void time_to_byt(void); //计算时间
21 extern void rd_time(void); //从时间芯片中读时间到second,minute,hour,week等变量中
22 void Putcdot(Uchar Order);
23 void Putedot(Uchar Order);
24 void Putedotbig(Uchar Order);
25 void readkey();//读键盘
26 uchar keyscan(void);// 键扫描函数
27 void Delay100ms(unsigned char x);
28 void init_serial();
29
30
31 void dpcard()//显示卡号
32 { uchar data i,a,b,c,d,e,g;
33 1 uchar temp;
34 1 dword data temp1;
35 1 uchar *p;
36 1 read_count=0;
37 1 i=0;
38 1 BEEP=0;
39 1 BL=0;
40 1 Lcmcls();
41 1 p=card_id;
42 1
43 1 temp=card_id[0];
44 1 a=temp%10;temp=temp/10;
45 1 b=temp%10;temp=temp/10;
46 1 c=temp;
47 1 col=50;row=3;
48 1 Putedot(c); Putedot(b);Putedot(a);
49 1 Putedot(10);//显示空格
50 1
51 1
52 1 temp1=card_id[1]*256+card_id[2];//合并卡号
53 1 a=temp1%10;temp1=temp1/10;//卡号用十进制显示
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 2
54 1 b=temp1%10;temp1=temp1/10;
55 1 c=temp1%10;temp1=temp1/10;
56 1 d=temp1%10;temp1=temp1/10;
57 1 e=temp1%10;temp1=temp1/10;
58 1 g=temp1;
59 1 Putedot(g); Putedot(e);Putedot(d);
60 1 Putedot(c); Putedot(b);Putedot(a);
61 1 Putedot(10);//显示空格
62 1
63 1 WDT_CONTR=WDT;//启动看门狗
64 1 BEEP=1;
65 1 Delay100ms(15);
66 1 for(i=0;i<3;i++)card_id[i]=0;//清空卡数据缓冲区
67 1 i=0; BL=1;
68 1 Lcmcls();
69 1 }
70
71 void serial(void) interrupt 4 //通讯中断
72 {
73 1 while(RI)
74 1 {RI=0;
75 2 if(read_count==0)card_id[0]=SBUF;
76 2 if(read_count==1)card_id[1]=SBUF;
77 2 if(read_count==2)card_id[2]=SBUF;
78 2 read_count++;
79 2 }
80 1
81 1 }
82
83 void alarm_pd(void)
84 {
85 1 if((hour==ahour1)&(minute==aminute1))alarm=1;
86 1 if((hour==ahour2)&(minute==aminute2))alarm=1;
87 1 if((hour==ahour3)&(minute==aminute3))alarm=1;
88 1 if((hour==ahour4)&(minute==aminute4))alarm=1;
89 1 if((hour==ahour5)&(minute==aminute5))alarm=1;
90 1 }
91
92 void startbell(void)
93 { uchar i;
94 1 alarm_pd();
95 1 if(alarm==1)
96 1 {
97 2 for(i=0;i<3;i++)
98 2 {
99 3 BEEP=0;
100 3 Delay100ms(1);
101 3 BEEP=1;
102 3 Delay100ms(2);
103 3 BEEP=0;
104 3 Delay100ms(1);
105 3 BEEP=1;
106 3 Delay100ms(2);
107 3 BEEP=0;
108 3 Delay100ms(1);
109 3 BEEP=1;
110 3 BEEP=0;
111 3 Delay100ms(3);
112 3 BEEP=1;
113 3 Delay100ms(10);
114 3 WDT_CONTR=WDT;//启动看门狗
115 3
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 3
116 3 }
117 2 }
118 1 alarm=0;
119 1 }
120
121 void Delay100ms(unsigned char x)
122 {
123 1 unsigned char i,j;
124 1 while(x != 0)
125 1 {
126 2 for (j = 1 ;j <= 100 ; j++)
127 2 {
128 3 // WDT_CONTR=WDT;//启动看门狗
129 3 for (i = 1 ;i <= 140 ; i++){_nop_() ; _nop_() ; _nop_() ; _nop_() ;};
130 3 }
131 2 x--;
132 2 }
133 1 }
134
135
136 uchar keyscan(void)// 键扫描函数
137
138 {
139 1 uchar scancode,tmpcode;
140 1 P2 = 0xf0; // 发全0行扫描码
141 1 if ((P2&0xf0)!=0xf0) // 若有键按下
142 1 {
143 2 Delay100ms(1); // 延时10ms去抖动
144 2 if ((P2&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响
145 2 {
146 3 scancode = 0xfe;
147 3 while((scancode&0x10)!=0) // 逐行扫描
148 3 {
149 4 P2 = scancode; // 输出行扫描码
150 4 if ((P2&0xf0)!=0xf0) // 本行有键按下
151 4 {
152 5 tmpcode = (P2&0xf0)|0x0f;/* 返回特征字节码,为1的位即对应于行和列 */
153 5 return((~scancode)+(~tmpcode));
154 5
155 5 }
156 4 else scancode = (scancode<<1)|0x01; // 行扫描码左移一位
157 4 }
158 3 }
159 2 }
160 1 return('a'); // 无键按下,返回值为a
161 1 }
162
163 void readkey()//读键盘
164 {
165 1 uchar key;
166 1 key = keyscan(); // 调用键盘扫描函数
167 1 // WDT_CONTR=WDT;//启动看门狗
168 1 switch(key)
169 1 {
170 2 case 0x11: // 1行1列,数字*
171 2 {BEEP=0;Delay100ms(1);BEEP=1;
172 3 keybuf='*';
173 3 keydn=1;
174 3 }
175 2 break;
176 2
177 2 case 0x21: // 1行2列,数字0
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 4
178 2 {
179 3 BEEP=0; Delay100ms(1);BEEP=1;
180 3 keybuf = 0;keydn=1;
181 3 }
182 2 break;
183 2
184 2 case 0x12: // 2行1列,数字7
185 2 {
186 3 BEEP=0; Delay100ms(1);BEEP=1;
187 3 keybuf =7;keydn=1;
188 3 }
189 2 break;
190 2
191 2 case 0x22: // 2行2列,数字8
192 2 {
193 3 keybuf = 8;keydn=1;
194 3 BEEP=0; Delay100ms(1);BEEP=1;
195 3 }
196 2 break;
197 2
198 2 case 0x42: // 2行3列,数字9
199 2 {
200 3 keybuf = 9;keydn=1;
201 3 BEEP=0; Delay100ms(1);BEEP=1;
202 3 }
203 2 break;
204 2 case 0x14: // 3行1列,数字4
205 2 {
206 3 keybuf = 4;keydn=1;
207 3 BEEP=0; Delay100ms(1);BEEP=1;
208 3 }
209 2 break;
210 2 case 0x24: // 3行2列,数字5
211 2 {
212 3 keybuf = 5;keydn=1;
213 3 BEEP=0; Delay100ms(1);BEEP=1;
214 3 }
215 2 break;
216 2 case 0x44: // 3行3列,数字6
217 2 {
218 3 keybuf = 6;keydn=1;
219 3 BEEP=0; Delay100ms(1);BEEP=1;
220 3 }
221 2 break;
222 2
223 2 case 0x18: // 4行1列,数字3
224 2 {
225 3 keybuf = 1;keydn=1;
226 3 BEEP=0; Delay100ms(1);BEEP=1;
227 3 }
228 2 break;
229 2 case 0x28: // 4行2列,数字2
230 2 {
231 3 keybuf = 2;keydn=1;
232 3 BEEP=0; Delay100ms(1);BEEP=1;
233 3 }
234 2 break;
235 2 case 0x48: // 4行3列,数字1
236 2 {
237 3 keybuf = 3;keydn=1;
238 3 BEEP=0; Delay100ms(1);BEEP=1;
239 3 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -