网站大量收购独家精品文档,联系QQ:2885784924

C51程序设计的.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C51程序设计的

C51程序设计 ;§1 C51语言的特点及其程序结构;1.对单片机的指令系统不要求了解,仅要求对8051 的存贮器结构有初步了解; 2.寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理; 3. 程序有规范的结构,可分成不同的函数,这种方式可使程序结构化; 4.具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性; 5.提供的库包含许多标准子程序,具有较强的数据处理能力; 6.由于具有方便的模块化编程技术,使已编好程序可容易地植入新程序;;二、C的程序结构;§2 一个简单的C51例子;§3 C51的数据定义;二、C51数据类型;1.bit:位型 int bdata ibase; char bdata bary[4]; sbit mybit0=ibase^0; //bit 0 of ibase sbit mybit15=ibase^15; sbit ary07=bary[0]^7; sbit ary37=bary[3]^7;;2.sfr:特殊功能寄存器 sfr P0=0x80; //P0口,address 80h 3.sfr16:16位特殊功能寄存器 sfr16 T2=0xCC; //T2L 0CCh, T2H 0CDh sfr16 RCAP2=0xCA; //RCAP2L 0Cah, RCAP2H 0CBh 4.sbit:可寻址位型 sfr PSW=0xD0; sbit CY=PSW^7;;例: 数据类型 存储类型 变量 char data var1; bit data flags; unsigned char xdata vextor[10]; ;;§4 C51的常量、运算符、表达式、基本语句、数组;§5 C51的函数;2.关键字using对函数目标代码的影响如下: 在函数的入口处将当前工作寄存器组保护到堆栈中;指定的工作寄存器内容不会改变;函数返回之前将被保护的工作寄存器组从堆栈中恢复。 使用关键字using在函数中确定一个工作寄存器组时必须十分小心,要保证任何寄存器组的切换都只在控制的区域内发生。另外,带using属性的函数,原则上不能返回bit类型的值,并且不允许用于外部函数。;3.关键字interrupt也不允许用于外部函数,它对中断函数目标代码的影响如下: 在进入中断函数时,特殊功能寄存器ACC、B、DPH、DPL、PSW将被保存入栈;如果不使用寄存器组切换,则将中断函数中所用到的全部工作寄存器都入栈;函数返回之前,所有的寄存器内容出栈。;4.编写8051单片机中断函数时应遵循以下规则: (1)中断函数不能进行参数传递。 (2)中断函数没有返回值。 (3)在任何情况下都不能直接调用中断函数。 (4)如果中断函数中用到浮点运算,必须保存浮点寄存器的状态。在math.h中,提供了保存浮点寄存器的状态的库函数pfsave和恢复浮点寄存器的状态的库函数fprestore。 (5)如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器组必须与中断函数相同。;§6 用typedef重新定义数据类型的名称 格式如下: typedef 已有的数据类型 新的数据类型名; 例如:typedef unsigned char uchar; typedef unsigned int word;;例:清零程序 (将2000H—20FFH的内容清零) ★ 汇编语言程序 ORG 0000H SE01: MOV R0,#00H MOV DPTR,#2000H ;(0000H)送DPTR LOO1: CLR A MOVX @DPTR,A ;0送(DPTR) INC DPTR ;DPTR+1 INC R0 ;字节数加1 CJNE R0,#00H,LOO1 ;不到FF个字节 LOOP: SJMP LOOP; 清零程序 (将2000H—20FFH的内容清零) ★ C-51程序 #include reg51.h main( ) { int i; unsigned char xdata *p=0x2000; /* 指针指向2000H单元 */ for(i=0;i256;i++) {*p=0; p++;}/*清零2000H-20FFH单元*/ };★ 汇编语言程序 ORG 0000H L00:

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档