除数
MOV R3,#00H
MOV R4,#0FH
MOV R5,#42H
MOV R6,70H ;输入除数
MOV R7,71H
LCALL NDIV ;调用双字节除法子程序原来的程序,
NDIV:MOV B,#16 ;双字节无符号数除法子程序
;当条件(R2R3)〈(R6R7)满足时,
;(R2R3R4R5)/(R6R7)=(R4R5),余数在(R2R3)
NDVL1: CLR C
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV F0,C
CLR C
SUBB A,R7
MOV R1,A
MOV A,R2
SUBB A,R6
JB F0,NDVM1
JC NDVD1
NDVM1: MOV R2,A
MOV A,R1
MOV R3,A
INC R5
NDVD1:DJNZ B ,NDVL1
CLR F0
MOV 72H,R4 ;频率整数部分存于7273H中
MOV 73H,R5 ;调制波频率整数部分存72H
MOV 75H,R2 ;将调制波频率小数部分(小于100)存75H
MOV 70H,#00H ;70H清0
ABC:POP 6AH
POP 63H
POP 62H
POP 61H
POP 60H
POP 53H
POP 52H
POP 51H
POP 50H
POP PSW ;恢复现场
POP DPH
POP DPL
POP B
POP ACC
SETB EA ;开中断
SETB TR0
RETI
⑵. 频率显示部分
本系统用一个四位一体的LED数码管显示数据,系统初始化后显示的为电压,按频率显示按钮显示频率。利用中断源 显示,它将72H、73H中的频率整数(二进制数)部分先进行二--十转换存于R3R4R5中,根据经验,转换过来的十进制数只有百位,即R3中的值为00,R4中的值为0X 。因此将R4R5中的数分离分别在最高位、次高位、次低位显示,并且次低位带有小数点。将75H中的小数部分在最低位显示。至此,频率显示部分完成。
中断程序及流程图如下:
DISPLAYF:PUSH ACC ;保存现场
PUSH B
PUSH DPL
PUSH DPH
PUSH PSW
PUSH 50H
PUSH 51H
PUSH 52H
PUSH 53H
PUSH 60H
PUSH 61H
PUSH 62H
PUSH 63H
PUSH 6AH
SETB PSW.4 ;使用第二工作寄存区
MOV R6,72H ;频率整数部分存欲R6R7中调用双字节十进制转换程序
MOV R7,73H ;
;ACALL HB2 ;调用双字节十进制转换程序
HB2:CLR A ; BCD码初始化 ;双字节十进制转换
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;转换双字节二进制整数
HB3:MOV A,R7
;从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD码带进位自身相加,相当于乘2
ADDC A,R5
DA A ;十进制调整
MOV