单片机原理及应用C51 语言程序设计基础课件.ppt

上传人:牧羊曲112 文档编号:1917272 上传时间:2022-12-25 格式:PPT 页数:158 大小:8.16MB
返回 下载 相关 举报
单片机原理及应用C51 语言程序设计基础课件.ppt_第1页
第1页 / 共158页
单片机原理及应用C51 语言程序设计基础课件.ppt_第2页
第2页 / 共158页
单片机原理及应用C51 语言程序设计基础课件.ppt_第3页
第3页 / 共158页
单片机原理及应用C51 语言程序设计基础课件.ppt_第4页
第4页 / 共158页
单片机原理及应用C51 语言程序设计基础课件.ppt_第5页
第5页 / 共158页
点击查看更多>>
资源描述

《单片机原理及应用C51 语言程序设计基础课件.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用C51 语言程序设计基础课件.ppt(158页珍藏版)》请在三一办公上搜索。

1、第 8 章C51 语言程序设计基础,第8 章 C51 语言程序设计基础,8.1 计算机程序设计语言概述8.2 C51 语言的变量8.3 C51 语言的常量8.4 运算符8.5 数组8.6 C51 语言的基本语句8.7 函数8.8 C51 程序设计实例,2,8.1 计算机程序设计语言概述,1低级语言2高级语言,3,8.2 C51 语言的变量,8.2.1 变量的数据类型8.2.2 变量的存储,4,8.2.1 变量的数据类型,5,8.2.1 变量的数据类型,6,8.2.1 变量的数据类型,1bit 位型bit 可以定义位变量,但是不能定义位指针变量和位数组。如,“bit a;”是正确的,而“bit

2、*z;”和“bit z2;”是错误的。2char 字符型signed char 和unsigned char 均用于字符型变量定义,前者定义有符号数,后者定义无符号数。无符号数不能为负数,若将负数赋值给无符号数,则该负数将被转换成其补码。如,指令“unsigned char x=-1;”使x 的实际值为255(255 是-1 的8 位补码)。,7,8.2.1 变量的数据类型,3int 整型signed short int 和unsigned short int 均用于整型变量定义,前者定义有符号数,后者定义无符号数。另外,signed short int 和unsigned short int

3、 可分别简写为signed int 和unsigned int。4long 长整型signed long int 和unsigned long int 均用于长整型变量定义,前者定义有符号数,后者定义无符号数。,8,8.2.1 变量的数据类型,5浮点型float 和double 型变量都是浮点型变量,这两种变量类型完全等价,其取值范围和位数等完全相同。这与PC 的C 语言不同,在PC 的C 语言中,float 型变量和double 型变量的取值范围和位数等均不同。6指针型*可以加在字符型、整型、长整型和浮点型变量定义之前,从而形成相应类型的指针型变量。如,指令“char *x;”定义char

4、型的指针变量x。指针型变量中存放存储器或特殊功能寄存器的地址,通过该地址可以访问存储器或特殊功能寄存器中存放的数据。,9,8.2.1 变量的数据类型,7可寻址位sbit 用于定义单片机特殊功能寄存器中可寻址的位。例如,指令“sbit f=P21;”定义的变量f 被初始化为特殊功能寄存器P2 的第1 位。严格来说,sbit 并不是变量定义,而只是给特殊功能寄存器的可寻址位赋予一个别名而已。,10,8.2.1 变量的数据类型,7可寻址位需要注意的是,因为sbit 定义的变量来自于特殊功能寄存器,所以sbit 型变量的位地址必须在0 x800 xFF 范围内,即特殊功能寄存器区的位地址范围。例如,指

5、令“sbit A_0 =0 xe0;”为累加器A 的最低位定义了位变量A_0,指令“A_0=1;”将累加器A 的最低位设置为1;而指令“sbit somebit = 0 x7f;”是错误的,因为0 x7f 作为一个位地址不在特殊功能寄存器区的位地址范围内。另外,在C51 语言中,十六进制需以“0X”或“0 x”开头,且数字末尾不加字母“H”或“h”。,11,8.2.1 变量的数据类型,8特殊功能寄存器sfr 可定义特殊功能寄存器变量。严格来说,sfr 并未定义变量,而仅是给单片机的特殊功能寄存器赋予一个别名。例如,指令“sfr W= 0 x80;”将特殊功能寄存器P0 的地址赋予变量W,之后,

6、变量W与P0 等价。需要注意的是,sfr 定义中出现的地址只能是特殊功能寄存器的地址。,12,8.2.1 变量的数据类型,916 位特殊功能寄存器sfr16 用于定义16 位特殊功能寄存器变量。例如,指令“sfr16 Time = 0 x8C;”定义了16位的特殊功能寄存器变量Time,该变量由字节地址为0 x8C 和0 x8C+1 的两个8 位特殊功能寄存器拼接而成,其中,字节地址为0 x8C 的TH0 为Time 的低8 位,字节地址为0 x8D 的TH1 为Time 的高8 位。Keil C51 编译器预定义了一些sbit、sfr 和sfr16 变量,如:P0 是预定义的sfr 型变量,

7、并且已经在头文件“reg51.h”中进行了定义,若需在程序中使用这些预定义变量,仅需在程序中加入“# include”即可。,13,8.2.2 变量的存储,1变量的分类2变量的存储类型,14,1变量的分类,按照作用范围和存放方式的差别,可分为自动(Auto)变量全局(Global)变量局部(Local)变量外部(Extern)变量静态(Static)变量寄存器(register)变量,15,2变量的存储类型,可按变量存放位置和访问方式,分为6 种code、data、bdata、idata、pdata 和xdatacode 类型的变量存放在程序存储器中不能修改,仅用于查询的数据表格可定义成该类型

8、,16,2变量的存储类型,访问这几种存储器类型的变量时需用到头文件“absacc.h”中的宏定义,17,8.3 C51 语言的常量,1整型常量整型常数,可写成十进制或十六进制形式2浮点型常量有小数部分3字符型常量由单引号括起来单个字符转义符不能被显示的字符型常量,常用的转义符见表8-34字符串型常量用双引号括起来一串字符,18,8.3 C51 语言的常量,19,8.4 运算符,1赋值运算符“=”2复合的赋值运算符3算数运算符4增量和减量运算符5关系运算符6逻辑运算符7位运算符8指针和地址运算符,20,8.4 运算符,2复合的赋值运算符,21,8.4 运算符,4增量和减量运算符,22,8.4 运

9、算符,5关系运算符,23,8.4 运算符,6逻辑运算符,24,8.4 运算符,7位运算符,25,8.4 运算符,8指针和地址运算符1)“*”加在指针型变量之前用于提取指针所指向的变量值2)“&”取变量的地址,26,8.5 数组,1数组的定义方法2数组的初始化方式,27,8.5 数组,1数组的定义方法一维数组的定义方式例:二维数组的定义方式例:,28,8.5 数组,2数组的初始化方式在定义数组时,进行数组元素的初始化,例如:int a5 = 1,2,3,4,5;float b23 = 1.1, 2.2, 8.3, 6.1, 5.2, 4.3 ;数组定义以后再赋值,例如:a0=4;另外,数组的名称

10、代表数组首元素的地址,该地址即是数组的指针。例如:一维数组的数组名a 代表数组首元素a0的地址对于二维数组b,b0代表数组第一行首元素b00的地址,b1代表数组第二行首元素b10的地址,29,8.6 C51 语言的基本语句,8.6.1 条件语句8.6.2 开关语句8.6.3 循环语句,30,8.6.1 条件语句,条件语句又称为分支语句关键字:ifif 的书写、表达形式,31,8.6.2 开关语句,开关语句的常用表达形式,32,8.6.3 循环语句,1while 循环2for 循环,33,8.6.3 循环语句,1while 循环表达形式(1)先判断后循环(2)先循环后判断例:,34,8.6.3

11、循环语句,2for 循环表达式例:,35,8.7 函数,8.7.1 函数的定义8.7.2 函数的调用,36,8.7.1 函数的定义,定义表达式,37,8.7.1 函数的定义,例:(1)有返回参数例:(2)无返回参数,38,8.7.2 函数的调用,调用函数的方法例:,39,8.7.2 函数的调用,注意子程序中定义的变量是局部变量。仅当子程序运行时,局部变量才存在,子程序返回后局部变量消失不再起作用。主程序(即main 函数)中定义的变量均是全局变量,全局变量在程序的整个生命周期中都存在并起作用。在主程序和子程序之外定义的变量也是全局变量。,40,8.7.2 函数的调用,对于单片机来说程序必须一直

12、运行否则,单片机将失去控制单片机的主程序不能执行完毕并退出实现这一目标的常用方法之一在主程序中,放置一个“条件表达式”恒为真的while 循环。例:,41,8.8 C51 程序设计实例,8.8.1 外部中断程序设计8.8.2 定时/计数器程序设计8.8.3 串行接口程序设计8.8.4 并行接口程序设计8.8.5 键盘显示器接口程序设计,42,8.8.1 外部中断程序设计,【例8-1】 按例4-2 的要求编写C51 语言程序,实现外部中断计数。,43,8.8.1 外部中断程序设计,【例8-1】,44,8.8.1 外部中断程序设计,【例8-1】,45,8.8.2 定时/计数器程序设计,【例8-2】

13、 按例4-8 的要求编写C51 语言程序,产生频率为50Hz 的方波信号。(1)查询式参考程序,46,8.8.2 定时/计数器程序设计,【例8-2】(1)查询式参考程序,47,8.8.2 定时/计数器程序设计,【例8-2】(1)查询式参考程序,48,8.8.2 定时/计数器程序设计,【例8-2】(1)查询式参考程序,49,8.8.2 定时/计数器程序设计,【例8-2】 (2)中断式参考程序,50,8.8.2 定时/计数器程序设计,【例8-2】 (2)中断式参考程序,51,8.8.2 定时/计数器程序设计,【例8-2】 (2)中断式参考程序,52,8.8.2 定时/计数器程序设计,【例8-2】

14、(2)中断式参考程序,53,8.8.2 定时/计数器程序设计,【例8-3】 按例4-9 的要求编写C51 语言程序,产生频率为1kHz 的方波信号。,54,8.8.2 定时/计数器程序设计,【例8-3】,55,8.8.2 定时/计数器程序设计,【例8-3】,56,8.8.2 定时/计数器程序设计,【例8-3】,57,8.8.2 定时/计数器程序设计,【例8-4】 按例4-10 的要求编写C51 语言程序,对外部事件计数。,58,8.8.2 定时/计数器程序设计,【例8-4】,59,8.8.2 定时/计数器程序设计,【例8-4】,60,8.8.2 定时/计数器程序设计,【例8-4】,61,8.8

15、.2 定时/计数器程序设计,【例8-5】 按例4-11 的要求编写C51 语言程序,用定时器模拟外部中断。,62,8.8.2 定时/计数器程序设计,【例8-5】,63,8.8.2 定时/计数器程序设计,【例8-5】,64,8.8.2 定时/计数器程序设计,【例8-5】,65,8.8.2 定时/计数器程序设计,【例8-6】 按例4-12 的要求编写C51 语言程序,测方波信号的周期,并将1 个周期所包含的时钟周期个数存入无符号整型变量uiPeriod 中。,66,8.8.2 定时/计数器程序设计,【例8-6】,67,8.8.2 定时/计数器程序设计,【例8-6】,68,8.8.2 定时/计数器程

16、序设计,【例8-6】,69,8.8.3 串行接口程序设计,【例8-7】 按例4-14 的要求编写C51 语言程序,利用74LS164、74LS165 和单片机串口扩展并行I/O 口,实现用LED 亮灭反映开关闭合状态的功能。,70,8.8.3 串行接口程序设计,【例8-7】,71,8.8.3 串行接口程序设计,【例8-7】,72,8.8.3 串行接口程序设计,【例8-8】 按例4-15 的要求编写C51 语言程序,实现双机串口通信。(1)甲机查询方式发送的参考程序,73,8.8.3 串行接口程序设计,【例8-8】(1)甲机查询方式发送的参考程序,74,8.8.3 串行接口程序设计,【例8-8】

17、(1)甲机查询方式发送的参考程序,75,8.8.3 串行接口程序设计,【例8-8】(1)甲机查询方式发送的参考程序,76,8.8.3 串行接口程序设计,【例8-8】(1)甲机查询方式发送的参考程序,77,8.8.3 串行接口程序设计,【例8-8】 (2)甲机中断方式发送的参考程序,78,8.8.3 串行接口程序设计,【例8-8】 (2)甲机中断方式发送的参考程序,79,8.8.3 串行接口程序设计,【例8-8】 (2)甲机中断方式发送的参考程序,80,8.8.3 串行接口程序设计,【例8-8】 (2)甲机中断方式发送的参考程序,81,8.8.3 串行接口程序设计,【例8-8】 (2)甲机中断方

18、式发送的参考程序,82,8.8.3 串行接口程序设计,【例8-8】 (3)乙机查询方式接收的参考程序,83,8.8.3 串行接口程序设计,【例8-8】 (3)乙机查询方式接收的参考程序,84,8.8.3 串行接口程序设计,【例8-8】 (3)乙机查询方式接收的参考程序,85,8.8.3 串行接口程序设计,【例8-8】 (3)乙机查询方式接收的参考程序,86,8.8.3 串行接口程序设计,【例8-8】 (3)乙机查询方式接收的参考程序,87,8.8.3 串行接口程序设计,【例8-8】 (4)乙机中断方式接收的参考程序,88,8.8.3 串行接口程序设计,【例8-8】 (4)乙机中断方式接收的参考

19、程序,89,8.8.3 串行接口程序设计,【例8-8】 (4)乙机中断方式接收的参考程序,90,8.8.3 串行接口程序设计,【例8-8】 (4)乙机中断方式接收的参考程序,91,8.8.3 串行接口程序设计,【例8-8】 (4)乙机中断方式接收的参考程序,92,8.8.4 并行接口程序设计,【例8-9】 按例5-1 的要求编写C51 语言程序,实现片外数据存储器的读写操作。,93,8.8.4 并行接口程序设计,【例8-9】,94,8.8.4 并行接口程序设计,【例8-10】 按例5-6 的要求编写C51 语言程序,控制简单输入接口74LS244 和输出接口74LS273,实现用LED 亮灭反

20、映开关闭合状态的功能。,95,8.8.4 并行接口程序设计,【例8-10】,96,8.8.5 键盘显示器接口程序设计,【例8-11】 按例5-12 的要求编写C51 语言程序,利用串口工作方式0 和移位寄存器74LS164 实现数码管静态显示。,97,8.8.5 键盘显示器接口程序设计,【例8-11】,98,8.8.5 键盘显示器接口程序设计,【例8-11】,99,8.8.5 键盘显示器接口程序设计,【例8-11】,100,8.8.5 键盘显示器接口程序设计,【例8-11】图5-32 所对应的数码管显示子程序,101,8.8.5 键盘显示器接口程序设计,【例8-12】 按例5-13 的要求编写

21、C51 语言程序,通过单片机并口控制数码管动态显示。,102,8.8.5 键盘显示器接口程序设计,【例8-12】,103,8.8.5 键盘显示器接口程序设计,【例8-12】,104,8.8.5 键盘显示器接口程序设计,【例8-12】,105,8.8.5 键盘显示器接口程序设计,【例8-12】,106,8.8.5 键盘显示器接口程序设计,【例8-13】 按例5-14 的要求编写C51 语言程序,利用8255A 控制数码管动态显示。,107,8.8.5 键盘显示器接口程序设计,【例8-13】,108,8.8.5 键盘显示器接口程序设计,【例8-13】,109,8.8.5 键盘显示器接口程序设计,【

22、例8-13】,110,8.8.5 键盘显示器接口程序设计,【例8-13】,111,8.8.5 键盘显示器接口程序设计,【例8-13】,112,8.8.5 键盘显示器接口程序设计,【例8-13】,113,8.8.5 键盘显示器接口程序设计,【例8-14】 按例5-15 的要求编写C51 语言程序,实现独立式键盘处理功能。,114,8.8.5 键盘显示器接口程序设计,【例8-14】,115,8.8.5 键盘显示器接口程序设计,【例8-14】,116,8.8.5 键盘显示器接口程序设计,【例8-14】,117,8.8.5 键盘显示器接口程序设计,【例8-14】,118,8.8.5 键盘显示器接口程序

23、设计,【例8-14】,119,8.8.5 键盘显示器接口程序设计,【例8-14】,120,8.8.5 键盘显示器接口程序设计,【例8-15】 按例5-16 的要求编写C51 语言程序,实现单片机并口扩展键盘显示器。,121,8.8.5 键盘显示器接口程序设计,【例8-15】,122,8.8.5 键盘显示器接口程序设计,【例8-15】,123,8.8.5 键盘显示器接口程序设计,【例8-15】,124,8.8.5 键盘显示器接口程序设计,【例8-15】,125,8.8.5 键盘显示器接口程序设计,【例8-15】,126,8.8.5 键盘显示器接口程序设计,【例8-15】,127,8.8.5 键盘

24、显示器接口程序设计,【例8-15】,128,8.8.5 键盘显示器接口程序设计,【例8-15】,129,8.8.5 键盘显示器接口程序设计,【例8-15】,130,8.8.5 键盘显示器接口程序设计,【例8-16】 按例5-17 的要求编写C51 语言程序,利用8255A 扩展键盘显示器接口。,131,8.8.5 键盘显示器接口程序设计,【例8-16】,132,8.8.5 键盘显示器接口程序设计,【例8-16】,133,8.8.5 键盘显示器接口程序设计,【例8-16】,134,8.8.5 键盘显示器接口程序设计,【例8-16】,135,8.8.5 键盘显示器接口程序设计,【例8-16】,13

25、6,8.8.5 键盘显示器接口程序设计,【例8-16】,137,8.8.5 键盘显示器接口程序设计,【例8-16】,138,8.8.5 键盘显示器接口程序设计,【例8-16】,139,8.8.5 键盘显示器接口程序设计,【例8-16】,140,8.8.5 键盘显示器接口程序设计,【例8-16】,141,8.8.5 键盘显示器接口程序设计,【例8-17】 按例5-19 的要求编写C51 语言程序,利用DAC0832 产生指定波形。,142,8.8.5 键盘显示器接口程序设计,【例8-17】,143,8.8.5 键盘显示器接口程序设计,【例8-17】,144,8.8.5 键盘显示器接口程序设计,【

26、例8-17】,145,8.8.5 键盘显示器接口程序设计,【例8-17】,146,8.8.5 键盘显示器接口程序设计,【例8-17】,147,8.8.5 键盘显示器接口程序设计,【例8-17】,148,8.8.5 键盘显示器接口程序设计,【例8-17】,149,8.8.5 键盘显示器接口程序设计,【例8-17】,150,8.8.5 键盘显示器接口程序设计,【例8-18】 按例5-21 的要求编写C51 语言程序,利用ADC0809 采集电压信号。(1)无条件传送,151,8.8.5 键盘显示器接口程序设计,【例8-18】 (1)无条件传送,152,8.8.5 键盘显示器接口程序设计,【例8-18】 (1)无条件传送,153,8.8.5 键盘显示器接口程序设计,【例8-18】 (2)查询式传送,154,8.8.5 键盘显示器接口程序设计,【例8-18】 (3)中断式传送,155,8.8.5 键盘显示器接口程序设计,【例8-18】,156,8.8.5 键盘显示器接口程序设计,【例8-18】,157,小结,主要内容计算机程序设计语言概述C51 语言的变量、常量、运算符、数组C51 语言的基本语句、函数C51 程序设计实例作业P299用C51语言编程实现所有4.6节的题目要求,158,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号