

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章_单片机的c51编程语言 单片机 学习 第4章 单片机的c51编程语言 2021-7-11 单片机 学习 第4章 单片机的c51编程语言 4.1 c51编程语言概述 4.2 c51的标识符和关键字 4.3 c51的变量与数据类型 4.4 c51语言的数组、指针与结构 4.5 c51的运算符和表达式 4.6 c51语言的程序结构 4.7 c51语言的函数 4.8 中断服务程序 4.9 c51的预处理 4.10 c51的库函数 4.11 使用c5i编译器时的留意事项2 2021-7-11 单片机 学习 4.1 c51编程语言概述c语言是一种结构化语言,可产生紧凑代码 c语言可以进行很多机器级
2、函数掌握而不用汇编语 言。c语言目前已成为电子工程师进行单片机系统编程 时的首选编程语言。用c语言来编写目标系统软件 ,会大大缩短开发周期,且明显地增加软件的可读 性,便于改进和扩充。基于51系列单片机的c语言 或c语言编译器简称为c51语言或c51。2021-7-11 3 单片机 学习 c51语言编程与汇编语言编程相比的优势 1.可读性好、编程调试敏捷便利 2.生成的代码编译效率高 3.完全模块化 4.可移植性好 5.便于项目维护管理 2021-7-11 单片机 学习 单片机c51与标准ansl c编译器的主要区分以keil公司的keil c5l(以下简称c5l)编译器为例 c5l系列头文件
3、集中体现了各系列芯片的不同功能 c5l比ansi c多一种“位”类型 数据存储类型有很大的区分 函数的使用上,由于单片机系统的资源有限,它的编译系统不允许太多的 程序嵌套 c5l与标准ansi c库函数,由于部分库函数不适合单片机处理系统,因此 被排解在外,如字符屏幕和图形函数。也有一些库函数连续使用,但这些库 函数是厂家针对硬件特点相应开发的,它们与ansi c的构成及用法都有很 大的区分,如printf和scanf。在ansi c中这两个函数通常用于屏幕打印和接 收字符,而在c5l中,它们则主要用于串行通信口数据的发送和接收。 2021-7-11 单片机 学习 c51的开发过程例4-1 设
4、图1-2系统要求是:当s1闭合时,报警灯亮;而s1打开时,报警灯灭 。用c51语言编写实现该功能的程序,程序名为ex4-1.c: #include reg51.h /定义mcs-51的特别功能寄存器sfr sbit p32 = p32; /定义 p3.2 为 p32 sbit p20 = p20; /定义 p2.0 为 p20 main( ) while(1) p32=1; if (p32=0) p20=1; else p20=0; 在c51中,使用“/* */”和“/”符号进行解释。解释不影响程序的功能,用于说 明程序的用途、功能,增加程序的可读性和可维护性。编译后解释不存在,不 影响运行文
5、件的大小。优秀的程序设计人员要养成良好的解释习惯,一般在程 序的开头要写解释,表明程序的要求、功能,编写人员,编写日期,版本号等 信息。 2021-7-11 单片机 学习 使用任何文本编辑软件,或keil c集成的编辑系统书写 c以上程序。 使用keil c的c51编译器和连接软件(用keil c集 成开 发工具uvision中的build target批处理),生成可以写入 单片机的目标文件,通常为hex文件(ex4-1.hex) 用程序烧录器将该文件写入单片机,单片机上电即可运 行。 同时build target还生成很多中间文件,用于程序的调试 ,例如,从ex4-1.lst文件中可以观察
6、c程序编译后生成的 汇编程序,由此可以理解单片机硬件详细的执行过程, 还可以对c程序编程的效率进行了解。 2021-7-11 单片机 学习 ex4-1.lst文件 0000 0000 0002 0005 0007 0009 0009 000b ?c0001: d2b2 20b204 d2a0 80f7 ?c0003: c2a0 80f3 setb p32 jb p32,?c0003 setb p20 sjmp ?c0001 clr p20 sjmp ?c0001 可以看出,c编译器编译的结果与我们大多人用汇编语言的编程结 果相同,但是c51语言的可读性更好,特殊是当程序更加简单时, c51语言
7、有明显的优势。 2021-7-11 单片机 学习 c51的标识符和关键字 标识符用来标识源程序中某个对象的名字,这些对象可 以是语句、数据类型、函数、变量、数组等。 c语言是区分大小写的一种高级语言。 标识符由字符串、数字和下划线等组成,第一个字符必 须是字母或下划线 错误的标识符,编译时会有错误提示。 c5l中有些库函数的标识符是以下划线开头的,所以一 般不要以下划线开头命名标识符。 2021-7-11 单片机 学习 表4-1 ansi c标准关键字 关键字 auto break 用途 存储种类说明 程序语句 说明 用于声明局部变量,为默认值 退出最内层循环体 casechar const
8、continue default do double else enum extern float for goto 程序语句数据类型声明 存储种类说明 程序语句 程序语句 程序语句 数据类型声明 程序语句 数据类型声明 存储种类说明 数据类型声明 程序语句 程序语句 switch语句中的选择项单字节整型数或字符型数据 在程序执行过程中不行修改的值 转向下一次循环 switch语句中缺省选择项 构成dowhile 循环结构 双精度浮点数 构成ifelse 条件结构 枚举类型数据 在其他程序模块中声明白的全局变量 单精度浮点数 构成for循环结构 构成goto循环结构 ifint2021-7-1
9、1 程序语句数据类型声明 构成ifelse 条件结构整型数10 单片机 学习 long register return short signed sizeof static struct switch typedef union unsigned void volatile while 数据类型声明 存储种类说明 程序语句 数据类型声明 数据类型声明 运算符 存储种类说明 数据类型声明 程序语句 数据类型声明 数据类型声明 数据类型声明 数据类型声明 数据类型声明 程序语句 长整型数 使用cpu内部寄存器变量 函数返回 短整型 有符号整型数 计算表达式或数据类型的字节数 静态变量 结构体类型数
10、据 构成switch选择结构 重新进行数据类型定义 联合类型数据 无符号数据 无类型数据或函数 声明该变量在程序执行中可被隐含 地转变 构成while和dowhile循环结构 2021-7-11 单片机 学习 表4-2 c51编译器扩充关键字 关键字_at_ _priority_ _task_ 用途地址定位 多任务优先声明 任务声明 说明为变量进行肯定地址定位 规定rtx51或rtx51 tiny的任务优先级 定义实时多任务函数 alienbdata bit code compact data 函数特性声明存储器类型声明 位变量声明 存储器类型声明 存储器模式 存储器类型声明 用于声明与pl/
11、m51兼容的函数可位寻址的mcs-51内部数据存储器 声明一个位变量或位类型函数 mcs-51的程序存储空间 按compact模式安排变量的存储空间 直接寻址mcs-51的内部数据寄存器 2021-7-11 单片机 学习 idata interrupt large pdata 存储器类型声明 中断函数声明 存储器模式 存储器类型声明 间接寻址mcs-51的内部数据寄存器 定义一个中断服务函数 按large模式安排变量的存储空间 分页寻址的mcs-5外部数据空间 sbitsfr sfr16 small using xdata 位变量声明特别功能寄存器声明 特别功能寄存器声明 存储器模式 寄存器组
12、定义 存储器类型声明 声明一个位变量声明一个8位特别功能寄存器 声明一个16位特别功能寄存器 按small模式安排变量的存储空间 定义mcs-5的工作寄存器组 定义mcs-5外部数据空间 2021-7-11 单片机 学习 4.3 c51的变量与数据类型1.常量 常量又称为标量,它的值在程序执行过程中不能转变,常量的数据类型有整型 、浮点型字符型和字符串型等。 实际使用中用#define定义在程序中常常用到的常量,或者可能需要依据不同的 状况进行更改的常量,例如译码地址。而不是在程序中直接使用常量值。这样 一方面有助于提高程序的可读性,另一方面也便于程序的修改和维护,例如: #define pi
13、 3.14 /以后的编程中用pi代替浮点数常量3.14,便于阅读 /长整型常量用sysclk代替12mhz时钟 /用字符true,在规律运算中代替1 /用star表示字符“*” /用uint 代替unsigned int,简化编辑14 #define sysclk 12000000 #define true 1 #define star * #define uint unsigned int2021-7-11 单片机 学习 例如语句:if(key= =true) ,与语句if(key= =1) 相同。 c51语言(汇编语言也是同样)编辑时,除解释外,要使用英文符 号,例如上述定义的字符“*”,
14、在程序中是用英文的单引号,而 不是中文符号单引号; 2021-7-11 单片机 学习 常量分为: 1)整型常量。整型常量值:可用十进制表示,如128,-35等;也可 以用十六进制表示,如0x1000。 2)浮点型常量。如0.12、-10.3等。 3)字符型常量。字符型常量是用单引号括起来的一个字符,如a 、 0 、= 等,编译程序将把这些字符型常量转换为ascii码,例如 a 等于0x41。对于不行显示的掌握字符,可直接写出字符的ascii 码,或者在字符前加上反斜杠“”组 成转义符。转义符可以完成一些 特别功能和格式掌握。 4)字符串型常量。字符串型常量用一对双引号括起一串字符来表示, 如“
15、hello”、“ok”等。字符串型常量由双引号作为界限符。当字符 串中需要消失双引号时,需使用转义字符“”来表示。 2021-7-11 单片机 学习 表4-3 常用的转义符 转义字符 0 含义 空字符(null) ascii码 16进制(10进制) 0x00 nr t 换行符(lf)回车符(cr) 水平制表符(ht) 0x0a0x0d 0x09 ” 单引号双引号 反斜杠 0x270x22 0x5c 2021-7-11 单片机 学习 变量变量是一种在程序执行过程中,其数值不断变化的量。 c51规定变量必需先定义后使用。 c51的变量主要有表4-4中的各种数据类型,而sfr、sfr16 、sbit三种数据类型用于对mcs-51单片机的特别功能寄存 器(sfr)的操作,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025婚纱摄影工作室合作合同范本
- 2025水果销售居间合同
- 2025工程采购合同范本
- 2025聘请家庭保姆合同范本
- 2025写字楼租赁合同书范文
- 2025年进出口贸易合同范本
- 2025成都市土地流转合同
- 8.1《薪火相传的传统美德》教案 2024-2025学年统编版道德与法治七年级下册
- 《电子书下载流程》课件
- 《胃癌内科治疗》课件
- GB/T 34949-2017实时数据库C语言接口规范
- GB/T 3452.1-2005液压气动用O形橡胶密封圈第1部分:尺寸系列及公差
- GB/T 23641-2018电气用纤维增强不饱和聚酯模塑料(SMC/BMC)
- 2023年国际焊接工程师考试IWE结构试题
- 精华版-赵武灵王胡服骑射课件
- 高等学校英语应用能力考试〔B级〕真题及答案
- 高三(5)高考冲刺家长会课件
- 顶板安全管理知识
- 《新能源汽车转向系统》课件
- 报关委托书 电子版
- 高中音乐人教版高一全一册音乐-《芬兰颂》详案
评论
0/150
提交评论