data区是指内部RAM,在CPU中就是256个字节,4K的RAM在物理上是片内的,但在逻辑上是属于外部RAM的,也就是说你需要把变量用XDATA来修饰,这样才会用到这4K。
另外,data区的地址还包括了特殊寄存器的地址,也包括了堆栈的空间,所以实际可用的空间也就是100多字节。
化,你查看一下是否需要变化,你自己写错了。
void stop() //终止信号
{
sda=0;
delay();
scl=1;
delay();
sda=0;
delay();
}
其次,你这里对sda信号的判断写的是赋值语句,sda = 1,如果是判断的话,应该写为while(sda && (i++ < 250));
while((sda=1)&&(i<250))i++;
最后,你对C语言中的“<<”运算符好像理解有误,c中的“<<”运算符是不带进位的一位运算,被一走的位用0代替,好比说
a = 0xff;
a = a << 1;
此时的a是0xfe,而cy并没有改变,如果需要用到a的第7位可以采用判断第七位,再赋值的 *** 作,或者用intrinsh中的宏定义 *** 作吧。
不知是否有帮助,楼主自己修改一下看看吧,用C写程序记得最后看KEIL生成的汇编代码,有助于你理解KEIL的编译机制。
Proteus694、95与keilC51联调设置方法
1、将KeilC51(u2、u3均可)、Proteus6(94、95均可)都安装好;
2、下载两个软件,一个是Proteu的Vdmagdiexe,另一个是授权后的Prospicedll(两个文件链接地址看下面)
3、先运行Vdmagdiexe安装Keil接口,然后将Prospicedll覆盖在Proteus的安装文件夹下的Bin中如:D:\Program Files\Labcenter Electronics\Proteus 6 Professional\BIN;
4、打开Proteus,在下拉菜单中选(在该项前打勾);
5、打开KeilC51,点击,在标签下选择右边的单选,并在下拉框中选仿真设备;
6、在Proteus侧做好硬件连线,Keil侧写好软件,点击Keil,您可以欣赏联调了。
proteus69 sp4与keil联调几点发现:
在这里联调的一些基本 *** 作就不再赘述了
1,一定要把keil的工程和Proteus的文件放到同一个目录下(这里所说的Keil的工程指工程的目录, 即Proteus的工程Design文件(后缀名DSN)要和包含Keil工程所有文件的那个文件夹在同一层目录下) ; 经过 *** 作发现: Keil的工程目录文件夹一定要命名为keil(可能与路径设置有关,目前还不清 楚),否则proteus报错:Unable to open HEX file 'Keil\DS1302hex' keil报错: target dll has been cancelled debugger aborted!),另外 针对其他版本的联调,以上两点原则也要遵守
2,69以上版本需要添加与Keil联调补丁Vdmagdiexe,其作用就是添加在程序目录keil/c51/bin目录 下添加Vdm51dll,(注意:与其他版本不同,69以上版本Proteus 6 Professional\MODELS\目录下没 有 VDM51dll)并且修改keil目录下tools配置文件,添加两行文本:TDRV8=BIN\VDM51DLL ("Proteus VSM Simulator") BOOK2=HLP\VDMAGDIHLP ("Proteus VSM AGDI Driver"),经过实际 *** 作证明,不一定要安装补丁Vdmagdiexe,手动 *** 作也可成功实现联调功能,其中第二行非必需
3,至于Proteus 6 Professional\BIN目录下Prospicedll的作用,有网友说与授权有关,有网友说与授权有关,确有可能。默认安装的版本是早于2006626的版本,好像是2006617,替换时没记清,联调失败。当用 2006626版本代替后,联调才成功,但是用更新的2006818版本替换时,联调又会失败。
eeprom大小keil好像看不出来,只能从程序的角度推算占用量吧。
flash大小可以通过编译通过后的下方信息栏得到,比如:
data = , xdata = , code =
data是内部固有RAM,xdata是外部接口RAM,或者片内自带的SRAM,code就是falsh的大小了。
芯片复位后进入的是复位中断入口地址,一般是0,并且位于FLASH中。然后在入口处放置一条跳转指令,跳转到指定的地址执行。所以如果想复位后从RAM中执行,那么必须修改bootloader,也就是最初的那段汇编代码,把跳转的地址改成RAM的地址。
以上就是关于关于keil中C8051F020片内RAM的问题全部的内容,包括:关于keil中C8051F020片内RAM的问题、如何在KEIL中使用STC89C516的1024B RAM、keil与proteus联调,看不到ram变化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)