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

📄 bcd6.asm

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 ASM
字号:
#include <sfr51.inc>  
;*----------------------------------------------------------- 
;* 
;*   bin6bcd - routine compute from binary value to bcd 
;* 
;*   Entry:  reg_e:d - binary value (24 bit) 
;* 
;*   Exit:   reg_e:d - 8 bcd digits (0000:0000-1677:7215) 
;* 
;*----------------------------------------------------------- 
		H1	EQU	08H
		H2	EQU	09H
		H3	EQU	0AH
		
		D1	EQU	0BH
		D2	EQU	0CH
		D3	EQU	0DH
		D4	EQU	0EH
		
		TMP1	EQU	0FH
		TMP2	EQU	10H
		TMP3	EQU	11H
		TMP4	EQU	12H
		
		POINTER EQU	13H
		HOLD	EQU	14H

MOV 	H1,#0F2H  ;020A1B HEX
MOV 	H2,#0ABH  ;INPUT
MOV 	H3,#0FFH
;----------------------------------------------
MOV 	D1,#00H
MOV 	D2,#00H
MOV 	D3,#00H
MOV 	D4,#00H   ;OUTPUT
;----------------------------------------------
MOV 	TMP1,#00H ;TEMPORARI
MOV 	TMP2,#00H
MOV 	TMP3,#00H
MOV 	TMP4,#00H
;-------------------------------------------------------------------------------------
BIN6BCD:
	    MOV 	SP,#20H
	    MOV 	A,H3
	    MOV		R0,#8
	    CJNE        R0,#01H,DOWN
	    CLR 	C
	    RRC 	A
	    MOV 	HOLD,A
	    JNC 	DOWN
	    MOV 	A,R0
	    RL 		A
	    RL 		A
	    MOV 	POINTER,A
	    ACALL 	ADDITION
DOWN:
	    MOV 	A,HOLD
	DJNZ 		R0,BIN6BCD 
	
MULAI:      MOV 	A,H2
	    MOV		R0,#8
	
	    CLR 	C
	    RRC 	A
	    MOV 	HOLD,A
	    JNC 	DOWNH2
	    MOV 	A,R0
	    ADD 	A,#08H
	    RL 		A
	    RL 		A
	    MOV 	POINTER,A
	    ACALL 	ADDITION
DOWNH2:
	    MOV 	A,HOLD	    
	DJNZ 		R0,MULAI 
	   
TERUS:      MOV 	A,H1
	    MOV		R0,#8
	    CLR 	C
	    RRC 	A
	    MOV 	HOLD,A
	    JNC 	DOWNH3
	    MOV 	A,R0
	    ADD 	A,#10H	    
	    RL 		A
	    RL 		A
	    MOV 	POINTER,A
	    ACALL 	ADDITION
	    DOWNH3:
	    MOV 	A,HOLD	    
	DJNZ 		R0,TERUS 
	
	
BBBB: SJMP BBBB
;-------------------------------------------------------------------------------------
ADDITION:
		MOV 	DPTR,#BINBCDTAB
		DEC 	POINTER
		
		MOV 	A,POINTER
		MOVC 	A,@A+DPTR
		MOV 	TMP1,A
		
		MOV 	A,POINTER
		DEC 	A
		MOVC 	A,@A+DPTR
		MOV 	TMP2,A

		MOV 	A,POINTER
		DEC 	A
		DEC 	A
		MOVC 	A,@A+DPTR
		MOV 	TMP3,A
		
		MOV 	A,POINTER
		DEC 	A
		DEC 	A
		DEC 	A
		MOVC 	A,@A+DPTR
		MOV 	TMP4,A

;-------------- DO ADDITION TMP1 -------------------
		CLR 	C
		MOV 	A,TMP1
		ADD 	A,D4
		DA 	A
		MOV 	D4,A
		
		MOV 	A,TMP2
		ADDC 	A,D3
		DA 	A
		MOV 	D3,A
		
		MOV 	A,TMP3
		ADDC 	A,D2
		DA 	A
		MOV 	D2,A
		
		MOV 	A,TMP4
		ADDC 	A,D1
		DA 	A
		MOV 	D1,A
		
		CLR 	C
	
		RET
;-------------------------------------------------------------------------------------
HETE: 		SJMP HETE


BINBCDTAB: 
   DB   00H,00H,00H,01H      ; bit  0 
   DB   00H,00H,00H,02H      ; bit  1 
   DB   00H,00H,00H,04H      ; bit  2 
   DB   00H,00H,00H,08H      ; bit  3 
   DB   00H,00H,00H,16H      ; bit  4 
   DB   00H,00H,00H,32H      ; bit  5 
   DB   00H,00H,00H,64H      ; bit  6 
   DB   00H,00H,01H,28H      ; bit  7 
   DB   00H,00H,02H,56H      ; bit  8 
   DB   00H,00H,05H,12H      ; bit  9 
   DB   00H,00H,10H,24H      ; bit 10 
   DB   00H,00H,20H,48H      ; bit 11 
   DB   00H,00H,40H,96H      ; bit 12 
   DB   00H,00H,81H,92H      ; bit 13 
   DB   00H,01H,63H,84H      ; bit 14 
   DB   00H,03H,27H,68H      ; bit 15 
   DB   00H,06H,55H,36H      ; bit 16 
   DB   00H,13H,10H,72H      ; bit 17 
   DB   00H,26H,21H,44H      ; bit 18 
   DB   00H,52H,42H,88H      ; bit 19 
   DB   01H,04H,85H,76H      ; bit 20 
   DB   02H,09H,71H,52H      ; bit 21 
   DB   04H,19H,43H,04H      ; bit 22 
   DB   08H,38H,86H,08H      ; bit 23 
   
   END

⌨️ 快捷键说明

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