📄 hclcd.lst
字号:
C51 COMPILER V7.07 HCLCD 06/16/2005 23:43:25 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE HCLCD
OBJECT MODULE PLACED IN HCLCD.OBJ
COMPILER INVOKED BY: C:\TOOLS\Keil\C51\BIN\C51.EXE HCLCD.c OPTIMIZE(7,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //aa 00 47 13 25 63 00 04 04
2 // 秒 分 时 日 星期和月(最高3位0-6,代表1-7)
3 #include <intrins.h>
4 #include<AT89x52.h>
5 #include "hclcddot.h" //点阵库
6 #define Uchar unsigned char
7 #define Uint unsigned int
8 #define SomeNOP(); _nop_();_nop_();_nop_();
9 /*LCD驱动要用到的一些口线定意*/
10 #define LCDPORT P0
11 sbit D_I = P3^7;
12 sbit R_W = P3^6;
13 sbit E = P3^5;
14 sbit CS1 = P3^4;
15 sbit CS2 = P3^2;
16 sbit RST = P3^3;
17 /*I2C要用到的口线定意*/
18 sbit SDA = P2^7;
19 sbit SCL = P2^6;
20
21 ////////////以下为函数声明///////////////////////////////
22 //LCD驱动要用到的一些函数
23 void lcdwrite_cmd(Uchar cmd_dat);
24 void lcdwrite_dat(Uchar dot_dat);
25 void lcd_busy();
26 Uchar lcdread_dat(void);
27 void lcddispon(void);
28 void lcddispoff(void);
29 void lcdclrall(void);
30 void lcdini(void);
31 void HZ12disp(Uchar Nowrow,Uchar Nowcol,Uchar CHplace);
32 void ASC12disp(Uchar Nowrow,Uchar Nowcol,Uchar ASCplace);
33 void flashlogo(Uchar Bmpcol);
34 void Disp128_64(Uchar BMPplace);
35 void delay(void);
36 //I2C驱动要用到的一些函数
37 void Delay_1ms(Uchar time);
38 void I2CStart(void);
39 void I2CStop(void);
40 void ACK(void); //Acknowledge信号
41 void NACK(void); //没有Acknowledge信号
42 void AutoACK(void); //在一定的时间内自动确定ACK的信号//
43 void Writex(Uchar j);
44 Uchar Readx(void);
45 void X24_Write(Uchar Addresshigh,Uchar Addresslow,Uchar Write_date);
46 Uchar X24_Read(Uchar Addresshigh,Uchar Addresslow);
47 void X24_WritePage(Uchar Addresshigh,Uchar Addresslow,Uchar idata *Writeip);
48 void X24_ReadPage(Uchar Addresshigh,Uchar Addresslow,Uchar idata *Readip);
49 void GetPCF8563(Uchar idata *Getip);
50 void SetPCF8563(Uchar idata *Setip);
51 Uchar ReadPCF8563(Uchar AddrePCF);
52 void WritePCF8563(Uchar AddrePCF,Uchar PCFdata);
53 void SetWaring (Uchar Wyear,Uchar Wmonth,Uchar Wday);
54 bit CheckTime(void);
55 void rs232(void);
C51 COMPILER V7.07 HCLCD 06/16/2005 23:43:25 PAGE 2
56 void time0(void);
57 /*定义一个接收的数组*/
58 Uchar data recdata[8]; //
59 Uchar idata L24cxxdata[64]; //用于读出或写入24C16的数据
60 Uchar idata clockdata[7]; //系统时钟
61 Uchar pcpointer,timecount,timecount2,*gettimeip; //用于设定从PC接收和发的指针
62 /*定义二个地址编码寄存器,设定地址线稳定时间,定时器2的延时时间参数,动画的时位置参数,发码结束后取消静音的时
-间*/
63 Uchar data MCaddreh,MCaddrel,MCaddtime,time0_1s,led1_8;led18count,logocol;
64 Uint data nomutetime;
65 Uchar newbmpcount;
66 /*定义标志位存放的寄存器*/
67 Uchar bdata myflag,myflag2,bmpflag; //定义一个用于标志寄存器存放的
68 sbit nomutebit = myflag^0; //用于开始取消静音标志
69 sbit recpcokbit = myflag^1; //用于设定接收到一个完整的控制指令码
70 sbit returnbit = myflag^2; //用于向PC回传数据标志
71 sbit findokbit = myflag^3; //寻找到明码地址
72 sbit sendbit = myflag^4; //开始发码
73 sbit timenewbit = myflag^5; //时钟更新标志
74 sbit callnewbit = myflag^6; //有新的呼叫
75 sbit endnewbit=myflag^7; //呼叫结束
76
77 sbit w24cxxbit = myflag2^0; //设定明码表
78 sbit timeoutbit =myflag2^1;
79 sbit newtimebit = myflag2^2; //设定新的系统时间
80 sbit r_lbit = bmpflag^0;
81 sbit b_wbit = bmpflag^1; //图和文字标志
82 sbit newbmpbit = bmpflag^2; //更新图片
83 void main(void)
84 {
85 1 TH0 = 0xf8; //2ms
86 1 TL0 = 0xce;
87 1 TH1 = 0xfd; //以9600Baud的速率和PC机通信
88 1 TL1 = 0xfd;
89 1 TH2 = 0x4c; //50ms
90 1 TL2 = 0x00;
91 1 T2CON = 0x00;
92 1 TMOD = 0x21; //Time0为16位,Time1为8位常数自装
93 1 SCON = 0x50;
94 1 IP = 0x10;
95 1 TR0 = 1;
96 1 TR1 = 1;
97 1 TR2 = 1;
98 1 IE = 0x92; //Time0,Time2,RS232中断
99 1 led1_8=0xfe;
100 1 led18count=0x01;
101 1 timecount = 0x64;
102 1 time0_1s=0x05;
103 1 timecount2 = 0x32;
104 1 newbmpcount = 0x01;
105 1 logocol =0;
106 1 r_lbit =0;
107 1 timeoutbit =0;
108 1 b_wbit=1;
109 1 // setadd(80);
110 1
111 1 lcdini();
112 1 lcdclrall();
113 1 while(1)
114 1 {
115 2
116 2 HZ12disp(0x00,0x04,0x01); //承
C51 COMPILER V7.07 HCLCD 06/16/2005 23:43:25 PAGE 3
117 2 HZ12disp(0x00,0x10,0x02); //接
118 2 HZ12disp(0x00,0x1C,0x03); //单
119 2 HZ12disp(0x00,0x28,0x04); //片
120 2 HZ12disp(0x00,0x34,0x05); //机
121 2 HZ12disp(0x00,0x40,0x06); //开
122 2 HZ12disp(0x00,0x4C,0x07); //发
123 2 HZ12disp(0x00,0x58,0x08); //及
124 2 HZ12disp(0x00,0x64,0x09); //解
125 2 HZ12disp(0x00,0x70,0x0A); //密
126 2
127 2 HZ12disp(0x01,0x0A,0x0B); //各
128 2 HZ12disp(0x01,0x16,0x0C); //类
129 2 ASC12disp(0x01,0x22,0x0B); //I
130 2 ASC12disp(0x01,0x28,0x0C); //C
131 2 HZ12disp(0x01,0x2E,0x0D); //卡
132 2 ASC12disp(0x01,0x3A,0x0D); //;
133 2 ASC12disp(0x01,0x40,0x0A); //P
134 2 ASC12disp(0x01,0x46,0x0B); //I
135 2 ASC12disp(0x01,0x4C,0x0C); //C
136 2 HZ12disp(0x01,0x52,0x03); //单
137 2 HZ12disp(0x01,0x5E,0x04); //片
138 2 HZ12disp(0x01,0x6A,0x05); //机
139 2
140 2 ASC12disp(0x02,0x0A,0x05); //5
141 2 ASC12disp(0x02,0x10,0x01); //1
142 2 HZ12disp(0x02,0x16,0x0E); //编
143 2 HZ12disp(0x02,0x22,0x0F); //程
144 2 HZ12disp(0x02,0x2E,0x10); //器
145 2 ASC12disp(0x02,0x3A,0x0D); //;
146 2 ASC12disp(0x02,0x40,0x0A); //P
147 2 ASC12disp(0x02,0x46,0x0B); //I
148 2 ASC12disp(0x02,0x4C,0x0C); //C
149 2 HZ12disp(0x02,0x52,0x0E); //编
150 2 HZ12disp(0x02,0x5E,0x0F); //程
151 2 HZ12disp(0x02,0x6A,0x10); //器
152 2
153 2 HZ12disp(0x03,0x00,0x14); //亮
154 2 HZ12disp(0x03,0x0c,0x15); //灯
155 2
156 2 ASC12disp(0x03,0x2c,0x02); //2
157 2 ASC12disp(0x03,0x32,0x00); //0
158 2
159 2 HZ12disp(0x03,0x44,0x11); //年
160 2
161 2 HZ12disp(0x03,0x5c,0x12); //月
162 2
163 2 HZ12disp(0x03,0x74,0x13); //日
164 2
165 2
166 2 ASC12disp(0x04,0x5c,0x0e); //:
167 2
168 2 ASC12disp(0x04,0x6e,0x0e);
169 2
170 2 while(1) //b_wbit==1)
171 2 {
172 3 if(timenewbit==1)
173 3 {
174 4 Uchar newtime0;
175 4 timenewbit=0;
176 4
177 4 newtime0=(clockdata[6]>>4)&0x0f;
178 4 ASC12disp(0x03,0x38,newtime0);
C51 COMPILER V7.07 HCLCD 06/16/2005 23:43:25 PAGE 4
179 4 newtime0=clockdata[6]&0x0f;
180 4 ASC12disp(0x03,0x3e,newtime0);
181 4
182 4 newtime0=(clockdata[4]>>4)&0x01;
183 4 ASC12disp(0x03,0x50,newtime0);
184 4 newtime0=clockdata[4]&0x0f;
185 4 ASC12disp(0x03,0x56,newtime0);
186 4
187 4 HZ12disp(0x03,0x1B,(led18count+0x15)); //几号
188 4
189 4 newtime0=(clockdata[3]>>4)&0x03;
190 4 ASC12disp(0x03,0x68,newtime0);
191 4 newtime0=clockdata[3]&0x0f;
192 4 ASC12disp(0x03,0x6e,newtime0);
193 4
194 4 newtime0=(clockdata[2]>>4)&0x03;
195 4 ASC12disp(0x04,0x50,newtime0);
196 4 newtime0=clockdata[2]&0x0f;
197 4 ASC12disp(0x04,0x56,newtime0);
198 4
199 4 newtime0=(clockdata[1]>>4)&0x07;
200 4 ASC12disp(0x04,0x62,newtime0);
201 4 newtime0=clockdata[1]&0x0f;
202 4 ASC12disp(0x04,0x68,newtime0);
203 4
204 4 newtime0=(clockdata[0]>>4)&0x07;
205 4 ASC12disp(0x04,0x74,newtime0);
206 4 newtime0=clockdata[0]&0x0f;
207 4 ASC12disp(0x04,0x7a,newtime0);
208 4 }
209 3
210 3 if(r_lbit==0)
211 3 {
212 4 flashlogo(logocol++);
213 4 if (logocol==32)
214 4 {r_lbit=1;}
215 4 lcddispon();
216 4 delay();
217 4 }
218 3 else
219 3 {
220 4 flashlogo(logocol--);
221 4 if(logocol==0)
222 4 {r_lbit =0;}
223 4 lcddispon();
224 4 delay();
225 4 }
226 3 }
227 2 /*
228 2 while(b_wbit==0)
229 2 {
230 2 if(newbmpbit==1)
231 2 {
232 2 newbmpbit=0;
233 2 Disp128_64(newbmpcount);
234 2
235 2 }
236 2 }
237 2 */
238 2 }
239 1 }
240
C51 COMPILER V7.07 HCLCD 06/16/2005 23:43:25 PAGE 5
241
242 //以下为定时器TIME0中断程序
243 void time0(void) interrupt 1
244 {
245 1 TH0 = 0xf8;
246 1 TL0 = 0xce;
247 1 timecount--;
248 1 if(timecount==0)
249 1 {
250 2 timecount = 0x64;
251 2 gettimeip=&clockdata[0];
252 2 GetPCF8563(gettimeip);
253 2 time0_1s--;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -