?? gsd.lst
字號(hào):
C51 COMPILER V7.07 GSD 02/12/2009 20:21:02 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE GSD
OBJECT MODULE PLACED IN gsd.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE gsd.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>//裝載
3 #include "LCD.h"
4 //#include "HZcode.h"
5 #define PCF8583 0XA0
6 #define _Nop() _nop_() /*定義空指令*/
7 #define set 0x80
8 #define add 0x40
9 #define sub 0x20
10
11 sbit SDA=P2^6; /*模擬I2C數(shù)據(jù)傳送位*/
12 sbit SCL=P2^7; /*模擬I2C時(shí)鐘控制位*/
13 //sbit DATAD=P1^1;
14 //sbit CLKD=P1^0;
15 //sbit DATAT=P3^0;
16 //sbit CLKT=P3^1;
17 sbit DQ=P2^5;
18 sbit TEST=P3^4;
19 sbit KEY_SET=P0^7;
20 sbit KEY_ADD=P0^6;
21 sbit KEY_SUB=P0^5;
22 uchar SEG7[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};/*0~9的數(shù)碼管段碼*/
23 uchar D_act[10]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x04,0x08};//12位數(shù)碼管位碼;
24 uchar T_act[2]={0x10,0x20};
25 void dis_temper(uchar m);
26 void d_send164(uchar m);
27 void T_send164(uchar m);
28 void dis_time(uchar m);
29 void init_timer0(void);
30 void Delay1mS(unsigned int tt);
31 void dis_adjtime(void);
32 uchar convert_BCD(uchar i);
33 void keyboard(void);
34
35 char min;
36 uchar discnt,cnt;
37 uchar read_temp;
38 uint time_cnt,T_discnt;
39 uchar temp1,temp2,temp;
40 uchar MS,mon,day,hou,sec,year;
41 uchar b1,b2,b3,key;
42 bit ack;
43 void init_timer0(void)
44 {
45 1 TMOD=0X10;
46 1 //TH0=0xF4;TL0=0x48;
47 1 TH1=0X3C;TL1=0XAF;
48 1 //ET0=1;
49 1 ET1=1;
50 1 TR1=1;EA=1;//TR0=1;
51 1 }
52
53 void time1(void) interrupt 3 //50ms
54 {//uchar temp1,temp2,temp;
55 1 TH1=0X3C;TL1=0XAF;
C51 COMPILER V7.07 GSD 02/12/2009 20:21:02 PAGE 2
56 1 keyboard();
57 1
58 1 time_cnt++; // gettempTS();
59 1 if(time_cnt>=20) // 50毫秒計(jì)時(shí)時(shí)間到,讀PCF8583的各寄存器的值
60 1 { read_temp=1;
61 2 time_cnt=0; TEST=~TEST;
62 2
63 2 }
64 1
65 1 }
66 /*void time0(void) interrupt 1
67 {
68 /*TH0=0xFa;TL0=0x24;//TH0=0xF4;TL0=0x48;
69 dis_time(discnt);//}// 顯示溫度
70 discnt++;
71 if(discnt>1)discnt=0;// 顯示為12位數(shù)碼管
72 TH0=0xFa;TL0=0x24;
73 discnt++;cnt++;T_discnt++;
74 if(T_discnt>=2)T_discnt=0;
75 if(discnt>=10)discnt=0;// 顯示為12位數(shù)碼管
76 if(cnt>200)cnt=0;// 調(diào)整時(shí)的閃爍周期
77 dis_temper(T_discnt);
78 switch(MS)
79 {
80 case 0:{dis_time(discnt); }break;// 顯示走時(shí)
81 //case 1:{dis_adjtime(discnt);}break;// 顯示調(diào)時(shí)
82 default: break;
83 }
84
85 }*/
86
87 void show_date(void)
88 {
89 1 uchar j;
90 1 j = 16;
91 1 //year
92 1
93 1 ShowNumber(4,16+j,(year+8)/10);
94 1 ShowNumber(4,24+j,(year+8)%10);
95 1 ShowChina(4,32+j,16);
96 1 //month
97 1 ShowNumber(4,48+j,mon/10);
98 1 ShowNumber(4,56+j,mon%10);
99 1 ShowChina(4,64+j,17);
100 1 //day
101 1 ShowNumber(4,80+j,day/10);
102 1 ShowNumber(4,88+j,day%10);
103 1 ShowChina(4,96+j,18);
104 1 }
105
106 void show_time(void)
107 {
108 1 uchar j;
109 1 j = 32;
110 1 //hour
111 1 ShowNumber(6,0+j,hou/10);
112 1 ShowNumber(6,8+j,hou%10);
113 1 ShowChina(6,16+j,19);
114 1 //minute
115 1 ShowNumber(6,32+j,min/10);
116 1 ShowNumber(6,40+j,min%10);
117 1 ShowChina(6,48+j,20);
C51 COMPILER V7.07 GSD 02/12/2009 20:21:02 PAGE 3
118 1 //second
119 1 ShowNumber(6,64+j,sec/10);
120 1 ShowNumber(6,72+j,sec%10);
121 1 ShowChina(6,80+j,21);
122 1 }
123
124 void show_hz(void)
125 {
126 1 ShowChina(0,0,0);
127 1 ShowChina(0,16,1);
128 1 ShowChina(0,32,2);
129 1 ShowChina(0,48,3);
130 1 ShowChina(0,64,4);
131 1 ShowChina(0,80,5);
132 1 ShowChina(0,96,6);
133 1 ShowChina(0,112,7);
134 1 ShowChina(2,0,8);
135 1 ShowChina(2,16,9);
136 1 ShowChina(2,32,10);
137 1 ShowChina(2,48,11);
138 1 ShowChina(2,64,12);
139 1 ShowChina(2,80,13);
140 1 ShowChina(2,96,14);
141 1 ShowChina(2,112,15);
142 1 ShowChina(6,16,22);
143 1 }
144
145 void show_date_time(void)
146 {
147 1 //uchar *j;
148 1 //j = date_buf;
149 1 ////read_serial(j);
150 1 show_date();
151 1 show_time();
152 1 }
153
154 void show_ad(void)
155 {
156 1 ShowNumber(6,0,b1);
157 1 ShowNumber(6,8,b2);
158 1 //ShowNumber(6,16,b3);
159 1 }
160 void r_show_ad(void)
161 {
162 1 r_ShowNumber(6,0,b1);
163 1 r_ShowNumber(6,8,b2);
164 1 r_ShowNumber(6,16,b3);
165 1 }
166 /*void T_send164(uchar m)
167 {uchar k,i,b;
168 k=SEG7[m];
169 i=8;
170 CLKT=0;
171 while (i--)
172 {b=k>>i;
173 if((b&0x01)==0x01)DATAT=1;//判斷b的最低位的值是多少
174 else DATAT=0;
175 CLKT=1;
176 CLKT=0;
177 }
178
179 }
C51 COMPILER V7.07 GSD 02/12/2009 20:21:02 PAGE 4
180
181 void d_send164(uchar m)
182 {uchar k,i,b;
183 k=SEG7[m];
184 i=8;
185 CLKD=0;
186 while (i--)
187 {b=k>>i;
188 if((b&0x01)==0x01)DATAD=1;//判斷b的最低位的值是多少
189 else DATAD=0;
190 CLKD=1;
191 CLKD=0;
192 }
193
194 }
195 */
196 /*void dis_temper(uchar m)
197 {
198 P1&=0Xcf;
199 switch(m)
200 {case 0:{T_send164(temp/10);P1|=T_act[m];}break;//P1&=0Xcf;P1&=0Xcf;
201 case 1:{T_send164(temp%10);P1|=T_act[m];}break;
202 default:break;}
203 }
204
205
206 void dis_time(uchar m)
207 {
208 P1&=0Xf3;/// 等價(jià)于 P1=P1&0xc3;;準(zhǔn)備送段碼 ,位碼口全部清零
209 P2=0X00;////準(zhǔn)備送段碼,位碼口全部清零
210
211 {switch(m)
212 {case 0:{d_send164(mon/10);P2|=D_act[m];P1&=0Xf3;}break;
213 case 1:{d_send164(mon%10);P2|=D_act[m];P1&=0Xf3;}break;
214 case 2:{d_send164(day/10);P2|=D_act[m];P1&=0Xf3;}break;
215 case 3:{d_send164(day%10);P2|=D_act[m];P1&=0Xf3;}break;
216 case 4:{d_send164(hou/10);P2|=D_act[m];P1&=0Xf3;}break;
217 case 5:{d_send164(hou%10);P2|=D_act[m];P1&=0Xf3;}break;
218 case 6:{d_send164(min/10);P2|=D_act[m];P1&=0Xf3;}break;
219 case 7:{d_send164(min%10);P2|=D_act[m];P1&=0Xf3;}break;
220 case 8:{d_send164(sec/10);P1|=D_act[m];P2=0X00;}break;
221 case 9:{d_send164(sec%10);P1|=D_act[m];P2=0X00;}break;
222 /*case 10:{send164(temp%10);P1|=act[m];P2=0X00;}break;
223 case 11:{send164(temp/10);P1|=act[m];P2=0X00;}break;
224
225 default:break;}
226 }
227
228 }*/
229
230 /*void Delay_uS(unsigned int tt) //延時(shí)時(shí)間為(tt*9+16)us.晶振為12MHz
231 {
232 while(tt--)
233 ;
234 }*/
235
236 void keyboard(void)
237 {
238 1 KEY_ADD=1;KEY_SET=1;KEY_SUB=1;
239 1 if((P0&set)==0)
240 1 { Delay1mS(1);
241 2 while((P0&set)==0);
C51 COMPILER V7.07 GSD 02/12/2009 20:21:02 PAGE 5
242 2 key=set;
243 2 }
244 1 else
245 1 if((P0&add)==0)
246 1 {
247 2 Delay1mS(1);
248 2 while((P0&add)==0);
249 2 key=add;
250 2 }
251 1 else
252 1 if((P0&sub)==0)
253 1 {
254 2 Delay1mS(1);
255 2 while((P0&sub)==0);
256 2 key=sub;
257 2 }
258 1 }
259
260 void delay15us(void)
261 {
262 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
263 1 }
264 void Delay1mS(unsigned int tt) //延時(shí)時(shí)間為tt ms.晶振為12MHz
265 {
266 1 unsigned char i;
267 1 while(tt--)
268 1 for(i=200;i>0;i--)
269 1 ;
270 1 }
271
272 void DS18B20_init(void)
273 { uint i;
274 1 DQ=1;
275 1 _nop_();
276 1 start: DQ=0;
277 1 for(i=0;i<8;i++){delay15us();delay15us();delay15us();delay15us();}
278 1 //Delay_uS(54);
279 1 DQ=1;
280 1 delay15us();delay15us(); //Delay_uS(4);
281 1 while(DQ)
282 1 {
283 2 i++;
284 2 if(i>320)
285 2 {goto start;
286 3 }
287 2 }
288 1 DQ=1;
289 1 for(i=0;i<8;i++){delay15us();delay15us();delay15us();delay15us();}//Delay_uS(45);
290 1
291 1 }
292
293
294 bit readTS(void) //讀DS18B20數(shù)據(jù)位
295 {
296 1 bit b;
297 1 DQ=1;
298 1 DQ=0;
299 1 _nop_();//_nop_();_nop_();
300 1 DQ=1;
301 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//_nop_();_nop_();_nop_();_nop_();
-_nop_();_nop_();_nop_();
302 1 b=DQ;_nop_();_nop_();_nop_();
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -