|
这个程序的作用是
;把V/F转换得到的脉冲送到单片机的T0口计数,
;计数的结果放到R2,R3中
;求出计数值的万,千,百,十,个位,然后分别放在74H,73H,72H,71H,70H中
;最后把结果通过4094串行移位寄存器显示出来
ORG 0000H
LJMP SETUP
ORG 001BH
;定时50ms
LJMP INET1P
ORG 0030H
SETUP:
MOV 70H,#0
MOV 71H,#0
MOV 72H,#0
MOV 73H,#0
MOV 74H,#0
MOV TMOD,#15H
;t0方式1计数,t1方式1定时
MOV TH1,#4CH
MOV TL1,#0
;定时50ms初值,晶振11.0592MHZ
MOV TH0,#0
MOV TL0,#0
SETB TR1
SETB TR0
SETB ET1
SETB EA
MAIN:
LCALL DISPlay
LJMP MAIN
;显示程序
DISPlay:
MOV
R3,#6
clr
p3.7
;先求万位数
MOV 7DH,#27H;传除数高8位
MOV 7CH,#10H;传除数低8位
LOOP_W:
LCALL COM_SUB;看看够不够减
JC BU_GOUJIANW;不够减
INC 74H;商+1
LCALL SUBWORD;做一次减法
SJMP LOOP_W;万位数循环
;再求千位数
BU_GOUJIANW:
MOV 7DH,#03H;传除数高8位
MOV 7CH,#0E8H;传除数低8位
LOOP_Q:
LCALL COM_SUB;看看够不够减
JC BU_GOUJIANQ;不够减
INC 73H;商+1
LCALL SUBWORD;做一次减法
SJMP LOOP_Q;千位数循环
;又求百位数
BU_GOUJIANQ:
MOV 7DH,#00H;传除数高8位
MOV 7CH,#64H;传除数低8位
LOOP_B:
LCALL COM_SUB;看看够不够减
JC BU_GOUJIANB;不够减
INC 72H;商+1
LCALL SUBWORD;做一次减法
SJMP LOOP_B;百位数循环
;还求十位数
BU_GOUJIANB:
MOV 7DH,#00H;传除数高8位
MOV 7CH,#0AH;传除数低8位
LOOP_S:
LCALL COM_SUB;看看够不够减
JC BU_GOUJIANS;不够减
INC 71H;商+1
LCALL SUBWORD;做一次减法
SJMP LOOP_S;十位数循环
;最后,个位数不用求了,最终余数就是!
BU_GOUJIANS:
MOV 70H,7EH
(下面的程序用来显示70h到74h中的数值)
|
|