89C51和ICL7109 转换程序----原创程序4
; *************** 89C51和ICL7109 转换程序****************************************; 电路硬件连接见北航{单片机应用接口技术}P289页面
;2007/09/01在清河第二次修改
;
;
ORG 0000H
AJMP START ;转开始
ORG 0003H
AJMPINT0_1 ;转INT0中断子程序
ORG 0020H
START: MOV SP,#60H ; 设堆栈
MOV P1,#0FFH; 关显示
START1:SETBIE.0 ; 开INT0中断
SETBIE.7 ; 开总中断
K1: MOVA,20H ; 低字节缓冲区首地址
MOVP1,A ; 低八位结果送P1口显示
; CALL DELAY ; 延时便于观看
MOVA,21H ;高八位结果送P1口显示
ANLA,#0FH ;
MOVC,ACC.0 ;
MOV P2.4,C ;
MOVC,ACC.1 ;
MOV P2.5,C ;
MOVC,ACC.2 ;
MOV P2.6,C ;
MOVC,ACC.3 ;
MOV P2.7,C ;
CALL DELAY ; 延时便于观看
AJMP START1 ; 转开始循环
INT0_1: CLR IE.0 ; 关INT0中断
CLR IE.7 ; 关总中断
MOVR0,#20H ; 低八位缓冲区地址
MOVDPTR,#0200H; p2.0=0,P2.1=1,低八位选通
MOVXA,@DPTR ; 读低字节
MOV@R0,A ; 送缓冲区保存
INC R0 ; 指向高位地址
MOVDPTR ,#0100H ; p2.0=1,P2.1=0,高六位选通
MOVX A,@DPTR ;送缓冲区保存
MOV@R0,A ;
RETI ; 中断返回
DELAY: PUSHR2 ;
PUSHR3 ;
MOVR2,#0FFH ; 延时子程序
K2: MOVR3,#0FFH ;
DJNZR3,$ ;
DJNZR2,K2 ;
POP R3 ;
POP R2 ;
RET ;
;双字节二进制数转换为BCD数
;入口:(R2、R3)为双字节16位二进制数。
;出口:(R4、R5、R6)为转换后的压缩BCD码。
; 2007/09/02 于清河宝盛北里
ORG 0300H
MOVR2,#0FFH ;
MOVR3,#0FFH ;
CALL IBTD2 ;
AJMP$ ;
IBTD2: CLR A ;
MOVR4,A ;
MOVR5,A ;
MOVR6,A ;
MOVR7,#16 ;
LOOP: CLR C ;
MOVA,R3 ;
RLCA ;
MOVR3,A ;
MOVA,R2 ;
RLC A ;
MOV R2,A ;
MOVA,R6 ;
ADDCA,R6 ;
DAA ;
MOVR6,A ;
MOV A,R5 ;
ADDCA,R5 ;
DAA ;
MOVR5,A ;
MOVA,R4 ;
ADDCA,R4 ;
DAA ;
MOVR4,A ;
DJNZR7,LOOP;
RET ;
END
页:
[1]