找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 1872 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-3-14 11:18

正文摘要:

while((p3.6=0)&&((time++)<500))          这个while停在这里判断 两个条件    ,  汇编中如果jnb p3.6 $这个就停在这里了,没办法加时间判断。(C中也没 ...

回复

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;    // ...

你好  搞明白了,重新弄了一个  看清楚思路了 。  谢谢
ID:401564 发表于 2020-3-18 21:05
time++;
if((key==0)&&(time>40));  //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0;    //如果键释放,时间复位

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

不要在函数外面声明变量,这样编译器会生成一大堆无用的汇编代码出来的
ID:264733 发表于 2020-3-18 13:35
因为C每个人的写法不一样(自己感觉看起来没有汇编的好,具有统一性)  所以想学汇编。 而被这个卡住了 没有明白是这个语句用汇编是怎么写的 所以请教大神帮解答下。
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);
}
ID:697917 发表于 2020-3-17 15:08
比较90.0(应该是p3.6引脚不为0)跳转到00B3行,即下面3行处,不进行time清零操作
ID:401564 发表于 2020-3-17 13:55
这样我看不明白,你把C文件上传,我试一下
ID:264733 发表于 2020-3-14 20:39
Y_G_G 发表于 2020-3-14 15:30
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的

好的  试一下看看 谢谢
ID:401564 发表于 2020-3-14 15:30
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的
ID:264733 发表于 2020-3-14 11:18
while((p3.6==0)&&((time++)<500))

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

Powered by 单片机教程网

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