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

📄 未用中断的红绿灯.txt

📁 关于单片机中流水线处理,红绿灯转化等实验
💻 TXT
字号:
	CURR_NUM	EQU	30H	
 	VAR_TIME	EQU	31H
	VAR_LED		EQU	32H
	org	0000H
	jmp	MAIN
;*******************************************************
	org	0030H	;start program from 0030H
MAIN:
	mov	p0,#0FFH	;shutdown all led
	mov	p1,#0FFH
	mov	p2,#0FFH
	mov	p3,#0FFH

	mov	CURR_NUM,#15
	mov	VAR_TIME,#00H
	mov	VAR_LED,#03FH
	mov	p1,VAR_LED	;right the L1,L2

	mov	TMOD,#01H
	mov	TH0,#0B1H	;20ms,load number	
	mov	TL0,#0E0H
	setb	TR0		;start T0

MAIN_LOOP:
	jnb	TF0,NEXT_LOOP		;if not oveflow,then refsh display
	clr	TF0		;clear the tag of overflow
	mov	TH0,#0B1H
	mov	TL0,#0E0H
	inc	VAR_TIME	;add 20ms
	/*if VAR_TIME=50,then time for 1s*/
	mov	a,VAR_TIME
	cjne	a,#50,NEXT_LOOP
	mov	VAR_TIME,#00H
	call	NUM_SUB

NEXT_LOOP:
	call	DISPLAY_NUM
	jmp	MAIN_LOOP

	ret
;**********************************************
DISPLAY_NUM:
	;a <-a/b
	mov	a,CURR_NUM
	mov	b,#0AH
	div	ab
	mov	r0,a

	mov	a,b
	mov	dptr,#TAB_LED
	movc	a,@a+dptr

	mov	p0,a	;Display the number
	mov	p2,#11110111B
	call	DELAY_DISP
	;Display the high value

	mov	a,r0
	mov	dptr,#TAB_LED
	movc	a,@a+dptr

	mov	p0,a
	mov	p2,#11101111B
	call	DELAY_DISP

	ret
;*********************************************
NUM_SUB:
	mov	a,CURR_NUM
	jz	NUM_SUB_RESET
NUM_SUB_1:
	dec	CURR_NUM
	jmp	NUM_SUB_TEXT
NUM_SUB_RESET:
	mov	CURR_NUM,#15
	call	CHANGE_LED
NUM_SUB_TEXT:

	ret

;*************************************************************
CHANGE_LED:
	mov	a,VAR_LED
	cjne	a,#03FH,TO_RED_LED
	mov	VAR_LED,#0CFH
	jmp	CHANGE_LED_EXIT
TO_RED_LED:
	mov	VAR_LED,#03FH
CHANGE_LED_EXIT:
	mov	p1,VAR_LED

	ret
;*******************************************************
DELAY_DISP:
	mov	R7,#10		
DELAY_DISP_LOOP:
	mov	R6,#200
	djnz	R6,$
	mov	R6,#200
	djnz	R6,$

	djnz	R7,DELAY_DISP_LOOP

	ret
;*************************************************************
TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***********************************************************
	END

⌨️ 快捷键说明

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