标题: 寻求51单片机的16位除以八位的汇编程序 [打印本页]

作者: chydn2000    时间: 2024-6-26 20:23
标题: 寻求51单片机的16位除以八位的汇编程序
16位定时器的计数值需要除以2(十进制),寻求51的汇编程序

作者: smmj    时间: 2024-6-27 05:16
右移一位就是除2
作者: lxh2002    时间: 2024-6-27 05:54
本帖最后由 lxh2002 于 2024-6-27 09:02 编辑

左移一位,不就是除以2么
更正,我搞错了,是右移

作者: wufa1986    时间: 2024-6-27 08:15
数值直接右移1位就是除以2
作者: chydn2000    时间: 2024-6-27 10:32
右移一位,,那最左侧数值怎么填充呢?
作者: chydn2000    时间: 2024-6-27 10:55
51汇编只有8位数据右移指令,16位数据右移怎么处理?
作者: lyonkon    时间: 2024-6-28 00:11
chydn2000 发表于 2024-6-27 10:55
51汇编只有8位数据右移指令,16位数据右移怎么处理?

双字节右移1次:将高字节存A,   CY赋0,RRC A,R0=A,将低字节存A,RRC A,R1=A。
这时R0,R1就是整体右移一次的结果。

作者: 188610329    时间: 2024-6-28 14:58
;高8位在 R6, 低8位在 R7
:DIV2
CLR C
MOV  A,R6
RRC  A
MOV  R6,A
MOV  A,R7
RRC  A
MOV  R7,A
RET
作者: chydn2000    时间: 2024-6-28 19:09
       这我编写的16位定时器TH0存R7,TL0存R6中,经过验证完全正常可用
youyi:mov r7,th0;22.1184MHZ,速度相当于12/22.1184=0.5微妙,16位数据右移一位
      mov r6,tl0

     mov p0,r7;判断R7低位是否为1,移到R6高位
     jb p0.0,zhiyi

    clr c
    mov a,r7
    rrc a
    mov r7,a

    clr c
    mov a,r6
    rrc a
    mov r6,a

   ajmp bijiao

zhiyi:mov a,r6;R6右移
     clr c;进位标志0
     rrc a;A通过进位标志右移
     mov r6,a

     mov p0,r6;R6高位置1
     setb p0.7
     mov r6,p0
                     
     
     clr c;R7右移   
     mov a,r7
     rrc a
     mov r7,a
bijiao:nop   
      
       ret
     
作者: 2831606172    时间: 2024-6-28 21:29
右移一位除2
作者: Y_G_G    时间: 2024-6-30 15:20
右移一位就是除以2
如果是16位,那就用到标志位C
如果你还是在入门阶段,我建议你改学C语言吧,我用三年的汇编,做产品太累了





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1