片机内部资源简介.ppt

上传人:小飞机 文档编号:6313281 上传时间:2023-10-16 格式:PPT 页数:70 大小:1.21MB
返回 下载 相关 举报
片机内部资源简介.ppt_第1页
第1页 / 共70页
片机内部资源简介.ppt_第2页
第2页 / 共70页
片机内部资源简介.ppt_第3页
第3页 / 共70页
片机内部资源简介.ppt_第4页
第4页 / 共70页
片机内部资源简介.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《片机内部资源简介.ppt》由会员分享,可在线阅读,更多相关《片机内部资源简介.ppt(70页珍藏版)》请在三一办公上搜索。

1、单片机内部资源简介,MCS-51单片机的基本组成,P0口,下图为P0口的某位P0.n(n=07)结构图,它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路及控制电路组成。P0口既可以作为I/O用,也可以作为地址/数据线用。,三态缓冲器,与门,多路开关,一、P0口作为一般I/O口使用,1)P口用作输出口时CPU发出控制电平“0”(即:硬件自动使“控制”=0)封锁“与门”,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器的输出端 Q与场效应管T2栅极接通。,2)P0口用作输入口时,输入时-分读引脚或读锁存器。读引脚:由传送指令(MOV)实现。下面的缓冲器2用于读端口引脚数据,当执行一条由

2、端口输入的指令时,读脉冲把三态缓冲器2打开,这样端口引脚上的数据经过缓冲器读入到内部总线。,第1步:输入时,先向锁存器“写”1。指令为:SETB P0.n 或:MOV P0,#0FFH,1,1,0,0,T2截止,第2步:引脚信号,“读引脚”信号有效,缓冲器2打开,P0口用作输入口时,输入时-分读引脚或读锁存器读锁存器:有些指令 如:ANL P0,A 称为“读-修改-写”指令,需要读锁存器。缓冲器1用于读端口锁存器数据。,原因:,如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0”电平

3、。现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能发生的错误。,准双向口,从图中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于悬浮状态,变为高阻抗输入。这就是所谓的准双向口。,二、P0口作为地址/数据总线使用,在系统扩展时,P0端口作为地址/数据总线使用时。执行“MOVX”指令或 EA=0 时执行“MOVC”指令时,内部硬件自动使“控制”=1。,P0口用作输出地址/数据总线。,P0引脚输出地址/输入数

4、据,输入信号是从引脚通过输入缓冲器进入内部总线。此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线。,P1口,它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成-准双向口。,P2口,1)P2口作为普通I/O口CPU发出控制电平“0”,使多路开关MUX倒向锁存器输出Q端,构成一个准双向口。其功能与P1相同。,P2口,2)P2口作为地址总线在系统扩展片外程序存储器扩展数据存储器且容量超过256B(用MOVX DPTR指令)时,CPU发出控制电平“1”,使多路开关MUX倒向内部地址线。此时,P2输出高8位地址。,P3口,P3口是多功

5、能端口。一、作通用I/O口用:输出:当W=1时(由内部硬件自动置W为高电平),输出Q端的信号(即输出内部数据),输入时:先向端口写“1”,即锁存器Q端为“1”。,P3口,P3口的第二功能,P3口,二、P3口作为第二功能(内部硬件自动使Q=1)此时引脚部分输入(Q=1、W=1)。,例如:P3.0作为串行口输入,P3口,P3口作为第二功能(Q=1)部分输出(Q=1、W 输出)。,例如:P3.1作为串行口输出,端口的负载能力和接口要求,P0口的输出级无上拉电阻。当输出要去驱动NMOS(N沟道增强型场效应管)等负载时,需外接上拉电阻,这时才有高电平输出;作为输入用时,需向端口写“1”;作为地址/数据总

6、线用时,无需外接上拉电阻。P0口的每一位口线可驱动8个LS型TTL负载。,1.P0口,2.P1P3口P1P3口都是准双向口,作为输入用时,必须向相应的端口写“1”;P1P3口内部有上拉电阻,其每一位口线可驱动4个LS型TTL负载。,补充,“灌电流”与“拉电流”,“灌电流”,“灌电流”与“拉电流”,“拉电流”,P0口的驱动能力较大,当其输出高电平时,可提供400A的电流(“拉电流”);当其输出低电平(0.45V)时,则可提供3mA左右的“灌电流”。P1、P2、P3口的每一位只能驱动4个LSTTL,即可提供的电流只有P0口的一半。所以,任何一个口要想获得较大的驱动能力,只能用低电平输出。P1、P3

7、口的驱动能力有限,在低电平输出时,一般也只能提供不到2mA的“灌电流”。,定时/计数器接口,一、定时/计数器的主要特性,1)STC89C52RC单片机三个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1以及定时/计数器T2。2)每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。3)每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。4)每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。,二、定时/计数器T0、T1

8、的结构及工作原理,三、定时/计数器的方式和控制寄存器,1、定时/计数器的方式寄存器TMOD,2、定时/计数器的控制寄存器TCON,IE1:外部边沿触发中断1请求标志,其功能和操作类似于TF0。IT1:外部中断1类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。IT1=1,边沿触发。IT=0是电平触发。IE0:外部边沿触发中断0请求标志,其功能和操作类似于IE1。IT0:外部中断0类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。其功能和操作类似于IE1。,必须注意:在不同外部中断触发方式下,标志清除方法不一样。,四、定时/计数器的工作方式,1、方式0(13位),3、方式

9、2(8位自动装载),2、方式1(16位),方式1的结构与方式0结构相同,只是把13位变成16位,16位的加法计数器被全部用上。,4、方式3(分成两个8位定时器/计数器),五、定时/计数器的初始化编程及应用,1、定时/计数器的编程,单片机定时/计数器初始化过程如下:1)根据要求选择方式,确定方式控制字,写入方式控制寄存器TMOD。2)根据要求计算定时/计数器的计数值,再由计数值求得初值,写入初值寄存器。3)根据需要开放定时/计数器中断(后面须编写中断服务程序)。4)设置定时/计数器控制寄存器TCON的值,启动定时/计数器开始工作。5)等待定时/计数时间到,到则执行中断服务程序;如用查询处理则编写

10、查询程序判断溢出标志,溢出标志等于1,则进行相应处理。,2、定时/计数器的应用,通常利用定时/计数器来产生周期性的波形。利用定时/计数器产生周期性波形的基本思想是:利用定时/计数器产生周期性的定时,定时时间到则对输出端进行相应的处理。如产生周期性的方波只须定时时间到对输出端取反一次即可。,【例1】设系统时钟频率为12MHZ,用定时/计数器T0编程实现从P1.0输出周期为500s的方波。分析:从P1.0输出周期为500s的方波,只须P1.0每250s取反一次则可。当系统时钟为12MHZ,定时/计数器T0工作于方式2时,最大的定时时间为256s,满足250s的定时要求,方式控制字应设定为00000

11、010B(02H)。系统时钟为12MHZ,定时250s,计数值N为250,初值X=256-250=6,则TH0=TL0=06H。,C语言程序:#include/包含特殊功能寄存器库sbit P1_0=P10;void main()TMOD=0 x02;TH0=0 x06;TL0=0 x06;EA=1;ET0=1;TR0=1;while(1);void time0_int(void)interrupt 1/中断服务程序 P1_0=!P1_0;,(1)采用中断处理方式的程序:,(2)采用查询方式处理的程序,#include/包含特殊功能寄存器库sbit P1_0=P10;void main()ch

12、ar i;TMOD=0 x02;TH0=0 x06;TL0=0 x06;TR0=1;for(;)if(TF0)TF0=0;P1_0=!P1_0;/查询计数溢出,如果定时时间大于65536s,这时用一个定时/计数器直接处理不能实现,这时可用两个定时/计数器共同处理或一个定时/计数器配合软件计数方式处理。,【例2】设系统时钟频率为12MHZ,编程实现从P1.1输出周期为1s的方波。根据例5-2的处理过程,这时应产生500ms的周期性的定时,定时到则对P1.1取反就可实现。由于定时时间较长,一个定时/计数器不能直接实现,可用定时/计数器T0产生周期性为10ms的定时,然后用一个寄存器R2对10ms计

13、数50次实现。系统时钟为12MHZ,定时/计数器T0定时10ms,计数值N为10000,只能选方式1,方式控制字为00000001B(01H),初值X:X=65536-10000=55536=1101 1000 1111 0000B则TH0=11011000B=D8H,TL0=11110000B=F0H。,#include/包含特殊功能寄存器库sbit P1_1=P11;char i;void main()TMOD=0 x01;TH0=0 xD8;TL0=0 xf0;EA=1;ET0=1;i=0;TR0=1;while(1);void time0_int(void)interrupt 1/中断

14、服务程序TH0=0 xD8;TL0=0 xf0;i+;if(i=50)P1_1=!P1_1;i=0;,(1)用寄存器R2作计数器软件计数,中断处理方式。,(2)用定时/计数器T1计数实现,定时/计数器T1工作于计数方式时,计数脉冲通过T1(P3.5)输入,设定时/计数器T0定时时间到对T1(P3.5)取反一次,则T1(P3.5)每20ms产生一个计数脉冲,那么定时500ms只须计数25次,设定时/计数器T1工作于方式2,初值X=256-25=231=11100111B=E7H,TH1=TL1=E7H。因为定时/计数器T0工作于方式1,定时,则这时方式控制字为01100001B(61H)。定时/

15、计数器T0和T1都采用中断方式工作。,C语言程序如下:#include/包含特殊功能寄存器库sbit P1_1=P11;sbit P3_5=P35;void main(),TMOD=0 x61;/T1为8位自动装载计数器TH0=0 xD8;TL0=0 xf0;TH1=0 xE7;/计数25次TL1=0 xE7;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1);void time0_int(void)interrupt 1/T0中断服务程序 TH0=0 xD8;TL0=0 xf0;P3_5=!P3_5;void time1_int(void)interrupt 3/T1

16、中断服务程序 P1_1=!P1_1;,【例3】采用10MHZ晶振,在P1.0输出周期为2.5s,占空比为20%的脉冲信号。解 对于10MHZ晶振,使定时器最大的定时为几十ms,取10ms定时,则周期2.5s需250次中断,占空比为20%,高电平应为50次中断。晶振10MHZ,机器周期=12/10000000.10ms定时,定时器需计数100000/12=8333.程序如下:,#include#define uchar unsigned charuchar i,time;uchar period=250;uchar high=50;,main()TMOD=0 x01;TH0=(65536-833

17、3)/256;TL0=(65536-8333)%256;EA=1;ET0=1;TR0=1;do while(1);,timer0()interrupt 1 using 1 TH0=(65536-8333)/256;TL0=(65536-8333)%256;if(+time=high)P1=0;else if(time=period)time=0;P1=1;,一、单片机串行口功能与结构,1、功能,51单片机具有一个全双工的串行异步通信接口,可以同时发送、接收数据,发送、接收数据可通过查询或中断方式处理,使用十分灵活,串行接口,它有四种工作方式,分别是方式0、方式1、方式2和方式3。其中:方式0,

18、称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。方式1,8位的异步通信方式,通常用于双机通信。方式2和方式3,9位的异步通信方式,通常用于多机通信。,2、结构,51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。,3、单片机如何能收、发数据?,4、串行口控制寄存器SCON,5、电源控制寄存器PCON,当SMOD位为1,则串行口方式

19、1、方式2、方式3的波特率加倍。,二、串行口的工作方式,1、方式0,方式0通常用来外接移位寄存器,用作扩展I/O口。方式0工作时波特率固定为:fosc/12。工作时,串行数据通过RXD输入和输出,同步时钟通过TXD输出。发送和接收数据时低位在前,高位在后,长度为8位。,2、方式1,方式1为8位异步通信方式,在方式1下,一帧信息为10位:1位起始位(0),8位数据位(低位在前)和1位停止位(1)。TXD发送数据端,RXD为接收数据端。波特率可变,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定。即:波特率=2SMOD(T1的溢出率)/32。,3、方式2和方式3,方式2和方式3

20、时都为9位异步通信接口,接收和发送一帧信息长度为11位,即1个低电平的起始位,9位数据位,1个高电平的停止位。发送的第9位数据放于TB8中,接收的第9位数据放于RB8中。TXD为发送数据端,RXD为接收数据端。方式2和方式3的区别在于波特率不一样,其中方式2的波特率只有两种:fosc/32或fosc/64,方式3的波特率与方式1的波特率相同,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,即:波特率=2SMOD(T1的溢出率)/32。,【异步通信】在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接

21、着是若干个数据位。,【同步通信】发送器和接收器由同一个时钟源控制,同步传输方式去掉了起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。,【单工方式】数据仅按一个固定方向传送。,【半双工方式】数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。,【全双工方式】允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。,三、串行口的编程及应用,1、串行口的初始化编程,1)串行口控制寄存器SCON位的确定。,根据工作方式确定SM0、SM1位;对于方式2和方式3还要确定SM2位;如果是接收端,则置允许接收位REN为1;如果方式2和方式3发送数据,则

22、应将发送数据的第9位写入TB8中。,2)设置波特率。,对于方式0,不需要对波特率进行设置。对于方式2,设置波特率仅须对PCON中的SMOD位进行设置。,对于方式1和方式3,设置波特率不仅须对PCON中的SMOD位进行设置,还要对定时/计数器T1进行设置,这时定时/计数器T1一般工作于方式28位可重置方式,初值可由下面公式求得:由于:波特率=2SMOD(T1的溢出率)/32则:T1的溢出率=波特率32/2SMOD而T1工作于方式2的溢出率又可由下式表示:T1的溢出率=fosc/(12(256-初值)所以:T1的初值=256-fosc2SMOD/(12波特率32),2、串行口的应用,通常用于三种情

23、况:利用方式0扩展并行I/O口;利用方式1实现点对点的双机通信;利用方式2或方式3实现多机通信。,利用方式1实现点对点的双机通信要实现甲与乙两台单片机点对点的双机通信,线路只须将甲机的TXD与乙机的RXD相连,将甲机的RXD与乙机的TXD相连,地线与地线相连。软件方面选择相同的工作方式,设相同的波特率即可实现。,用C语言编程实现双机通信。,甲、乙两机都选择方式1:8位异步通信方式,最高位用作奇偶校验,波特率为1200bps,甲机发送,乙机接收,因此甲机的串口控制字为40H,乙机的串口控制字为50H。由于选择的是方式1,波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定。

24、则须对定时/计数器T1初始化。设SMOD=0,甲、乙两机的振荡频率为12MHZ,由于波特率为1200。定时/计数器T1选择为方式2,则初值为:初值=256-fosc2SMOD/(12波特率32)=256-12000000/(12120032)230=E6H根据要求定时/计数器T1的方式控制字为20H。,为了保持通信的畅通与准确,在通信中双作了如下约定。通信开始时,甲机首先发送一个信号AA,乙机接收到后回答一个信号BB,表示同意接收。甲机收到BB后,就可以发送数据了,假定发送10个字符,数据缓冲区为buf,数据发送完后发送一个校验和。乙机接收到数据后,存入乙机的数据缓冲区buf中,并用接收的数据

25、产生校验和与接收的校验和相比较,如相同,乙机发送00H,回答接收正确,如不同,则发送0FFH,请求甲机重发。由于甲、乙两机都要发送和接收信息,所以甲、乙两机的串口控制寄存器的REN位都应设为1,方式控制字都为50H。,甲机的发送程序:#include unsigned char idata buf10;unsigned char pf;void main(void)unsigned char i;TMOD=0 x20;/串行口初始化 TL1=0 xe6;TH1=0 xe6;PCON=0 x00;TR1=1;SCON=0 x50;do SBUF=0 xaa;/发送联络信号while(TI=0);

26、TI=0;while(RI=0);/等待乙机回答RI=0;while(SBUF0 xbb)!=0);/乙未准备好;继续联络,do pf=0;for(i=0;i10;i+)SBUF=bufi;/发送一个数据pf+=bufi;/求校验和while(TI=0);TI=0;SBUF=pf;/发送校验和while(TI=0);TI=0;while(RI=0);/等待乙机应答RI=0;while(SBUF!=0);/应答出错,则重发,乙机接收程序:#include unsigned char idata buf10;unsigned char pf;void main(void)unsigned char

27、 i;TMOD=0 x20;/串行口初始化TL1=0 xe6;TH1=0 xe6;PCON=0 x00;TR1=1;SCON=0 x50;do while(RI=0);RI=0;while(SBUF0 xaa!=0);/判甲机是否请求SBUF=0 xbb;/发应答信号while(TI=0);TI=0;,while(1)pf=0;for(i=0;i10;i+)while(RI=0);RI=0;bufi=SBUF;/接收一个数据pf+=bufi;/求校验和while(RI=0);/接收甲机发送的校验和RI=0;if(SBUFpf)=0)/比较校验和 SBUF=0 x00;break;/校验和相同发

28、“0 x00”else SBUF=0 xff;/校验和不同发“0 xff”,重新接收 while(TI=0);TI=0;,中断系统,一、中断的基本概念,1中断源及中断请求,2中断优先权控制,3中断允许与中断屏蔽,4中断响应与中断返回,二、51单片机的中断系统,1、中断源,1)外部中断,和,2)定时/计数器T0和T1中断,当定时/计数器T0(或T1)溢出时,由硬件置TF0(或TF1)为“1”,向CPU发送中断请求,当CPU响应中断后,将由硬件自动清除TF0(或TF1)。,3)串行口中断,51单片机的串行口中断源对应两个中断标志位:串行口发送中断标志位TI和串行口接收中断标志位RI。无论哪个标志位

29、置“1”,都请求串行口中断,到底是发送中断TI还是接收中断RI,只有在中断服务程序中通过指令查询来判断。串行口中断响应后,不能由硬件自动清“0”,必须由软件对TI或RI清“0”。,2、中断允许控制,3、优先权控制,外部中断0定时/计数器T0中断外部中断1定时/计数器T1中断串行口中断定时/计数器T2中断,4、51单片机中断系统的逻辑结构,各中断服务程序的入口地址见表,三、MCS-51中断系统的应用,【例】某工业监控系统,具有温度、压力、PH值等多路监控功能,中断源的连接如图5.26所示。对于PH值,在小于7时向CPU申请中断,CPU响应中断后使P3.0引脚输出高电平,经驱动,使加碱管道电磁阀接

30、通1秒钟,以调整PH值。,系统监控通过外中断INT0来实现,这里就涉及多个中断源的处理,处理时往往通过中断加查询的方法来实现。多个中断源通过“线或”接于 INT0上。那么无论哪个中断源提出请求,系统都会响应中断,响应后,进入中断服务程序,在中断服务程序中通过对P1口线的逐一检测来确定哪一个中断源的提出了中断请求,进一步转到对应的中断服务程序入口位置执行对应的处理程序。这里只针对PH7时的中断构造了相应的中断服务程序INT02,接通电磁阀延时1秒钟的延时子程序DELAY已经构造好了,只须调用即可。,C语言程序:#include sbit P10=P10;sbit P11=P11;sbit P12

31、=P12;sbit P13=P13;sbit P16=P16;sbit P30=P30;void int0()interrupt 0 using1void int00();void int01();void int01();void int01();if(P10=1)int00();/查询调用对应的函数else if(P11=1)int01();else if(P12=2)int02();else if(P13=1)int03();,(只涉及中断程序,注意外中断INT0中断允许,且为电平触发),void int02()unsigned char i;P30=1;for(i=0;i255;i+)

32、;P30=0;P16=0;P16=1;,多个中断源处理二。,通过74LS148优先权编码器把多个中断源线与为一个中断。用三位并口线判断是哪一个中断源中断。程序如下。,include unsigned char status;bit flag;void service_int1()interrupt 2 using 2 flag=1;/*set flag*/status=P1;/*save status*/,void main(void)IP=0 x04;/*set int1 high priority*/IE=0 x84;/*enable int1 interrupt*/for(;)if(flag)/*if interrupt*/switch(status)/*branch on decode*/case 0:break;/*process 1*/case 1:break;/*process 2*/case 2:break;case 3:break;default:;flag=0;/*process finish*/,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号