一、内部结构可预置初值计数器OUT输出计数脉冲计数初值8253定时/计数器的工作原理定时/计数器的核心部件为可预置初值计数器。预置初值后开始计数,CLK信号每输入一个脉冲,计数值减1,一直减到0,并且OUT脚同时产生相应输出信号,该信号可用作中断请求。要注意定时器的容量即位数CLK输入GATE门控信号说明:1、每个计数器各有三根I/O线CLK:时钟信号输入OUT:计数器输出GATE:门控信号,用于启动或允许计数器工作2、通过对控制寄存器写操作,来设置工作方式。3、有A1A0两条地址线,在PC机中的端口地址是40H~43H。A1A0端口定义0040H0#计数器0141H1#计数器1042H2#计数器1143H控制寄存器二、工作方式举例:方式0可预置初值计数器OUT输出计数脉冲设计数初值为4CLK输入GATE门控信号WRGATECLKOUT计数值变化:43210写入控制字写入计数初值方式0的工作特点是软件写入计数器启动计数,输出为一定宽度的低电平脉宽二、工作方式举例:方式1可预置初值计数器OUT输出计数脉冲设计数初值为4CLK输入GATE门控信号WRGATECLKOUT计数值变化:443210写入控制字写入计数初值方式1的工作特点是硬件GATE脚边沿启动计数,输出为一定宽度的低电平脉宽二、工作方式举例:方式2可预置初值计数器OUT输出计数脉冲设计数初值为3CLK输入GATE门控信号WRGATECLKOUT计数值变化:321321321写入控制字写入计数初值方式2的工作特点是软件写入计数器启动计数,输出为持续不断的周期信号二、工作方式8253有六种工作方式,在输出波形和启动方式上略有区别。工作方式输出波形的比较计数值方式0方式1方式2方式3方式4方式5每次设置N0只设一次N0N0只设一次N0/N110每次设置N0只设一次N0N0启动点启动点启动点启动点启动点启动点只设一次NN/2N/2NN方式0软件触发禁止——允许工作方式启动方式门控信号01正跳变方式1硬件触发——启动——方式2软件触发/硬件触发禁止启动允许方式3软件触发/硬件触发禁止启动允许方式4软件触发禁止——允许方式5硬件触发——启动——启动方式的比较:三、设置工作方式和计数值对8253设置工作方式和设置计数值是连续进行的。步骤是:1、对控制端口写:设置工作方式及计数值格式2、对计数端口写:计数值低8位(可选)3、对计数端口写:计数值高8位(可选)控制字格式:SC1SC0:选择计数器(0#,1#,2#)M2M1M0:设置工作方式(0~5)RL1RL0设置计数值格式00当前计数值锁存到输出缓冲器01写/读计数值的低8位10写/读计数值的高8位11写/读计数值的16位(先低8位,后高8位)BCD:表示计数值是二进制还是BCD码表示的十进制。=1BCD码表示的十进制=0二进制如果是BCD码计数则范围是:0000~9999二进制计数则范围是:0000H~0FFFFH(0~65535)D7D6D5D4D3D2D1D0SC1RL1M1M0M2BCDSC0RL082538088AD7|AD0/WR/RD/CSCLK0A1OUT0A0GATE0D7|D0/WR/RD译码00000100000000xxBA1A010HZ频率发生器+5V5定时计数器043210使用8253控制发光二极管点亮5秒+5V程序段如下MOVAL,00110000BOUT43H,AL;写控制字MOVAL,50OUT40H,AL;写计数初值低8位MOVAL,0OUT40H,AL;写计数初值低8位HLT四、在PC机中的应用在PC机中使用1片8253。三个计数器的CLK端输入PCLK的二分频信号14.31818MHz/3/2/2=1.1931816MHz0#计数器用于定时中断(方式3,初值0)MOVAL,00110110BOUT43H,ALMOVAL,0OUT40H,ALOUT40H,AL8253.OUT0连接到8259.IR0,每隔55ms产生一次定时中断,中断服务程序将0046CH~0046FH中的双字类型数据每次加1。GATE0接高电平,总是允许工作1.19MHz/65536=18.2Hz55ms/次有关系统时钟的话题1、通常有三种方法获取系统的时钟(1)RTC时钟(2)BIOS时钟(3)操作系统时钟2、什么是CMOS和RTCCMOS通常为64-128字节的RAM,內部存放著电脑的硬件配置信息。例如:软硬驱型号、RAM大小等。RTC(Real-timeClock)实时时钟电路。通常和CMOS集成在同一芯片中,在系统关机时由电池供电工作。3、CMOS中和时间有关的字节CMOS中前14个字节提供给RTC使用的(包括年份的后两位数),而第50个字节則是存放世纪(年份的前两位数)这是IBM公司在设计PC机时制定的标准。4、BIOS时钟和RTC时钟的切换系统开机后,从CMOS中获得RTC的当前时间,然后由8253产生BIOS时钟。在操作系统中设置日期和时间时,自动存入CMOS作为RTC的当前时间。系统关机后,RTC由电池供电继续工作。5、对CMOS中数据的操作在PC-AT以后的计算机中,都安装CMOS。端口地址的分配电路也重新作了调整,70H和71H端口分配CMOS电路。70H端口是控制口,71H端口是数据口。操作时序是:(1)先写控制口,确定对某个字节操作(2)再对数据口进行读写操作例:读取CMOS中50H的数据MOVAL,50HOUT70H,ALINAL,71H1#计数器用于DRAM刷新时钟(方式2,初值0012H)MOVAL,01010100BOUT43H,ALMOVAL,12HOUT41H,AL8253.OUT1连接8237.DREQ0,定时刷新DRAM。2#计数器为扬声器提供震荡频率(方式3,初值533H)BEEP:MOVAL,10110110BOUT43H,ALMOVAX,533HGATE1接高电平,总是允许工作1.19MHz/12H=66288Hz15.08s/次OUT42H,ALMOVAL,AHOUT42H,AL打开PB1PB0延时关闭PB1PB0RETGATE2由8255A.PB0控制1.19MHz/533H=900Hz方波如果需要自定义频率值为263,则可以:MOVDX,12HMOVAX,3480HMOVSI,263DIVSI;在AX中就得到了计数值音阶和频率的对应关系:音符12345671频率262294330347392440523524音符12345671频率5245886606987848809881048五、应用实例用8253产生A/D转换器的启动控制信号。8253OUT0GATE0CLK0OUT1GATE1CLK1OUT2GATE2CLK2启动转换时钟源频率F+5V计数值MNL说明:计数器模式计数值0#2M1#1N2#3L计数器1和2串连工作,门控信号由开关提供CLK2=FOUT2=F/LCLK1=OUT2=F/LOUT1=F/(L*N)T=(L*N)/F计数器0的门控信号由OUT1提供,时间是(L*N)/FCLK0=FOUT0=F/M输出负脉冲,经过反相后变成正脉冲,启动A/D转换器。采样时间=L*N/F采样频率=F/M如果F=10KHz,要求采样时间5秒,采样频率100Hz,则M=F/100=100N*L=5*10K=50K,选N=50,L=1000(假设端口地址是0C0H~0C3H)程序如下:MOVAL,00010100BMOVAL,10110111BOUT0C3H,ALOUT0C3H,ALMOVAL,100MOVAX,1000HOUT0C0H,ALOUT0C2H,ALMOVAL,01010010BMOVAL,AHOUT0C3H,ALOUT0C2H,ALMOVAL,50OUT0C1H,AL0#1#2#BCD码计数