📄 新的1.txt
字号:
ORG 00H
LJMP START
ORG 03H ;INTO(上面有一横杠)外部中断向量入口地址
LJMP INT00
START: MOV SP,#60H ;堆栈的入口地址
SETB EX0 ;换INTO(上面有一横杠)中断有效;外部中断0为允许位,EX0=0,禁止外部中断0;EX0=1,允许外部中断0;由INT0(P3.2) ;脚输入
SETB IT0 ;IT0=0;电平触发方式;即INTO(上面有一横杠)低电平有效;IT0=1;边沿触发方式;即下降沿有效;
SETB EA ;总中断允许控制位;EA=0,单片机禁止所有中断;EA=1,单片机开放中断,但是每个中断源的中断是否
;开发还需要由自己的控制位来决定
LCALL S00 ;初始状态0;红灯都亮
MAIN: LCALL S10 ;状态1;南北绿灯亮,东西红灯亮
LCALL S20 ;状态2南北绿灯灭,转黄灯闪三次,东西红灯继续亮
LCALL S30 ;状态3南北红灯亮,东西绿灯亮
LCALL S40 ;状态4南北红灯继续亮,东西绿灯灭,转黄灯闪三次
LJMP MAIN ;重复执行
S00: MOV R0,#00H ;P1口清零
MOV P1,R0
S01: MOV R0,#89H
MOV P1,R0
LCALL DELAY1S
RET
S10: MOV R6,#5 ;状态1子程序,亮5S
S11: MOV R0,#8AH ;南北绿灯亮,东西红灯亮
MOV P1,R0
LCALL DELAY1S
DJNZ R6,S11
RET
S20: MOV R6,#3 ;状态2子程序 ,闪三次
S21: MOV R0,#88H ;南北绿灯灭,转黄灯闪三次,东西红灯继续亮
MOV P1,R0
LCALL DELAY1S
MOV R0,#8CH
MOV P1,R0
LCALL DELAY1S
DJNZ R6,S21
RET
S30: MOV R6,#5 ;状态3子程序 亮5S
S31: MOV R0,#91H ;南北红灯亮,东西绿灯亮
MOV P1,R0
LCALL DELAY1S
RET
S40: MOV R6,#3 ;状态4子程序 闪三次
S41: MOV R0,#81H ;南北红灯继续亮,东西绿灯灭,转黄灯闪三次
MOV P1,R0
LCALL DELAY1S
MOV R0,#0A1H
MOV P1,R0
LCALL DELAY1S
DJNZ R6,S41
RET
DELAY1S:MOV R2,#10 ;延时1S子程序
DE1: MOV R3,#200
DE2: MOV R4,#247
DJNZ R4,$
DJNZ R3,DE2
DJNZ R2,DE1
RET
INT00: PUSH PSW
PUSH ACC
MOV R7,#10 ;设置中断时间为10秒
INT01: MOV P1,#89H ;东西南北红灯亮
LCALL DELAY1S
DJNZ R7,INT01
POP ACC ;恢复原状态
POP PSW
RETI ;中断返回
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -