本帖最后由 新乡家电维修 于 2018-5-19 16:06 编辑
我会用1秒闸门定时计数脉冲个数做频率,不用计算,直接转换成十进制就行了,
现在想做周期测低频,汇编语言如何做周期倒数(1/T=F)
谁有字节转换方法,比如移位方法汇编
结束此贴,我已经写好了,测量范围5--1500转/分钟
测一个周期:第一个下降沿启动定时器,第二个下降沿停止定时。读出定时值
转换公式(这个很重要):1/定时值*60=转速,
周期法测转速,越低转速越准确,整好和闸门法定时测频率相反,闸门定时高频率比低频准确(前提是不接近上限,误差是不大的)
用的下面网上找的字节除法解决的
入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节
DIVD: CLR C ;比较被除数和除数
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JC DVD1
SETB OV ;溢出
RET
DVD1: MOV B,#10H ;计算双字节商(双字节移动10H=16次)
DVD2: 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 ;计算(R2R3-R6R7)
MOV R1,A
MOV A,R2
SUBB A,R6
ANL C,/F0 ;结果判断
JC DVD3
MOV R2,A ;够减,存放新的余数
MOV A,R1
MOV R3,A
INC R5 ;商的低位置一
DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5)
MOV A,R4 ;将商移到R2R3中
MOV R2,A
MOV A,R5
MOV R3,A
CLR OV ;设立成功标志
RET
得到商就是转速,
还要用双字节转BCD码程序
最后调用显示程序,
完成。
|