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

📄 bcd码的9999.txt

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

	mov	CURR_NUM,#00H
	mov	CURR_NIM,#00H
	clr	p3.3

MAIN_LOOP:
	jb	p2.7,KEY_2
	call	DELAY
	call	MUN_ADD
	jmp	NEXT_LOOP

KEY_2:
	jb	p2.6,NEXT_LOOP
	call	DELAY
	call	MUN_SUB

NEXT_LOOP:
	call	DISPLAY_NUM
	jmp	MAIN_LOOP
	
	ret
;************************************************************
DISPLAY_NUM:
	mov	a,CURR_NUM
	anl	a,#0FH
	mov	dptr,#TAB_LED
	movc	a,@a+dptr

	mov	p0,a	;Display the number
	mov	p2,#11111011B
	call	DELAY_DISP
	;Display the high value
	mov	a,CURR_NUM	;CURR_NUM is low 4
	swap	a
	anl	a,#0FH
	mov	dptr,#TAB_LED
	movc	a,@a+dptr

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

	mov	a,CURR_NIM	;CURR_NIM is the high 4
	anl	a,#0FH
	mov	dptr,#TAB_LED
	movc	a,@a+dptr

	mov	p0,a	;Display the number
	mov	p2,#11101111B
	call	DELAY_DISP
	;Display the high value
	mov	a,CURR_NIM
	swap	a
	anl	a,#0FH
	mov	dptr,#TAB_LED
	movc	a,@a+dptr

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

	ret
;***********************************************************
MUN_ADD:
	mov	a,CURR_NUM
	cjne	a,#99H,INC_NUM
	;if CURR_NUM=099H,the resest CURR_NUM
	mov	CURR_NUM,#00H
	mov	a,CURR_NIM
	cjne	a,#99H,INC_NIM
	;if CURR_NUM=099H,the resest CURR_NUM
	mov	CURR_NIM,#00H
	;jmp	NUM_ADD_EXIT

INC_NIM:
	anl	a,#0FH
	cjne	a,#99H,NIM_ADD_1
	mov	a,CURR_NIM
	add	a,#07H
	mov	CURR_NIM,a
	jmp	NUM_ADD_EXIT

INC_NUM:
	anl	a,#0FH
	cjne	a,#99H,NUM_ADD_1
	mov	a,CURR_NUM
	add	a,#07H
	mov	CURR_NUM,a
	jmp	NUM_ADD_EXIT

NIM_ADD_1:
	;simple add
	inc	CURR_NIM
	;jmp	NUM_ADD_EXIT

NUM_ADD_1:
	;simple add
	inc	CURR_NUM
	;jmp	NUM_ADD_EXIT

	
NUM_ADD_EXIT:

	ret
;**************************************************************
MUN_SUB:
	mov	a,CURR_NUM
	jz	NUM_SUB_99
	;if(low 4-bits)=0,then(high 4-bits)-1 and (low 4-bits)=9
	anl	a,#0FH
	cjne	a,#00H,NUM_SUB_1
	;high doc
	mov	a,CURR_NUM
	clr	c
	subb	a,#7H
	mov	CURR_NUM,a
	jmp	NUM_SUB_TEXT

NUM_SUB_1:
	dec	CURR_NUM
	jmp	NUM_SUB_TEXT

NUM_SUB_99:
	mov	CURR_NUM,#99H
	
	mov	a,CURR_NIM
	jz	NIM_SUB_99
	;if(low 4-bits)=0,then(high 4-bits)-1 and (low 4-bits)=9
	anl	a,#0FH
	cjne	a,#00H,NIM_SUB_1
	;high doc
	mov	a,CURR_NIM
	clr	c
	subb	a,#7H
	mov	CURR_NIM,a
	jmp	NUM_SUB_TEXT

NIM_SUB_1:
	dec	CURR_NIM
	jmp	NUM_SUB_TEXT

NIM_SUB_99:
	mov	CURR_NIM,#99H
	
NUM_SUB_TEXT:

	ret

;*************************************************************
DELAY:
	mov	R7,#150
DELAY_LOOP:
	mov	R6,#200
	djnz	R6,$
	mov	R6,#200
	djnz	R6,$

	djnz	R7,DELAY_LOOP

	ret
;*************************************************************
DELAY_DISP:
	mov	R7,#7
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 + -