
第七次课(共2学时)一、授课题目:C51基础知识1二、教学目标和任务:1.知悉C51在C语言基础上新增的关键词及其含义;2.了解C51标识符命名规则;3.掌握C51变量定义规则;4.掌握C51函数定义规则和特点:5.掌握C51编程框架。三、教学重难点:重点:C51命名规则、C51函数定义规则、C51编程框架。难点:C51命名规则。四、授课过程:回顾:简要的回顾上一节课的主要知识点,MOV、MOVX、MOVC、PUSH、POP、XCH、XCHD、SWAP等数据交换指令的用法,ANL、ORL、XRL指令的用法。0. 引入汇编语言嗨涩难懂,实际应用中常常采用C51进行编程,C51是在ANSI基础上根据8051单片机的特点设计而成的该部分讲解过程中,适当引入C语言发展过程中的小故事,激发学生的学习热情,并向同学们介绍当今最热门的高级语言Python。1.C51关键词ANSIC共有32个关键词,分别为:存储种类说明5个,1
1 第七次课(共 2 学时) 一、授课题目:C51 基础知识 1 二、教学目标和任务: 1. 知悉 C51 在 C 语言基础上新增的关键词及其含义; 2. 了解 C51 标识符命名规则; 3. 掌握 C51 变量定义规则; 4. 掌握 C51 函数定义规则和特点; 5. 掌握 C51 编程框架。 三、教学重难点: 重点:C51 命名规则、C51 函数定义规则、C51 编程框架。 难点:C51 命名规则。 四、授课过程: 回顾:简要的回顾上一节课的主要知识点,MOV、MOVX、 MOVC、PUSH、POP、XCH、XCHD、SWAP 等数据交换指令的用法, ANL、ORL、XRL 指令的用法。 0.引入 汇编语言晦涩难懂,实际应用中常常采用 C51 进行编程, C51 是在 ANSI 基础上根据 8051 单片机的特点设计而成的。 该部分讲解过程中,适当引入 C 语言发展过程中的小故 事,激发学生的学习热情,并向同学们介绍当今最热门的高级 语言 Python。 1. C51 关键词 ANSI C 共有 32 个关键词,分别为:存储种类说明 5 个

数据类型说明14个、程序语句12个、运算符13个。C51包含13个新的关键词,这些关键词主要有:a.与存储结构相关的关键词,微机为冯诺依曼结构,数据与程序分开存放,而单片机为哈弗结构,包含程序Flash、基本RAM、扩展RAM等存储空间,因此C51引入了存储器类型相关的关键词:code:程序存储器data:直接寻址片内RAM,低128字节idata:间接寻址片内RAM,256字节bdata:可位寻址的8051单片机内部RAMpdata:8位寄存器可间接寻址的片外RAM(MOVXA,Ri)xdata:16位寄存器寻址的片外RAM(MOVXA,@DPTR)b.SFR相关关键词,单片机特有的SFR需要事先定义才可以使用,这样的定义通常在头文件中完成,通过如下两个关键词实现:sfr(定义一个8位特殊功能寄存器地址)sfr16(定义一个16位特殊功能寄存器地址)C.位相关关键词,微机没有位处理功能,而单片机有位处理功能,因此需要如下与位相关的关键词:bit位标量声明(声明一个位标量或者位类型数据)sbit可寻址位声明(定义一个可寻址位变量的地址)d.函数定义关键词interrupt中断函数声明(定义一个中断函数)using寄存器组定义(函数使用的寄存器组)2
2 数据类型说明 14 个、程序语句 12 个、运算符 13 个。C51 包 含 13 个新的关键词,这些关键词主要有: a. 与存储结构相关的关键词,微机为冯诺依曼结构,数 据与程序分开存放,而单片机为哈弗结构,包含程序 Flash、 基本 RAM、扩展 RAM 等存储空间,因此 C51 引入了存储器类型 相关的关键词: code:程序存储器 data:直接寻址片内 RAM,低 128 字节 idata:间接寻址片内 RAM,256 字节 bdata:可位寻址的 8051 单片机内部 RAM pdata:8 位寄存器可间接寻址的片外 RAM(MOVX A,@Ri) xdata:16 位寄存器寻址的片外 RAM(MOVX A,@DPTR) b. SFR 相关关键词,单片机特有的 SFR 需要事先定义才 可以使用,这样的定义通常在头文件中完成,通过如下两个关 键词实现: sfr(定义一个 8 位特殊功能寄存器地址) sfr16(定义一个 16 位特殊功能寄存器地址) c. 位相关关键词,微机没有位处理功能,而单片机有位 处理功能,因此需要如下与位相关的关键词: bit 位标量声明(声明一个位标量或者位类型数据) sbit 可寻址位声明(定义一个可寻址位变量的地址) d. 函数定义关键词 interrupt 中断函数声明(定义一个中断函数) using 寄存器组定义(函数使用的寄存器组)

reetrant再入函数声明(定义一个再入函数)2.变量的定义变量定义为本节课重点内容,变量标准定义如下:【存储种类】数据类型【存储器类型】变量名列表其中存储种类和存储器类型可以缺省。2.1存储种类变量的生存区间,有以下三种类型auto:本函数内有效,默认为该类型static:本file有效extern:整个project内有效2.2数据类型单字节无符号字符类型unsigned char单字节signed char有符号字符类型双字节无符号整型unsigned int双字节signed int有符号整型四字节无符号长整型unsigned long四字节有符号长整型signed long四字节浮点数float*指针变量char、int、long默认为singedbit位标量定义,值只有0,1sbit位地址定义,给某位变量指定位地址sfr为某特殊功能寄存器指定地址sfr16为dptr指定sfr的地址3
3 reetrant 再入函数声明(定义一个再入函数) 2. 变量的定义 变量定义为本节课重点内容,变量标准定义如下: 【存储种类】数据类型【存储器类型】变量名列表 其中存储种类和存储器类型可以缺省。 2.1 存储种类 变量的生存区间,有以下三种类型 auto:本函数内有效,默认为该类型 static:本 file 有效 extern:整个 project 内有效 2.2 数据类型 unsigned char 单字节 无符号字符类型 signed char 单字节 有符号字符类型 unsigned int 双字节 无符号整型 signed int 双字节 有符号整型 unsigned long 四字节 无符号长整型 signed long 四字节 有符号长整型 float 四字节 浮点数 * 指针变量 char、int、long 默认为 singed bit 位标量定义,值只有 0,1 sbit 位地址定义,给某位变量指定位地址 sfr 为某特殊功能寄存器指定地址 sfr16 为 dptr 指定 sfr 的地址

变量定义规则:用不到小数就不选float、用不到负数就不选signed、8位能表示的用char、16位能表示的用int。不同数据一起运算的时候可以相互转化:bit-char-int-long-floatsignedunsigned2.3存储器类型定义code存放于程序Flashdata存放于直接寻址的基本RAM低128字节idata存放于间接寻址的基本RAM中bdata分配在20H~2FH的片内RAM的位寻址区,允许位和字节访问。xdataXRAM,寻址范围OOOOH~FFFFH,用MOVX@DPTR寻址。pdataXRAM,寻址范围OOH~FFH,用MOVX@Ri寻址该字节可以缺省,缺省时默认存储空间与编译模式有关编译模式为sma11时,默认为data,编译模式为COMPACT时默认为pdata,编译模式为large时,默认为xdata,编译模式默认为small。3.标识符定义规则标识符:用户为某对象取的名字,规则如下:a、数字字母下划线组成,字母区分大小写b、第一个字符必须是字母或者下划线C、下划线开头的标识符时编译系统专用的,用户编程时一般以字母开头。4
4 变量定义规则:用不到小数就不选 float、用不到负数就 不选 signed、8 位能表示的用 char、16 位能表示的用 int。 不同数据一起运算的时候可以相互转化: bit —char —int—long —float signed —unsigned 2.3 存储器类型定义 code 存放于程序 Flash data 存放于直接寻址的基本 RAM 低 128 字节 idata 存放于间接寻址的基本 RAM 中 bdata 分配在 20H~2FH 的片内 RAM 的位寻址区,允许位 和字节访问。 xdata XRAM,寻址范围 0000H~FFFFH,用 MOVX @DPTR 寻 址。 pdata XRAM,寻址范围 00H~FFH,用 MOVX @Ri 寻址 该字节可以缺省,缺省时默认存储空间与编译模式有关, 编译模式为 small 时,默认为 data,编译模式为 COMPACT 时 默认为 pdata,编译模式为 large 时,默认为 xdata,编译模 式默认为 small。 3.标识符定义规则 标识符: 用户为某对象取的名字,规则如下: a、数字字母下划线组成,字母区分大小写 b、第一个字符必须是字母或者下划线 c、下划线开头的标识符时编译系统专用的,用户编程时 一般以字母开头

d、标识符长度不超过32位f、关键词不作为标识符例题1:判断下列标识符是否合法A、abc、123、my_book、INT、int、a%y答:V、V、X、、V、X、X4.函数定义函数是一个完成一定相关功能的执行代码段。C语言就是由一个一个函数构成的,函数是C语言的基本结构。函数定义规则如下:a、C51语言中函数的数目是不限制的,b、但是一个C51程序必须有一个函数,以main为名,称为主函数,C、主函数是唯一的,d、整个程序从这个主函数开始执行。函数定义形式为:返回值类型函数名(形式参数列表)using nt函数体;11、usingn使用的寄存器组,取值0~3,该字段可以省略不写2、参数列表可以为空,叫做无参函数3、返回值类型也可以是空,类型写作void,只做动作不返回值。5
5 d、标识符长度不超过 32 位 f、关键词不作为标识符 例题 1:判断下列标识符是否合法 A、abc、123、_my_book、INT、int、a%y 答:√、√、×、√、√、×、× 4. 函数定义 函数是一个完成一定相关功能的执行代码段。C 语言就是 由一个一个函数构成的,函数是 C 语言的基本结构。函数定义 规则如下: a 、C51 语言中函数的数目是不限制的, b、但是一个 C51 程序必须有一个函数,以 main 为名,称 为主函数, c、主函数是唯一的, d、整个程序从这个主函数开始执行。 函数定义形式为: 返回值类型 函数名(形式参数列表) using n { 函数体; } 1、using n 使用的寄存器组,取值 0~3,该字段可以省 略不写 2、参数列表可以为空,叫做无参函数 3、返回值类型也可以是空,类型写作 void,只做动作不 返回值

主函数:voidmain()使用interrupt可将一个函数定义成中断服务函数。使用interrupt定义后,编译时函数将被放在中断入口地址,当满足中断条件中断将自动触发,执行完毕自行返回。5.C语言程序框架5.1headerfile头文件必不可少,至少要包含芯片定义头文件#include<reg5l.h)#include<intrins.h)#include“abcd.h头文件一般有三类:a、51芯片头文件,主要包含定义好的特殊功能寄存器地址列表。b、库函数,如包含移位函数crol(,)的<intrins.h)C、用户自己定义的头文件。用户自已定义的头文件(放在project文件夹里)和安装文件中的头文件用的符号时不同的。5.2宏定义#define uchar unsigned char#define uint unsigned int#define Pi3.145.3变量声明sfr特殊位声明全局变量声明,整个程序都要用到的变量,从定义开始处往后6
6 主函数:void main () { } 使用 interrupt 可将一个函数定义成中断服务函数。使用 interrupt 定义后,编译时函数将被放在中断入口地址,当满 足中断条件中断将自动触发,执行完毕自行返回。 5. C 语言程序框架 5.1 header file 头文件 必不可少,至少要包含芯片定义头文件 #include #include #include“abcd.h” 头文件一般有三类: a、51 芯片头文件,主要包含定义好的特殊功能寄存器地 址列表。 b、库函数,如包含移位函数_crol_( , )的 c、用户自己定义的头文件。 用户自己定义的头文件(放在 project 文件夹里)和安装 文件中的头文件用的符号时不同的。 5.2 宏定义 #define uchar unsigned char #define uint unsigned int # define Pi 3.14 5.3 变量声明 sfr 特殊位声明 全局变量声明,整个程序都要用到的变量,从定义开始处往后

均可以使用。5.4函数声明由于ANSIC的特征是,程序只有先出现才可以使用,因此主程序中用到的函数均需要先定义,或者先声明之后再定义。5.5主程序voidmain(void)1******/*预处理段*while(1)/*不断重复主程序*/1/*主体*/*****11五、作业1.有如下定义:inti:请问i的存储类型为?存储器类型为?是有符号数还是无符号数?2.定义一个无符号数x,要求作用范围为本file,存放在间接寻址的内部基本RAM。3.定义一个有符号数y,要求值为100,存放在code区。课后习题:1.5~1.10、2.6~2.10、3.5~3.6、4.4~4.9、4.11、4.12六、参考文献1.丁向荣编,单片机微机原理与接口技术(第2版),北京:电子工业出版社,20187
7 均可以使用。 5.4 函数声明 由于 ANSI C 的特征是,程序只有先出现才可以使用,因此主 程序中用到的函数均需要先定义,或者先声明之后再定义。 5.5 主程序 void main(void) { ****** /*预处理段*/ while(1) /*不断重复主程序*/ { ***** /*主体*/ } } 五、作业 1. 有如下定义:int i;请问 i 的存储类型为?存储器类 型为?是有符号数还是无符号数? 2. 定义一个无符号数 x,要求作用范围为本 file,存放 在间接寻址的内部基本 RAM。 3. 定义一个有符号数 y,要求值为 100,存放在 code 区。 课后习题:1.5~1.10、2.6~2.10、3.5~3.6、4.4~4.9、4.11、 4.12 六、参考文献 1. 丁向荣编,单片机微机原理与接口技术(第 2 版),北京:电子 工业出版社,2018

2.张毅刚编,单片机原理及应用:C51编程+Proteus仿真(第2版),北京:高等教育出版社,20163.丁元杰编,单片微机原理及应用(第三版),北京:机械工业出版社,2011.4.郭文川编,MCS-51单片机原理接口及应用,北京:电子工业出版社,20135.周航慈编,单片机应用程序设计技术(修订版),北京:北京航天航空大学出版社,20026.严洁编,单片机原理及其接口技术,北京,机械工业出版社,2010.七、课后记知识点琐碎繁多,需要抓住重点,强调考点,充分举例,引导学生理解。8
8 2. 张毅刚编, 单片机原理及应用:C51编程+Proteus仿真(第2版), 北京:高等教育出版社,2016. 3. 丁元杰编,单片微机原理及应用(第三版),北京:机械工业出 版社,2011. 4. 郭文川编,MCS-51 单片机原理接口及应用,北京:电子工业出 版社,2013. 5. 周航慈编, 单片机应用程序设计技术(修订版),北京:北京航 天航空大学出版社,2002. 6. 严洁编, 单片机原理及其接口技术,北京,机械工业出版社, 2010. 七、课后记 知识点琐碎繁多,需要抓住重点,强调考点,充分举例, 引导学生理解