第02章 单片机输入输出端口ppt课件_第1页
第02章 单片机输入输出端口ppt课件_第2页
第02章 单片机输入输出端口ppt课件_第3页
第02章 单片机输入输出端口ppt课件_第4页
第02章 单片机输入输出端口ppt课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,第2章单片机输入/输出端口,章节安排:2.1单片机时序简介2.2单片机外部引脚简介2.3C51语言简介2.4输入/输出端口编程实践能力要求:了解单片机时序掌握单片机端口输入/输出操作掌握编程实践环境与工具的应用,.,2.1单片机时序简介,时钟周期概念:单片机在工作时,由内部振荡器产生或由外部直接输入的送至内部控制逻辑单元的时钟信号称为时钟周期时钟周期的大小是时钟信号频率(常用fosc表示)的倒数若时钟频率为12MHz,即fosc=12MHz,则时钟周期=1/(12*106)状态周期概念:一个状态周期S由2个时钟周期构成机器周期一个机器周期由6个状态周期或者说由12个时钟周期构成,.,2.1单片机时序简介,机器周期机器周期是单片机的基本操作周期每个机器周期包含S1、S2、S66个状态,每个状态包含2拍P1和P2,每一拍为一个时钟周期(振荡周期)。因此,一个机器周期包含12个时钟周期。依次可表示为S1P1、S1P2、S2P1、S2P2、S6P1、S6P2。,.,2.1单片机时序简介,指令周期概念:CPU取出一条指令到该指令执行结束后所需要的时间指令周期是以机器周期为单位来衡量时间的长短不同指令,其指令周期不尽相同MCS-51系列单片机中,大多数指令的指令周期由一个机器周期或两个机器周期组成,只有乘法、除法指令须要4机器周期指令。,.,单机器周期指令的时序,单字节单机器周期指令,双字节单机器周期指令,.,双机器周期指令的时序,单字节、双机器周期指令的时序,.,2.2单片机外部引脚简介(以40引脚为例),.,2.2单片机外部引脚简介,40个引脚按功能分为3类:电源和时钟引脚:Vcc,GND,XTAL1,XTAL2编程控制引脚:RST,(只要求了解这些引脚即可)I/O端口引脚:P0,P1,P2,P3(必须掌握),.,电源引脚VCC(40脚):接+5V电源正端。GND(20脚):接电源地端。,时钟引脚XTAL1(19脚):内部振荡电路的输入端XTAL2(18脚):内部震荡电路的输出端8051时钟通常采取片内时钟振荡方式:两个引脚需要外接石英晶体和振荡电容(该电容取值一般在10pF30pF之间),2.2单片机外部引脚简介-电源和时钟引脚,.,RST(9脚):RST即为RESET。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机回复到初始状态。单片机复位后,从0000H地址处读取第一条指令并开始执行(29脚):外部程序存储器的读选通信号,低电平有效。在对外部程序存储器进行读操作时,每个周期出现两次信号,连线时与外部ROM的OE引脚相连在读取外部的RAM时,该引脚不会有输出单片机内部已经有足够大的ROM,通常不需要外扩程序存储器,因此该引脚通常不使用,2.2单片机外部引脚简介编程控制引脚,.,ALE/PROG(30脚):地址锁存信号输出端当外接存储器(ROM或RAM)时,ALE的输出用于锁存地址的低8位,一般ALE接锁存器的EN端当没有外部存储器时,ALE端可用于脉冲信号输出,且频率是石英振荡频率的1/6。在烧写EPROM时,该引脚用作编程脉冲PROG的输入端,(31脚):访问程序存储器控制信号当该引脚接低电平时,对ROM的读操作限定于对外部程序存储器访问(内部的失效)当该引脚接高电平时,对ROM的读操作首先从内部ROM开始,内部访问完毕后才访问外部ROM(内部ROM没有的编织部分),2.2单片机外部引脚简介编程控制引脚,.,P0口(3932脚):P0.0P0.7统称为P0口。P0口的每一位端口都可以单独控制输入或者输出P0口作为I/O口使用时,必须外接上拉电阻(一般选择10K左右)。P1口(18脚):P1.0P1.7统称为P1口。P1口的每一位端口都可以单独控制输入或者输出P1口内部自带上拉电阻,使用时不需要外接P2口(2128脚):P2.0P2.7统称为P2口同P1口P3口(1017脚):P3.0P3.7统称为P3口P3口作为普通端口使用时,同P1口P3口还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。P0P3口都是准双向口端口在作为输入使用前,必须先向该口写1(即输出1),然后在执行读取操作,才能获取正确结果端口输出可以直接进行,2.2单片机外部引脚简介I/O端口引脚,.,2.2单片机外部引脚简介I/O端口引脚,.,2.2单片机外部引脚简介I/O端口引脚,强调51单片机中4个8位的并行I/O接口P0,P1,P2,P3:分别对应着1个特殊功能寄存器,这些寄存器分别称之为P0,P1,P2,P3口寄存器通过特殊功能寄存器的读写完成对端口的操作每个端口既可以数据输入,也可以数据输出每个端口既可以整体8位一起操作,也可以按位操作。,.,2.3C51语言简介,在C51语言编程中,对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。用C语言编写单片机应用程序与标准的C语言程序也有相应的区别C语言编写单片机应用程序时,需根据单片机存储结构及内部资源定义相应的数据类型和变量,而标准的C语言程序不需要考虑这些问题;C51包含的数据类型、变量存储模式、输入输出处理、函数等方面与标准的C语言有一定的区别。其它的语法规则、程序结构及程序设计方法等与标准的C语言程序设计相同。,.,2.3C51语言简介,2.3.1C51中常用数据类型(基本类型),.,2.3C51语言简介,2.3.1C51中常用数据类型(扩充类型),bit:位变量声明例如:bitflag=0;/声明一个变量flag,只占据一个二进制位sbit:特殊功能位声明,即声明一个特殊功能寄存器中的某一位例如:sbitEA=IE7;/EA是IE寄存器中的最高一位,该定义之后,可直接用EA对此位操作:EA=1或者EA=0;,.,2.3C51语言简介,2.3.1C51中常用数据类型(扩充类型),sfr:8位特殊功能寄存器声明例如:sfrP0=0 x80;/P0是P0端口寄存器,它在存储器中的地址是0 x80,此定义之后,可以通过该变量符号对P0端口直接操作(即告知编译器,程序要操作的是地址为0 x80地址处的寄存器)。当然,我们可以定义其它的名字。换种角度:通过sfr关键词,让keil编译器在单片机与人之间搭建一条沟通的渠道,我们对P0符号操作,单片机虽不知道P0是什么,但是它知道他的内部地址0 x80是什么,从而完成操作。sfr16:16位特殊功能寄存器声明,.,2.3C51语言简介,2.3.2C51中常用库函数reg51.h:特殊功能寄存器和特殊功能位的声明absacc.h:绝对地址的声明(系统扩展一章时才用到)math.h:定义常用数学运算的,.,2.4输入/输出端口编程实践,2.4.1keil软件的使用(详见教材P274)2.4.2USBISP下载线的使用首先插入USBISP下载线,安装驱动(在16上网下载)将“配套软件”中的progisp.exe发送到桌面快捷方式双击运行progisp.exe,“选择芯片”中选择AT89S52将ISP下载线接头插入电路板点击按钮“调入Flash”,选择要运行程序的.hex文件点击按钮“自动”开始下载程序电路板复位,运行程序,.,2.4输入/输出端口编程实践,2.4.3端口基本输入/输出操作端口输出操作(以P1口为例)位操作:P10=1;/从P1.0口输出数据1或者:sbitP1.1=P11;P1.1=1;P1端口整体操作:P1=0 x55;/通过P1口输出数据0 x55,.,2.4输入/输出端口编程实践,2.4.3端口基本输入输出操作端口输入操作(以P1口为例)位操作:bittemp;P10=1;/必须先让该端口输出1,temp=P10;/再从该端口输入数据,赋值给变量tempP1端口整体操作:unsignedchartemp;P1=0 xFF;temp=P1;,.,2.4输入/输出端口编程实践,2.4.4实践项目:流水灯硬件连线:使单片机的P1、P2或者P3端口与发光二极管相连(以P2口为例)电路原理分析,单片机P2口通过连线与JP14相接,从而控制发光二极管的阴极。当P2端口输出1时(二极管阴极呈现高电平),发光二极管不能导通,不发光;输出0时发光。,.,2.4输入/输出端口编程实践,2.4.4实践项目:流水灯软件流程分析点亮一个发光二极管,并延迟一段时间,然后选中下一个点亮,如此循环。,.,流水灯参考代码一#includesbitled1=P20;sbitled2=P21;sbitled3=P22;sbitled4=P23;sbitled5=P24;sbitled6=P25;sbitled7=P26;sbitled8=P27;voiddelayms(unsignedinti);/*延时函数*/main()while(1)led1=0;delayms(100);led1=1;led2=0;delayms(100);led2=1;led3=0;delayms(100);led3=1;led4=0;delayms(100);led4=1;led5=0;delayms(100);led5=1;led6=0;delayms(100);led6=1;led7=0;delayms(100);led7=1;led8=0;delayms(100);led8=1;led1=0;delayms(100);voiddelayms(unsignedinti)/延迟函数unsignedintj;for(;i0;i-)for(j=100;j0;j-);,.,流水灯参考代码二#includevoiddelayms(unsignedinti);/*延时函数*/main()unsignedchartemp=0 xfe;/只有1位为0,即只有一个二极管点亮while(1)/单片机主程序肯定是一个死循环P2=temp;/将数据从P2口输出,控制只有一个二极管点亮delayms(100);/延时,使点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论