?? embed.lst
字號:
C51 COMPILER V8.08 EMBED 03/03/2008 09:15:00 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE EMBED
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: D:\hardWare\Keil\C51\BIN\C51.EXE embed.c BROWSE DEBUG OBJECTEXTEND SRC(.\embed.SRC)
line level source
1 #include <AT89X52.H>
2 #include "intrins.h"
3 #include "absacc.h"
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8
9 uchar cur_state;
10 uchar next_state;
11
12 uint Num_Of_Circle;
13 uint array[6]={1,2,3,4,5,6}; //顯示數據存儲區
14
15 //陽極段碼
16 uchar code SEGPOS[34]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xB
-F,0xFF,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0E};
17 //"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" "-" "空" "0." "1." "
-2." "3.""4." "5.""6." "7.""8." "9.""A." "B.""C." "D.""E." "F."
18 //帶點的比不帶點的大18個位置
19 //陰極段碼
20 uchar code SEGNEG[34]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x4
-0,0x00,0xBF,0x86,0xD4,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0xDE,0xF9,0xF1};
21 uchar code CON[6]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};//數據顯示的位選信號11111110 到11011111
22
23
24 uchar data inkey _at_ 0x30;//按鍵值
25 uchar data key_down _at_ 0x7E;//按鍵次數
26 uchar key;
27 void initial(void)
28 {
29 1 /*
30 1 T2CON=0x34;
31 1 SCON=0xD0;
32 1
33 1 PCON=0x00;//波特率不加倍
34 1 RCAP2L=0xC7;
35 1 RCAP2H=0xFE;//定時器2波特率1200
36 1 TR2 = 1;
37 1 //*/
38 1
39 1 inkey=0;key_down=0;
40 1 cur_state = 0;
41 1 next_state =0;
42 1 Num_Of_Circle=0;
43 1
44 1 TMOD=0x16;//T0 計數(方式2),T1 計時(方式1),T2 波特率 GATE C/~T M1 M0
45 1 TH0=0xFF; TL0=0xFF;
46 1 TH1=0x3C; TL1=0xB0;//50ms
47 1
48 1 TR0=1; TR1=0;
49 1
50 1 ET0=0; ET1=1;
51 1 EX0=0; EX1=0;
52 1 ES=0;
C51 COMPILER V8.08 EMBED 03/03/2008 09:15:00 PAGE 2
53 1 EA=0;
54 1 }
55
56 void delay10ms(uint s)//100 == 1second
57 {
58 1 uint i;
59 1 while(s--)
60 1 {
61 2 for(i=0;i<255;i++)
62 2 {
63 3 _nop_();
64 3 _nop_();
65 3 _nop_();
66 3 _nop_();
67 3 _nop_();
68 3 _nop_();
69 3 _nop_();
70 3 _nop_();
71 3 _nop_();
72 3 _nop_();
73 3 _nop_();
74 3 _nop_();
75 3 _nop_();
76 3 _nop_();
77 3 _nop_();
78 3 _nop_();
79 3 _nop_();
80 3 _nop_();
81 3 _nop_();
82 3 _nop_();
83 3 _nop_();
84 3 _nop_();
85 3 _nop_();
86 3 _nop_();
87 3 _nop_();
88 3 _nop_();
89 3 _nop_();
90 3 }
91 2 }
92 1 }
93 void getKey()
94 {
95 1 P3=P3|0xF0;
96 1 delay10ms(1);
97 1 key=P3&0xF0;
98 1 if(key!=0xF0 && key_down==0)
99 1 {
100 2 key_down+=1;
101 2 switch(key)
102 2 {
103 3 case 0x70:
104 3 inkey=1;
105 3 break;
106 3 case 0xB0:
107 3 inkey=2;
108 3 break;
109 3 case 0xD0:
110 3 inkey=3;
111 3 break;
112 3 case 0xE0:
113 3 inkey=4;
114 3 break;
C51 COMPILER V8.08 EMBED 03/03/2008 09:15:00 PAGE 3
115 3 default:
116 3 key_down=0;
117 3 break;
118 3 }
119 2 }
120 1 # pragma asm
121 1 #pragma endasm
122 1 }
123
124 void show( uint bitCon,uint num)
125 {
126 1 uchar seg =SEGPOS[num];
127 1 P0=seg;
128 1 switch(bitCon)
129 1 {
130 2 case 0:
131 2 P2=CON[0];
132 2 break;
133 2 case 1:
134 2 P2=CON[1];
135 2 break;
136 2 case 2:
137 2 P2=CON[2];
138 2 break;
139 2 case 3:
140 2 P2=CON[3];
141 2 break;
142 2 case 4:
143 2 P2=CON[4];
144 2 break;
145 2 case 5:
146 2 P2=CON[5];
147 2 break;
148 2
149 2 }
150 1 }
151
152 //*驅動蜂鳴器
153 void Buzzer()
154 {
155 1 P2_6 = 1;//buzzer
156 1 P2_7 = 1;//led
157 1 delay10ms(100);
158 1 }
159
160 void clearAlarm()
161 {
162 1 P2_6 = 0;//buzzer
163 1 P2_7 = 0;//led
164 1 }
165
166 void stateMachine(uchar inkey)
167 {
168 1 switch(inkey )
169 1 {
170 2 case 1:
171 2 next_state = 0;
172 2 break;
173 2 case 2:
174 2 next_state = 1;
175 2 break;
176 2 case 3:
C51 COMPILER V8.08 EMBED 03/03/2008 09:15:00 PAGE 4
177 2 next_state = 2;
178 2 break;
179 2 }
180 1 cur_state = next_state;
181 1 }
182
183 void setplay(uint h2bit ,uint m2bit,uint l2bit)
184 {
185 1 array[5]=h2bit/10%10;
186 1 array[4]=h2bit%10+18;
187 1 array[3]=m2bit/10;
188 1 array[2]=m2bit%10+18;
189 1 array[1]=l2bit/10;
190 1 array[0]=l2bit%10+18;
191 1 }
192 void main()
193 {
194 1 uint display=0;
195 1 uint LED=0xFF7F;
196 1 initial();
197 1
198 1 while(1)
199 1 {
200 2 getKey();//獲得按鍵輸入
201 2 if(key_down)
202 2 {
203 3 key_down=0;
204 3 P3_0=!P3_0;
205 3 }
206 2 /*
207 2 //*/
208 2 /**設置**
209 2 //*/
210 2 /*
211 2 switch(cur_state)
212 2 {
213 2 case time_show:
214 2 setplay(hour,minute,second);
215 2 break;
216 2 case date_show:
217 2 setplay(year,month,day);
218 2 break;
219 2 case second_show:
220 2 setplay(Cminute,Csecond,Csecond10);
221 2 break;
222 2 }
223 2 //*/
224 2 //動態顯示四位數據
225 2 show(display,array[display]);
226 2 if(display==5)
227 2 {
228 3 display=0;
229 3
230 3 }
231 2 else
232 2 display +=1;
233 2 P1=LED;
234 2 LED=LED>>1;
235 2 delay10ms(100); //**************
236 2 if(LED==0x01FE)
237 2 {
238 3 LED=0xFF7F;
C51 COMPILER V8.08 EMBED 03/03/2008 09:15:00 PAGE 5
239 3 }
240 2 /*
241 2 if(key_down == 1) //運行狀態機
242 2 stateMachine(inkey);
243 2 //*/
244 2 }
245 1 }
246
247 /*/////////////////////////////////////////////////////////////
248 各中斷函數的具體處理
249 //*/
250 void TIME0() interrupt 1
251 {
252 1 if(Num_Of_Circle==0)
253 1 TR1=1;
254 1 Num_Of_Circle = 0;
255 1 }
256
257 void TIME1() interrupt 3//T1 計時 50ms
258 {
259 1 Num_Of_Circle = Num_Of_Circle==19 ? 0 : Num_Of_Circle + 1;
260 1 }
261
262 void EX0INT() interrupt 0
263 {
264 1 }
265
266 void EX1INT() interrupt 2
267 {
268 1 }
269
270 void SERIAL() interrupt 4
271 {
272 1 }
273 ///////////////////////////////////////////////////////////////
274
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 564 ----
CONSTANT SIZE = 74 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 6
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 + -