- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                第 4 章 单片机C语言程序设计 羊大立 E-mail:   6@   yangdali @  主要内容 一、C语言与MCS-51 二、C51的数据类型 三、C51的运算量与存储类型 四、C51的运算符和表达式 五、表达式语句与复合语句 六、C51的输入/输出 七、C51的程序结构 八、函数 九、C51构造数据类型 一、C语言与MCS-51 1、C语言与51单片机 2、C51与标准C 3、C51程序结构 1、C语言与51单片机 C语言目前已成为电子工程师进行单片机系统开发时的常用编程语言。 用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充。 用C语言编写的应用程序必须经单片机的C语言编译器(简称C51),转换生成单片机可执行的代码程序。 基于51系列单片机的C语言或C语言编译器简称为C51语言或C51。 1、C语言与51单片机 用汇编程序设计MCS–51系列单片机应用程序时,必须要考虑其存储器结构,尤其必须考虑其片内数据存储器与特殊功能寄存器正确、合理的使用以及按实际地址处理端口数据。 用C语言编写MCS–51单片机的应用程序,虽然不像用汇编语言那样具体地组织、分配存储器资源和处理端口数据,但在C语言编程中,对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。 1、C语言与51单片机 支持MCS–51系列单片机的C语言编译器有很多种。如American Automation、Avocet、BSO/TASKING、DUNFIELD SHAREWARE、KEIL、Franklin等。 其中KEIL以它的代码紧凑和使用方便等特点优于其它编译器,目前用得最为普遍。 2、C51与标准C C51的主要语法规定、程序结构及程序设计方法都与标准的C语言相同,但在某些方面有区别。  具体地说,在以下几个方面不一样: (1)C51中定义的库函数和标准C语言定义的库函数不同。标准的C语言定义的库函数是按通用微型计算机来定义的,而C51中的库函数是按MCS-51单片机相应情况来定义的; (2)C51中的数据类型与标准C的数据类型也有一定的区别,在C51中还增加了几种针对MCS-51单片机特有的数据类型; 2、C51与标准C (3)C51变量的存储模式与标准C中变量的存储模式不一样,C51中变量的存储模式是与MCS-51单片机的存储器紧密相关的; (4)C51与标准C的输入输出处理不一样,C51中的输入输出是通过MCS-51串行口来完成的,输入输出指令执行前必须要对串行口进行初始化; (5)C51与标准C在函数使用方面也有一定的区别,C51中有专门的中断函数。 3、C51程序结构 和标准C程序结构相同,采用函数结构 每个C51程序由一个或多个函数组成,在这些函数中至少应包含一个主函数main(),也可以包含一个main()函数和若干个其它的功能函数。程序的执行总是从main()函数开始的,其位置无特殊规定。 程序的开始部分一般是预处理命令、函数说明和变量定义等。  实例  简单控制指示灯 功能要求: 系统启动后,当按下一个按钮开关后再闪烁5次后熄灭。 以后每次按下按钮开关,发光二极管都会闪烁5次。 硬件设计: 实际动手: 仿真:(Proteus) C程序(续):  #include reg52.h  #include stdio.h sbit p10=P1^0; sbit p20=P2^0; void delay(unsigned int i); void main()  {  int n,c; P1=0xff; P2=0xff; C程序(续): if (p20==0) {c=1;} if (c==1) {   n=5;   while (n0)    {p10=0 ;    delay;    p10=1;    delay;    n--;    } c=0; }} C程序(续):   void delay(unsigned int i)  {  unsigned int j;  for (j=0;ji;j++){ }  } 汇编程序 org 0000h sjmp main org 0030h main: mov p2,#0ffhmov c,p2.0 	  jc mainmov r0,#5h loop: mov p1,#00h 	  acall delay 	  mov p1,#0ffh 	  acall delay 	  djnz r0,loop 	  sjmp main 汇编程序 delay: mov r1,#05h next2: mov r2,#0ffh next1: mov r3,#0FFhdjnz r3,$djnz r2,
                
原创力文档
                        
                                    

文档评论(0)