; *************** 89C51和ICL7109 转换程序****************************************
; 电路硬件连接见北航{单片机应用接口技术}P289页面
; 2007/09/01 在清河第二次修改
;
;
ORG 0000H
AJMP START ; 转开始
ORG 0003H
AJMP INT0_1 ; 转INT0中断子程序
ORG 0020H
START: MOV SP,#60H ; 设堆栈
MOV P1,#0FFH ; 关显示
START1: SETB IE.0 ; 开INT0中断
SETB IE.7 ; 开总中断
K1: MOV A,20H ; 低字节缓冲区首地址
MOV P1,A ; 低八位结果送P1口显示
; CALL DELAY ; 延时便于观看
MOV A,21H ; 高八位结果送P1口显示
ANL A,#0FH ;
MOV C,ACC.0 ;
MOV P2.4,C ;
MOV C,ACC.1 ;
MOV P2.5,C ;
MOV C,ACC.2 ;
MOV P2.6,C ;
MOV C,ACC.3 ;
MOV P2.7,C ;
CALL DELAY ; 延时便于观看
AJMP START1 ; 转开始循环
INT0_1: CLR IE.0 ; 关INT0中断
CLR IE.7 ; 关总中断
MOV R0,#20H ; 低八位缓冲区地址
MOV DPTR,#0200H ; p2.0=0, P2.1=1,低八位选通
MOVX A,@DPTR ; 读低字节
MOV @R0,A ; 送缓冲区保存
INC R0 ; 指向高位地址
MOV DPTR ,#0100H ; p2.0=1, P2.1=0,高六位选通
MOVX A,@DPTR ; 送缓冲区保存
MOV @R0,A ;
RETI ; 中断返回
DELAY: PUSH R2 ;
PUSH R3 ;
MOV R2,#0FFH ; 延时子程序
K2: MOV R3,#0FFH ;
DJNZ R3, $ ;
DJNZ R2, K2 ;
POP R3 ;
POP R2 ;
RET ;
;双字节二进制数转换为BCD数
;入口:(R2、R3)为双字节16位二进制数。
;出口:(R4、R5、R6)为转换后的压缩BCD码。
; 2007/09/02 于清河宝盛北里
ORG 0300H
MOV R2,#0FFH ;
MOV R3,#0FFH ;
CALL IBTD2 ;
AJMP $ ;
IBTD2: CLR A ;
MOV R4,A ;
MOV R5,A ;
MOV R6,A ;
MOV R7,#16 ;
LOOP: CLR C ;
MOV A,R3 ;
RLC A ;
MOV R3,A ;
MOV A,R2 ;
RLC A ;
MOV R2,A ;
MOV A,R6 ;
ADDC A,R6 ;
DA 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 ;
DJNZ R7,LOOP ;
RET ;
END
一周热门 更多>