📄 last.asm
字号:
org 0000h
N_50ms equ 14h ;定时器,定时时间 = 50ms*N_50ms
Dir1H equ 50h ;方向1选择寄存器,选择东西或南北方向的数码管高位
Dir1L equ 51h ;方向1选择寄存器,选择东西或南北方向的数码管低位
Dir2H equ 52h ;方向2选择寄存器,选择东西或南北方向的数码管高位
Dir2L equ 53h ;方向2选择寄存器,选择东西或南北方向的数码管低位
ljmp main
org 0003h
ljmp hurryEW
org 0013h
ljmp hurrySN
org 000bh
ljmp time1s
main: ; 东西红灯35s 同时 南北绿30s,黄5s
mov r4,#23h ; r4:显示东西红灯倒计时数值 - 35s
; 在前30s-6s中南北绿亮,后5s南北黄亮
mov Dir1H,#0d0h ; 方向选择
mov Dir1L,#0e0h
mov Dir2H,#070h
mov Dir2L,#0b0h
mov p1,#00h
setb p1.0
setb p1.3
cjne r4,#05h,redE
yellowE:setb p1.5
clr p1.3
sjmp overE
redE: jc yellowE
setb p1.3
overE: acall disp
clr p1.0
clr p1.5
; 同理,南北红灯35s 同时 东西绿30s,黄5s
mov Dir1H,#070h ; 方向选择
mov Dir1L,#0b0h
mov Dir2H,#0d0h
mov Dir2L,#0e0h
mov p1,#00h
setb p1.1
setb p1.2
cjne r4,#05h,redS
yellowS:setb p1.4
clr p1.2
sjmp overS
redS: jc yellowS
setb p1.2
overS: acall disp
clr p1.1
clr p1.4
sjmp main
disp: setb EA
setb TR0
setb EX0
clr IT0
mov TMOD,#01h
setb ET0
mov r7,#N_50ms
mov TH0,#0ffh
mov TL0,#0b0h
mov dptr,#2100h
mov a,#03h
movx @dptr,a
led: mov dptr,#2101h ; 方向1 位码H
mov a,Dir1H
movx @dptr,a
mov a,r4
mov b,#0ah
div ab
mov dptr,#TAB
movc a,@a+dptr
mov dptr,#2102h
movx @dptr,a
acall delay
mov dptr,#2101h ; 方向1 位码L
mov a,Dir1L
movx @dptr,a
mov dptr,#TAB
mov a,b
movc a,@a+dptr
mov dptr,#2102h
movx @dptr,a
acall delay
cjne r4,#05h,down30
down5: mov a,r4 ; 方向2 5s --
clr c
subb a,#1eh
mov b,#00h
sjmp leddisp
down30: jc down5
mov a,r4 ; 方向2 30s --
clr c
subb a,#05h
mov b,#0ah
div ab
leddisp:mov dptr,#2101h ; 方向2 位码H
mov a,Dir2H
movx @dptr,a
mov dptr,#TAB
movc a,@a+dptr
mov dptr,#2102h
movx @dptr,a
acall delay
mov dptr,#2101h ; 方向2 位码L
mov a,Dir2L
movx @dptr,a
mov dptr,#TAB
mov a,b
movc a,@a+dptr
mov dptr,#2102h
movx @dptr,a
acall delay
cjne r4,#0ffh,led
ret
delay: ; 延时2.5ms
mov r6,#05h
d1: mov r5,#0fah
d0: djnz r5,d0
djnz r6,d1
ret
time1s: ; 定时器服务程序,间隔1s将r4减1一次
djnz r7,reload
mov r7,#N_50ms
dec r4
reload: mov TH0,#03ch
mov TL0,#0b0h
reti
hurryEW: ; 东西紧急,东西红
setb p1.0
acall delay
clr p1.2
clr p1.4
mov p1,#00h
reti
hurrySN: ; 南北紧急,南北红
setb p1.1
acall delay
clr p1.3
clr p1.5
mov p1,#00h
reti
TAB: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -