找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1110|回复: 4
打印 上一主题 下一主题
收起左侧

下面的2个C语言计算语句怎么用汇编语言来表示呢?

[复制链接]
回帖奖励 80 黑币 回复本帖可获得 10 黑币奖励! 每人限 2 次
跳转到指定楼层
楼主
ID:731979 发表于 2020-6-7 08:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求教大佬,下面的Mileage=Mileage+Velocity*500/36;  Velocity=count/5 怎么用汇编表示出来呢?            
void EXINT0() interrupt 0
{
        count++;
}

void time0() interrupt 1
{
        uchar m;
        TH0=0x3c;
        TL0=0xb0;         //50ms
        m++;
        if(m>=10)
        {
                m=0;
                Mileage=Mileage+Velocity*500/36;                 //里程m=速度km/h*1000*5/3.6
                Velocity=count/5;//100ms内的脉冲数
                count=0;               
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:309224 发表于 2020-6-7 22:47 | 只看该作者
不要在中断做乘除,ARM上百兆的带硬件乘除的土豪随意.   中断改为  void time0() interrupt 1 {         uchar m;         TH0=0x3c;         TL0=0xb0;         //50ms         m++;         if(m>=10)         {                 m=0;                gFLCalc=TURE;      } ,在主循环中 增加if(gFLCalc){ gFLCalc=0; Mileage=Mileage+Velocity*500/36;                 //里程m=速度km/h*1000*5/3.6                 Velocity=count/5;//将100ms内的脉冲数                 count=0;    }
回复

使用道具 举报

板凳
ID:309224 发表于 2020-6-7 22:49 | 只看该作者
我看是50ms的中断,也可以将  if(gFLCalc)的查询放在按键任务内
回复

使用道具 举报

地板
ID:401564 发表于 2020-6-8 08:29 | 只看该作者
KEIL环境下进行仿真,自然就转换成汇编语言了,比较难看懂
回复

使用道具 举报

5#
ID:123289 发表于 2020-6-8 11:20 | 只看该作者
1、首先你打算用几个字节来表求:Mileage、Velocity、count。
2、放在什么地方。
3、你打算用什么方式来标示数值,整数部分放哪里,小点部分放哪里、二进制还是十进制。
4、编写与格式相对应的加、减、乘、除法。
5、调用加、减、乘、除法,计算Mileage。
C中一句话,汇编或能要用百千行。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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