这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 程序调试求解

共10条 1/1 1 跳转至

程序调试求解

助工
2013-07-20 17:43:23     打赏

用KEIL软件调试程序的时候,显示程序跳过了红色方框里的三段程序!这是什么原因?难道是KEIL软件把这段程序优化了?如果是被优化了,那怎么使这段程序不被优化?求大神出招!

如图所示:




关键词: 程序     调试     求解    

高工
2013-07-20 18:17:56     打赏
2楼
目测不会被优化掉~把完整工程传上来看看

高工
2013-07-20 19:18:05     打赏
3楼
帮顶

助工
2013-07-20 20:53:46     打赏
4楼

我给程序加了volatile,就解决了两条语句,但剩下一条不知道怎么解决!

完整代码如下:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^0;
sbit lcdrw=P2^1;  //static
sbit lcdrs=P2^2;
sbit trig=P1^3;
sbit echo=P1^2;
uint n,val,bai,shi,ge;
uchar code table[]="The distant is:";
uchar code table1[]="cm";
uint code table2[]=
{0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
/*void t1_init()
{
TMOD=0x11;
TH1=0xfe;
TL1=0x73;
ET1=1;
EA=1;
}*/
void delay_nms(volatile uint nms)
{
uint n,m;
for(n=nms;n>0;n--)
for(m=110;m>0;m--); 
}
void lcd_writecom(volatile uchar com)
{
lcdrs=0;
lcdrw=0;
P0=com;
delay_nms(5);
lcden=1;
delay_nms(5);
lcden=0;
}
void lcd_writedata(volatile uchar date)
{
lcdrw=0;
lcdrs=1;
P0=date;
delay_nms(5);
lcden=1;
delay_nms(5);
lcden=0;
}
void lcd_init()
{
lcden=0;
lcd_writecom(0x38);
lcd_writecom(0x0c);
lcd_writecom(0x06);
lcd_writecom(0x01);
}
void lcd_display()
{
uchar num;
lcd_writecom(0x80);
for(num=0;num<15;num++)
{
lcd_writedata(table[num]);
delay_nms(5);
}
/* lcd_writecom(0x80+0x40);
lcd_writedata(table2[val/100]);
delay_nms(5);
lcd_writedata(table2[val%100/10]);
delay_nms(5);
lcd_writedata(table2[val%10]);
delay_nms(5);
   for(num=0;num<2;num++)
{
lcd_writedata(table1[num]);
delay_nms(5);
} */
while(1);
}
/*void sentultrasound()
{
trig=0;
echo=0;
trig=1;
delay_nms(1);
trig=0;
while(!echo);
TR1=1;
while(echo);
TR1=0;
val=n*50*(10^6)*34000/2;
}  */
void main()
{
//t1_init();
lcd_init();
// sentultrasound();
lcd_display();
}
/*void t1() interrupt 3 //50us定时
{
TH1=0xff;
TL1=0xd8;
n++;
} */


助工
2013-07-20 21:04:50     打赏
5楼

给程序做了如下的修改:

目前剩下P0口的程序段没解决问题,编译后的结果如下:


高工
2013-07-20 22:42:59     打赏
6楼
没有搞懂,怎么会被优化掉呢

高工
2013-07-20 23:39:09     打赏
7楼

兄弟,把整个工程打包传上来呗~

看见这种密密麻麻,不带高亮、不带注释的代码能看下去的都是神人


高工
2013-07-21 11:43:58     打赏
8楼
这还真成了个难题了。。。

专家
2013-07-22 10:28:44     打赏
9楼
个人建议,对于延时函数和显示函数控制,不要优化了,以免优化后所指内容变化引起程序错误。建议楼主改回来看看

高工
2013-07-24 16:45:58     打赏
10楼
不要怀疑编译器的问题,还是要检查程序是否有bug

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]