- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5、存储器模式 Cx51提供了3种存储器模式来存储变量过程参数和分配再入函数堆栈: 存储模式 说明 small 参数及局部变量放入data区,默认存储类型是data,栈空间位于片内idata(片内RAM) compact 参数及局部变量放入pdata区,默认存储类型是pdata(片外RAM);栈空间位于片内idata(片内RAM) large 参数及局部变量放入xdata区,默认存储类型是xdata,模拟堆栈位于片外xdata(片外RAM) 一般来说如果系统所需要的内存数小于内部RAM数时,都应以small模式进行编译。 在这种模式下,data段是所有内部变量和全局变量的默认存储段,所有参数传递都发生在data段中。 这种模式的优势就是数据的存取速度很快,但只有1个字节寻址的存储空间供你使用(总共有128,但至少有8个字节被寄存器组使用)。 (1)small模式。 如果你的系统有256字节或更少的外部RAM,你可以使用compact模式,这样一来,如果不加说明,这种模式将扩充你能够使用的RAM数量。对xdata段以外的数据存储仍然是很快的,变量的参数传递将在内部RAM中进行,这样存储速度会比较快。对pdata段的数据的寻址是通过R0和R1进行间接寻址的,比使用DPTR要快一些。 (2)compact模式 在large模式中所有变量的默认存储区是xdata段,Keil C尽量使用内部寄存器组进行参数传递。在寄存器组中可以传递参数的数量和compact模式一样。对xdata段数据的访问是最慢的,所以要仔细考虑变量应存储的位置,使数据的存储速度得到优化。 (3)large模式 习题p.79 1、3、4、6 3.4 特殊功能寄存器SFR及其Cx51定义 特殊功能寄存器用关键词sfr来定义, sfr16用来定义16位的特殊功能寄存器,如DPTR。 通过名字或地址来引用特殊功能寄存器地址必须高于80H。 可位寻址的字节地址的位变量定义用关键字sbit。 对于大多数8051成员,Keil提供了一个包含了所有特殊功能寄存器和它们的位的定义的头文件,通过包含头文件可以很容易地进行新的扩展。 sfr SCON =0x98; //定义 SCON sbit SM0 =0x9F; //定义 SCON的各位 sbit SM1 =0x9E; sbit SM2 =0x9D; sbit REN =0x9C; sbit TB8 =0x9B; sbit RB8 =0x9A; sbit TI =0x99; sbit RI =0x98; 注意,用sfr16定义的16位特殊功能寄存器的字节顺序,前面的为低字节,后面的为高字节,这个和8x86中的顺序相同,但是int的高低字节顺序却正好相反。(P64、P65) 3.5 并行接口及其Cx51定义 8051单片机具有P0、P1、P2和P3四个端口,许多增强型单片机还有P4端口。没有针对这些端口的专用IO操作指令,8051对IO口的操作是通过设置其输出锁存器SFR来实现的。 部分针对IO口的读取指令是读取端口锁存器,部分是读取端口的输入状态,通常那些针对端口的读—修改—写指令读取的是端口锁存器(对应SFR的地址单元)而不是引脚状态,这样可以防止因外部环境不稳定而引起的误操作。 P0-3端口的SFR地址的尾数不是0就是8,所以它们也是可以位寻址的SFR。端口在Cx51中可以直接用sfr来定义: sfr P0 =0x80; //定义IO口P0 sfr P1 =0x90; //定义IO口P1 sfr P2 =0xA0; //定义IO口P2 sfr P3 =0xB0; //定义IO口P3 端口中的每一个IO口线还可以用sbit来定义其每一个位: sbit P00 =P0^0; //定义IO线P0.0 sbit P01 =P0^1; //定义IO线P0.1 sbit P02 =P0^2; //定义IO线P0.2 sbit P03 =P0^3; //定义IO线P0.3 sbit P04 =P0^4; //定义IO线P0.4 sbit P05 =P0^5; //定义IO线P0.5 sbit P06 =P0^6; //定义
您可能关注的文档
最近下载
- 压力检测及仪表.ppt
- DGTJ08-202-2020钻孔灌注桩施工规程 上海市.pptx VIP
- 光伏发电站场内及并网安全技术白皮书.pdf
- API SPEC 4F 钻井和修井井架、底座规范1995.doc VIP
- 2023年09月浙江温州市平阳县部分事业单位面向高校毕业生退役士兵公开招聘6人笔试历年难易错点考题荟萃附带答案详解_1.docx VIP
- 《中华人民共和国安全生产法》培训解读课件.pptx VIP
- 《中华人民共和国安全生产法》解读与培训.pptx VIP
- 电子商务专业课程体系构建与实践教学方案.docx VIP
- 《中华人民共和国矿山安全法实施条例》深度解读课件.pptx VIP
- 【温州】2024年浙江温州平阳县部分事业单位面向高校毕业生退役士兵招聘工作人员6人笔试历年典型考题及考点剖析附带答案详解.docx VIP
文档评论(0)