《《单片机学习》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《单片机学习》PPT课件.ppt(75页珍藏版)》请在三一办公上搜索。
1、第四章 80C51单片机的功能单元,一、并行I/O接口,80C51共有四个8位的并行双向口。每位均有锁存器、输出驱动器和输入缓冲器组成。它们在结构和功能上均有差异,下面逐一介绍之。,1.P1口,P1口是一个8位口,可以字节访问也可以位访问。其字节地址为90H,位地址为90H97H。,P1口结构和工作过程分析,输出上拉结构,Q,P1口特点,输出锁存输出高电平能力弱,低电平能力强特殊的读、修改、写指令,只读锁存器的输出。当目的操作数是断口时,下列指令读锁存器而不是管脚。ANL、ORL、XRL、JBC、CPL、INCDEC、DJNZ、MOV PX.Y,C、CLR、SETB,p1口举例,P1口高电平输
2、出能力差,对HMOS系列只有0.2mA以下,因此,直接驱动负载时应该用低电平驱动.低电平的拉电流能力强.,+5V,P1.X,p1口举例,输入时应先把I/O口置高,如果置低,可能损坏I/O口.最好硬件电路设计上有所考虑.,+5V,GND,P1.x,2.P3口,P3口是一个多功能8位口,可以字节访问也可以位访问。其字节地址为B0H,位地址为B0HB7H。,P3口结构和工作过程分析,P3口第二功能,P3.0 RXD,串行口输入P3.1 TXD,串行口输出P3.2 INT0,外部中断0P3.3 INT1,外部中断1P3.4 T0,定时/计数器0P3.5 T1,定时/计数器1P3.6 WR,外部存储器写
3、选通P3.7 RD,外部存储器读选通,3.P2口,P2口是一个多功能8位口,可以字节访问也可以位访问。其字节地址为A0H,位地址为A0HA7H。其第二功能是作为外部存储器的高地址输出。,P2口结构和工作过程分析,P2.i锁存器,读锁存器,Vcc,P1.i引脚,内部总线,写锁存器,读引脚,B,A,内部上拉电阻,D,CL,Q,Q,BUF2,BUF1,Q,地址,控制,P2口的功能特点,不输出地址时,作为双向I/O口使用可以作为高地址输出能驱动4个TTL门,4.P0口,P0口是一个多功能8位口,可以字节访问也可以位访问。其字节地址为80H,位地址为80H87H。其第二功能是作为外部存储器的低地址输出和
4、数据输入输出。,P0口结构和工作过程分析,P0.i锁存器,读锁存器,Vcc,P0.i引脚,内部总线,写锁存器,读引脚,B,A,D,CL,Q,Q,BUF2,BUF1,Q,0,1,地址/数据,控制,P0口的特点,P0口作为总线时是地址、数据复用。作为I/O口使用时是漏极开路应用。P0口能驱动8个TTL门。,二、定时/计数器,1、定时/计数器概述,80C51系列单片机中总是包含T0,T1两个定时/计数器,有的型号还有定时/计数器T2,定时计数器的核心是一个加一计数器,其基本功能是加一操作。如果对外部信号加一,就是计数器。如果对时钟信号加一,就是定时器。,2、定时/计数器T0、T1,内部结构,16位计
5、数器TH0、TL0和TH1、TL1特殊功能寄存器TMOD、TCON时钟分频器输入引脚T0、T1、INT0、INT1,内部结构图,TMOD(89H)不可位寻址,TCON(88H)可位寻址,TL1,TH1,TF,TL1,TH1,TF,INT1,T1,INT0,T0,CLK/12,CLK/12,TMOD 方式寄存器,GATE,D7,C/T,D6,M1,D5,M0,D4,GATE,D3,C/T,D2,M1,D1,M0,D0,T1,T0,M0、M1,选择定时/计数器的模式0、1、2、3C/T,选择定时或计数功能GATE,选择脉冲源,TCON 控制寄存器,TFx,计数溢出时置1,进入中断程序时硬件清零。如
6、果不允许中断,需要软件清零。TRx,控制计数定时脉冲的输入。由软件控制。其它位与中断控制有关,以后详述。,TF1,D7,TR1,D6,TF0,D5,TR0,D4,IE1,D3,IT1,D2,IE0,D1,IT0,D0,T1,T0,88H,8FH,与中断控制有关,定时/计数器T0、T1 方式0,TLx(5位),THx(8位),TFx,申请中断,12,振荡器,Tx引脚,C/T=0,C/T=1,+,TRx,GATE,INTx引脚,A,B,控制,x=0,1,M1=0M0=0,定时/计数器T0、T1 方式1,TLx(8位),THx(8位),TFx,申请中断,12,振荡器,Tx引脚,C/T=0,C/T=1
7、,+,TRx,GATE,INTx引脚,A,B,控制,x=0,1,M1=0M0=1,定时/计数器T0、T1 方式2,TLx(8位),THx(8位),TFx,申请中断,12,振荡器,Tx引脚,C/T=0,C/T=1,+,TRx,GATE,INTx引脚,A,B,控制,x=0,1,M1=1M0=0,重装载,方式3时定时/计数器T0,TL0(8位),TF0,申请中断T0,12,振荡器,T0引脚,C/T=0,C/T=1,+,TR0,GATE,INT0引脚,A,B,控制,M1=1M0=1,TH0(8位),TF1,申请中断T1,12,振荡器,TR1,T0方式3时T1方式选择,TL1(5,8),TH1(8位),
8、串行口,12,振荡器,T1引脚,C/T=0,C/T=1,串行口,12,振荡器,T1引脚,C/T=0,C/T=1,TL1(8位),TH1(8位),重装载,(a)T1方式1或0,(b)T1方式2,定时/计数器T2,在51系列单片机中,8052子系列除了有定时/计数器T0、T1外,还具有功能更强的定时/计数器T2。除了两个8位计数器TL2、TH2和控制寄存器T2CON及T2MOD之外,还有捕获寄存器RCAP2L和RCAP2H。输入引脚T2(P1.0)是外部计数脉冲输入端。输入引脚T2EX(P1.1)是外部控制信号输入端。,T2中的特殊功能寄存器,位地址,位功能,0CFH,TF2,0CEH,EXF2,
9、0CDH,RCLK,0CCH,TCLK,0CBH,EXEN2,0CAH,TR2,0C9H,C/T2,0C8H,CP/RL2,T2CON控制寄存器:,C/T2=0 功能选择为定时器C/T2=0 功能选择为计数器,T2中的特殊功能寄存器,T2MOD是字节寻址的,字节地址为0C9H,只有最低位有定义。,D7-D1,-,D0,DCEN,DCEN=1,减计数;DCEN=0,加计数;,T2的工作方式,捕获方式,TL2(8位),TF2,申请中断,12,振荡器,T2引脚,C/T=0,C/T=1,控制,TR2,TH2(8位),RCAP2L,RCAP2H,控制,EXF2,EXEN2,边沿检测,T2EX引脚,自动重
10、装载方式(DCEN=0),TL2(8位),TF2,申请中断,12,振荡器,T2引脚,C/T=0,C/T=1,控制,TR2,TH2(8位),RCAP2L,RCAP2H,控制,EXF2,EXEN2,边沿检测,T2EX引脚,重载,自动重装载方式(DCEN=1),TL2(8位),申请中断,12,振荡器,T2引脚,C/T=0,C/T=1,控制,TR2,TH2(8位),RCAP2L,RCAP2H,0FFH,0FFH,TF2,T2EX管脚,EXF2,波特率发生器方式,TL2(8位),TF2,12,振荡器,T2引脚,C/T=0,C/T=1,控制,TR2,TH2(8位),RCAP2L,RCAP2H,控制,EXF
11、2,EXEN2,边沿检测,T2EX引脚,16,重载,中断申请,定时器、计数器定时常数计算,由于计数器是加1计数的,所以定时常数应该求补码。t=Tc(2L-TC)=12/f(2L-TC)t:定时时间;Tc:机器周期;f:震荡器频率;L:计数器字长;,计算举例:,要使定时时间为2ms,而晶体震荡频率为12MHz,求定时常数。,2ms=1us(216-TC)TC=216-2000=65536-2000=63536化成两个字节:=0f830h,定时/计数器编程,写TMOD,只能用字节寻址(M0,M1,C/T,GATE)。将时间常数或计数常数写入计数器寄存器。设置中断开放或禁止。启动计数器。,例1,使用
12、T0在P1.0脚产生周期为2ms方波,震荡器频率为6MHz。,设计思路是每1ms产生一个中断,中断程序中除了重新初始化计数器外,使P1.0电平反转。选用模式1作为T0的工作模式。即TMOD=01H由于震荡器频率为6MHz,即2微妙计数器计数一次。计数500次就是1ms。定时常数为65536-500=0FE0CH,即TH=0FEH,TL=0CH。主程序先初始化定时计数器,然后开启计数器。,具体程序,主程序段:MOV TMOD,#01HMOV TH0,#0FEHMOV TL0,#0CHSETB ET0SETB EASETB TR0,中断程序:ORG 000BHMOV TH0,#0F0HMOV TL
13、0,#0CHCPL P1.0RETI,例2,T0用方式3,这时TL0、TH0分别可作为两个8位计数器,产生两个方波。定时常数为:256-100*(12/11.0592)=147 256-150*(12/11.0592)=93T1用方式2,自动重装载,定时常数0F9H。,使用80C51单片机,用T1为串行口提供波特率9600定时,同时希望产生两个方波,周期为200和300微妙。为产生准确的标准波特率,震荡器通常选择频率为11.0592Mhz。,具体程序,org 0bh;tl0中断mov tl0,#147cpl p1.0retiorg 1bh;th0中断mov th0,#93cpl p1.1ret
14、i,主程序片段如下:.mov tmod,#23hmov tl0,#147mov th0,#93mov tl1,#0f9hmov th1,#0f9hsetb tr0setb tr1setb et0setb et1setb ea.,例3,T0采用方式1,中断程序中通过判断p1.0是高电平还是低电平来重新设置计数器初始值。计数器初始值从变量中得出,该变量的值同时由主程序动态给出,这样,PWM波的占空比等参数就由主程序决定了。,产生PWM波形,PWM波形的参数由主程序动态设置,只能使用一个定时器,比如T0。,具体程序,;中断程序t0int:cpl p1.0 jb p1.0,high mov tl0,l
15、ow_level_l mov th0,low_level_h retihigh:mov tl0,high_level_l mov th0,high_level_h reti,;主程序org 0ljmp startorg 0bhljmp t0intorg 100hstart:mov tmod,#1hclr p1.0mov tl0,low_level_lmov th0,low_level_hsetb et0setb easetb tr0;下面可以设定波形变量的值,3.串行接口,51系列单片机中有一个全双工异步串行接口,可以用来和其它串行设备通讯。全双工意味着它可以同时接收和发送。,UART串行口结
16、构,接收寄存器和发送寄存器。控制逻辑串行口控制寄存器串行数据输入输出引脚,结构图,SCON,串行口控制逻辑,接受SBUF,发送SBUF,TX,RX,申请中断,定时器单元,串行口的特殊功能寄存器,状态控制寄存器(SCON):,位地址,位功能,9FH,SM0,9EH,SM1,9DH,SM2,9CH,REN,9BH,TB8,9AH,RB8,99H,TI,98H,RI,功率控制寄存器,D7,SMOD,与串行口无关,PCON只有最高位SMOD与串行口有关:,串行数据寄存器,发送SBUF,接受SBUF,写,读,串行口工作方式,多机通讯,模式0-同步移位寄存器方式,数据输入时,数据由RXD引脚输入,同时TX
17、D引脚给出同步时钟。数据的输入由REN=1和RI=0启动。数据输出时,数据有TXD引脚输出,同时TXD引脚给出同步时钟。输出由对SBUF的写操作触发。同步脉冲的频率是FCLK/12。,输入时序和电路,D0,D1,D2,D3,D4,D5,D6,D7,RXD,TXD,CD4014,CD4014,Q,S,Q,CLK,CLK,RXD,TXD,输出时序和电路,D0,D1,D2,D3,D4,D5,D6,D7,RXD,TXD,CD4094,CD4094,DATA,Q,DATA,CLK,CLK,RXD,TXD,方式1:8个数据位通讯方式,当SM0=0、SM1=1时,串行口选择方式1。其波特率由定时计数器T1或
18、T2的溢出速率决定。它是全双工模式,输入由Rx引脚,输出由Tx引脚。它的一帧数据由一个起始位(1)、8个数据位和一个停止位(0)组成。,方式1帧格式,D0,D1,D2,D4,D3,D5,D6,D7,起始,停止,1 1 0 0 1 0 0 1,93H,方式1发送和接收完成的条件,单片机1,单片机2,Rx,Tx,Rx,Tx,写SBUF指令后,就触发一个发送过程。发送完成时,Ti置位表明发送寄存器空,可以写入新内容。当Ri清除和REN置位后,接受到起始位触发一个接受过程。接收完成后,置位Ri并出发中断。只有Ri清0后,表明数据已被处理,新的数据才能接受成功。,方式2、3,9位数据方式,当SM0=1、
19、SM1=0时,串行口选择方式2。当SM0=1、SM1=1时,串行口选择方式3。发送和接收一帧信息为11位:一个起始位(1)、9个数据位和一个停止位(0)组成。数据除了8位要发送数据外,还包含第九位,发送由TB8组成,接收由RB8组成。考虑SM2=0的情况,这时第九位常用来作奇偶校验位。在SM2=0时,接受到完整字符包括第九位时置位Ri,产生中断。发送完成时,置位Ti产生中断。方式2和3的区别在于方式2的波特率是固定的,为f/32或f/16。而方式3的波特率由定时器的溢出速率决定。,方式2、3的帧格式,D0,D1,D2,D4,D3,D5,D6,D7,起始,停止,1 1 0 0 1 0 0 1 0
20、,93H+0,D8,多机通讯,主机,从机机号1,从机机号2,从机机号3,TXD,RXD,RXD,RXD,RXD,TXD,TXD,TXD,多机通讯的设置,单片机设有多机通讯位SM2(SCON.5)。当串行口工作于方式2或3时,若设置SM2=1,只有接收到的第九位(RB8)为1,才置位RI,触发中断,否则,数据将会丢失。利用这个特点可以实现多机通讯。每次通讯从主机对从机点名开始。各从机先设定SM2=1,通讯时主机先发送某从机的机号,并使第九位为1。这时所有从机接收并产生中断。从机把接收到的机号和自己的机号比较,如果是自己,就接着进行下面的通讯过程。否则结束通讯,并继续保持SM2=1。接下来主机和被
21、点名的从机继续通讯,但这时都设置SM2=0,并且发送的数据第九位0,这时不会打扰其它从机。,多机通讯,这样能够使主机发送数据或命令时,只有发送机号的字节使所有从机中断,发送其它字节时并不干扰不通讯的从机。还可以定义广播方式,比如假设机号0是广播地址,当收到机号0时,所有从机接受数据。,波特率发生器和计算,方式2的波特率是固定的,为:波特率=(f2SMOD)/64方式1、3的波特率用T1产生:波特率=(定时器T1的溢出率2SMOD)/32用定时器T2产生波特率:波特率=(定时器T1的溢出率)/16,波特率计算举例,设震荡器频率为f=11.0592MHz,方式1、3,用T1方式2产生波特率9600
22、,计算T1溢出率、定时器初始值。,定时器T1溢出率=960032=30720011059200/307200=36初始值=256-36=220=0DCH,例1,把片内RAM内容从50h开始16字节发送出去。接收方接收16字节后存储于50h开始的内部RAM中。使用方式1。,中断系统,突发事件的处理机制中断源-触发中断的事件中断优先级-两级中断优先级,中断源,INT0,外部中断0INT1,外部中断1TF0,定时计数器0TF1,定时计数器1RX、TX,串行口中断,中断允许,中断允许寄存器IE设置中断的允许与否。,位地址,符号,AFH,EA,AEH,-,ADH,-,ACH,ES,ABH,ET1,AAH
23、,EX1,A9H,ET0,A8H,EX0,中断优先级寄存器IP决定中断的优先级,位地址,符号,BFH,-,BEH,-,BDH,-,BCH,PS,BBH,PT1,BAH,PX1,B9H,PT0,B8H,PX0,为0时,底优先级中断。1,高优先级中断。高优先级中断执行时不能被低优先级中断打扰,低优先级中断能够被高优先级打扰。同级中断不能互相打扰。,外部中断触发方式,TF1,D7,TR1,D6,TF0,D5,TR0,D4,IE1,D3,IT1,D2,IE0,D1,IT0,D0,T1,T0,88H,8FH,与中断控制有关,TCON:,中断触发方式有两种,电平触发和跳变触发。电平触发是当INT引脚低电平时引发中断。跳变触发是INT引脚由高电平到低电平跳变时引发中断。触发方式的选择由TCON寄存器中的IT0、IT1控制,如为0,电平触发;为1,跳变触发。,中断请求的撤除,单片机内部自动复位。T0、T1中断或跳变触发的外部中断,CPU响应后自动清除中断标志。软件清除。主要指RI、TI。用电平触发的外部中断,应采取相应措施保证中断返回时回到高电平。,中断响应过程,在每个机器周期S5P2期间采样中断源,在下一个周期的S6阶段按优先级响应中断。响应中断后,先把PC内容入栈保护。转向中断程序入口地址,处理中断。,遇到RETI指令,中断返回。从堆栈中恢复PC。,中断程序地址,