您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 第12章定时计数控制接口.
第12章定时计数控制接口12.1定时/计数概述12.2定时/计数器82538253的外部特性8253的内部结构8253的编程命令8253的工作方式8253的应用举例12.1定时/计数概述计算机的许多应用都与时间有关,例如实时时钟、定时中断、定时检测、定时扫描等。外部事件发生次数达到规定值后产生中断,以及统计外部事件发生的次数等定时器和计数器定时控制在微机系统中极为重要定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器定时功能的实现方法软件延时——利用微处理器执行一个延时程序段实现不可编程的硬件定时——采用分频器、单稳电路或简易定时电路控制定时时间可编程的硬件定时——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路8253定时/计数器的应用对8253定时/计数器进行使其完成我们需要的计数功能定时功能软件设计硬件设计12.28253定时/计数器3个独立的16位计数器通道每个计数器有6种工作方式按二进制或十进制(BCD码)计数减法计数12.2.1定时/计数器8253的外部特性12.2.28253的内部结构D7~D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2计数器结构示意图计数初值寄存器GATECLKOUT减1计数器当前计数值锁存器1、计数器的3个引脚CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号12.2.38253的编程8253加电后的工作方式不确定8253必须初始化编程,才能正常工作写入控制字写入计数初值读取当前计数值1方式控制字的数据格式D7D6D5D4D3D2D1D0SC1SC0RW1RW0M2M1M0BCD00:计数器001:计数器110:计数器211:不用00:表示计数器锁存命令01:仅读/写一个低8位字节10:仅读/写一个高8位字节。11:读/写两个字节,先读/写低8位字节,后读/写高8位字节。000:方式0;×11:方式3001:方式1;100:方式4×10:方式2;101:方式50:二进制计数;1:BCD码计数2写入计数值选择二进制时计数值范围:0000H~FFFFH0000H是最大值,代表65536选择十进制(BCD码)计数值范围:0000~99990000代表最大值100003.8253的读写操作(1)写操作——计数通道的初始化【例12.1】选择2号计数器,工作在方式3,计数初值为566H(2个字节),采用二进制计数。因此,方式控制字为10110110B=0B6H,其初始化程序段为:MOVDX,307H;8253控制口MOVAL,0B6H;2号计数器的初始化命令字OUTDX,AL;写入控制字寄存器MOVDX,306H;2号计数器数据端口MOVAX,566H;计数初值OUTDX,AL;先送低字节MOVAL,AH;取高字节到ALOUTDX,AL;后送高字节(2)读操作——读当前计数值用IN指令可读出所选通道计数器的计数值。16位的计数值在读出时,可先读出低字节,再读出高字节,但必须将高、低字节全部读出后,才能对计数器进行其它操作。12.2.48253/8254的工作方式8253有6种工作方式,由方式控制字确定熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式每种工作方式的过程类似:⑴设定工作方式⑵设定计数初值〔⑶硬件启动〕⑷计数初值进入减1计数器⑸每输入一个时钟计数器减1的计数过程⑹计数过程结束方式0:计数结束中断①②⑤④⑥GATEOUTCLK031244方式0WR①设定工作方式②设定计数初值④计数值送入计数器⑤计数过程⑥计数结束43210FFOUTGATE=1CLKWRCW=10LSB=4方式1:可编程单稳脉冲二.8253-PIT的工作方式3230FFOUTGATECLKWRCW=12LSB=31方式2:频率发生器(分频器)321OUTGATE=1CLKWRCW=14LSB=33213方式3:方波发生器424OUTGATE=1CLKWRCW=16LSB=424242方式4:软件触发选通信号321OUTGATE=1CLKWRCW=18LSB=30FFFEFD方式5:硬件触发选通信号321OUTGATECLKWRCW=1ALSB=30FF3各种工作方式的输出波形方式0方式1方式2方式3方式4方式50N0N0N0/N110NN/2N/20/N0N01N01N01讨论:计数开始的时刻12.2.58253应用举例1.8253定时功能的应用例子用8253定时功能可产生各种定时波形。【例12.1】如果8253芯片可利用8088的外设接口地址310H~313H,如果已知加到8253上的时钟信号为2MHz,若利用计数器0、1、2分别产生周期为100μs的对称方波以及每1s和10s产生一个负脉冲,试说明8253如何连接并编写包括初始化在内的程序。例12.1题图一、硬件设计8253A8088310H~313H译码器CSD7~D0D7~D0D7~D0A9~A0A1A1A0A0GATE2OUT2+5V+5V2MHzGATE1+5V100μsOUT11s10sGATE0OUT0CLK1CLK0CLK2RDRDWRWRM/IO10000Hz1Hz二、软件设计1、确定工作方式2、计算计数初值:计数初值N=分频系数=fclk/fout3、确定工作方式控制字4、写出初始化程序1)、写入计数器的控制字2)、写入计数初值。8253初始化编程的注意事项控制字写入控制字I/O地址(A1A0=11)计数值写入计数器各自的I/O地址:计数器0:A1A0=00计数器1:A1A0=01计数器2:A1A0=10;初始化计数器0MOVDX,313H;控制端口地址MOVAL,00010110B;通道0控制字,只写低字节,方式3,二进制计数OUTDX,AL;写入方式字MOVAL,200MOVDX,310HOUTDX,AL;写入计数初值;初始化计数器1MOVDX,313HMOVAL,01110100BOUTDX,AL;通道1控制字,先写低字节,后写高字节,方式2,二进制计数MOVDX,311HMOVAX,10000;通道1赋计数初值10000OUTDX,AL;先写低字节MOVAL,AHOUTDX,AL;写高字节;初始化计数器3MOVDX,313HMOVAL,10010100BOUTDX,AL;通道1控制字,只写低字节,方式2,二进制计数MOVDX,312HMOVAL,10OUTDX,AL;通道2赋计数初值102.8253计数功能的应用例子8253可以用于各种需要进行计数的场合。【例12.2】某产品的包装流水线中,一个包装箱能装24罐饮料。试利用一片8253来完成流水线控制中的计数功能,假设8253的端口地址为8CH~8FH。8253A80888CH~8FH译码器CSD7~D0D7~D0D7~D0A9~A0A1A1A0A0+5VGATE1OUT1CLK1RDRDWRWRM/IO饮料罐信号作为中断请求信号去8259A或者用于控制其它设备例12.2题图一、硬件设计二、软件设计假设选择计数通道1工作在方式2,计数初值23选二进制计数;计数通道1初始化程序MOVAL,01010100BOUT8FH,ALMOVAL,23OUT8DH,AL为什么是23而不是24?方式2频率发生器(分频器)03124GATEOUTCLK4方式2031240312403124WR注意计数开始的时刻在此计数初值由初值寄存器进入减1计数器3.8253计数、定时功能综合应用的例子【例12.3】包装流水线控制某产品的包装流水线中,一个包装箱能装24罐饮料。装箱时希望流水线上每通过24罐饮料,流水线要停4秒以等待包装箱封口,然后继续通过下一箱的24罐。流水线就是这样周而复始的运作。试利用一片8253来完成流水线控制中的定时和计数功能。假设8253的端口地址为8CH~8FH,采用的时钟频率是2KHz。思路:用8253的计数通道1作为计数器,用于24个罐的计数;计数通道2作为定时器,定时为4S。当计数通道1的OUT脚出现0到1的跳变的时候,将启动计数通道2开始定时,而计数通道2定时阶段将控制计数通道1停止计数,只有其定时结束并停止定时阶段才可再次启动计数通道1开始计数。分析:计数通道:需要软件触发,重复计数,因此选择方式2、3皆可。定时通道:需要上升沿触发(可重触发),并且定时未到时需要输出信号OUT的值不变(用此信号控制流水线停止、计数器停止),因此选择方式1计数通道1工作在方式2,计数初值23计数通道2工作在方式1,计数初值8000CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D0~D7A1A0RDWRCS饮料罐信号fCLK控制流水线停止和运行的信号例12.3题简图;初始化程序;计数通道1初始化MOVAL,01010100BOUT8FH,ALMOVAL,23OUT8DH,AL;初始化计数通道2MOVAL,10110010BOUT8FH,ALMOVAX,8000OUT8EH,ALMOVAL,AHOUT8EH,AL4、8253在IBMPC系列机上的应用A0A1———A0—A1—D0~D7D0~D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2DQCLK+5V接至DMA控制器接至扬声器驱动器PB0PB1IRQ0DRQ08253+5V1.19318MHzDACK0BRDIORIOWRDWRCST/CCS计数器0:定时中断计数器0:方式3,计数值:65536,输出频率为1.19318MHz÷65536=18.206Hz的方波门控为常启状态,这个方波信号不断产生OUT0端接8259A的IRQ0,用作中断请求信号每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能计数器0:定时中断对8253的计数器0进行初始化的程序为:MOVAL,36HOUT43H,AL;写控制字MOVAL,0;计数初值为65536OUT40H,AL;写入初值低位OUT40H,AL;写入初值高位计数器1:动态RAM刷新定时器需要重复不断提出刷新请求门控总为高,选择方式2或32ms内刷新128次,即15.6s刷新一次计数初值为18计数器1:动态RAM刷新定时器初始化程序:MOVAL,54HOUT43H,AL;写控制字MOVAL,18;计数初值为18OUT41H,AL;对应15.09μs计数器2:扬声器音调控制计数器2的输出控制扬声器的发声音调计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声扬声器还受控于并行接口(8255芯片)必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音例12.4【例12.4】如图12-2-11所示利用定时/计数器8253发600Hz的声音。按任意键,开始发声,按【ESC】键,停止发声。分析:计数初值的确定。N=1.19318MHz/600HZ=1989例12.4CODESEGMENTASSUMECS:CODESTART:;关闭扬声器INAL,61H;取8255PB端口原输出值ANDAL,0FCH;置PB0和PB1为零,关闭GATE2和与门OUT61H,AL;初
本文标题:第12章定时计数控制接口.
链接地址:https://www.777doc.com/doc-2153300 .html