📄 test.lst
字号:
C51 COMPILER V8.05a TEST 06/21/2008 11:16:10 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN Test.OBJ
COMPILER INVOKED BY: D:\program\uv3\C51\BIN\C51.EXE Test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #ifndef __STC12C5410AD_H__
3 #define __STC12C5410AD_H__
4
5 bdata unsigned char flag;
6 sbit led_fleg =flag^0; //3秒切换显示标志
7
8 sbit J1 =P2^2;
9 sbit J2 =P2^3;
10 sbit KEY_1 =P3^4;
11 sbit KEY_2 =P3^5;
12 sbit SPEAKER =P2^4;
13 sbit LED_A =P1^5;
14 sbit LED_B =P1^6;
15 sbit LED_C =P2^0;
16 sbit LED_D =P1^1;
17 sbit LED_E =P1^2;
18 sbit LED_F =P1^4;
19 sbit LED_G =P1^7;
20 sbit LED_H =P1^3;
21 sbit LED_S0 =P2^6; //流水灯
22 sbit LED_S2 =P2^7; //左2,十位
23 sbit LED_S1 =P3^7; //左3,个位
24 sbit LED_S3 =P2^1; //左1,百位
25 sbit LED_S4 =P2^5; //左4,符号位
26 sbit INT_0 =P3^2;
27 sbit INT_1 =P3^3;
28 void warter();
29 char warter_led;
30
31 char l_bai;
32 char l_shi;
33 char l_ge;
34 char t_shi;
35 char t_ge;
36 unsigned int disptimer;
37 char gPulseCount;
38 char scan;
39 char TimeSub;
40 unsigned int TimeAdd;
41 unsigned char buff =0;
42 unsigned char code table[]=
43 {
44 0x3f,0x06,0x5b,0x4f,
45 0x66,0x6d,0x7d,0x07,
46 0x7f,0x6f,0x38,0xb9, //38=L,b9=度
47 0x39,0x5e,0x79,0x71
48 };
49
50 void Initialization()
51 {
52 1 // AUXR =0x10; //f=fosc/12
53 1 TMOD =0x21; //定时器0设为方式1定时器1设为方式2自动重装
54 1 TH1=TL1 =0xE8; //11.0592MHz时1200波特率
55 1 TH0 =(65536-1000)/256;
C51 COMPILER V8.05a TEST 06/21/2008 11:16:10 PAGE 2
56 1 TL0 =(65536-1000)%256; //定时器0定时1ms
57 1 TR1 =1; //启动定时器1
58 1 TR0 =1; //启动定时器0
59 1 ET0 =1; //开定时器0中断
60 1 EA =1; //开总中断
61 1 // IE =0x07; //外部中断
62 1 // IP =0x05;
63 1 IT1 =1; //external interrupt falling edge take effect
64 1 IT0 =1; //下沿触发
65 1 }
66 /*************显示数送端口**************/
67 void send_port()
68 {
69 1 LED_A =!(buff>>0 & 0x01); //send data to IO port
70 1 LED_B =!(buff>>1 & 0x01);
71 1 LED_C =!(buff>>2 & 0x01);
72 1 LED_D =!(buff>>3 & 0x01);
73 1 LED_E =!(buff>>4 & 0x01);
74 1 LED_F =!(buff>>5 & 0x01);
75 1 LED_G =!(buff>>6 & 0x01);
76 1 LED_H =!(buff>>7 & 0x01);
77 1 }
78 /*********************流水灯********************************/
79 void warter()
80 {
81 1 switch (warter_led)
82 1 {
83 2 case 0:
84 2 LED_F = 1; //流水灯高低次序
85 2 LED_C = 0;
86 2 LED_E = 0;
87 2 LED_D = 0;
88 2 LED_B = 1;
89 2 LED_A = 0;
90 2 LED_H = 0;
91 2 LED_G = 0;
92 2 break;
93 2 case 1:
94 2 LED_F = 0; //流水灯高低次序
95 2 LED_C = 0;
96 2 LED_E = 0;
97 2 LED_D = 1;
98 2 LED_B = 0;
99 2 LED_A = 0;
100 2 LED_H = 0;
101 2 LED_G = 1;
102 2 break;
103 2 case 2:
104 2 LED_F = 0; //流水灯高低次序
105 2 LED_C = 0;
106 2 LED_E = 1;
107 2 LED_D = 0;
108 2 LED_B = 0;
109 2 LED_A = 0;
110 2 LED_H = 1;
111 2 LED_G = 0;
112 2 break;
113 2 case 3:
114 2 LED_F = 0; //流水灯高低次序
115 2 LED_C = 1;
116 2 LED_E = 0;
117 2 LED_D = 0;
C51 COMPILER V8.05a TEST 06/21/2008 11:16:10 PAGE 3
118 2 LED_B = 0;
119 2 LED_A = 1;
120 2 LED_H = 0;
121 2 LED_G = 0;
122 2 }
123 1 }
124
125 //*********************三秒显示切换************************************
126 void Disp()
127 {
128 1
129 1 char bai =0;
130 1 char shi =0;
131 1 char ge =0;
132 1 char fuha;
133 1 buff = 0;
134 1 if(disptimer>3000) //disptimer放在定时中断中递减
135 1 {
136 2 disptimer=0; //3秒显示切换定时值
137 2 led_fleg=led_fleg^1; //每执行一次,标志改变一次
138 2 }
139 1 else if(led_fleg==1)
140 1 {
141 2 bai = l_bai; //流量百位
142 2 shi = l_shi; //流量十位
143 2 ge = l_ge; //流量个位
144 2 fuha= 10;
145 2 }
146 1 else
147 1 { //百位不显示,段码送全1
148 2 // bai = t_bai;
149 2 shi = t_shi; //温度十位
150 2 ge = t_ge; //温度个位
151 2 fuha= 11;
152 2 }
153 1 //*********显示位选择**********
154 1 LED_S0 =1; //disable all bits
155 1 LED_S1 =1; //关显示
156 1 LED_S2 =1;
157 1 LED_S3 =1;
158 1 LED_S4 =1;
159 1 switch (scan) //
160 1 {
161 2 case 0: //s4显示设置脉冲计数
162 2 warter(); //led dynamic scan
163 2 LED_S0 =0;
164 2 break;
165 2 case 1:
166 2 buff=table[ge]; //
167 2 send_port(); //显示段送端口
168 2 LED_S1 =0;
169 2 break;
170 2 case 2:
171 2 if(bai||shi>0)
172 2 {
173 3 buff=table[shi]; //
174 3 send_port(); //显示段送端口
175 3 // LED_H = 1; //小数点显示
176 3 LED_S2 =0;
177 3 }
178 2 else
179 2 LED_S2 =1;
C51 COMPILER V8.05a TEST 06/21/2008 11:16:10 PAGE 4
180 2 break;
181 2 case 3:
182 2 if(bai>0)
183 2 {
184 3 buff=table[bai]; //
185 3 send_port(); //显示段送端口
186 3 LED_S3 =0;
187 3 }
188 2 else
189 2 LED_S3 =1;
190 2 break;
191 2 case 4:
192 2 buff=table[fuha]; //改A字码为L(x038),B为C符号
193 2 send_port(); //显示段送端口
194 2 LED_S4 =0;
195 2 break;
196 2 }
197 1 scan++;
198 1 if(scan==5) scan=0;
199 1 }
200 /*************定时器1中断服务*********/
201 void Timer0Srv() interrupt 1 //定时器1ms定时中断
202 {
203 1 TH0 =(65536-1000)/256;
204 1 TL0 =(65536-1000)%256; //定时器0初装值定时1ms
205 1 TimeAdd++; //最大计数值:65535ms
206 1 TimeSub--; //最大计数值:256ms
207 1 disptimer++; //显示计时
208 1 // warter();
209 1 Disp(); //定时器中断时扫描显示一次
210 1 }
211 void main()
212 {
213 1 Initialization();
214 1 while(1)
215 1 {
216 2 J1 = 1;
217 2 J2 = 0;
218 2 l_bai = 1;
219 2 l_shi = 7;
220 2 l_ge = 4;
221 2 t_shi = 0;
222 2 t_ge = 6;
223 2
224 2 if(TimeAdd==500) //流水灯流动触发,0.5秒滚动一次
225 2 {
226 3 warter_led++;
227 3 TimeAdd=0;
228 3 }
229 2 if(warter_led==4) (warter_led=0);
230 2
231 2 // if(TimeAdd==0) (gPulseCount++);
232 2 // if(TimeAdd==9) (TimeAdd=0);
233 2 // warter();
234 2 // LED_S0 =1;
235 2 };
236 1
237 1 }
*** WARNING C316 IN LINE 237 OF Test.c: unterminated conditionals
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.05a TEST 06/21/2008 11:16:10 PAGE 5
CODE SIZE = 469 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -