?? timer.lst
字號:
C51 COMPILER V7.06 TIMER 11/01/2008 16:45:31 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN Timer.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Timer.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /********************************************************************/
2 /** **/
3 /** 用單片機控制的簡易定時器報警器 **/
4 /** 初始值為59-1S,進行倒計時。 **/
5 /** 一共有s1,s2,s3,s4三個按鍵 **/
6 /** s1:設定鍵 **/
7 /** s2:確定鍵 **/
8 /** s3:遞增鍵 **/
9 /** s4:遞減鍵 **/
10 /** **/
11 /** 當計時到00時,數碼管閃爍00,以1Hz進行閃爍 **/
12 /** P1口接彩燈 **/
13 /**作 者: 竇穎艷 2008年11月1日于冶金學院實訓樓1 **/
14 /** **/
15 /********************************************************************/
16
17 #include<reg52.h>
18 #define uchar unsigned char
19 #define uint unsigned int
20 uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9段選
21 uchar code tab1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位選
22
23 sbit s1=P3^0;
24 sbit s2=P3^1;
25 sbit s3=P3^2;
26 sbit s4=P3^3;
27
28 char temp;
29 uchar aa,num,s1num;
30
31 void delay(uint z);
32 void display(uchar temp);
33 void flash(uchar cnt);
34 void init();
35 void keyscan();
36
37 void delay(uint z)
38 {
39 1 uint x,y;
40 1 for(x=z;x--;x>0)
41 1 for(y=110;y--;y>0)
42 1 {;}
43 1 }
44 void display(uchar temp)
45 {
46 1 uchar shi,ge;
47 1 shi=temp/10;
48 1 ge=temp%10;
49 1
50 1 P0=tab[shi];
51 1 P2=0xff;
52 1 P2=tab1[6];
53 1 delay(5);
54 1
55 1 P0=tab[ge];
C51 COMPILER V7.06 TIMER 11/01/2008 16:45:31 PAGE 2
56 1 P2=tab1[7];
57 1 delay(5);
58 1 }
59 void flash(uchar cnt)
60 {
61 1 uchar a;
62 1 for(a=1;a<=cnt;a++)
63 1 {
64 2 P2=0xff;
65 2 delay(1000);
66 2 P2=0xfc;
67 2 delay(1000);
68 2 }
69 1 }
70
71 void timer0() interrupt 1
72 {
73 1 TH0=(65536-50000)/256;
74 1 TL0=(65536-50000)%256;
75 1 aa++;
76 1 if(aa==20)
77 1 {
78 2 aa=0;
79 2 temp--;
80 2 if(temp==-1)
81 2 {
82 3 temp=0;
83 3 TR0=0;
84 3 flash(80);
85 3 }
86 2
87 2 }
88 1 }
89
90 void init()
91 {
92 1 TMOD=0x01;
93 1 TH0=(65536-50000)/256;
94 1 TL0=(65536-50000)%256;
95 1 EA=1;
96 1 ET0=1;
97 1 TR0=1;
98 1 num=0;
99 1 temp=59;
100 1
101 1 }
102
103 void keyscan()
104 {
105 1 if(s1==0)
106 1 {
107 2 delay(20);
108 2 if(s1==0)
109 2 {
110 3 s1num++;
111 3 while(!s1);
112 3 if(s1num==1)
113 3 {
114 4 TR0=0;
115 4 }
116 3 }
117 2
C51 COMPILER V7.06 TIMER 11/01/2008 16:45:31 PAGE 3
118 2 }
119 1 if(s1num!=0)
120 1 {
121 2 if(s3==0)
122 2 {
123 3 delay(20);
124 3 {
125 4 if(s3==0)
126 4 {
127 5 while(!s3);
128 5 if(s1num==1)
129 5 temp++;
130 5
131 5 }
132 4 }
133 3
134 3 }
135 2 if(s4==0)
136 2 {
137 3 delay(20);
138 3 if(s4==0)
139 3 {
140 4 while(!s4);
141 4 if(s1num==1)
142 4 temp--;
143 4 }
144 3 }
145 2
146 2
147 2 }
148 1
149 1 if(s2==0)
150 1 {
151 2 delay(20);
152 2 if(s2==0)
153 2 {
154 3 while(!s2);
155 3 TR0=1;
156 3 }
157 2 }
158 1 }
159
160 void main()
161 {
162 1 init();
163 1 while(1)
164 1 {
165 2 keyscan();
166 2 display(temp);
167 2 }
168 1
169 1
170 1 }
171
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 310 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
C51 COMPILER V7.06 TIMER 11/01/2008 16:45:31 PAGE 4
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 + -