📄 交通信号灯控制.asm
字号:
;------------------------------------------------------------------------------------------
;交通信号灯控制实验参考程序(实验5.asm)
;------------------------------------------------------------------------------------------
LIST P=16F877 ;头文件的设定
INCLUDE"P16F877.INC"
;------------------------------------------------------------------------------------------
ABC EQU 30H ;自定义变量
;------------------------------------------------------------------------------------------
ORG 0000H ;复位地址
NOP ;MPLAB专用语句
ST BSF STATUS,RP0 ;选择体1
CLRF TRISD ;PORTD口设置为输出
BCF STATUS,RP0 ;选择体0
CLRF PORTD ;PORTD口初始为0
MOVLW 05H
MOVWF ABC ;信号灯闪动次数
MAIN MOVLW B'00100001' ;南北亮绿灯,东西亮红灯
MOVWF PORTD
CALL DELAY1S ;调用1S延时程序
LOOP MOVLW B'00100001' ;南北亮绿灯,东西亮红灯
MOVWF PORTD
CALL DELAY0.5S ;调用0.5S延时程序
MOVLW B'00000001' ;南北灯暗,东西亮红灯
MOVWF PORTD
CALL DELAY0.5S ;调用0.5S延时程序
DECFSZ ABC,1 ;判断是否闪动5次
GOTO LOOP
MOVLW 05H ;重新附值
MOVWF ABC
MOVLW B'00010001' ;南北亮黄灯,东西亮绿灯
MOVWF PORTD
CALL DELAY1S ;调用1S延时程序
MOVLW B'00001100' ;南北亮红灯,东西亮绿灯
MOVWF PORTD
CALL DELAY1S ;调用1S延时程序
LOOP1 MOVLW B'00001100' ;南北亮红灯,东西亮绿灯
MOVWF PORTD
CALL DELAY0.5S ;调用0.5S延时程序
MOVLW B'00001000' ;南北灯暗,东西亮绿灯
MOVWF PORTD
CALL DELAY0.5S ;调用0.5S延时程序
DECFSZ ABC,1 ;判断是否闪动5次
GOTO LOOP1
MOVLW B'00001010' ;南北亮红灯,东西亮黄灯
MOVWF PORTD
CALL DELAY0.5S ;调用0.5S延时程序
MOVLW 05H ;重新附值
MOVWF ABC
GOTO MAIN ;循环执行
;-----------------------------------------------------------------------------------------
;1S延时
;-----------------------------------------------------------------------------------------
DELAY1S MOVLW 06H ;外循环常数
MOVWF 20H ;外循环寄存器
LOP0 MOVLW 0EBH ;中循环常数
MOVWF 21H ;中循环寄存器
LOP1 MOVLW 0ECH ;内循环常数
MOVWF 22H ;内循环寄存器
LOP2 DECFSZ 22H ;内循环寄存器递减
GOTO LOP2 ;继续内循环
DECFSZ 21H ;中循环寄存器递减
GOTO LOP1 ;继续中循环
DECFSZ 20H ;外循环寄存器递减
GOTO LOP0 ;继续外循环
RETURN ;返回
;-----------------------------------------------------------------------------------------
;0.5S延时
;-----------------------------------------------------------------------------------------
DELAY0.5S
MOVLW 03H ;外循环常数
MOVWF 25H ;外循环寄存器
LOP3 MOVLW 0EBH ;中循环常数
MOVWF 26H ;中循环寄存器
LOP4 MOVLW 0ECH ;内循环常数
MOVWF 27H ;内循环寄存器
LOP5 DECFSZ 27H ;内循环寄存器递减
GOTO LOP5 ;继续内循环
DECFSZ 26H ;中循环寄存器递减
GOTO LOP4 ;继续中循环
DECFSZ 25H ;外循环寄存器递减
GOTO LOP3 ;继续外循环
RETURN ;返回
;------------------------------------------------------------------------------------------
END
;------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -