最后一个选项是:
Large
在Large模型中,默认,所有变量都驻留在外部数据存储器中(最多64KB)
这与使用XDATA存储器类型说明符显式声明它们相同
数据指针(DPTR)用于寻址外部存储器需要注意的是,通过数据指针访问存储器效率低且速度慢。特别是对于长度为两个或更多字节的变量。这种类型的数据访问机制生成的代码比XTiny模型或XSmall模型要多
需要扩展的数据指针,低DPXL
这种情况,代码长很多,还要指向外部空间:
再看看何老师的详细介绍:
一定慢很多,大很多
接着在新建项目里添加文件,这个好理解
不进一步举例说明了
接着姚总介绍,如何书写学习心得,遇到哪些坑,怎么解决的?
不是随便贴图,要真动手动脑,用心学习才有心得,才能慢慢提高能力解决问题。
现在MCS-251下的STC32位机,真的是开辟了8051的新时代,好好学,会有收获的
CISC架构的生命是很强的,一定会大行其道,不是说一定要用RISC架构,很多场合对功耗并不是太高要求!
真要编程,还是CISC架构功能强大顺手。
EDATA 就是Memory Model: XSmall: near vars, far const, ptr-4容量留1K给堆栈,我们用3K做变量区,应该足够了
好了,第七集就这样结束!
现在开始 第八集单片机软件开发基础-keil应用程序开发 的学习!
学单片机,C和汇编都是离不开的,先写C程序,接着反汇编,慢慢理解汇编
先创建一个项目,添加C语言文件进去:
何老师接着介绍了各种文件的用途和意义
接下来我们要驱动LED灯,先看电路图:
主程序就很简单,我们主要目的是看反汇编:sfr P4 = 0xc0; //P4端口地址映射
sfr P4M1 = 0xb3; //P4端口配置端口地址映射
sfr P4M0 = 0xb4; //P4端口配置端口地址映射
sfr P6 = 0xe8; //P6端口地址映射
sfr P6M1 = 0xcb; //P6端口配置端口地址映射
sfr P6M0 = 0xcc; //P6端口配置端口地址映射
void main()
{
unsigned volatile long i;
P4M0 = 0X00;
P4M1 = 0X00; //设置P4为准双向端口模式
P6M0 = 0X00;
P6M1 = 0X00; //设置P6为准双向端口模式
P4 = 0; //P4端口赋值为0,打开led灯总开关
while (1)
{
P6=0x00; //P6赋值为低,点亮所有led灯
//for(i=0;i<100000UL;i++);//计数延时,调试时,去掉该行代码。
P6=0xFF;
//for(i=0;i<100000UL;i++);//计数延时,调试时,去掉该行代码。
}
}
编译后开始Debug:
这段C程序在我机器上Debug:
Keil μVision应用程序开发
编译器优化选项设置
C251编译器是一个优化编译器:
接着看优化等级:
具体看参数设置中的C251选项: