- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机的C语言应用的程序设计1.ppt
* 第4章 单片机的C语言应用程序设计 第4章 单片机的C语言应用程序设计 第8章 单片机的C语言应用程序设计 8.1 C语言与MCS-51 8.3 C51数据类型及在MCS-51中的存储方式 8.4 MCS-51内部资源使用的C语言编程 8.5 MCS-51片外扩展的C语言编程 下页 8.1 C语言与MCS–51 C语言编写单片机应用程序特点: 1)只需初步了解单片机存储结构及内部资源; 2)C语言能管理内部寄存器分配、不同存储器寻址和数据类型等细节问题;在小程序中代码量大,在较大程序中效率高; 2)定义的数据类型和变量、语法规定、程序结构及程序设计方法都与标准的C语言程序设计相同,具有C语言程序设计的特点。 上页 下页 回目录 用C语言编写应用程序步骤: 编辑源程序,编译生成单片机可执行的代码,调试,写入单片机。 MCS–51系列单片机的C语言编译器: 主要有KEIL C51编译器、Franklin C51编译器。 上页 下页 回目录 8.3 C51数据类型及在MCS-51中的存储方式 C51的数据类型 ●C51编译器支持C语言所有标准的数据类型:char,unsigned char,int, unsigned int,long, unsigned long,float等。 ●加入了专门访问8051单片机硬件的数据类型: ◆bit:声明位变量,其值为1或0; ◆ sbit:声明可寻址的位变量或SFR中的某个位变量,其值为1或0; ◆ sfr:声明特殊功能寄存器,地址范围0~255 ◆ sfr16:声明特殊功能寄存器,地址范围0~65535 上页 下页 回目录 如: sfr SCON 0x98;//声明SCON为串口控制器,地址98H sfr P0 0x80; sfr PSW 0xD0; ● sfr之后的寄存器名必须大写,定义之后可以直接对这些寄存器赋值。如P0 0X11; sbit CY PSW^7; sbit CY 0xD0^7; sbit CY 0xD7; ●右边的表达式定义特殊位在寄存器中的位置,值必须在0~7. C51变量的存储类型 C51每个变量可以使用下表所列的存储器类型明确分配到指定的存储空间。 存储类型 与存储空间的对应关系 data 直接寻址片内数据存储区,访问速度快 128字节 bdata 可位寻址片内数据存储区,允许位与字节混合访问 16字节 idata 间接寻址片内数据存储区,可访问片内全部RAM地址空间 256字节 pdata 分页寻址片外数据存储区 256字节 由MOV @Ri访问 i 0,1 xdata 片外数据存储区 64 KB 由MOVX @DPTR访问 code 程序存储器64 KB空间,由MOVC @DPTR访问 上页 下页 回目录 带存储类型的变量的定义举例: unsigned char data var1;//声明一个内部直接寻址的无符号字节变量 bit bdata flags;//在可位寻址片内数据存储区定义一个位变量 char xdata var2;//在外部数据存储区定义一个字符变量 unsigned char code[] “Welcome to Beijing”;//在程序存储区定义字符串 上页 下页 回目录 存储模式 确定用于函数自变量、自动变量和无明确存储类型的变量的默认存储器类型 存储模式 说 明 SMALL 默认的存储类型是data,参数及局部变量放入可直接寻址片内RAM的用户区中 最大128字节 。另外所有对象 包括堆栈 ,都必须嵌入片内RAM。存取速度快,尽量使用此模式。 COMPACT 默认的存储类型是pdata,参数及局部变量放入分页的外部数据存储区,通过@R0或@R1间接访问,栈空间位于片内数据存储区中 LARGE 默认的存储类型是xdata,参数及局部变量直接放入片外数据存储区,使用数据指针DPTR来进行寻址。用此数据指针进行访问效率较低,尤其对两个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度 上页 下页 回目录 对于片外扩展I/O口,则根据硬件译码地址,将其视作为片外数据存储器的一个单元,使用#define语句进行定义。例如 #include #define PORTA XBYTE [0xFFC0] absacc.h是C51中绝对地址访问函数的头文件,将PORTA定义为外部I/O口,地址为 FFC0H,长度为8位。 上页 下页 回目录 Franklin C51编译器提供 的MCS51常
文档评论(0)