




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 4 1 单片机与嵌入式系统 5用C语言设计51程序 5 1C51语言特点C51吸取了汇编语言的精华提供了对位 字节及地址的操作 使程序可以直接对内存及指定寄存器进行控制 吸取了宏汇编技术中的某些灵活的处理方法 提供宏代换 define和文件蕴含 include的预处理命令 C51继承和发扬了高级语言的长处C51的可移植性好生成的代码质量高目前使用C51开发系统最流行的是KeilC51软件平台 2020 4 1 单片机与嵌入式系统 5 2标识符与关键字 C51的标识符C51的标识符基本同标准的C语言C51的关键字C51的关键字有ANSIC标准的关键字 见表5 1所示 C51扩展的关键字 见表5 2所示 这里略 2020 4 1 单片机与嵌入式系统 5 3C51程序设计的基本规则 5 3 1数据类型与存储模式一 C51数据类型 2020 4 1 单片机与嵌入式系统 无符号型 unsigned 有符号型 signed 二 对C51变量的字节长度说明char占用1个字节 int占用2个字节 longint占用4个字节 float占用4个字节 占用1到3字节 地址 bit占用1位 0或1 sfr占用1个字节 特殊功能寄存器 sfr16占用2个字节 特殊功能寄存器 sbit占用1位 定义位用 2020 4 1 单片机与嵌入式系统 三 变量与数据存储模式 存储种类 数据类型 存储器类型 变量名表 变量的存储种类有四种 自动 auto 外部 extern 静态 static 和寄存器 register 如果省略了存储种类选项 则该变量为自动 auto 变量 2020 4 1 单片机与嵌入式系统 对51存储器的类型说明 见表5 3 在变量前加类型说明 1 类型说明符DATA寻址片内低128字节 速度最快 MOV BDATA寻址片内20H 2FH的单元 bit位 IDATA间接寻址片内256字节 MOV Ri PDATA页寻址外部RAM MOVX Ri XDATA寻址外部64KRAM MOVX DPTR CODE寻址代码 程序 区 MOVC A DPTR 2020 4 1 单片机与嵌入式系统 2 举例说明unsignedchardatak t p 定义了k t p为无符号字符data变量 unsignedintk1 k2 data可省略 定义了k1 k2为无符号整型data变量 intidatay1 10 定义了y1为整型数组 unsignedcharbdataz1 z2 定义了z1 z2为可位寻址的字符变量unsignedcharpdatae1 e2 定义了e1 e2为页寻址的变量dubexdatab 30 定义了变存在外部RAM中 2020 4 1 单片机与嵌入式系统 unsignedcharcodef tab 10 定义了f tab为代码内的常数f tab 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x67 这时公阴极数码管的显示代码 MOVCA A DPTR 例如 要显示 4 5 definesz cpsXBYTE 0 x1fff 定义外部存储器的口 definesz cpgXBYTE 0 x3fff 定义外部存储器的口sz cps f tab 4 显示4sz cpg f tab 5 显示5 2020 4 1 单片机与嵌入式系统 四 数据存储模式存储模式决定了变量的默认存储类型 参数传递区和无明确存储类型说明的变量的存储类型 如果在变量定义时略去存储类型标志符 则编译器会自动选择默认的存储类型 默认的存储类型进一步由 SMALL COMPACT和LARGE存储模式指令限制 三种存储模式的含义 见表5 4所示 SMALL 低128字节 COMPACT 分页片外存储器 最大256字节 默认的存储类型是pdata LARGE 最大64K 默认的存储类型是xdata 2020 4 1 单片机与嵌入式系统 例如 staticunsignedchardatax 在片内数据存储器中定义一个静态无符号字符型变量x inty 定义一个自动整型变量y 它的存储器类型由编译模式确定 chardatavar1 在data区定义字符型变量var1 intidatavar2 在idata区定义整型变量var2 inta 5 定义变量a 同时赋以初值5 变量a由编译模式确定默认存储区 charcodevar3 VeryGood 在code区定义字符串数组rar3 charxdata px 在xdata区定义一个指向对象类型为char的指针px 指针px自身在默认存储区 由编译模式确定 长度为2字节 0 0 xFFFF 2020 4 1 单片机与嵌入式系统 Charxdata datapdx 除了指针明确定位于内部数据存储器区 data 之外 与上例完全相同 由于指定了存储器类型 所以与编译模式无关 externbitdatap numb 在data区定义一个外部位变量 2020 4 1 单片机与嵌入式系统 5 3 2对硬件主要资源的定义一 sfr定义方法sfr特殊功能寄存器名 地址常数 例如 sfrP0 0 x80 定义了I O口P0 其地址为80HsfrP1 0 x90 定义了I O口P1 其地址为90H 可参考KeilC51中的reg51 h各个定义 2020 4 1 单片机与嵌入式系统 如 含头文件 include或 include在reg51中 已经宏定义了所有寄存器 如 BYTERegister 用到了 srfsfrP0 0 x80 sfrP1 0 x90 sfrP2 0 xA0 sfrP3 0 xB0 sfrPSW 0 xD0 sfrACC 0 xE0 sfrB 0 xF0 sfrSP 0 x81 sfrDPL 0 x82 sfrDPH 0 x83 sfrPCON 0 x87 sfrTCON 0 x88 sfrTMOD 0 x89 sfrTL0 0 x8A sfrTL1 0 x8B sfrTH0 0 x8C sfrTH1 0 x8D sfrIE 0 xA8 sfrIP 0 xB8 sfrSCON 0 x98 sfrSBUF 0 x99 sfrAUXR 0 x8e 2020 4 1 单片机与嵌入式系统 二 sfr16定义方法sfr16特殊功能寄存器名 地址常数 如 对于8052单片机的定时器T2 可采用如下的方法来定义 sfr16T2 0 xCC 定义timer2 其地址为T2L 0 xCC T2H 0 xCD 三 sbit定义方法 1 sbit位变量名 位地址 如 sbitOV 0 xD2 定义了PSW中的溢出标志sbitCY 0 xD7 定义了PSW中的进位标志sbitclk 0 x91 定义了P1 1口信号线 2020 4 1 单片机与嵌入式系统 2 sbit位变量名 特殊功能寄存器名 位位置如 sfrPSW 0 xD0 定义了状态寄存器名为PSW 其地址为D0HsfrP1 0 x90 定义了I O口P1 其地址为90HsbitOV PSW 2 定义了PSW中的 第2位 为溢出标志sbitCY PSW 7 定义了PSW中的 第7位 为进位标志sbitclk P1 1 定义了P1中的 第1位 为信号线 3 sbit位变量名 字节地址 位位置如 sbitOV 0 xD0 2 定义了0 xD0中的 第2位 为溢出标志sbitCY 0 xD0 7 定义了0 xD0中的 第7位 为进位标志sbitclk 0 x90 1 定义了0 x90中的 第1位 为I O口信号线 2020 4 1 单片机与嵌入式系统 4 sbit位变量名 可位寻址对象 位位置8051单片机内部0 x20 0 x2F可位寻址区时 称之 可位寻址对象 如 intbdatainumb 在位寻址区定义一个整型变量inumb charbdatabary 4 在位寻址区定义一个数组字符bary 4 sbitmybit0 inumb 0 整型变量的第0位 共16位 sbitmybit15 inumb 15 整型变量的第15位sbitary07 bary 0 7 第1个字节中的第7位sbitary37 bary 3 7 第4个字节中的第7位 2020 4 1 单片机与嵌入式系统 四 bit定义方法利用bit只能定义一个普通的位变量 取值0或1 定义的变量在8051的20H 2F字节中 如 bita b c 表示定义了三个位变量a b c 这三个位变量应位于8051内部00H 7FH中的某三位 2020 4 1 单片机与嵌入式系统 五 对片外地址的定义方法 使用 define宏定义如 include XBYTE的头文件 definePORTAXBYTE 0 x8000 将PORTA定义为外部I O口 地址为0 x8000 长度为8位 使用地址定位 at 定义如 unsignedcharxdatax data at 0 x50 这是以0 x50开头的外部地址 是无符号字符变量数组x data 的起址 unsignedcharxdataY0 at 0X1000 这是以0 x1000开头的外部地址 是无符号字符变量Y0的起址 unsignedcharxdatax data 0 x40 at 0 x50 这是以0 x50开头的外部地址空间为0 x40个 2020 4 1 单片机与嵌入式系统 使用指针变量操作外部地址如 unsignedcharxdata px 定义了外部存储器的指针变量px 0 x1000 给指针变量赋地址 px 0 x55 给外部1000h写入0 x55六 对片内地址的定义方法对于片内具体地址的定义可以采用指针变量如 unsignedcharidata px 定义了外部存储器的指针变量px 0 x90 给指针变量赋地址 px 0 x66 给内部90h写入0 x66 2020 4 1 单片机与嵌入式系统 5 3 3C51的运算符与表达式 一 赋值运算符 一 赋值运算与表达式变量 表达式 二 赋值的类型转换规则当 两侧的类型不一致时 系统自动将右边表达式的值转换成左侧变量的类型 再赋给该变量 2020 4 1 单片机与嵌入式系统 二 c51的算数运算 1 基本的算数运算符C51最基本的算术运算符有五种见下表 2020 4 1 单片机与嵌入式系统 2 自增和自减运算符 为自增运算符 为自减运算符 三 C51的关系运算符关系运算又称为比较运算 C51提供了六种关系运算符见下表所示 2020 4 1 单片机与嵌入式系统 四 C51的逻辑运算符逻辑运算是对变量进行逻辑与 或及非三种运算 C51提供三种逻辑运算符如下表所示 2020 4 1 单片机与嵌入式系统 五 C51的位运算符能对运算对象进行按位操作是C51的一大特点 正是由于这一特点 使C51具有了汇编语言的一些功能 从而使C51能对硬件直接进行操作 C51提供了六种位运算如下表所示 2020 4 1 单片机与嵌入式系统 例如 y1 y2 y3 两个字符或整数按位进行逻辑与运算 y1 y2 y3 两个字符或整数按位进行逻辑或运算 y3 y1 y2 两个字符或整数按位进行逻辑异或运算 y1 y1 一个字符或整数按位进行逻辑非运算 y1 xy 3 一个字符或整数按位进行逻辑右移运算 2020 4 1 单片机与嵌入式系统 六 复合赋值运算符在赋值运算符 前面加上其它运算符 就构成了所谓复合赋值运算符 如下表所示 2020 4 1 单片机与嵌入式系统 例如 a 3 等价于a a 3x y 8 等价于x x y 8 c a b 等价于c c a b a b 等价于a a ba 4 等价于a a 4 2020 4 1 单片机与嵌入式系统 七 指针和地址运算符为了表示指针变量和它所指向的变量地址之间的关系 C语言提供了两个专门的运算符 取内容 取地址 取内容和取地址运算的一般形式分别为 变量 指针变量 取内容指针变量 目标变量 取地址 2020 4 1 单片机与嵌入式系统 5 4C51基本语句 5 4 1说明与表达式语句说明语句用来说明变量的类型和初值 例如 intsun 0 把sum说明为整型变量 并赋初值为0 foaltt 把t说明为浮点型变量sfrP1 0 x90 把P1说明为一个口地址变量sbitBUSY P3 3 把BUSY说明为一个位地址变量bitsixth 把sixth说明为一个位变量 2020 4 1 单片机与嵌入式系统 5 4 2复合语句复合语句的一般形式为 局部变量定义 语句1 语句2 语句n 2020 4 1 单片机与嵌入式系统 5 4 3条件语句 1 if 条件表达式 语句 2 if 条件表达式 语句1else语句2 3 if 条件表达式1 语句1elseif 条件表达式2 语句2elseif 条件表达式3 语句3 elseif 条件表达式4 语句nelse语句m 2020 4 1 单片机与嵌入式系统 5 4 4开关与跳转语句一 开关语句switch 变量或表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 2020 4 1 单片机与嵌入式系统 二 跳转语句 一 break语句 二 conti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江西南昌培智学校招聘派遣代课教师3人考试参考试题及答案解析
- 2025年中医药诊疗经典案例分析答案及解析
- 2025年老年病医学护理实践考试卷答案及解析
- 2025湖南长沙县特立教育集团招聘60名校聘教师考试参考试题及答案解析
- 2025年精神科常见疾病临床表现诊断概要答案及解析
- 2025南平邵武一中(初中部)临聘教师招聘考试参考试题及答案解析
- 2025云南昭通昭阳区信访局公益性岗位招聘1人备考练习题库及答案解析
- 2025中煤新疆公司所属新能源公司面向中国中煤内外招聘技术人员6人备考练习题库及答案解析
- 2025江西省投资燃气有限公司所属企业招聘9人考试参考试题及答案解析
- 2025年实验室检验常规操作流程考核答案及解析
- 2025年国家电网中级职称考试(档案专业)历年参考题库含答案详解(5卷)
- 翻越浪浪山共筑新学期成长梦之开学第一课班会课件
- 2025年村级动物防疫员考试题及答案
- 公务用车安全知识培训课件
- 2025年国企竞聘上岗笔试题干部竞聘上岗笔试题及参考答案
- DB13∕T 5958-2024 金属非金属露天矿山采场边坡安全监测技术规范
- 学校后勤物业项目进场移交接管计划
- 视频内容审核技术-第1篇-洞察阐释
- 监理临时用电管理办法
- 2025年计算机二级考试真题及答案分享
- 施工现场安全防护设施标准化指南
评论
0/150
提交评论