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

📄 bin.asm

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 ASM
字号:

; +-------------------------------------------------------------------------+
; Purpose: Routine to convert a 16bit binary number in ASCII                                                 
; INPUT : R2 (Lsb) and R3 (Msb)   ( binary)                                                                                      
; OUPUT : (msb) 30h,31h,32h,33h,34h (lsb) (internal RAM address)  (ASCII) 
; by: Herlambang Aribowo
; D3 Instrumentasi dan elektronika UNDIP, Semarang, Jawa tengah, Indonesia                                                            
; contact : cah_imuth@yahoo.com
; Phone : +6281328828042                                                                                                                              
; +-------------------------------------------------------------------------+
;
; Contoh:    
;                      
; START:
;        MOV R2,#low(1234)                                
;        MOV R3,#high(1234)
;        LCALL  BINTOASC
;       
;   in 30h until 34h of internal RAM will be :'0','1',' 2',','3','4' ( ASCII)

 
BINTOASC:

        MOV 	R0,#30h                 ; R0 = POUT 
        MOV 	DPTR,#TAB               ; R=TAB(P)

COM1:

        CLR 	A                       ; P <- 0     
        MOVC 	A,@A+DPTR              	; R <-  TAB(P)
        MOV 	R7,A
        INC 	DPTR
        CLR 	A
        MOVC 	A,@A+DPTR
        MOV 	R6,A

        MOV 	R4,#'0'                 ; C  <- '0'


SOMA:                                	; N <-  N-R 
      CLR 	C        ;              
      MOV 	A,R2     ;              
      SUBB 	A,R6    ;              
      MOV 	R2,A     ;              
                                 
      MOV 	A,R3     ;               
      SUBB 	A,R7    ;              
      MOV 	R3,A     ;              
      JC 	SAIDA     		; If < 0 goto  SAIDA
      INC 	R4       		; If >0 then C <- C +1
      SJMP 	SOMA    		; goto SOMA            
SAIDA:
      MOV 	A,R4                 
      MOV 	@R0,A              	; TABOUT (POUT) <- C

      MOV 	A,R2             
      ADD 	A,R6               	; N=N+R
      MOV 	R2,A             
                           
      MOV 	A,R3             
      ADDC 	A,R7            
      MOV 	R3,A             

      INC 	R0                 	; PSAIDA=PSAIDA +1

      CLR 	A
      MOVC 	A,@A+DPTR
      CJNE 	A,#1,INCREMENTA  	; TAB(P) = 1 ?
      RET                    		; If yes, END

INCREMENTA:                  		; If No, P <- P+1
      INC 	DPTR
      LJMP 	COM1              	; goto COM1


TAB:
     Dw 	10000
     Dw 	1000
     Dw 	100
     Dw 	10
     Dw 	1

END

⌨️ 快捷键说明

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