完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
#include
#include #define uchar unsigned char #define uint unsigned int uchar code time[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; uchar timeb,datab,flag,a; void delayms(uint z) { uint x,y; for(x=0;x } void start() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; ET1=1; SCON=0x50; ES=1; EA=1; } void main() { uchar i,b; start(); b=1; while(1) { for(i=0;i<10;i++) { SBUF=time; while(!TI); TI=0; } while(b); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 写入C51中后,程序为什么在这里停不下来啊,如果直接把b换成1就能停下来 delayms(100); } } ![]() ![]() [qq]469774574[/qq] 本人比较笨 基础也不好 希望 大家能帮帮忙啊 ~~ |
|
相关推荐
8个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
语句 "while(b);" 怀疑是被编译器优化掉了。因为编译到这里发现出现“死循环”,被认为是不合理的。如果写成“while(1);”,则编译器认为这确实是编程者的意图 —— 纯猜测。
建议LZ改用设置断点的方法。 |
|
|
|
|
|
这跟编译器也是有关的,一般WHILE(表达式),里面是放表达式,如果你这样写while(b==1)也是可以的,一般直接写变量,可能会是有问题的,一般写表达式保险点
|
|
|
|
|
|
我也是小白,可能是因为while括号里的语句只能是表达式或者常量,不能是变量吧!
不过你可以测试一下!你吧while(b)改成while(--b)看看能不能停下来!如果停下来了,说明不能是常量作为语句的! 在你的程序里while(--b)应该是等效的,因为b每次都赋值为1了 |
|
|
|
|
|
我也是小白,可能是因为while括号里的语句只能是表达式或者常量,不能是变量吧!
不过你可以测试一下!你吧while(b)改成while(--b)看看能不能停下来!如果停下来了,说明不能是常量作为语句的! 在你的程序里while(--b)应该是等效的,因为b每次都赋值为1了 |
|
|
|
|
|
我也是小白,可能是因为while括号里的语句只能是表达式或者常量,不能是变量吧! 不过你可以测试一下!你吧while(b)改成while(--b)看看能不能停下来!如果停下来了,说明不能是常量作为语句的! 在你的程序里while(--b)应该是等效的,因为b每次都赋值为1了 |
|
|
|
|
|
就光一个b也可以认为是表达式
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16902 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 11:04 , Processed in 0.801424 second(s), Total 87, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2434