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

📄 multi-display.asm

📁 基于8*8点阵的交通灯控制系统
💻 ASM
字号:
		LIST	P=16F877
		INCLUDE "P16F877.INC"
		
		PINTER	EQU	20H
		COUNT	EQU	21H
		DEL1	EQU	22H
		DEL2	EQU	23H
		DEL3	EQU 	24H
		DEL4	EQU	25H
		DEL5	EQU	26H
	

ORG		0X0000
		NOP
	
	
;*************************************************************************
;My Main Program
;*************************************************************************
MAIN	
		BSF		STATUS, RP0
		BCF		STATUS, RP1
		CLRF	TRISC
	
;SIDERODE   RED_ON
		BCF		STATUS, RP0
		BCF		PORTC, 1
		BCF		PORTC, 2
		BSF		PORTC, 3	

;MAINROAD   GREEN_ON   
		BSF		STATUS, RP0
		CLRF	TRISB
		CLRF	TRISD
		BCF		STATUS, RP0
		MOVLW	00H
		MOVWF	PORTB
		MOVLW	00H
		MOVWF	PINTER
LOOPA	MOVF	PINTER, W
		CALL	TABLE
		MOVWF	PORTD
		GOTO	GREEN_3S
CHANGE1	INCF	PINTER
		MOVLW	07H
		SUBWF	PINTER, W
		BTFSS	STATUS, Z
		GOTO	LOOPA

;SIDERODE   YELLOW_ON
		BCF		STATUS, RP0
		CLRF	PORTC
		BCF		PORTC, 1
		BSF		PORTC, 2
		BCF		PORTC, 3

;MAINROAD   YELLOW_ON
		BSF		STATUS, RP0
		CLRF	TRISB
		CLRF	TRISD
		BCF		STATUS, RP0
		MOVLW	0FFH
		MOVWF	PORTB
		MOVLW	0FFH
		MOVWF	PORTD
		GOTO	YELLOW_1S
;SIDEROAD   YELLOW_OFF
OFF		BCF		STATUS, RP0
		BCF		PORTC, 1
		BCF		PORTC, 2
		BCF		PORTC, 3

;MAINROAD    YELLOW_OFF
		MOVLW	00H
		MOVWF	PORTB
		MOVLW	00H
		MOVWF	PORTD
		CALL	DELAY_1S

;SIDEROAD    YELLOW_ON
		BCF		PORTC, 1
		BSF		PORTC, 2
		BCF		PORTC, 3

;MAINROAD    YELLOW_ON
		MOVLW	0FFH
		MOVWF	PORTB
		MOVLW	0FFH
		MOVWF	PORTD
		GOTO	YELLOW_1SS

;SIDEROAD    GREEN_ON
NEXT	BSF		PORTC, 1
		BCF		PORTC, 2
		BCF		PORTC, 3

;MAINROAD    RED_ON
		CLRF	PORTD
		CLRF	PINTER
		MOVLW	00H
		MOVWF	PORTD
		MOVLW	00H
		MOVWF	PINTER
LOOPB	MOVF	PINTER, W
   		CALL	TABLE
		MOVWF	PORTB
		GOTO	RED_3S
CHANGE2	INCF	PINTER
		MOVLW	07H
		SUBWF	PINTER, W
		BTFSS	STATUS, Z
		GOTO	LOOPB	
		GOTO	MAIN		
	
	

;*************************************
;TABLE
;*************************************
TABLE	ADDWF	PCL, F
		RETLW	0FFH
		RETLW	0FEH
		RETLW	0FCH
		RETLW	0F8H
		RETLW	0F0H
		RETLW	0E0H
		RETLW	0C0H
		RETLW	080H


;********************************************
;GREEN_3S
;********************************************
GREEN_3S
		MOVLW	00H
		MOVWF	COUNT
CHECK_3S
	
		BSF		STATUS, RP0
		CLRF	TRISC
		BCF		STATUS, RP0
		BCF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4	; 000
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1

		BCF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4	; 001
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1

		BCF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4	; 010
		CALL	DELAY_5MS	


		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1

		BCF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4	; 011
		CALL	DELAY_5MS	


		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1

		BSF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4	; 100
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1

		BSF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4	; 101
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1

		BSF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4	; 110
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1

		BSF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4	; 111
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	96H			; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE1
		GOTO	CHECK_3S


;********************************************
;YELLOW_1S
;********************************************
YELLOW_1S
		MOVLW	00H
		MOVWF	COUNT
CHECK_1S
	
		BSF		STATUS, RP0
		CLRF	TRISC
		BCF		STATUS, RP0
		BCF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4	; 000
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF

		BCF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4	; 001
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF

		BCF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4	; 010
		CALL	DELAY_5MS	


		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF

		BCF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4	; 011
		CALL	DELAY_5MS	


		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF
	
		BSF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4	; 100
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF
	
		BSF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4	; 101
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF
	
		BSF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4	; 110
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF

		BSF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4	; 111
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	OFF
		GOTO	CHECK_1S


;********************************************
;YELLOW_1SS
;********************************************
YELLOW_1SS
		MOVLW	00H
		MOVWF	COUNT
CHECK_1SS
	
		BSF		STATUS, RP0
		CLRF	TRISC
		BCF		STATUS, RP0
		BCF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4	; 000
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT

		BCF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4	; 001
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT

		BCF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4	; 010
		CALL	DELAY_5MS	


		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT
	
		BCF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4	; 011
		CALL	DELAY_5MS	
	
	
		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT
	
		BSF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4	; 100
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT

		BSF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4		; 101
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	32H			; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT
	
		BSF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4		; 110
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	32H				; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT
	
		BSF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4		; 111
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	32H				; 50 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	NEXT
		GOTO	CHECK_1SS

;********************************************
;RED_3S
;********************************************
RED_3S
		MOVLW	00H
		MOVWF	COUNT
CHECK_3SEC
	
		BSF		STATUS, RP0
		CLRF	TRISC
		BCF		STATUS, RP0
		BCF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4		; 000
		CALL	DELAY_5MS

		INCF	COUNT, 1
		MOVLW	96H				; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2

		BCF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4			; 001
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	96H				; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2
	
		BCF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4			; 010
		CALL	DELAY_5MS	
	

		INCF	COUNT, 1
		MOVLW	96H					; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2
	
		BCF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4			; 011
		CALL	DELAY_5MS	
	
	
		INCF	COUNT, 1
		MOVLW	96H					; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2
	
		BSF		PORTC, 6
		BCF		PORTC, 5
		BCF		PORTC, 4			; 100
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	96H					; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2
	
		BSF		PORTC, 6
		BCF		PORTC, 5
		BSF		PORTC, 4			; 101
		CALL	DELAY_5MS	
	
		INCF	COUNT, 1
		MOVLW	96H					; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2

		BSF		PORTC, 6
		BSF		PORTC, 5
		BCF		PORTC, 4			; 110
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	96H					; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2

		BSF		PORTC, 6
		BSF		PORTC, 5
		BSF		PORTC, 4		; 111
		CALL	DELAY_5MS
	
		INCF	COUNT, 1
		MOVLW	96H				; 150 in decimal
		SUBWF	COUNT, W
		BTFSC	STATUS, Z
		GOTO	CHANGE2
		GOTO	CHECK_3SEC
	

;*********************************************************************
;DELAY_5MS
;*********************************************************************
DELAY_5MS
		MOVLW	07H
		MOVWF	DEL1
LOOP1	MOVLW	0FFH
		MOVWF	DEL2
LOOP2	DECFSZ	DEL2
		GOTO	LOOP2
		DECFSZ	DEL1
		GOTO	LOOP1
		RETURN

	
	
;*****************************************************************
;DELAY_1S
;*****************************************************************
DELAY_1S
		MOVLW	06H
		MOVWF	DEL3
LOOP4   MOVLW	0EBH
		MOVWF	DEL4
LOOP5   MOVLW	0ECH
		MOVWF	DEL5
LOOP6	DECFSZ	DEL5
		GOTO	LOOP6
		DECFSZ	DEL4
		GOTO	LOOP5
		DECFSZ	DEL3
		GOTO	LOOP4
		RETURN

		END
		





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -