- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
会计学;1)机器语言
定义:处理器能直接执行的二进制代码
特点:效率高、但不易于使用;3)高级语言
独立于机器、面向过程的、接近于人的自然语言。
语言:FORTRAN、C语言
特点:与硬件无关、易于交流和使用、运行效率低;Keil C51语言是在标准C的基础上,针对51单片机的硬件特点进行扩展,并向51单片机上移植的高效、简洁的实用高级语言。 ;3、C51与标准C的区别;(5)头文件的不同。
51头文件把单片机内部的硬件资源如定时器、中断、I/O等所相应的功能寄存器写入头文件内。
(6)程序结构的差异。
由于51单片机硬件资源有限,编译系统不允许太多的程序嵌套。其次,C51语言不支持标准C的递归特性。 ;3.2 C51语言程序设计基础;2)C51扩展的数据类型(4种扩展的数据类型);(2)特殊功能寄存器sfr
地址单元80H——FFH之间的片内数据存储区;
“sfr” 数据类型占用一个内存单元;
利用它可以访问51单片机内部的所有特殊功能寄存器。;sfr SBUF = 0x99;;例如:;(4)特殊功能位 sbit
片内特殊功能寄存器的可寻址位。;习题:片内I/O口P1口的P1.0寻址位置成高电平;sbit 位变量名 = 位地址常数; ;习题:片内I/O口P1口的P1.0寻址位置成低电平;3)数据存储类型;;(1)DATA区。
DATA区指片内RAM的低128字节的空间,可直接寻址;
寻址是最快的,应该把经常使用的变量放在DATA区。;(2)BDATA区。
BDATA区是内部RAM可位寻址的16字节存储区(字节地址为20H
~2FH)中的128个位。 在这个区中声明变量就可进行位寻址。;(3)IDATA区。
IDATA区是片内RAM的0-256字节的存储区,只能间接寻址,
速度比直接寻址慢。;(4)PDATA区和XDATA区。
PDATA区和XDATA区位于片外存储区;
PDATA区指的是外部数据存储区0—256字节。
XDATA区指的是外部数据区64KB内的任何地址。;(5)程序存储区CODE。
CODE区是程序存储区,储存的数据是不可改变的。;4)数据存储器模式
C51编译器设定的存储器模式:
SMALL、COMPACT和LARGE三种模式。;2、C51语言的绝对地址访问;1)绝对宏
C51编译器提供了一组宏定义对code、data、pdata和xdata空间
进行绝对寻址。这组宏定义放在absacc.h头文件中:;【???】片内RAM、片外RAM定义的程序如下:
#includeabsacc.h
#define PORTE XBYTE[0xFFC0] /*将PORTE定义为外部I/O,
地址为0xFFC0*/
#define NRAM DBYTE[0x40] /*将NRAM定义为片内RAM,
地址为0x40*/;习题 使用绝对宏将片内RAM 20H的字节地址单元全部置1。;习题: 使用绝对宏读取片外RAM F000H字节地址单元的内容。;2)_at_关键字
使用关键字_at_可对指定的存储器空间的绝对地址进行访问。
格式:
[存储类型] 数据类型 变量名 _at_ 地址常数;;【例】使用关键字_at_实现绝对地址的访问。
data unsigned char y1 _at_ 0x50; /*在data 区定义字节变量
y1,地址为50H*/
xdata unsigned int y2 _at_ 0x4000; /*在xdata区定义字变量
y2,地址为4000H*/
void main(void)
{
y1=0xff;
y2=0x1234;
……
while(1);
};习题:使用关键字_at_读取片内RAM 60H单元的内容。;【例】
使用关键字_at_将片外RAM 2000H开始的连续20个字节单元清0。;data unsigned char buffer[8] _at_ 0x40;
void main(void)
{
unsigned char j ;
for(j=0; j8; j++)
{
buffer[j]=0;
}
};C51语言的基本运算与标准C类似,主要包括算术运算、关系运算、
文档评论(0)