⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 交通信号灯控制.asm

📁 实验5-交通信号灯控制实验参考程序,基于pic16f877a
💻 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 + -