📄 main.s
字号:
; {
.dbline 135
; static INT8U TimeCount = 0;
; //Clear Timer1 OCIF Flag
; TIFR |= 0x10;
in R24,0x38
ori R24,16
out 0x38,R24
.dbline 136
; TCNT1 = 0x00;
clr R2
clr R3
out 0x2d,R3
out 0x2c,R2
.dbline 137
; if(ControllerMode == cSelfTestMode)
lds R2,_ControllerMode
tst R2
breq X4
xjmp L37
X4:
.dbline 138
; {
.dbline 139
; TimeCount++;
lds R24,L36
subi R24,255 ; addi 1
sts L36,R24
.dbline 140
; if(TimeCount == 1)
cpi R24,1
brne L39
.dbline 141
; {
.dbline 142
; LED_ON_OFF(cR_LED_V,cLED_ON);
ldi R18,1
clr R16
xcall _LED_ON_OFF
.dbline 143
; LED_ON_OFF(cG_LED_V,cLED_ON);
ldi R18,1
ldi R16,2
xcall _LED_ON_OFF
.dbline 144
; LED_ON_OFF(cY_LED_V,cLED_ON);
ldi R18,1
ldi R16,1
xcall _LED_ON_OFF
.dbline 145
; }
xjmp L38
L39:
.dbline 146
; else if(TimeCount == 2)
lds R24,L36
cpi R24,2
brne L41
.dbline 147
; {
.dbline 148
; mSet_Data_V(0xFF);
ldi R24,255
out 0x1b,R24
.dbline 149
; mSelect_VA();
in R24,0x18
andi R24,207
out 0x18,R24
.dbline 150
; }
xjmp L38
L41:
.dbline 151
; else if(TimeCount == 3)
lds R24,L36
cpi R24,3
brne L43
.dbline 152
; {
.dbline 153
; LED_ON_OFF(cR_LED_H,cLED_ON);
ldi R18,1
ldi R16,3
xcall _LED_ON_OFF
.dbline 154
; LED_ON_OFF(cG_LED_H,cLED_ON);
ldi R18,1
ldi R16,5
xcall _LED_ON_OFF
.dbline 155
; LED_ON_OFF(cY_LED_H,cLED_ON);
ldi R18,1
ldi R16,4
xcall _LED_ON_OFF
.dbline 156
; }
xjmp L38
L43:
.dbline 157
; else if(TimeCount == 4)
lds R24,L36
cpi R24,4
brne L45
.dbline 158
; {
.dbline 159
; mSet_Data_H(0xFF);
ldi R24,255
out 0x12,R24
.dbline 160
; mSelect_HA();
in R24,0x18
andi R24,63
out 0x18,R24
.dbline 161
; }
xjmp L38
L45:
.dbline 162
; else if(TimeCount == 5)
lds R24,L36
cpi R24,5
brne L47
.dbline 163
; {
.dbline 164
; LED_ON_OFF(cR_LED_V,cLED_OFF);
clr R18
clr R16
xcall _LED_ON_OFF
.dbline 165
; LED_ON_OFF(cG_LED_V,cLED_OFF);
clr R18
ldi R16,2
xcall _LED_ON_OFF
.dbline 166
; LED_ON_OFF(cY_LED_V,cLED_OFF);
clr R18
ldi R16,1
xcall _LED_ON_OFF
.dbline 167
; }
xjmp L38
L47:
.dbline 168
; else if(TimeCount == 6)
lds R24,L36
cpi R24,6
brne L49
.dbline 169
; {
.dbline 170
; mSelect_VN();
in R24,0x18
ori R24,48
out 0x18,R24
.dbline 171
; }
xjmp L38
L49:
.dbline 172
; else if(TimeCount == 7)
lds R24,L36
cpi R24,7
brne L51
.dbline 173
; {
.dbline 174
; LED_ON_OFF(cR_LED_H,cLED_OFF);
clr R18
ldi R16,3
xcall _LED_ON_OFF
.dbline 175
; LED_ON_OFF(cG_LED_H,cLED_OFF);
clr R18
ldi R16,5
xcall _LED_ON_OFF
.dbline 176
; LED_ON_OFF(cY_LED_H,cLED_OFF);
clr R18
ldi R16,4
xcall _LED_ON_OFF
.dbline 177
; }
xjmp L38
L51:
.dbline 178
; else if(TimeCount == 8)
lds R24,L36
cpi R24,8
brne L53
.dbline 179
; {
.dbline 180
; mSelect_HN();
in R24,0x18
ori R24,192
out 0x18,R24
.dbline 181
; }
xjmp L38
L53:
.dbline 182
; else if(TimeCount == 9)
lds R24,L36
cpi R24,9
breq X5
xjmp L38
X5:
.dbline 183
; {
.dbline 184
; TimeCount = 0;
clr R2
sts L36,R2
.dbline 185
; ControllerMode = cNormalMode;
ldi R24,1
sts _ControllerMode,R24
.dbline 186
; SetTrafficStatus(cTraffic_V,cAllow);
ldi R18,3
clr R16
xcall _SetTrafficStatus
.dbline 187
; SetTrafficStatus(cTraffic_H,cForbidden);
ldi R18,1
ldi R16,1
xcall _SetTrafficStatus
.dbline 188
; }
.dbline 189
; }
xjmp L38
L37:
.dbline 190
; else if(ControllerMode == cNormalMode)
lds R24,_ControllerMode
cpi R24,1
breq X6
xjmp L57
X6:
.dbline 191
; {
.dbline 192
; if(TrafficStatus_V == cAllow)
lds R24,_TrafficStatus_V
cpi R24,3
brne L59
.dbline 193
; {
.dbline 194
; if(Time_V-- == 0)
lds R2,_Time_V
clr R3
mov R24,R2
subi R24,1
sts _Time_V,R24
tst R2
brne L60
.dbline 195
; {
.dbline 196
; SetTrafficStatus(cTraffic_V,cBuffer1);
ldi R18,2
clr R16
xcall _SetTrafficStatus
.dbline 197
; }
.dbline 198
; }
xjmp L60
L59:
.dbline 199
; else if(TrafficStatus_V == cBuffer1)
lds R24,_TrafficStatus_V
cpi R24,2
brne L63
.dbline 200
; {
.dbline 201
; if(Time_V-- == 0)
lds R2,_Time_V
clr R3
mov R24,R2
subi R24,1
sts _Time_V,R24
tst R2
brne L64
.dbline 202
; {
.dbline 203
; SetTrafficStatus(cTraffic_V,cForbidden);
ldi R18,1
clr R16
xcall _SetTrafficStatus
.dbline 204
; }
.dbline 205
; }
xjmp L64
L63:
.dbline 206
; else if(TrafficStatus_V == cForbidden)
lds R24,_TrafficStatus_V
cpi R24,1
brne L67
.dbline 207
; {
.dbline 208
; if(Time_V-- == 0)
lds R2,_Time_V
clr R3
mov R24,R2
subi R24,1
sts _Time_V,R24
tst R2
brne L68
.dbline 209
; {
.dbline 210
; SetTrafficStatus(cTraffic_V,cBuffer2);
ldi R18,4
clr R16
xcall _SetTrafficStatus
.dbline 211
; }
.dbline 212
; }
xjmp L68
L67:
.dbline 213
; else if(TrafficStatus_V == cBuffer2)
lds R24,_TrafficStatus_V
cpi R24,4
brne L71
.dbline 214
; {
.dbline 215
; if(Time_V-- == 0)
lds R2,_Time_V
clr R3
mov R24,R2
subi R24,1
sts _Time_V,R24
tst R2
brne L73
.dbline 216
; {
.dbline 217
; SetTrafficStatus(cTraffic_V,cAllow);
ldi R18,3
clr R16
xcall _SetTrafficStatus
.dbline 218
; }
L73:
.dbline 219
; }
L71:
L68:
L64:
L60:
.dbline 221
;
; if(TrafficStatus_H == cAllow)
lds R24,_TrafficStatus_H
cpi R24,3
brne L75
.dbline 222
; {
.dbline 223
; if(Time_H-- == 0)
lds R2,_Time_H
clr R3
mov R24,R2
subi R24,1
sts _Time_H,R24
tst R2
brne L76
.dbline 224
; {
.dbline 225
; SetTrafficStatus(cTraffic_H,cBuffer1);
ldi R18,2
ldi R16,1
xcall _SetTrafficStatus
.dbline 226
; }
.dbline 227
; }
xjmp L76
L75:
.dbline 228
; else if(TrafficStatus_H == cBuffer1)
lds R24,_TrafficStatus_H
cpi R24,2
brne L79
.dbline 229
; {
.dbline 230
; if(Time_H-- == 0)
lds R2,_Time_H
clr R3
mov R24,R2
subi R24,1
sts _Time_H,R24
tst R2
brne L80
.dbline 231
; {
.dbline 232
; SetTrafficStatus(cTraffic_H,cForbidden);
ldi R18,1
ldi R16,1
xcall _SetTrafficStatus
.dbline 233
; }
.dbline 234
; }
xjmp L80
L79:
.dbline 235
; else if(TrafficStatus_H == cForbidden)
lds R24,_TrafficStatus_H
cpi R24,1
brne L83
.dbline 236
; {
.dbline 237
; if(Time_H-- == 0)
lds R2,_Time_H
clr R3
mov R24,R2
subi R24,1
sts _Time_H,R24
tst R2
brne L84
.dbline 238
; {
.dbline 239
; SetTrafficStatus(cTraffic_H,cBuffer2);
ldi R18,4
ldi R16,1
xcall _SetTrafficStatus
.dbline 240
; }
.dbline 241
; }
xjmp L84
L83:
.dbline 242
; else if(TrafficStatus_H == cBuffer2)
lds R24,_TrafficStatus_H
cpi R24,4
brne L87
.dbline 243
; {
.dbline 244
; if(Time_H-- == 0)
lds R2,_Time_H
clr R3
mov R24,R2
subi R24,1
sts _Time_H,R24
tst R2
brne L89
.dbline 245
; {
.dbline 246
; SetTrafficStatus(cTraffic_H,cAllow);
ldi R18,3
ldi R16,1
xcall _SetTrafficStatus
.dbline 247
; }
L89:
.dbline 248
; }
L87:
L84:
L80:
L76:
.dbline 249
; }
L57:
L38:
.dbline -2
.dbline 250
; }
L35:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.area bss(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
_Time_H::
.blkb 1
.dbsym e Time_H _Time_H c
_Time_V::
.blkb 1
.dbsym e Time_V _Time_V c
_TrafficStatus_H::
.blkb 1
.dbsym e TrafficStatus_H _TrafficStatus_H c
_TrafficStatus_V::
.blkb 1
.dbsym e TrafficStatus_V _TrafficStatus_V c
_ControllerMode::
.blkb 1
.dbsym e ControllerMode _ControllerMode c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -