在Keil中要看个别变量的值方法如下1寄存器的值,可以在Register串口中查看 2定时器IO口串口状态可以在”Peripherals“中点击相应的选项查看 3普通变量的值,可以直接将鼠标移动到变量名上方,会自动显示当前执行中。
1简单的办法是将鼠标放置变量上就可以看见了2选择变量名,右键添加在watch窗口3局部变量在locals窗口中可以看到。
简单来说可以 Add to Watch 添加到Watch窗口不过你需要明确这个变量的作用域和生命期对于很多临时变量,如果你断点过早或者过晚的话是无法观察到其数值的Watch窗口可以查看某个符号不仅限于变量的内容和类型。
很简单啊被优化掉了全在寄存器里,没有在栈里面所以调试信息无法描述了自然调试器也无法watch想看就关掉优化em18。
keil无法观察局部变量keil观察局部变量的时候,发现总是显示not in scope,是优化级别过高,降低优化级别即可。
对于通用C语言, 局部变量没赋值的话,值是随机的不过你这个是嵌入式,keil 默认初始值会是0 所以,在你的这个程序中,a的初始值是0。
8汇编窗口查看汇编代码9堆栈局部变量显示当前函数局部变量及其值,方便查看10观察窗口MDK5提供了2个观察窗口,按下按钮会弹出一个显示变量的窗口,输入你所想要观察的变量表达式,即可查看其值11内存查看窗口MDK。
unsigned int i,jfori=0 ilttime i++forj=0 jlt1000 j++ void mian unsigned int temp =0x00while1 ifkey == 0 delay20适当延时,消除按键抖动,自己看实际情况。
你把int x,yx,y定义为局部变量 这个语句放到程序开始,就是 void main 后面 不是每个编译器都是必须在程序开始定义变量的,很多编译允许在使用的时候才定义变量但keil就是一个要在程序开始定义变量的编译器。
应该不会的你用是不是用KEIL自带的仿真看的啊因为你的程序不管调用program_1还是program_2,这几个子函数,只要调用就进入死循环,其他的临时变量你看不到,它们是没有确定的值你说“都是为上一个执行子。
可以认为,在debug下,调试环境会自动帮你清0,但脱离调试环境这些没有赋初值的变量就不靠谱了。
就算默认是0也别这样,bug就是这样产生的,不过除了部分寄存器,大部分上电都为0。
不必要呀,写一段再定义出可以,但是这时定义的变量只能下面的语句中使用。
刚开始学的时候也像你这样写,后面发现有时候因为子函数使用了这样的简易变量容易与主程序中的同一变量在编译过程中给优化成全局变量后就不再这样写了。
看你用什么语言写了,如果用汇编的话不用定义,直接用就行了,如p10p22如果用C编写的话,应该先把头文件加进来,#includeltreg51h,加进来后,如果不定义端口的话P1P1^1,这里的P是大写的。
到UV3的安装目录下如 C\Keil\uv3,找到 CARMC_DefaultINI文件,用记事本打开,将里面的内容全部复制下来,再找到 CARMCini文件,将其打开,用刚才复制的内容将CARMCini中的所有内容全部 覆盖掉,保存,关闭重新。