📄 traffic.lst
字号:
C51 COMPILER V7.50 TRAFFIC 09/08/2007 20:11:12 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TRAFFIC
OBJECT MODULE PLACED IN traffic.OBJ
COMPILER INVOKED BY: F:\LC\software\Keil\UV2\C51\BIN\C51.EXE traffic.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include <at89x51.h>
3 #include <absacc.h>
4
5 #define RED XBYTE[0XE000] // 8255 port A red light
6 #define YELLOW XBYTE[0XE001] // 8255 port B yellow light
7 #define GREEN XBYTE[0XE002] // 8255 port C green light
8 #define Command XBYTE[0XE003] // 8255 configuration word
9
10 #define byte unsigned char
11 #define word unsigned int
12
13 #define DELAY_SHORT 10
14 #define FLASH_TIMES 10
15 #define DELAY_LONG 600
16
17 /*
18 [4] [3] [2] [1]
19 RED PA3 PA2 PA1 PA0
20 YELLOW PB3 PB2 PB1 PB0
21 GREEN PC3 PC2 PC1 PC0
22
23 */
24
25 #define ON_1_3 0x05
26 #define ON_2_4 0xA0
27 #define ALL_ON 0x0F
28 #define ALL_OFF 0x00
29
30 word d_short;
31 word d_long;
32 byte stop;
33 byte wait_flag;
34 byte flash;
35
36 void iniVal(void);
37 void ini8255(void);
38 void Traffic_Running(void);
39
40 void iniVal(void)
41 {
42 1 d_short = 0;
43 1 d_long = 0;
44 1 stop = 0;
45 1 wait_flag = 0;
46 1 flash = 0;
47 1
48 1 TMOD = 0x01;// 16 bit timer
49 1 TH0 = (65536-50000) / 256;
50 1 TL0 = (65536-50000) % 256;
51 1 TR0 = 1;
52 1 ET0 = 1; // enable timer0 interrupt
53 1 EX0 = 1; // enable INT0 interrupt
54 1 IT0 = 1; // INT0 interrupt at falling edge
55 1 EA = 1; // enable cpu interrupt
C51 COMPILER V7.50 TRAFFIC 09/08/2007 20:11:12 PAGE 2
56 1
57 1 }
58
59 void ini8255(void)
60 {
61 1 Command = 0x80; // 0B10000000
62 1 RED = ALL_ON;
63 1 YELLOW = ALL_OFF;
64 1 GREEN = ALL_OFF;
65 1 }
66
67 void int_0(void) interrupt 0 using 1
68 {
69 1 stop = 1; // 外部按钮停止工作
70 1 }
71
72 void Timer_0(void) interrupt 1 using 0
73 {
74 1 TH0 = 0xC3; // 50ms
75 1 TL0 = 0x50;
76 1
77 1 if (1 == wait_flag){
78 2 // 半秒短延时
79 2 if (d_short >= DELAY_SHORT){
80 3 d_short = 0;
81 3 wait_flag = 0;
82 3 }else {
83 3 d_short++;
84 3 }
85 2 }else if (2 == wait_flag){
86 2 // 30秒长延时
87 2 if (d_long >= DELAY_LONG){
88 3 d_long = 0;
89 3 wait_flag = 0;
90 3 }else {
91 3 d_long++;
92 3 }
93 2 }
94 1
95 1 if (1 == stop){
96 2 wait_flag = 0;
97 2 d_short = 0;
98 2 d_long = 0;
99 2 }
100 1 }
101
102 void Traffic_Running(void)
103 {
104 1 while (0 == stop){
105 2 GREEN = ON_1_3; // 1,3绿灯亮
106 2 RED = ON_2_4; // 2,4红灯亮
107 2 YELLOW = ALL_OFF; // 黄灯灭
108 2 wait_flag = 2;
109 2 while (2 == wait_flag); // 延时30秒
110 2 GREEN = ALL_OFF; // 绿灯灭
111 2 while (flash <= FLASH_TIMES){ // 1,3黄灯闪烁
112 3 flash++; // 闪烁次数
113 3 if (0 == flash & 0x01){
114 4 YELLOW = ALL_OFF; // 偶次灭
115 4 }else{
116 4 YELLOW = ON_1_3; // 奇次亮
117 4 }
C51 COMPILER V7.50 TRAFFIC 09/08/2007 20:11:12 PAGE 3
118 3 wait_flag = 1;
119 3 while (1 == wait_flag); // 延时半秒
120 3 }
121 2 flash = 0;
122 2
123 2 GREEN = ON_2_4; // 2,4绿灯亮
124 2 RED = ON_1_3; // 1,3红灯亮
125 2 YELLOW = ALL_OFF; // 黄灯灭
126 2 wait_flag = 2;
127 2 while (2 == wait_flag);
128 2 GREEN = ALL_OFF;
129 2 while (flash <= FLASH_TIMES){ // 2,4黄灯闪烁
130 3 flash++;
131 3 if (0 == flash & 0x01){
132 4 YELLOW = ALL_OFF;
133 4 }else{
134 4 YELLOW = ON_2_4;
135 4 }
136 3 wait_flag = 1;
137 3 while (1 == wait_flag);
138 3 }
139 2 flash = 0;
140 2 }
141 1 }
142
143 void main(void)
144 {
145 1 iniVal();
146 1 ini8255();
147 1 Traffic_Running();
148 1
149 1 for(;;);
150 1 }
151
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 333 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
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 + -