- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序结构一般如下: 预处理命令 include 函数说明 long fun1(); float fun2(); 变量定义 int x,y; float z; 一、C51与汇编的区别 * 用汇编语言编写MCS–51单片机程序必须要考虑其存储器结构,考虑其片内数据存储器与特殊功能寄存器的使用等。 * 用C语言编写的MCS–51单片机应用程序,不用像汇编语言那样须具体组织、分配存储器资源和处理端口数据,但对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。 二、C51与标准C的区别 C语言编写单片机应用程序时,需根据单片机存储结构及内部资源定义相应的数据类型和变量,而标准的C语言程序不需要考虑这些问题。 四.字符串型常量 字符串型常量由双引号“”括起的字符组成。如“D”、“1234”、“ABCD”等。注意字符串常量与字符常量是不一样,一个字符常量在计算机内只用一个字节存放,而一个字符串常量在内存中存放时不仅双引号内的字符一个占一个字节,而且系统会自动的在后面加一个转义字符“\0”作为字符串结束符。因此不要将字符常量和字符串常量混淆,如字符常量‘A’和字符串常量“A”是不一样的。 5.3.2 变量 变量是在程序运行过程中其值可以改变的量。一个变量由两部分组成:变量名和变量值。 在C51中,变量在使用前必须对变量进行定义,指出变量的数据类型和存储模式。以便编译系统为它分配相应的存储单元。定义的格式如下: [存储种类] 数据类型说明符 [存储类型] 变量名1[=初值],变量名2[初值]…; 一.数据类型说明符 在定义变量时,必须通过数据类型说明符指明变量的数据类型。在C51中,为了增加程序的可读性,允许用户为系统固有的数据类型说明符用typedef起别名,格式如下: typedef c51固有的数据类型说明符 别名; 三.存储种类 存储种类是指变量在程序执行过程中的作用范围。C51变量的存储种类有四种,分别是自动(auto)、外部(extern)、静态(static)和寄存器(register)。 1.auto:使用auto定义的变量称为自动变量,其作用范围在定义它的函数体或复合语句内部,当定义它的函数体或复合语句执行时,C51才为该变量分配内存空间,结束时占用的内存空间释放。自动变量一般分配在内存的堆栈空间中。定义变量时,如果省略存储种类,则该变量默认为自动(auto)变量。 sfr用于对MCS-51单片机中单字节的特殊功能寄存器进行定义,sfr16用于对双字节特殊功能寄存器进行定义。特殊功能寄存器名一般用大写字母表示。地址一般用直接地址形式,具体特殊功能寄存器地址见前面内容。 【例3】特殊功能寄存器的定义。 sfr PSW=0xd0; sfr SCON=0x98; sfr TMOD=0x89; sfr P1=0x90; sfr16 DPTR=0x82; sfr16 T1=0X8A; sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时须指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。格式如下: sbit 位变量名=位地址; 1、位地址为位直接地址,其取值范围为0x00~0xff; 2、位地址是可位寻址变量带位号或特殊功能寄存器名带位号,则在它前面须对可位寻址变量或特殊功能寄存器进行定义。 Note:字节地址与位号之间、特殊功能寄存器与位号之间一般用“^”作间隔。 【例5-5】sbit型变量的定义。 sbit OV=0xd2; sbit CY=0xd7; unsigned char bdata flag; sbit flag0=flag^0; sfr P1=0x90; sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; 【例5-9】通过_at_实现绝对地址的访问。 #define uchar unsigned char /*定义符号uchar为数据类型符unsigned char*/ #define uint unsigned int
文档评论(0)