- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6讲_单片机的C语言编程
8位单片机接口与汇编 大连理工大学软件学院 嵌入式系统教研室 侯刚 hg.dut@163.com 综合楼413,04113.static: 使用static定义的变量称为静态变量。它又分为内部静态变量和外部静态变量。在函数体内部定义的静态变量为内部静态变量,它在对应的函数体内有效,一直存在,但在函数体外不可见,这样不仅使变量在定义它的函数体外被保护,还可以实现当离开函数时值不被改变。外部静态变量上在函数外部定义的静态变量。它在程序中一直存在,但在定义的范围之外是不可见的。如在多文件或多模块处理中,外部静态变量只在文件内部或模块内部有效。 (3)在任何情况下都不能直接调用中断函数,否则会产生编译错误。因为中断函数的返回是由8051单片机的RETI指令完成的,RETI指令影响8051单片机的硬件中断系统。如果在没有实际中断情况下直接调用中断函数,RETI指令的操作结果会产生一个致命的错误。 (4)如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器必须与中断函数相同。否则会产生不正确的结果。 (5)C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容 例如:在程序开始处对ACC、B、DPH、DPL和PSW入栈,结束时出栈。中断函数未加using n修饰符的,开始时还要将R0~R1入栈,结束时出栈。如中断函数加using n修饰符,则在开始将PSW入栈后还要修改PSW中的工作寄存器组选择位。 例如:MOV A,20H。在指令中直接给出所访问的内存单元地址20H,访问的是地址为20H的单元的数据,该指令把地址为20H的片内RAM单元的内容送累加器A; 间接寻址是指所操作的数据所在的内存单元地址不是通过指令中直接提供,该地址是存放在寄存器中或其它的内存单元中,指令中指明存放地址的寄存器或内存单元来访问相应的数据。 在C语言中,数据通常是以变量的形式进行存放和访问的。 对于变量,在一个程序中定义了一个变量,编译器在编译时 就在内存中给这个变量分配一定的字节单元进行存储。如对整型变量(int)分配2个字节单元,对于浮点型变量(float)分配4个字节单元,对于字符型变量分配1个字节单元等。 变量在使用时分清两个概念:变量名和变量的值。前一个是数据的标识,后一个是数据的内容。变量名相当于内存单元的地址,变量的值相当于内存单元的内容。 对于变量也有两种访问方式:直接访问方式和间接访问方式。 直接访问方式。对于变量的访问,我们大多数时候是直接给出变量名。例如:printf(“%d”,a)。 在执行时,根据变量名得到内存单元的地址,然后从内存单元中取出数据按指定的格式输出。 间接访问方式。例如要存取变量a中的值时,可以先将变量a的地址放在另一个变量b中,访问时先找到变量b,从变量b中取出变量a的地址,然后根据这个地址从内存单元中取出变量a的值。 在这里,从变量b中取出的不是所访问的数据,而是访问的数据(变量a的值)的地址,这就是指针,变量b称为指针变量。 指针变量经过定义之后可以象其他基本类型变量一样引用。例如: int x,* px,* py; /*变量及指针变量定义*/ px=x; /*将变量x的地址赋给指针变量px,使px指 向变量x*/ * px=5; /*等价于x=5*/ py=px; /*将指针变量px中的地址赋给 指针变量py,使指针变量py也指向x*/ 六.位变量 在C51中,允许用户通过位类型符定义位变量。位类型符有两个:bit和sbit。可以定义两种位变量。 bit位类型符用于定义一般的可位处理位变量。它的格式如下: bit 位变量名; 在格式中可以加上各种修饰,但注意存储器类型只能是bdata、data、idata。只能是片内RAM的可位寻址区,严格来说只能是bdata。 【例】 bit型变量的定义。 bit data a1; /*正确*/ bit bdata a2; /*正确*/ bit pdata a3; /*错误*/ bit xdata a4; /*错误*/ 皿蛀琼蛋凝摸剿猜谍把视钳井绪颊缺姐罐车日帚刻现欢冬农终塌混壬按寅第6讲_单片机的C语言编程第6讲_单片机的C语言编程 sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时须指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。格式如下: sbit 位变量名=位地址; 如位地址为位直接地址,其取值范围为0x00~0xff;如位地址是可位寻址变量带
文档评论(0)