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

📄 1-99按键加减(bcd).txt

📁 关于单片机中流水线处理,红绿灯转化等实验
💻 TXT
字号:
	CURR_NUM	EQU	30H	;BCD

	org	0000H		
	jmp	MAIN

;*******************************************	
	org	0030H		;Start program from 0030H		
MAIN:
	mov	P0,#0FFH	;Initialize the port	
	mov	P1,#0FFH	
	mov	P2,#0FFH	
	mov	P3,#0FFH
	
	mov	CURR_NUM,#00H	;Initilize the var
	clr	P3.3		;Clear the common line

MAIN_LOOP:
	jb	P2.7,KEY_2	;
	call	DELAY
	call	NUM_ADD
	jmp	NEXT_LOOP
	
KEY_2:
	jb	P2.6,NEXT_LOOP	
	call	DELAY
	call	NUM_SUB
	jmp	NEXT_LOOP	

NEXT_LOOP:
	call	DISPLAY_NUM
	jmp	MAIN_LOOP

	ret
;****************************************************
DISPLAY_NUM:
	;Display the low value
	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
	swap	a
	anl	a,#0FH
	mov	dptr,#TAB_LED
	movc	a,@a+dptr

	mov	P0,a		;Display the number
	mov	P2,#11110111B
	call	DELAY_DISP

	ret
;****************************************************
NUM_ADD:
	mov	a,CURR_NUM
	cjne	a,#99H,INC_NUM
	;If CURR_NUM=099H,then reset CURR_NUM
	mov	a,#00H
	jmp	NUM_ADD_EXIT

INC_NUM:
	anl	a,#0FH
	cjne	a,#09H,NUM_ADD_1
	;If (low 4-bits)=9 ;then (high 4-bits)+1 and (low 4-bits)=0
	mov	a,CURR_NUM
	;add	a,#10H
	;anl	a,#0F0H
	add	a,#07H
	jmp	NUM_ADD_EXIT

NUM_ADD_1:
	;Simple add 1
	mov	a,CURR_NUM
	inc	a

NUM_ADD_EXIT:	
	mov	CURR_NUM,a

	ret
;****************************************************
NUM_SUB: 
	;Get previos value
	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 dec
	mov	a,CURR_NUM
	clr	c
	;subb	a,#10H	;High -1
	;add	a,#09H	;Low  set to 9    ;orl
	subb	a,#7H
	jmp	NUM_SUB_EXIT

NUM_SUB_1:
	;Simple sub 1
	mov	a,CURR_NUM
	dec	a
	jmp	NUM_SUB_EXIT

NUM_SUB_99:
	;If CURR_NUM=0 then CURR_NUM=99H after sub
	mov	a,#99H
	
NUM_SUB_EXIT:	
	mov	CURR_NUM,a

	ret
;****************************************************
DELAY:
	mov	r7,#200
DELAY_LOOP:
	mov	r6,#200
	djnz	r6,$
	mov	r6,#200
	djnz	r6,$

	djnz	r7,DELAY_LOOP
	ret
;****************************************************
DELAY_DISP:
	mov	r7,#20
DELAY_DISP_LOOP:
	mov	r6,#200
	djnz	r6,$
	mov	r6,#200
	djnz	r6,$

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

⌨️ 快捷键说明

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