单片机并行接口PIO72定时计数器电路.ppt

上传人:牧羊曲112 文档编号:6460200 上传时间:2023-11-02 格式:PPT 页数:37 大小:714KB
返回 下载 相关 举报
单片机并行接口PIO72定时计数器电路.ppt_第1页
第1页 / 共37页
单片机并行接口PIO72定时计数器电路.ppt_第2页
第2页 / 共37页
单片机并行接口PIO72定时计数器电路.ppt_第3页
第3页 / 共37页
单片机并行接口PIO72定时计数器电路.ppt_第4页
第4页 / 共37页
单片机并行接口PIO72定时计数器电路.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《单片机并行接口PIO72定时计数器电路.ppt》由会员分享,可在线阅读,更多相关《单片机并行接口PIO72定时计数器电路.ppt(37页珍藏版)》请在三一办公上搜索。

1、第七章 I/O接口电路,7-1单片机并行接口PIO,7-2定时/计数器电路CTC,7-3可编程并行接口芯片,7-5串行I/O接口SIO,7-1 单片机并行接口PIO,PIO:并行I/O接口用于微型机与外部设备之间并行传送数据。,7-1-1MCS-51的并行接口4个8位双向并行IO接口:P0.0P0.7、P1.0P1.7、P2.0P2.7、P3.0P3.7。均为多功能I/O接口,CPU按当前操作自动进行功能切换。,片内接口寄存器在SFR中的映象地址:1I/O数据锁存器:P0、P1、P2、P3、SBUF2I/O控制/状态寄存器:IE、IP、TCON、TMOD、SCON、PCON,一PIO接口内部结

2、构,输出锁存器、输出驱动器、输入缓冲器及多路功能切换电路。1)输出操作:输出数据经过内部总线暂存到输出锁存器中,经过输出驱动器送到I/O引脚上。输出锁存器的内容可读入修改。2)输入操作:I/O引脚输入数据经过输入缓冲器送到内部总线上。,二PIO接口的三种操作,1.输出锁存:输出将使数据写入输出锁存器。输出指令:MOVP1,AMOVP1.0,C,2.输入三态:输入从I/O引脚上输入信号,读信号打开,引脚信号通过下三态门进入内部总线。为保证可靠输入,先写入“1”。MOVP1,#0FFH;使输出驱动器截止MOVA,P1;输入P0P3的复位状态均为FFH,自动处于输入状态。,3.读-修改-写:修改输出

3、锁存器的内容。锁存器中的数据通过上三态门进入内部总线,修改后再写入到锁存器中。读-修改-写指令:PIO为目的操作数的指令 ANL P1,A,三.PIO的使用 1.P0口:并行双向接口或系统总线DB07/AB07,2.P1口:称为用户I/O接口。对片内EPROM编程时,用作EPROM低8位地址信号线。,四.接口负载能力P0驱动8个TTL电路,P1,P2,P3可驱动4个TTL电路,3.P2口:双向I/O接口或高8位地址总线AB815对读写片外存储器后,引脚仍恢复输出锁存器的内容。可用于读写片外数据存储器:MOV P2,#20HMOV R0,#00MOVX A,R0,4.P3口:双向并行接口和第二功

4、能:串行接口引脚:TXD、RXD中断输入引脚:INT0、INT1定时器输入引脚:T0、T1读写控制线:RD、WR,P1、P2和P3为准双向口。,五.应用举例,例:用4个发光二极管对应显示4个开关的开合状态。如P1.0合则P1.4亮。,1.无条件传送方式:指示灯立即反映开关状态。,ORG 0000HAJMP MAINORG 0100HMAIN:ORL A,#0FH MOV P1,AMOV A,P1SWAP A MOV P1,ASJMP MAIN,2.中断传送方式:先设好开关状态,然后发出中断请求信号,改变指示灯亮灭状态。,ORG 0000H AJMP MAIN ORG 0003H AJMP IO

5、INT ORG 0100HMAIN:SETB IT0 SETB EX0 SETB EAHERE:SJMP HERE ORG 0500HIOINT:MOV A,#0FFH MOV P1,A MOV A,P1 SWAP A MOV P1,A RETI,7-2定时/计数器电路CTC,一定时/计数器的应用1计数功能:生产线上产品计数。每个产品通过得到一个脉冲信号,计数器记录脉冲个数,当计数值与设定值相等,启动包装机器。检测转速。电机转动一圈发出一个脉冲,计数器记录一秒时间内脉冲个数,显示转速。,二定时/计数器的工作原理定时/计数器中的核心部件为可预置初值计数器。预置初值后开始计数,直至计数值归0或产生

6、溢出,可申请中断。计数器有加 1 计数或减1计数两种形式。,例:设CTC中为8位加1计数器。按要求选择功能和初值。1.要求检测到100个脉冲,发中断请求,通知CPU。选计数功能,计数初值为156。2.要求定时每隔100s时间,发一次中断请求。设内部时钟周期1s选定时功能,计数初值为156。,2定时功能:用于实时控制,定时采样、定时启动等。当定时时间与设定值相等,执行规定操作。,7-2-1 MCS-51定时/计数器,2个可独立控制的16位定时器/计数器:T0、T1,定时器初始化编程:1.功能选择(定时/计数)2.位数选择(8/13/16位)3.启动方式选择(内部启动/外部启动)4.启动控制(启动

7、/停止)5.恢复初值方式(自动重装/软件重装),一.定时器控制、状态寄存器1.TMOD定时器方式寄存器(89H),1)功能选择位C/T:=0,定时功能,计数内部机器周期脉冲;=1,计数功能,计数引脚T0(T1)输入的负脉冲。,2)方式选择位M1、M0:4种工作方式:13/16/8位,3)门控方式选择位GATE:=0,非门控方式(内部启动):TRx=1,启动定时器工作;TRx=0,停止定时器工作。=1,门控方式(外部启动):TRx=1且引脚INTx=1才启动。,确定定时器工作方式指令:MOV TMOD,#方式字例:设T0用方式2非门控定时,T1用方式1门控计数。MOVTMOD,#,2.TCON定

8、时器控制/状态寄存器,1)启动控制位TR0、TR1=0,停止定时器工作=1,启动定时器工作例:启动T0:SETBTR0,2)溢出中断标志位TF0、TF1定时器溢出使TFx=1,引起中断请求,CPU响应Tx中断后,自动清0 TFx。,3可预置初值的16位加1计数器TH0、TL0、TH1、TL1预置T0初值指令:MOVTH0,#XHMOVTL0,#XL,可用软件检测TFx,必须软件清0。WAIT:JBC TF0,NEXT;检测T0是否溢出SJMPWAIT;未溢出,继续检测NEXT:;溢出,TF0清0,处理溢出,二.定时器工作方式由方式选择位M1、M0设定,1.方式013位定时/计数器。THx 8位

9、和TLx低5位组成13位加1计数器,计数外部脉冲个数:18192(213)定时时间(T=1s):1s 8.19ms,2.方式116位定时/计数器。THx8位和TLx8位组成16位加1计数器,计数外部脉冲个数:165536(216)定时时间(T=1s):1s 65536T=65.54ms,3.方式2,自动恢复初值8位定时/计数器。TLx为8位加1计数器,THx为8位初值暂存器。,用于需要重复定时和计数的场合。最大计数值:256(28)最大定时时间(T=1s):256s,4.方式3,T0分成2个8位定时器:TL0定时/计数器和TH0定时器TL0占用T0控制位:C/T,TR0,GATE;TH0占用T

10、1控制位:TR1。T1不能使用方式3工作,5.计算时间常数X(计算初值),计数功能:X=2n-计数值n:8/13/16 定时功能:X=2n-t/T t:定时时间、T:机器周期,三.MCS-51定时器的应用定时器初始化编程:使用定时器工作之前,先写入控制寄存器,确定好定时器工作方式初始化编程格式:,MOV TMOD,#方式字;选择方式MOV THx,#XH;装入Tx时间常数MOV TLx,#XL(SETB EA);开Tx中断(SETB ETx)SETB TRx;启动Tx定时器1.按实际需要选择定时/计数功能2.按时间或计数长度选择方式3.计算时间常数,4.溢出处理编程格式:,1)查询方式:先查询

11、定时器溢出标志,再进行溢出处理。;定时器初始化WAIT:JBC TFx,PT;检测溢出标志SJMP WAITPT:MOVTHx,#XH;重装时间常数MOVTLx,#XL;溢出处理SJMPWAIT,2)中断方式:初始化后执行其他任务,中断服务程序处理溢出。ORG0000HLJMPMAINORG000BH(001BH);Tx中断入口LJMPPTSMAIN:;初始化后执行其他程序PTS:;溢出中断服务程序MOVTHx,#XH;重装时间常数MOVTLx,#XLRETI,四.应用举例,例:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。,解:每隔1ms改变一次P1.0的输出状态。用T0非门

12、控方式1定时。计算时间常数:X=216-t/T=216-1000/1=FC18H,(1)查询方式:START:MOVTMOD,#MOVTL0,#MOVTH0,#SETBTR0 LOOP:JBCTF0,PTF0SJMPLOOP PTF0:CPLP1.0MOVTL0,#MOVTH0,#SJMPLOOP,(2)中断方式,ORG0000HAJMPMAINORG000BHAJMPPT0INTORG0100H MAIN:MOVSP,#60HMOVTMOD,#MOVTL0,#MOVTH0,#SETBEASETBET0SETBTR0 HERE:SJMPHERE PT0INT:CPLP1.0 MOVTL0,#M

13、OVTH0,#RETI,例P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为6MHz。,长定时方法:增加一个软件计数器或一个硬件计数器。,硬件方式:T0定时,T1计数T0的定时跳变信号P1.0的负跳变次数,计满5个跳变为1秒。,START:MOV TMOD,#61H MOV TL1,#0FBH MOV TH1,#0FBH CLR P1.0 SETB TR1LOOP1:CPL P1.7LOOP2:MOV TL0,#3CH MOV TH0,#0B0H SETBTR0LOOP3:JBCTF0,LOOP4SJMPLOOP3LOOP4:CPLP1.0JBCTF1,LOOP1SJMPLOOP2,例定时器外

14、部引脚T0(T1)用作外部中断信号输入端。,外部负脉冲引起中断请求,选计数方式,时间常数为FFH。,例:门控方式测量正脉冲宽度解:INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器脉冲个数。1)设脉宽小于65.5ms等待查询INT0,正脉冲过后,读出TH1TL1。,START:MOV TMOD,#90H MOV TL1,#0H MOV TH1,#0HWAIT1:JBP3.3,WAIT1 SETB TR1WAIT2:JNBP3.3,WAIT2 WAIT3:JBP3.3,WAIT3CLRTR1MOVR2,TL1MOVR3,TH1,2)设脉宽大于65.5ms,中断方式记录TH1TL1溢出中断次

15、数。,SETBTR1SETBET1;开T1中断SETBEAWAIT2:JNBP3.3,WAIT2;等待正脉冲到来WAIT3:JBP3.3,WAIT3;等待正脉冲结束CLRTR1;关闭T1MOVIE,#00;关闭中断MOVR2,TL1;读出T1MOVR3,TH1LCALL PPS;计算脉宽HERE:SJMPHERE;其他任务PRIC:INCR4;记录溢出次数RETIPPS:;计算脉宽子程序,计算脉宽的子程序的计算式如下:脉宽t=(R4 216+R3 R2)T(T为机器周期),7-3可编程并行接口芯片8255用于扩展单片机并行I/O接口。,7-3-1结构与引脚一.结构,1.数据线D07:传送计算机

16、与8255之间的数据、控制字和状态字。PA07 PB 07 PC07:传送8255与外设之间的数据和联络信息,PC07可用作数据线或联络线,1.3个8位并行I/O接口PA、PB和PC包含I/O数据锁存器,控制寄存器和状态寄存器。2.2组控制 A组:PA和PC03、B组:PB和PC473.3种工作方式:基本I/O:输出锁存,输入三态,不用联络信号。应答式I/O:输入/输出均锁存,C口用于传送联络信号,读C口可了解外设当前状态。应答双向式:A口为双向I/O,C口用作A口双向传送的联络信号线,二.引脚,2.地址线CS:片选线A1,A0:口选线,寻址 PA,PB,PC数据口和控制口。,例求8255口地

17、址:解:A口(7F00H),B口(7F01H),C口(7F02H),控制口(7F03H),(三)读写控制线RD,WR控制计算机与8255之间的信息传送和流向(四)复位线RESET高电平复位,使内部寄存器全部清零。,7-3-2 8255编程规定8255初始化编程:往控制口写入控制字,确定8255工作方式。,方式选择控制字:D7=1C口置位/复位控制字:D7=0,例:8255PA口方式0输出单片机片内RAM数据,PB口方式1输入。,PIOS:MOVDPTR,#7F03H;控制口地址MOVA,#86;写控制字MOVXDPTR,A;设工作方式MOVDPTR,#7F00H;PA数据口地址MOVA,R0;

18、取RAM的数据MOVXDPTR,A;由PA口输出,7-4可编程多功能接口芯片8155256字节RAM,3个并行口PA07、PB07、PC05,1个14位定时器。,7-4-1 结构和引脚一.引脚功能1.数据线AD07:传送8155与计算机之间的数据,控制字,状态字。PA07、PB07、PC05:传送8155与外设之间的信息。,2.地址线CE:IO/M:选择口/RAM单元AD07:6个I/O口和256字节RAM地址。,3.控制线ALE:地址锁存RD、WR:读写控制4.定时器输入/输出线:TIMERIN、TIMEROUT5.复位线RESET,7-5 串行I/O接口SIO,一.串行通讯的基本方式(一)

19、.异步通讯以字符为传送单位用起始位和停止位标识每个字符的开始和结束字符间隔不固定,只需字符传送时同步。异步通讯常用格式:一个字符帧,异步通讯的双方需要两项约定:1.字符格式一帧字符位数的规定:数据位,校验位,起始位和停止位。,2.波特率(位/秒)对传送速率的规定例:要求每秒传送120个字符,每帧为10位。解:B=12010=1200波特每位0.83ms数据位传输率=1208=960位/秒,(二).同步通讯以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符标识,硬件要求高,通讯双方须严格同步。,二.串行接口功能,1.发送器:并串数据格式转换,添加标识位和校验位,一帧发送结束,设

20、置结束标志,申请中断。2.接收器:串并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。3.控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。,三.串行数据传送方向单工通讯:数据单向传送。,半双工通讯:数据可分时双向传送。,全双工通讯:可同时进行发送和接收。,7-5-1 MCS-51串行接口 1个全双工串行接口,可同时进行发送和接收。,串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)数据格式(P.237图):按不同方式,一帧位数 8/10/11发送/接收时,数据皆低位在前。,一帧字符发送/接收

21、结束,置位标志位(TI/RI)并申请SIO中断。中断控制:中断允许位ES中断入口:0023H,一.串行接口控制,1.数据缓冲器SBUF发送SBUF和接收SBUF共用一个地址99H。1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。发送指令:MOVSBUF,A2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOV A,SBUF,2.串行口控制/状态寄存器SCON(98H),SM0,SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8发送的第9位数据位,可用作校验

22、位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零,3.节电控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,则不加倍。,二.串行接口的工作方式SM0,SM1选择四种工作方式。,(1)方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B=fosc/12如:fosc=12MHz,B=1MHz,每位数据占1s。4

23、.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。,(2)方式1 8位数据异步通讯方式。,1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。TXD:发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。,当REN=1,CPU开始

24、采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。,(3)方式2和方式3,9位数据异步通讯方式。1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率:方式2:B=(2SMOD/64)fosc。方式3:B=(2SMOD/32)T1溢出率。4.发送:先装入TB8,写入SBUF并启动发送

25、,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。,(4)计算波特率,方式0为固定波特率:B=fosc/12方式2可选两种波特率:B=(2SMOD/64)fosc 方式1、3为可变波特率,用T1作波特率发生器。B=(2SMOD/32)T1溢出率T1为方式2的时间常数:X=28-t/T溢出时间:t=(28-X)T=(28-X)12/foscT1溢出率=1/t=fosc/12(2n-X)波特率B=(2SMOD/32)fosc/12(28-X)串行口方式1、3,

26、根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-fosc/122SMOD/(32B)T1选方式1用于低波特率,需考虑T1重装时间常数时间。,7-5-2串行口的应用,串行口初始化编程格式:SIO:MOV SCON,#控制状态字;写方式字且TI=RI=0(MOV PCON,#80H);波特率加倍(MOV TMOD,#20H);T1作波特率发生器(MOV TH1,#X);选定波特率(MOV TL1,#X)(SETB TR1)(SETB EA);开串行口中断(SETB ES),发送程序:先发送一个字符,等待TI=1后再发送下一个字符。,1.查询方式:TRAM:MOV A,R0

27、;取数据 MOVSBUF,A;发送一个字符WAIT:JBCTI,NEXT;等待发送结束SJMPWAITNEXT:INCR0;准备下一次发送SJMPTRAM,2.中断方式:ORG 0023H;串行口中断入口 AJMP SINTMAIN:;初始化编程TRAM:MOV A,R0;取数据MOV SBUF,A;发送第一个字符 H:SJMP H;其它工作 SINT:CLR TI;中断服务程序INC R0MOV A,R0;取数据MOV SBUF,A;发送下一个字符RETI,接收程序:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。,1.查询方式:WAIT:JBCRI,NEXT;查询等待SJMP

28、WAITNEXT:MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0;准备下一次接收SJMPWAIT,2.中断方式:ORG0023HAJMPRINTMAIN:;初始化编程 H:SJMPH;其它任务 RINT:CLRRI;清中断标志MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0RETI,(一)串行口方式0 用于扩展单片机的并行I/O接口。,串行口实现:并行串行的数据转换74LS165/74LS164实现:串行并行的数据转换。,(二)异步通讯程序举例 1.发送程序:将片内RAM 50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶

29、校验。,MAINT:MOV SCON,#80H;串行口初始化MOV PCON,#80H;波特率SETBEASETBES;开串行口中断MOV R0,#50H;设数据指针MOV R7,#10H;数据长度LOOP:MOV A,R0;取一个字符MOV C,P;加奇偶校验MOV TB8,CMOV SBUF,A;启动一次发送HERE:SJMPHERE;CPU执行其它任务,ORG 0023H;串行口中断入口AJMP TRANI,TRANI:PUSH A;保护现场PUSH PSWCLR TI;清发送结束标志DJNZ R7,NEXT;是否发送完?CLR ES;发送完,关闭串行口中断SJMP TENDNEXT:I

30、NC R0;未发送完,修改指针MOV A,R0;取下一个字符MOV C,P;加奇偶校验MOV TB8,CMOV SBUF,A;发送一个字符POP PSW;恢复现场POP ATEND:RETI;中断返回,2.接收程序:串行输入16个字符,存入片内RAM的50H起始单元,串行口波特率为2400(设晶振为11.0592MHz),。,RECS:MOV SCON,#50H;串行口方式1允许接收MOV TMOD,#20H;T1方式2定时MOV TL1,#0F4H;写入T1时间常数MOV TH1,#0F4HSETB TR1;启动T1MOV R0,#50H;设数据指针MOV R7,#10H;接收数据长度 WA

31、IT:JBC RI,NEXT;等待串行口接收SJMP WAITNEXT:MOV A,SBUF;读取接收字符MOV R0,A;保存一个字符INC R0;修改指针DJNZ R7,WAIT;全部字符接收完?RET,3.接收程序:串行输入16个字符,进行奇偶校验。,RECS:MOV SCON,#0D0H;串行口方式3允许接收MOV TMOD,#20H;T1方式2定时MOV TL1,#0F4H;写入T1时间常数MOV TH1,#0F4HSETB TR1;启动T1MOV R0,#50H;设数据指针MOV R7,#10H;接收数据长度 WAIT:JBC RI,NEXT;等待串行口接收SJMP WAITNEXT:MOV A,SBUF;取一个接收字符JNB P,COMP;奇偶校验JNB RB8,ERR;PRB8,数据出错SJMP RIGHT;P=RB8,数据正确COMP:JB RB8,ERRRIGHT:MOV R0,A;保存一个字符INC R0;修改指针DJNZ R7,WAIT;全部字符接收完?CLR F0;F0=0,接收数据全部正确RETERR:SETB F0;F0=1,接收数据出错RET,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号