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

📄 bin2bcd.c

📁 DDS数字信号发生器,采用AD9835DDS 专用芯片 输出范围1K--10MHZ 采用X25045作看门狗及数据存储器
💻 C
字号:
/*************************************************************************************/
unsigned char AsmParam1 _at_ 0x20;
unsigned char AsmParam2 _at_ 0x21;
unsigned char AsmParam3 _at_ 0x22;
//------------------------------------------------------------------------------------
void  LongToBcd(void)
{
	#pragma asm
		MOV A,20H   ; 
        	MOV R7,A
        	MOV A,21H   ;
        	MOV R5,A
		MOV	A,R7
		MOV	R1,A	;LongData ADDRESS:R1(Hsb)

		MOV	A,R5
		MOV	R0,A	;LongData ADDRESS:R0(Hsb)

		MOV	A,@R1	;LongData:H R2 R3 R4 R5 L
		MOV	R2,A	
		INC	R1
		MOV	A,@R1
		MOV	R3,A	
		INC	R1
		MOV	A,@R1
		MOV	R4,A	
		INC	R1
		MOV	A,@R1
		MOV	R5,A
		
		CLR	A	;CLEAR BCD_Data
		MOV	@R0,A		
		INC	R0
		MOV	@R0,A		
		INC	R0
		MOV	@R0,A		
		INC	R0
		MOV	@R0,A		
		INC	R0
		MOV	@R0,A	;BCD_Data ADDRESS:R0 OR R7(Lsb)
		MOV	A,R0
		MOV	R7,A	

		MOV	R1,#32		;R2:SHIFT COUNT
		
	F4Bin2BCDLP2:
		MOV	A,R5
		RLC	A
		MOV	R5,A
		MOV	A,R4
		RLC	A
		MOV	R4,A
		MOV	A,R3
		RLC	A
		MOV	R3,A
		MOV	A,R2
		RLC	A
		MOV	R2,A
		JC	F4Bin2BCDLP3
	        DJNZ	R1,F4Bin2BCDLP2
	F4Bin2BCDLP4:
		RET
		
	F4Bin2BCDLP3:
		MOV	A,#1
		MOV	@R0,A
		
		MOV	A,R1
		CLR	C
		SUBB	A,#1
		JZ	F4Bin2BCDLP4
		
		MOV	R1,A
			
	F4Bin2BCDLP1:
		MOV	A,R5
		RLC	A
		MOV	R5,A
		MOV	A,R4
		RLC	A
		MOV	R4,A
		MOV	A,R3
		RLC	A
		MOV	R3,A
		MOV	A,R2
		RLC	A
		MOV	R2,A
		
		MOV	A,@R0
		ADDC	A,ACC
		DA	A
		MOV	@R0,A

		DEC	R0
		MOV	A,@R0
		ADDC	A,ACC
		DA	A
		MOV	@R0,A

		DEC	R0
		MOV	A,@R0
		ADDC	A,ACC
		DA	A
		MOV	@R0,A

		DEC	R0
		MOV	A,@R0
		ADDC	A,ACC
		DA	A
		MOV	@R0,A

		DEC	R0
		MOV	A,@R0
		ADDC	A,ACC
		DA	A
		MOV	@R0,A
				
		MOV	A,R7
		MOV	R0,A

	    DJNZ	R1,F4Bin2BCDLP1
	        		
	#pragma endasm
}
//------------------------------------------------------------------------------------
void WordToBcd(void)
{

	#pragma asm
                 MOV   A,20H
		 		 MOV   R7,A
		 		 MOV   A,21H
		 		 MOV   R5,A
           	 MOV   A, R7
           	 MOV   R0,A
           	 MOV   A,R5
           	 MOV   R1,A
                 MOV   A,@R0
                 MOV   R6,A
                 INC   R0
                 MOV   A,@R0
                 MOV   R7,A
                 CLR   A            
                 MOV   R3,A
                 MOV   R4,A
                 MOV   R5,A
                 MOV   R2,#10H
        HBCD20:  MOV   A,R7
               	 RLC   A
                 MOV   R7,A
                 MOV   A,R6
                 RLC   A
                 MOV   R6,A
                 MOV   A,R5
                 ADDC  A,R5
                 DA    A
                 MOV   R5,A
                 MOV   A,R4
                 ADDC  A,R4
                 DA    A
                 MOV   R4,A
                 MOV   A,R3
                 ADDC  A,R3
                 DA    A
                 MOV   R3,A
                 DJNZ  R2,HBCD20
                 MOV   A,R3
                 MOV   @R1,A
                 INC   R1
                 MOV   A,R4
                 MOV   @R1,A
                 INC   R1
                 MOV   A,R5
                 MOV   @R1,A
      #pragma endasm
}
/*************************** The End ********************************************/ 
//------------------------------------------------------------------------------------
void KeilWordToBcd(unsigned char idata *pWord,unsigned char idata *pBcd)
{
	AsmParam1=pWord;
	AsmParam2=pBcd;
	
	WordToBcd();
}
//-------------------------------------------------------------------------------------
void KeilLongToBcd(unsigned char idata *pLong,unsigned char idata *pBcd)
{
	AsmParam1=pLong;
	AsmParam2=pBcd;

	LongToBcd();
}

⌨️ 快捷键说明

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