微机接口第七章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

侯彦利吉林大学工学部计算机硬件基础课程微机原理与接口技术12可编程定时/计数器8253可编程并行接口8255A串行通讯基本概念第7章可编程接口芯片37.1定时/计数器8253芯片常用定时方法:1.软件定时:采用软件编程来实现定时和计数要求,通用灵活,但占用CPU时间;2.硬件定时:采用专用的硬件电路来实现。定时/计数器从计数方式上分为加法计数器和减法计数器。计数器启动后与CPU并行工作,不占CPU时间。4D0D7~数据总线缓冲器读/写逻辑控制寄存器计数器0计数器1计数器2片内总线RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2可编程定时器8253的内部结构图58253的功能:具有三个功能完全相同的独立的16位减法计数器;每个计数器都包括一个16位的初值寄存器、一个计数执行单元和一个输出锁存器;每个计数器的计数时钟频率最高为:2MHZ每个计数器可以按十进制数或二进制数预置初值;每个计数器有六种工作方式,可通过编程设定或改变;每个计数器的计数定时值,可由CPU随时读取;初值寄存器计数执行单元输出锁存器CLKGATEOUT6D0~D7:8位双向数据线;CS:芯片选择;RD、WR:读写控制信号;A1,A0:地址线;A1A0=00计数器0A1A0=01计数器1A1A0=10计数器2A1A0=11控制寄存器CLK:计数器的时钟信号输入端,最高计数频率2MHz;GATE:门控信号;控制计数器的启动和停止;OUT:计数器输出信号;8253的引线及功能78253的工作原理当置入初值后,计数执行单元开始对输入脉冲CLK进行减1计数,减到0时从OUT端输出一个信号;整个过程可以重复进行;初值寄存器计数执行单元输出锁存器CLKGATEOUT8计数器的启动的方法软启动:由程序指令启动。MOVAX,500OUT80H,ALMOVAL,AHOUT80H,AL如果GATE为高电平,就启动计数;硬件启动:由外部信号启动。写入初值后并不启动计数,门控信号GATE由低变高电平后,在CLK的下降沿开始计数;97.1.2计数器的工作方式8253一共有6种工作方式;在多数工作方式下,计数器每启动一次只工作一个周期;有两种工作方式可以进行自动重复计数;MOVAL,0B4HOUT43H,AL;控制字送入控制寄存器MOVAX,800OUT42H,AL;计数初值低8位送入计数器MOVAL,AHOUT42H,AL;计数初值高8位送入计数器10方式0:计数结束中断软件启动、不自动重复计数方式;计数结束后,OUT端输出为高电平,可以作为中断请求信号使用;1.只计数一个周期;2.在计数过程中GATE变为低电平,则暂停计数;3.在计数过程中,可以随时修改计数初值;WRCLKGATEOUTCWN=44321011注意,8253所有的6个工作方式都有下列共同点:⑴控制字写入计数器时,OUT端进入初始状态,不同的工作方式OUT端初始状态不一定相同。⑵计数初值写入计数器之后,暂存在初值寄存器中,要经过一个时钟周期的上升沿和下降沿,计数初值才进入计数执行单元,开始计数。⑶通常在每个时钟脉冲的上升沿,采样门控信号GATE。不同的工作方式下,门控信号的作用不同。⑷在时钟脉冲的下降沿,计数器减1。(5)计数初值也叫时间常数。12方式1:可重复触发的单稳态触发器硬件启动、不自动重复的工作方式;当写入控制字后,OUT端输出高电平。写入计数初值后计数器并不开始工作;当GATE端由低到高触发后,在下一个CLK脉冲的下降沿开始计数,OUT端立刻由高到低,计数结束后OUT端输出高电平;432101314方式1的特点:GATE的上升沿触发计数器,计数过程中GATE即使变低也不影响计数;可重复触发;OUT端的负脉冲宽度=计数初值N×TCLK计数器0CLKGATEOUT如果CLK=2MHz,则:fc=2MHzTc=1/fc=0.5x10-6,如果时间常数N=1000,则OUT端的负脉冲宽度=NxTc=1000x0.5x10-6=500us4321015方式2:频率发生器也叫分频器;可以软件启动,也可以硬件启动,计数器自动重复工作。在写入控制字和计数初值期间GATE一直为高电平,则在下一个CLK开始计数,既软启动;若写入计数初值时GATE为低电平,则要等到GATE由低到高时才启动,即硬件启动;一旦计数器启动,计数器可以自动重复工作;GATE为低,停止计数;WRCLKGATEOUTCWN=332132116写入控制字后,OUT为高电平。如果GATE为高,写入初值后开始减1计数。当计数值减到1时,OUT输出变为低电平,再经过一个CLK之后计数值减为0,OUT变为高电平,接着自动重新装入初值,计数器重复工作。WRCLKGATEOUTCWN=33213211718【例题7-2】设8253的端口地址为:40H~43H,用计数器2作频率发生器,二进制计数,输入脉冲信号为2M,计数初值为800,输出脉冲信号的频率是多少?控制字为:10110100B=0B4H输出脉冲信号的频率为:FOUT=FCLK/N=2X106/800=2500Hz19初始化程序:MOVAL,0B4HOUT43H,AL;控制字送入控制寄存器MOVAX,800OUT42H,AL;计数初值低8位送入计数器2MOVAL,AHOUT42H,AL;计数初值高8位送入计数器2,计数器启动。20可以软启动,也可以硬件启动,计数器自动重复工作;写入控制字后,OUT为高电平。如果GATE为高,写入初值后开始减1计数。当计数值减到N/2时,OUT输出变为低电平,直到计数值减为0;接着自动重新装入初值,OUT变为高电平,计数器自动重复工作。OUT输出对称方波:若计数初值为奇数,OUT输出非对称方波:GATE由高变低,停止计数。N/2(N+1)/2方式3-方波发生器21【例题7-3】设8253的端口地址为:FCF8H~FCFFH,利用计数器1作方波发生器,给定CLK1为2MHz,要求产生频率为1KHz的方波,BCD码计数。编程初始化8253。计数器1工作在方式3:01110111B分频系数:N=FCLK/FOUT=2×106/1000=200022程序设计如下:MOVDX,0FCFBHMOVAL,01110111B;OUTDX,ALMOVDX,0FCF9HMOVAX,2000H;BCD码计数初值OUTDX,AL;写入计数初值低字节MOVAL,AHOUTDX,AL;写入计数初值高字节,计数器启动23方式4:软件触发选通软件启动、不自动重复计数方式;写入控制字后,OUT为高电平,计数器装入初值后即启动计数,计数结束时OUT输出宽度为TCLK的负脉冲,如下:WRCLKGATEOUTCWN=443210GATE为低,停止计数。432124方式5:硬件触发选通硬件启动、不自动重复的工作方式。GATE的上升沿触发计数器;计数结束时,在OUT端输出一个脉冲宽度为TCLK的负脉冲信号:WRCLKGATEOUTCWN=543210GATE的上升沿,将重新计数。25SC1SC0RL1RL0M2M1M0BCD数制选择:0二进制1BCD码方式选择:000-方式0001-方式1X10-方式2X11-方式3100-方式4101-方式5计数初值长度选择:00-计数器中的数据锁存于缓冲器01-只读/写低8位,高8位默认为010-只读/写高8位,低8位默认为011-先读/写低8位后读/写高8位计数器选择:00-选计数器001-选计数器110-选计数器211-无效8253的控制字二进制计数范围:0000~65536H;初值=0000,为最大计数值十进制计数范围:0000~10000;初值=0000,为最大计数值;26例如:利用计数器1作频率发生器,给定CLK1为2MHz,要求产生频率为1KHz的脉冲。计数器1工作在方式2:0111X100B时间常数N=fc/fo=2×106/(1×103)=2000程序设计如下:MOVAL,01110100B;OUT83H,ALMOVAX,2000;先写入低字节计数值,OUT81H,ALMOVAL,AH;后写入高字节计数值OUT81H,AL…;OUT输出脉冲周期为1ms27例如:利用计数器2作脉冲发生器,给定CLK2为1MHz,要求产生周期为20ms的方波。计数器2工作在方式3:1011X110B计数初值N=fc/fo=1×106×20×10-3=20000=4E20H程序设计如下:MOVAL,10110110B;#2,方式3,二进制OUT83H,ALMOVAL,20H:先写入低字节计数值OUT82H,ALMOVAL,4EH;后写入高字节计数值OUT82H,AL…;OUT输出周期为20ms的方波288253与系统的连接D0D7~A1A0IORIOWD0D7~RDWRA1A08253GATE0GATE1GATE2OUT0OUT1OUT2CLK0CLK1CLK2CS&&≥1GG2AG2BCBAY0IOWIORA3A4A5A6A7A2A8A9A10A11A12A13A14A15系统总线信号74LS138297.1.38253的应用8253的初始化编程,主要设置两方面的内容,一是写入控制字,二是写入计数初值。控制字写入8253的控制寄存器。3个控制字可以连续写入控制寄存器。写入计数初值时注意两个问题:一是3个计数初值应写入相应的计数器中,不可混乱,二是要符合控制字的要求。30【例7-4】8253与计算机系统的连接如图所示,三个计数器使用情况如下:CNT0:对外部事件计数,计满100次向CPU发出中断请求。CNT1:产生1kHz方波。CNT2:标准定时,定时时间为1s。31送8259的IR0端中断请求信号GG2AG2BCBA74LS138&≥1D0—D7CSY7IOWA1A3A4A5A6A7A2A8A10A11A12A13A14A9A15A0IORA1A0D0—D7RDWR&8253GATE0GATE1+5VCLK0CLK1OUT0OUT1GATE2外部事件产生源CLK2OUT22MHz1KHz方波32计数器0应设置为方式0,完成计数功能。计数器1应设置为方式3,CLK1输入的时钟脉冲频率为2MHz,输出频率为1kHz的方波,周期为1ms;计数器1的计数初值为2000。计数器2设置为方式0,完成定时功能,定时1秒,利用OUT2向CPU发出一次中断请求,其输入时钟频率为1kHz,计数初值应为1000。8253的端口地址为01FC~01FFH。33START:MOVDX,01FFHMOVAL,10HOUTDX,AL;计数器0工作在方式0MOVDX,01FCHMOVAL,100OUTDX,AL;计数器0置初值MOVDX,01FFHMOVAL,76HOUTDX,AL;计数器1工作在方式3MOVDX,01FDHMOVAX,2000OUTDX,ALMOVAL,AHOUTDX,AL;计数器1置初值34MOVDX,01FFHMOVAL,0B0HOUTDX,AL;计数器2工作在方式0MOVDX,01FEHMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,AL;计数器2置初值35【例题7-6】在IBMPC/XT中定时器/计数器芯片8253,其计数器0(CNT0)工作在方式3,GATE0固定为高电平,OUT0作为中断请求信号接至8259A中断控制器的IRQ0,作为定时中断,用于时钟的时间基准。计数器1工作在方式2,GATE1固定为高电平,OUT1的输出作为定时(约15us)信号,用于刷新动态RAM,在2ms内可以有132次刷新(128次是系统的最低要求)。36计数器2工作在方式3,输出1KHZ的方波,作为扬声器的音频信号源,GATE2由8255的PB0控制,OUT2与8255的PB1相与,这样利用8255的PB0、PB1同时为高电平的时间来控制喇叭发长音还是发短音。三个计数器的输入时钟频率一样,为F=1.19MHZ3774LS138D0—D7CSIOWIORA1A0D0—D7RDWR8253GATE0GATE1+5VC

1 / 97
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功