《单片机应用系统》课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《单片机应用系统》课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机应用系统 单片机 应用 系统 课件
- 资源描述:
-
1、江阴职业技术学院电子工程系江阴职业技术学院电子工程系单片机应用系统单片机应用系统江阴职业技术学院电子工程系江阴职业技术学院电子工程系包军卫包军卫 邱玉娟邱玉娟2 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系第第1章章 C51语言基础语言基础本章主要内容本章主要内容一、一、C51概述概述二、数据类型二、数据类型三、常量和变量三、常量和变量四、运算符和表达式四、运算符和表达式五、五、C程序的基本结构程序的基本结构六、函数六、函数实训实训1 C程序设计程序设计3 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系一、一、C51概述概述(一)一)C语言的特点语言的特点nC语言
2、简洁、紧凑,使用方便、灵活。一共只有32个关键字 n运算符丰富。共有34种。C把括号、赋值、逗号等都作为运算符处理。从而使C的运算类型极为丰富,可以实现其他高级语言难以实现的运算。n数据结构类型丰富。n具有结构化的控制语句。n语法限制不太严格,程序设计自由度大。n生成目标代码质量高,程序执行效率高。n与汇编语言相比,用C语言写的程序可移植性好nC语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。4 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系(二)(二)C51和汇编比较和汇编比较下面结合8051介绍单
3、片机C语言的优越性:n 不懂得单片机的指令集,也能够编写完美的单片机程序;n 无须懂得单片机的具体硬件,也能够编出符合硬件实际 的专业水平的程序;n 不同函数的数据实行覆盖,有效利用片上有限的RAM空间;n 程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏;n C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;5 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系n 提供auto、static、const等存储类型和专门针对8051单片机的data、idata、pdata
4、、xdata、code等存储类型,自动为变量合理地分配地址;n 提供small、compact、large等编译模式,以适应片上存储器的大小;n 中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;n 提供常用的标准函数库,以供用户直接使用;n 头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;n 有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;n 可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等
5、等。6 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系(三)KEIL C 上机步骤(1)建立项目。点击Project菜单,选择弹出的下拉式菜单中的New Project,一个C程序项目名称,的名称,只要符合Windows文件规则的文件名都行。“保存”后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名。(2)选择单片机类型,这里我们选择常用的Ateml公司的 AT89C51。(3)建立文件,编辑源文件,注意保存文件时后缀为.c(4)向项目中添加刚编辑的C文件。(5)编译。如发现错误根据输出窗口的信息进行修改。(6)全速运行。此时打开串行窗口,进行观察串行调试窗口中
6、不断的打出Hello World!。学学练练:例1-1:7 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系例例1-1#include#include void main(void)SCON=0 x50;/串口方式1,允许接收TMOD=0 x20;/定时器1定时方式2TCON=0 x40;/设定时器1开始计数TH1=0 xE8;/11.0592MHz 1200波特率TL1=0 xE8;TI=1;TR1=1;/启动定时器while(1)printf(Hello World!n);/显示Hello World8 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系二、数据类型n
7、C语言的标识符和关键字n在C51编译器中,只支持标识符的前32位为有效标识,故用户标识符不宜过长。n关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。在KEIL uVision2中的关键字除了有ANSI C标准的32个关键字外还根据51单片机的特点扩展了相关的关键字。n表41,表中列出了KEIL uVision2 C51编译器所支持的数据类型。9 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系数据类型数据类型长度长度值域值域unsigned char单字节单字节0255signed char单字节单字节-128+127unsigne
8、d int双字节双字节065535signed int双字节双字节-32768+32767unsigned long四字节四字节04294967295signed long四字节四字节-2147483648+2147483647float四字节四字节1.175494E-383.402823E+38*13字节字节对象的地址对象的地址bit位位0或或1sfr单字节单字节0255sfr16双字节双字节065535sbit位位0或或110 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系关键字关键字用途用途说明说明bit位标量声明位标量声明声明一个位标量或位类型的函数声明一个位标量或位类型
9、的函数sbit位标量声明位标量声明声明一个可位寻址变量声明一个可位寻址变量Sfr特殊功能寄存器声明特殊功能寄存器声明声明一个特殊功能寄存器声明一个特殊功能寄存器Sfr16特殊功能寄存器声明特殊功能寄存器声明声明一个声明一个16位的特殊功能寄存器位的特殊功能寄存器data存储器类型说明存储器类型说明直接寻址的内部数据存储器直接寻址的内部数据存储器bdata存储器类型说明存储器类型说明可位寻址的内部数据存储器可位寻址的内部数据存储器idata存储器类型说明存储器类型说明间接寻址的内部数据存储器间接寻址的内部数据存储器pdata存储器类型说明存储器类型说明分页寻址的外部数据存储器分页寻址的外部数据存
10、储器xdata存储器类型说明存储器类型说明外部数据存储器外部数据存储器code存储器类型说明存储器类型说明程序存储器程序存储器interrupt中断函数说明中断函数说明定义一个中断函数定义一个中断函数reentrant再入函数说明再入函数说明定义一个再入函数定义一个再入函数using寄存器组定义寄存器组定义定义芯片的工作寄存器定义芯片的工作寄存器11 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系1 char字符类型字符类型nchar类型的长度是一个字节,通常用于定义处理字符数据的变量或常量,分n无符号字符类型unsigned char表达的数值范围是0 255n有符号字符类型s
11、igned char,用字节中最高位字节表示数据的符号,“0”表示正数,“1”表示负数,负数用补码表示。所能表示的数值范围是-128+127。n默认值为signed char类型。unsigned char常用于处理ASCII字符或用于处理小于或等于255的整型数。12 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系2 int整型整型nint整型长度为两个字节,用于存放一个双字节数据。分signed int,表示的数值范围是-3276832767,nunsigned int,表示的数值范围是065535。默认值为signed int类型。在C51程序设计中,变量数据类型的定义极其
12、重要,因为在所有数据类型中只有bit和unsigned char两种数据类型可以直接支持机器指令,对于其他的数据类型C51编译器都要进行一系列复杂的变量数据和变量类型的处理,而这种处理将会对应很长一段机器指令,最终会使程序变得复杂、庞大,运行速度降低。13 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系n 由此可见,在C51程序设计过程中,在满足数据要求的情况下,应尽可能使用unsigned char变量和bit变量。signed char变量虽然也只占用一个字节,但需要进行额外的操作来测试代码的符号位,因此会降低代码执行效率。n 学学练练:例1-2:用用户板2硬件仿真,看看un
13、signed char和unsigned int用于延时的不同效果:看P1口L0和L1发光二极管亮的时间。14 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系例例1-2#include /预处理命令sbit P1_0=P10;sbit P1_1=P11;void main(void)/主函数名unsigned int a;/定义变量a为unsigned int类型unsigned char b;/定义变量b为unsigned char类型do /do while组成循环for(a=0;a65535;a+)P1_0=0;/65535次设P1.0口为低电平,点亮LEDP1_0=1;/
14、设P1.0口为高电平,熄灭LEDfor(a=0;a30000;a+);/空循环for(b=0;b255;b+)P1_1=0;/255次设P1.1口为低电平,点亮LEDP1_1=1;/设P1.1口为高电平,熄灭LEDfor(a=0;a30000;a+);/空循环 while(1);15 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系3 long长整型长整型nlong长整型长度为四个字节,用于存放一个四字节数据。分nsigned long。表示的数值范围是-2147483648+2147483647,nunsigned long,表示的数值范围是04294967295。n默认值为si
15、gned long16 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系4 float浮点型浮点型float浮点型在十进制中具有7位有效数字,是符合IEEE754标准的单精度浮点型数据,占用四个字节。5*指针型指针型指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同,在C51中它的长度一般为13个字节。指针变量也具有类型。6 bit位标量位标量bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Bo
16、olean类型中的True和False。17 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系变量数据类型的选择变量数据类型的选择 在C51程序设计中,变量数据类型的定义极其重要,因为在所有数据类型中只有bit和unsigned char两种数据类型可以直接支持机器指令,对于其他的数据类型C51编译器都要进行一系列复杂的变量数据和变量类型的处理,而这种处理将会对应很长一段机器指令,最终会使程序变得复杂、庞大,运行速度降低。由此可见,在C51程序设计过程中,在满足数据要求的情况下,应尽可能使用unsigned char变量和bit变量。signed char变量虽然也只占用一个字节,
17、但需要进行额外的操作来测试代码的符号位,因此会降低代码执行效率。18 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系7、sfr特殊功能寄存器特殊功能寄存器nsfr也是一种扩充数据类型,点用一个内存单元,值域为0255。利用它可以访问51单片机内部的所有特殊功能寄存器。n如用sfr P1=0 x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1=255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。19 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系8、sfr16 16位特殊功能寄存器位特殊功能寄存器nsfr16占用两个内存单元,值
18、域为065535。sfr16和sfr一样用于操作特殊功能寄存器,所不同的是它用于操作占两个字节的寄存器,如定时器T0和T1。nsfr和sfr16可以直接对51单片机的特殊寄存器进行定义,定义方法如下:sfr 特殊功能寄存器名特殊功能寄存器名=特殊功能寄存器地址常数特殊功能寄存器地址常数;sfr16 特殊功能寄存器名特殊功能寄存器名=特殊功能寄存器地址常数特殊功能寄存器地址常数;我们可以这样定义AT89C51的P1口sfr P1=0 x90;/定义P1 I/O口,其地址90H sfr16 T2=0 xCC;/这里定义8052定时器2,地址为 T2L=CCH,T2H=CDH20 江阴职业技术学院电
19、子信息工程系江阴职业技术学院电子信息工程系说明:说明:nsfr关键字后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,最好有一定的含义,如P1口可以用P1。等号后面必须是常数(特殊寄存器直接地址),不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80HFFH),具体可查看教材8051内部RAM地址表。n用sfr16定义16位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上。注意:该方法不能用于定时器0和1的定义。21 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系9、sbitnsbit是C51中的一种扩充数据类型,利
20、用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。n如要访问P1.1,定义方法有三:(1)sbit 位变量名位地址位变量名位地址 sbit P1_1=0 x91;/把位的绝对地址赋给位变量。同sfr一样sbit的位地址必须位于80H-FFH之间。(2)Sbit 位变量名特殊功能寄存器名位变量名特殊功能寄存器名位位置位位置sfr P1=0 x90;sbit P1_1=P1 1;当可寻址位位于特殊功能寄存器中时可采用这种方法(3)sbit 位变量名字节地址位变量名字节地址位位置位位置sbit P1_1=0 x90 1;22 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息
21、工程系n这样我们在以后的程序语句中就可以用P1_1来对P1.1引脚进行读写操作了。n通常这些可以直接使用系统提供的预处理文件,里面已定义好各特殊功能寄存器的简单名字。n这种方法其实和汇编是一样的,只是把特殊功能寄存器的位址符号化了。学学练练:打开例1-2项目中REG51.h头文件查看各特殊寄存器的定义。23 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系五、常量和变量五、常量和变量常量是在程序运行过程中不能改变值的量,常量的数据类型有整型、浮点型、字符型、字符串型和位标量。1整型常量可以表示为十进制如123,0,89等。十六进制则以0 x开头如0 x34,-0 x3B等。长整型就
22、在数字后面加字母L,如104L,034L,0 xF340等。2浮点型常量可分为十进制和指数表示形式。十进制由数字和小数点组成,如0.888,3345.345,0.0等,整数或小数部分为0,可以省略但必须有小数点。指数表示形式为数字.数字e数字,中的内容为可选项,其中内容根据具体情况可有可无,但其余部分必须有,如125e3,7e9,-3.0e-3。24 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系3 字符型常量是单引号内的字符,如a,d等,不可以显示的控制字符,可以在该字符前面加一个反斜杠“”组成专用转义字符。4 字符串型常量由双引号内的字符组成,如“test”,“OK”等。当引
23、号内的没有字符时,为空字符串。在使用特殊字符时同样要使用转义字符如双引号。在C中字符串常量是做为字符类型数组来处理的,在存储字符串时系统会在字符串尾部加上o转义字符以作为该字符串的结束符。字符串常量“A”和字符常量A是不同的,前者在存储时多占用一个字节的字间。5 位标量,它的值是一个二进制。25 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系n常量可用在不必改变值的场合,如固定的数据表,字库等。常量的定义方式有几种,下面来加以说明。#define False 0 x0;/用预定义语句可以定义常量#define True 0 x1;/这里定义False为0,True为1在程序中用到
24、False编译时自动用0替换,同理True替换为1unsigned int code a=100;/这一句用code把a定义在程序存储器中并赋值const unsigned int c=100;/用const定义c为无符号int常量并赋值以上两句它们的值都保存在程序存储器中,而程序存储器在运行中是不允许被修改的,所以如果在这两句后面用了类似a=110,a+这样的赋值语句,编译时将会出错。学学练练学学练练:例1-3:用用户板2硬件仿真,看运行效果26 江阴职业技术学院电子信息工程系江阴职业技术学院电子信息工程系例例1-3#include /预处理文件里面定义了特殊寄存器的名称如P1口定义为P1v
25、oid main(void)/定义花样数据const unsigned char design32=0 xFF,0 xFE,0 xFD,0 xFB,0 xF7,0 xEF,0 xDF,0 xBF,0 x7F,0 x7F,0 xBF,0 xDF,0 xEF,0 xF7,0 xFB,0 xFD,0 xFE,0 xFF,0 xFF,0 xFE,0 xFC,0 xF8,0 xF0,0 xE0,0 xC0,0 x80,0 x0,0 xE7,0 xDB,0 xBD,0 x7E,0 xFF;unsigned int a;/定义循环用的变量unsigned char b;/在C51编程中因内存有限尽可能注意变
展开阅读全文