找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 654|回复: 10
收起左侧

寻求51单片机的16位除以八位的汇编程序

[复制链接]
ID:259813 发表于 2024-6-26 20:23 | 显示全部楼层 |阅读模式
16位定时器的计数值需要除以2(十进制),寻求51的汇编程序
回复

使用道具 举报

ID:396024 发表于 2024-6-27 05:16 来自手机 | 显示全部楼层
右移一位就是除2
回复

使用道具 举报

ID:237471 发表于 2024-6-27 05:54 | 显示全部楼层
本帖最后由 lxh2002 于 2024-6-27 09:02 编辑

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

使用道具 举报

ID:879348 发表于 2024-6-27 08:15 | 显示全部楼层
数值直接右移1位就是除以2
回复

使用道具 举报

ID:259813 发表于 2024-6-27 10:32 | 显示全部楼层
右移一位,,那最左侧数值怎么填充呢?
回复

使用道具 举报

ID:259813 发表于 2024-6-27 10:55 | 显示全部楼层
51汇编只有8位数据右移指令,16位数据右移怎么处理?
回复

使用道具 举报

ID:73992 发表于 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就是整体右移一次的结果。
回复

使用道具 举报

ID:624769 发表于 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
回复

使用道具 举报

ID:259813 发表于 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
     
回复

使用道具 举报

ID:1127478 发表于 2024-6-28 21:29 | 显示全部楼层
右移一位除2
回复

使用道具 举报

ID:401564 发表于 2024-6-30 15:20 | 显示全部楼层
右移一位就是除以2
如果是16位,那就用到标志位C
如果你还是在入门阶段,我建议你改学C语言吧,我用三年的汇编,做产品太累了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表