c51单片机内部功能单元及

上传人:san****019 文档编号:70865775 上传时间:2019-01-18 格式:PPT 页数:114 大小:1.03MB
返回 下载 相关 举报
c51单片机内部功能单元及_第1页
第1页 / 共114页
c51单片机内部功能单元及_第2页
第2页 / 共114页
c51单片机内部功能单元及_第3页
第3页 / 共114页
c51单片机内部功能单元及_第4页
第4页 / 共114页
c51单片机内部功能单元及_第5页
第5页 / 共114页
点击查看更多>>
资源描述

《c51单片机内部功能单元及》由会员分享,可在线阅读,更多相关《c51单片机内部功能单元及(114页珍藏版)》请在金锄头文库上搜索。

1、第六章 80C51单片机内部功能单元及应用,6.1并行I/O端口,51系列单片机有4组I/O端口,每组端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0P3)、一个输出驱动器和输入缓冲器。,6.1.1 P0口,P0口是一个多功能的三态双向口,能驱动8个TTL负载。可以字节访问也可位访问,其字节访问地址为80H,位访问地址为80H87H。 1位电路结构,2P0口作为通用I/O口 1)输出时 CPU发出控制电平“0”封锁“与”门,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器与输出驱动场效应管T2栅极接通。故内部总线与P0口同相。由于输出驱动级是漏极开路电路

2、,当驱动NMOS或其它电流负载时,需要外接上拉电阻。P0的输出级可驱动8个LSTTL负载。,2)输入时-分读引脚和读锁存器 读引脚:由传送指令(MOV)实现; 读锁存器:读锁存器是先从锁存器中读取数据,进行处理后,将处理后的数据重新写入锁存器中,这类指令成为“读-修改-写”指令。 例如CPL P0.0指令执行时,单片机内部产生“读锁存器”操作信号,使锁存器Q端的数据送到内部总线,在对该位取反后,结果又送回P0.0的端口锁存器并从引脚输出。 “读锁存器”可以避免因引脚外部电路的原因而使引脚的状态发生改变造成误读。,当P0作为普通I/O来用时,此时P0口为一个准双向口。所谓准双向口就是在读数据之前

3、,先要向相应的锁存器做写1操作的I/O口;从图6-4中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于悬浮状态,变为高阻抗输入。,3P0作为地址/数据总线 当P0口作地址/数据复用总线用之后,就再也不能作通用I/O口使用了。 1)P0引脚输出地址/数据信息。 2)P0引脚输出地址/输入数据,6.1.2 P1口 P1口是一个准双向口,它只作通用的I/O口使用,其功能与P0口作为通用I/O口时的功能相同。作为输出口使用时,由于其内部有上拉电阻,所以不需要外接上拉

4、电阻;作为输入口使用时,必须先向锁存器写入“1”,使场效应管T截止,然后才能读取数据。P1口能驱动4个TTL负载。P1口即可以字节访问,也可位访问,其字节访问地址为90H,位访问地址为90H97H。,1. 位电路结构 P1口的位电路结构如图6-2所示,内部包含输出锁存器、输入缓冲器(读引脚、读锁存器)以及由FET晶体管与上拉电阻组成的输出/输入驱动器。,P1口作为通用I/O口 1)P1.X作I/O口的输出线 当CPU对P1.X锁存器写入高电平“1”时,/Q=“0”,场效应管V1截止,P1.X引脚输出高电平。当CPU对P1.X锁存器写入低电平“0”时,/Q=“1”,场效应管V1导通,P1.X引脚

5、输出低电平。注意输出高电平不要带较重的负载。,2)P1.X作I/O口的输入线 软件首先对P1.X锁存器写高电平“1”,使场效应管V1截止,P1.X引脚呈高电平“1”;很微弱的电流就可把P1.X引脚拉为低电平,所以P1.X引脚的电平是随外电路驱动的电平变化而变化;软件读P1.X引脚时,CPU使“读引脚”=“1”,三态缓冲器1导通,将P1.X引脚的电平读入内部数据总线。,6.1.3 P2口 P2口也是一个准双向口 ,P2口能带34个TTL负载。可以字节访问,也可位访问,其字节访问地址为A0H,位访问地址为A0HA7H。 1位电路结构 P2口有8条端口线,命名为P2.7P2.0,每条线的结构如图6-

6、3所示。它由一个输出锁存器、转换开关MUX、两个三态缓冲器、一个非门、输出驱动电路和输出控制电路等组成。输出驱动电路上有上拉电阻。,6.1.4 P3口 P3口是一个多功能准双向口,第一功能是作为通用的I/O口使用,其功能和原理与P1口相同。可以驱动4个TTL负载。第二功能是作为控制和特殊功能口使用,可以字节访问也可以位访问,其字节访问地址为B0H,位访问地址为B0HB7H。,P3口作为第二功能使用 通常情况下,P3口的第二功能在应用中更为重要,此时各引脚定义如表6-1所示。,基本I/O口的应用举例 P0口输出功能应用举例 【例1】P0口做通用I/O输出口,控制8只发光二极管从左到右依次点亮,再

7、依次熄灭,电路图如图6-5所示。,#include unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) /循环间隔时间 unsigned char m,n,s; for(m=20;m0;m-) for(n=20;n0;n-) for(s=248;s0;s-); void main(void) while(1) temp=0xfe; P0=temp; delay();,for(i=1;i(8-i); P0=a|b; delay(); for(i=1;ii; b=temp(8-i); P0=a|b; de

8、lay(); ,2P2口输入、P1口输出功能应用举例 【例2】利用8个拨动开关,把8位数据送到P2口,程序读入,然后送P1口显示。如图6-6所示:,【C程序】: #include #include #define uchar unsigned char #define uint unsigned int #define key P2 #define led P1 void main() while(1) led=key; ,3P1口输入功能应用举例 【例3】P1.5、P1.6、P1.7做输入口使用,P0口连接8只发光二极管,要求通过与P1.5、P1.6、P1.7相连的3个按键来控制P0口的循环

9、灯的循环速度,电路图如图6-5所示,输出部分如图6-7。,参考程序如下: #include #include #define uchar unsigned char #define uint unsigned int sbit K3=P15; /按键调整LED的闪亮速度 sbit K2=P16; sbit K1=P17; bit ldelay; /长定时溢出标志 static uchar t; /定时时间变量 uchar speed=10; /循环速度控制 /预定跑马灯段码 uchar code led9=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff

10、; /主函数,void main(void) uchar ledi; /用来控制显示顺序 TMOD=0x01; TH0=0x10; /定时器0赋初值 TL0=0x00; EA=1; /开总中断 ET0=1; /开定时器0中断 TR0=1; /启动定时器0 while(1) /检查按键,设置跑马速度 /按键控制LED灯的循环速度 /并带有按键消抖 if(!K1) speed=4; t=0; while(!K1) ; if(!K2) speed=7; t=0; while(!K2) ; if(!K3) speed=9; t=0; while(!K3) ; if(ldelay) /定时到,执行跑马灯

11、 ldelay=0; P0=ledledi; /段码送P0口 ledi+; /送下一位 if(ledi=9) /是否显示完一遍 ledi=0; ,/定时器中断0服务子函数 void timer0() interrupt 1 TH0=0x10; /定时器0赋初值 TL0=0x00; t+; if(t=speed) t=0; /时间到,从新开始 ldelay=1; /定时时间溢出,设置标志位 ,4P3口输出功能举例 【例4】P3.7口做通用I/O输出口,控制继电器的开合,以实现对外部装置(如L1灯)的控制, 电路图如图6-8所示。,参考程序如下: #include #define uchar un

12、signed char sbit LED=P37; /*/ /函数名称:delay() /函数功能:延时100ms /*/ delay() uchar i,j=250; for(i=200;i0;i-) while(-j); ,/*/ /函数名称:main() /函数功能:主函数 /*/ main() bit flag=0; while(1) LED=flag; delay(); LED=!flag; delay(); ,【例5】P3.5口做通用I/O输出口,控制蜂鸣器断续发声,电路图如图6-9所示。,参考程序如下: #include sbit BEEP=P35; /蜂鸣器端口 void de

13、layms(unsigned char ms) / 毫秒延时子程序 unsigned char i; while(ms-) for(i = 0; i 120; i+); void main(void) /主程序 while(1) /循环程序 delayms(250); BEEP =1; /启动蜂鸣器 delayms(250); BEEP =0; /熄灭蜂鸣器 ,6.2中断系统,6.2.1 中断系统概述 1中断的概念,2中断系统应具有如下功能: ) 实现中断与返回 2) 能实现优先权排队 3) 高级中断能中断低级中断,当CPU正在处理某一中断源的请求时,若有优先级比它高的中断源发出中断申请,则C

14、PU暂停正在进行的中断服务程序,并保留这个程序的断点;在高级的中断处理完毕后,再回到原被中断的源程序执行中断服务程序。此过程称为“中断嵌套”。,3中断的优点 当CPU与外设交换信息时,采用中断的方式,有以下优点: 分时操作 实时处理 故障处理,4中断源 51单片机共有5个中断源:外部中断0、外部中断1、定时/计数器中断0、定时/计数器中断1、串行口中断。,最低级,6.2.2 中断的控制与实现 中断的控制与实现是通过4个与中断相关的特殊功能寄存器配置来完成的,它们分别是定时/计数器控制寄存器TCON、串行口控制寄存器SCON、中断允许控制寄存器IE以及中断优先级控制寄存器IP。,1定时/计数器控

15、制寄存器TCON(88H) TCON是定时/计数器控制寄存器,它锁存2个定时/计数器的溢出中断标志及外部中断/INT0和/INT1的中断标志,对TCON可进行字节寻址和位寻址。与中断有关的各位定义如下表:,1)IT0:外部中断0触发方式控制位。 IT0=0,为电平触发方式,(低电平有效)。 IT0=1,为边沿触发方式(下降沿有效)。 2)IE0:外部中断0中断请求标志位。当IE0=1时, 表示/INT0向CPU请求中断。 3)IT1:外部中断1触发方式控制位,其操作功能 与IT0类似。 4)IE1:外部中断1中断请求标志位。当IE1=1时, 表示/INT1向CPU请求中断。,5)TF0:定时/计数器T0溢出中断请求标志位。启动T0后,定时/计数器T0从初值开始加1计数,当最高位产生溢出时,由硬件将TF0置1,向CPU申请中断,CPU响应TF0中断时,TF0由硬件清0,TF0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号