作者ruemann (此人挂网中……)
看板ASM
标题Re: [问题] keilc问题
时间Sat Sep 8 20:37:59 2007
※ 引述《CuckooBoy (阿书)》之铭言:
: 请问想看变数的状态
: 譬如i=i+1;
: 我想看这列的 ......左边i的值是多少,要怎麽做呢?
你的问题有点怪,左边是指i=的i吧?
以c语言的语法,是指i+1-->i,也就是当该行执行完後的值。
因为各家的ICE对於断点的处理不一定相同,所以比较保险的方式是:
260 i=i+1
261 nop
然後在261行前加上断点,中断时去检查i的值就可以了
当然,如果你不是用ICE的话,那可能是在261行的地方换成输出指令,将值在某个
port或rs232或其他的方式将资料输出。
ps.说真的,这里是asm版,你的问题大多是C的问题,虽然说是单晶片上面的问题,但
主要又不是单晶片的问题,我想会有一些人觉得是不必要的问题也是可以理解的。
又及:你的需求可以去相关的论坛得到更多的帮助,如雷儿电子论坛、51硬派论坛、
大鸟实验室论坛(名称可能有错,但是我以前去过觉得不错的论坛)。
另外,你在上一篇问说是否可以针对一个位元的存取,在51而且,只有一小个区段的
记忆体可以做位元存取,在keilC中以bdata做为标示。
xdata unsigned char abc;
bdata unsigned char bitbuffer;
bit bit7 = bitbuffer^7;
bit bit6 = bitbuffer^6;
bit bit5 = bitbuffer^5;
bit bit4 = bitbuffer^4;
bit bit3 = bitbuffer^3;
bit bit2 = bitbuffer^2;
bit bit1 = bitbuffer^1;
bit bit0 = bitbuffer^0;
abc = 0x55;
bitbuffer = abc;
P1.1 = bit2;
这样也可以做到,事实上,你去看keilc对於51.h的宣告,会发现他P0~P3的各位元宣告
是相同的,但不是每种编译器都是用这种方法宣告,像是arm的c编译器就是用上几篇的
结构式宣告完成的。
这主要是因为C原本没有对位元处理的指令、符号的定义,因此各家编译器会用一些方法
来支援这部份。
--
我只是个想赚 P 币的迷途小羔羊
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.228.75
1F:推 CuckooBoy:推 针对一个位元的存取 ...感谢 09/08 20:58
2F:→ CuckooBoy:一个位元的存取 一般书好像没教,这...应该是经验吧^^蘒 09/08 20:59
3F:推 MasterChang:单位元存取多是C编译器手册说明,因为他也要说明内部 09/09 22:58
4F:→ MasterChang:暂存器的设定及控制方式。这就是我为何我说你没看资料 09/09 22:59
5F:→ MasterChang:,拿到编译器第一件事情是看手册,不是去写程式。再说 09/09 22:59
6F:→ MasterChang:一遍「是看手册、不要先去写程式」。这是台湾学生最大 09/09 23:00
7F:→ MasterChang:的通病。自己以为懂C然後就不看手册,结果程式写出来 09/09 23:01
8F:→ MasterChang:不是错误就是执行的跟设计的不一样。 09/09 23:02