📄 tl_main.lst
字号:
C51 COMPILER V7.06 TL_MAIN 06/07/2007 19:25:03 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TL_MAIN
OBJECT MODULE PLACED IN TL_Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TL_Main.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<_REG52_.H>
2 //Bit Port Declaration
3 sbit P20=P2^0;
4 sbit P21=P2^1;
5 sbit P22=P2^2;
6 sbit P23=P2^3;
7 sbit P32=P3^2;
8 sbit P35=P3^5;
9 sbit P36=P3^6;
10 sbit P37=P3^7;
11 //--------------------
12 sbit EWR=P1^0;
13 sbit EWG=P1^1;
14 sbit EWY=P1^2;
15 sbit SNR=P1^4;
16 sbit SNG=P1^5;
17 sbit SNY=P1^6;
18 //Global Variables
19 uchar TIME_EW; //EastWest Count Down Register Unit
20 uchar TIME_SN; //SouthNorth Count Down Register Unit
21 uchar MS_CNT; //50ms Count
22 uint SEC_CNT; //Second Count
23 uchar HOUR=12; //Hour Buffer
24 uchar flash;
25 uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
26 0x7F,0x6F};
27
28 //Delay Function
29 void Delay(uchar formal_t)
30 {
31 1 uchar t;
32 1 t=formal_t;
33 1 while(t--);
34 1 }
35
36 //Display Function
37 void Display(void)
38 {
39 1 uchar h,l;
40 1 l=TIME_EW%10;
41 1 P2=0xff;
42 1 P0=table[l];
43 1 P20=0;
44 1 h=TIME_EW/10;
45 1 Delay(3);
46 1 P2=0xff;
47 1 P0=table[h];
48 1 P21=0;
49 1 Delay(3);
50 1 //-----------------
51 1 l=TIME_SN%10;
52 1 P2=0xff;
53 1 P0=table[l];
54 1 P22=0;
55 1 h=TIME_SN/10;
C51 COMPILER V7.06 TL_MAIN 06/07/2007 19:25:03 PAGE 2
56 1 Delay(3);
57 1 P2=0xff;
58 1 P0=table[h];
59 1 P23=0;
60 1 Delay(3);
61 1 P2=0xff;
62 1 }
63
64 //T0 Interrupt Function
65 void Timer0(void)interrupt 1 using 2
66 {
67 1 TH0=(65536-49990)/256;
68 1 TL0=(65536-49990)%256;
69 1 if(MS_CNT>=10)
70 1 flash=1;
71 1 else flash=0;
72 1 if(MS_CNT>=20)
73 1 {
74 2 MS_CNT=0;
75 2 SEC_CNT+=1;
76 2 TIME_EW-=1;
77 2 TIME_SN-=1;
78 2 if(SEC_CNT==3600)
79 2 HOUR+=1;
80 2 if(HOUR==24)
81 2 HOUR=0;
82 2 }
83 1 else MS_CNT+=1;
84 1 }
85 //INT0 Interrupt Function
86 void INTSP(void)interrupt 0 using 1
87 {
88 1 EX0=0;
89 1 P2=0xff;
90 1 Delay(10);
91 1 P32=1;
92 1 if(~P35)
93 1 P1=0x65; //P1.0----RG
94 1 else if(~P36)
95 1 P1=0x56; //P1.1----GR
96 1 else if(~P37)
97 1 P1=0x66; //P1.0----RR
98 1 while(~P32){;}
99 1 EX0=1;
100 1 }
101
102 //EastWest-RED,SouthNorth-GREEN --30S
103 void StateRG(void)
104 {
105 1 TIME_EW=35;
106 1 TIME_SN=30;
107 1 P1=0x00;
108 1 while(TIME_SN)
109 1 {
110 2 Display();
111 2 EWR=1;SNG=1;
112 2 }
113 1 P1=0x00;
114 1 }
115 //EastWest-RED,SouthNorth-YELLOW-5S
116 void StateRY(void)
117 {
C51 COMPILER V7.06 TL_MAIN 06/07/2007 19:25:03 PAGE 3
118 1 TIME_SN=5;
119 1 P1=0x00;
120 1 while(TIME_SN)
121 1 {
122 2 Display();
123 2 EWR=1;SNY=1;
124 2 }
125 1 P1=0x00;
126 1 }
127 //EastWest-GREEN,SouthNorth-RED -30S
128 void StateGR(void)
129 {
130 1 TIME_EW=30;
131 1 TIME_SN=35;
132 1 P1=0x00;
133 1 while(TIME_EW)
134 1 {
135 2 Display();
136 2 EWG=1;SNR=1;
137 2 }
138 1 P1=0x00;
139 1 }
140 //EastWest-YELLOW,SouthNorth-RED -5S
141 void StateYR(void)
142 {
143 1 TIME_EW=5;
144 1 P1=0x00;
145 1 while(TIME_EW)
146 1 {
147 2 Display();
148 2 EWR=1;SNG=1;
149 2 }
150 1 P1=0x00;
151 1 }
152 //SLEEP
153 void StateSleep(void)
154 {
155 1 P1=0x00;
156 1 if(flash) {EWY=1;SNY=1;}
157 1 else P1=0x00;
158 1 P2=0xff;
159 1 }
160
161 void main(void)
162 {
163 1 TMOD=0X01;
164 1 TH0=(65536-49990)/256;
165 1 TL0=(65536-49990)%256;
166 1 IT0=1; //External Interrupt Springed by Hight-To-Low.
167 1 PX0=1; //T0 Interrupt With High PRI.
168 1 ET0=1; //T0 Interrupt Enable,
169 1 EX0=1; //INT0 Interrupt Enable
170 1 EA=1; //All Interrupt Enable.
171 1 TR0=1; //T0 Start.
172 1
173 1 while(1)
174 1 {
175 2 while(HOUR>=0&&HOUR<=5)
176 2 StateSleep();
177 2 StateRG();
178 2 StateRY();
179 2 StateGR();
C51 COMPILER V7.06 TL_MAIN 06/07/2007 19:25:03 PAGE 4
180 2 StateYR();
181 2 }
182 1 }
183
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 393 ----
CONSTANT SIZE = 10 ----
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 + -