找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这个C语言语句怎么转成汇编,请高手帮解答下。

[复制链接]
跳转到指定楼层
楼主
while((p3.6=0)&&((time++)<500))          这个while停在这里判断 两个条件    ,  汇编中如果jnb p3.6 $这个就停在这里了,没办法加时间判断。(C中也没有用到定时器)    谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:264733 发表于 2020-3-14 11:18 | 只看该作者
while((p3.6==0)&&((time++)<500))
回复

使用道具 举报

板凳
ID:401564 发表于 2020-3-14 15:30 | 只看该作者
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的
回复

使用道具 举报

地板
ID:264733 发表于 2020-3-14 20:39 | 只看该作者
Y_G_G 发表于 2020-3-14 15:30
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的

好的  试一下看看 谢谢
回复

使用道具 举报

5#
ID:264733 发表于 2020-3-17 12:20 | 只看该作者
Y_G_G 发表于 2020-3-14 15:30
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的

请大神帮再看下  这个还是看不懂应该怎么写

999999999999.jpg (127.36 KB, 下载次数: 109)

999999999999.jpg
回复

使用道具 举报

6#
ID:264733 发表于 2020-3-17 12:22 | 只看该作者
请大神帮再看下 还是看不懂这个怎么转的  关键是走不到那个11的位置

999999999999.jpg (127.36 KB, 下载次数: 80)

999999999999.jpg
回复

使用道具 举报

7#
ID:401564 发表于 2020-3-17 13:55 | 只看该作者
这样我看不明白,你把C文件上传,我试一下
回复

使用道具 举报

8#
ID:697917 发表于 2020-3-17 15:08 | 只看该作者
比较90.0(应该是p3.6引脚不为0)跳转到00B3行,即下面3行处,不进行time清零操作
回复

使用道具 举报

9#
ID:264733 发表于 2020-3-18 13:26 | 只看该作者
Y_G_G 发表于 2020-3-17 13:55
这样我看不明白,你把C文件上传,我试一下

你好帮看下谢谢
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint v=0,time=0;
sbit key=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if((key==0)&&(time>40));  //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0;    //如果键释放,时间复位
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
回复

使用道具 举报

10#
ID:264733 发表于 2020-3-18 13:35 | 只看该作者
因为C每个人的写法不一样(自己感觉看起来没有汇编的好,具有统一性)  所以想学汇编。 而被这个卡住了 没有明白是这个语句用汇编是怎么写的 所以请教大神帮解答下。
回复

使用道具 举报

11#
ID:401564 发表于 2020-3-18 21:05 | 只看该作者
time++;
if((key==0)&&(time>40));  //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0;    //如果键释放,时间复位

你这个是进入中断之后,变量就先+1
后一个语句没有作用,条件成不成立都是执行下一条语句的

不要在函数外面声明变量,这样编译器会生成一大堆无用的汇编代码出来的
回复

使用道具 举报

12#
ID:264733 发表于 2020-3-19 12:03 | 只看该作者
Y_G_G 发表于 2020-3-18 21:05
time++;
if((key==0)&&(time>40));  //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0;    // ...

你好  搞明白了,重新弄了一个  看清楚思路了 。  谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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