为啥要有这个芯片呢,这个芯片能够做些什么呢,我们先举几个例子来解释白8523的浸染,如下几张图:
如右下角的214天这个韶光的产生

看了上面的几张图和;例子,至少我们可以知道8253芯片与韶光有关系,比如:系统基准定时、动态存储器的刷新定时、扬声器腔调及磁盘驱动的定时等,为了支持这些功能,硬件上有了8253,软件上有了定时/计数系统。
一:8253内部构造1.理解一款芯片,先从构造入手:计数器:8253紧张功能的完成者,其他的部件为它打赞助。8253有3个计数器通道,计数器0,计数器1.计数器2,每个计数器都由16位锁存寄存器和一个16位减1寄存器组成。每个计数器有3根旗子暗记线,分别是两根输入旗子暗记,即时钟旗子暗记CLK,门掌握旗子暗记GATE旗子暗记,一根输出旗子暗记OUT。送入每个计数器的初值经锁存器传送给减1寄存器,当每个计数器从时钟输入端吸收时钟脉冲或事宜计数脉冲时,计数器就实行减1操作,直至减到0,然后由输出端OUT产生一个输出旗子暗记或电平。数据总线缓冲器:它是8253与CPU之间的数据接口,CPU通过数据总线缓冲器将初始值给计数器,把掌握字写入8253掌握寄存器中。读/写逻辑:这个好理解,来吸收CPU的掌握旗子暗记,包括读、写旗子暗记和地址旗子暗记,实现对8253各计数器和掌握器的读写操作。掌握寄存器:每个计数器都有一个相应的掌握寄存器,用于吸收CPU送来的掌握字,(掌握字:首先这个玩意有一个字这么长,其次这个字中包含了许多的信息:比如计数器的事情办法、计数形成及输出办法等。以下表格中内容仅不雅观理解利用,纯纯的舶来品【哈哈哈,干活太多随意马虎噎到,就着水喝,知识更随意马虎消化】
我们这里用一个实例将抽象的观点变得详细一些:我们用定时煲饭的例子来解释8253各部件都做了些什么:
演员:人--->CPU ,电饭煲 --->8255芯片
我们用电饭煲煲饭,首先须要明确的是:煲饭还是煲汤,然后给电饭煲进行设置,比如:来日诰日早上想喝一碗入口留喷鼻香的xxx粥,但是又不想起的太早去做,以是我们想到了定时功能,入睡前(此时是22:00)将食材放入电饭煲中;
站在我们人的角度看:煲粥用时1小时,来日诰日早上6.00起,以是要让电饭煲5点起来事情;
站在电饭煲的角度看:电饭煲须要在7个小时后启动,进行煲粥的事情,(把稳:这里不是煲饭)
那电饭煲是不是要记住两件事,一件是7小时后,一件是煲粥,以是数据总线缓冲器记录了韶光,7小时换算成秒,每过1秒就减1,直到减到0,ok,通过输出端OUT发送一条启动电饭煲的命令,掌握寄存器:记录着煲粥事情这个任务,等电饭煲启动后,见告电饭煲实行煲粥操作,而不是煲饭。
我们连续说,煲粥,粥也有好几种粥哇(作者专门去了厨房看了一眼电饭煲),比如:腰果松仁粥,这种粥和其他粥比起来哀求便是一定要煮的软一些,以是在见告电饭煲启动的命令中就包含了一些信息,通过这些信息电饭煲就就知道了该怎么事情了(这些信息很主要,比如:用煮腰果的温度煮绿豆,那不都煮成泥了吗,反之,用煮绿豆的温度,煮腰果,那能煮软?)
我们在来说一下上面,赤色的部分:这里提到,每过1秒就减1,那么这个1秒怎么知道的呢?这就涉及到了时钟输入端(CLK),如下图,CLK波形,假设赤色区域一个周期代表1秒,so,8253便是通过(CLK时钟旗子暗记)这么数来确定韶光的。
其次,8253中有3个计数器,它们除了名字不一样,其他都一样,我们上面说过8253干活的是计数器,其他得到部件是打赞助的,那么详细让哪个计数器干活呢,以是CPU发送的掌握字中除了包含定多永劫光还有计数器的选择(也便是说见告电饭煲要怎么煮粥,大火还是小火)
2.8253的办法掌握字
上面我们对8253芯片大概做什么,大概怎么去做,大略先容了一些,个中提到了掌握字这个玩意,这个掌握字我们可以理解成一个四字词语,短短四个字,字字有含义,须要很多字来说的话用四个字就能完美的表达真意。以是我们在这里的掌握字,也是有很多含义,每个数字都代表了一段信息,如:掌握器的选择、读写格式、事情办法选择、数值选择;
在说掌握字之前,先来说一说8253的引脚及其功能,CPU发送的掌握字通过数据总线缓冲器来吸收,
数据总线缓冲器占用了D0-D7引脚,也便是说CPU发送的掌握字通过D0-D7引脚进入8253煲汤还是煲粥,也须要被奉告,所CPU通过A0、A1引脚来选择计数器或掌握寄存器#CS:片选旗子暗记#RD(输入):与A0、A1和#CS旗子暗记合营读取指定计数器确当前值,常日与系统总线的#IOR旗子暗记连接#WR(输出):与A0、A1和#CS旗子暗记合营给指定的计数器写入掌握字或设定初始值,常日与系统总线的#IOW旗子暗记连接。CKL0-2(输入):每个计数器的韶光脉冲输入端,CLK时钟旗子暗记用于掌握计数器的减1操作。CLK最高频率可达5MHZ。CATE0-2(输入):门控旗子暗记输入端,即计数器的掌握输入旗子暗记,用来掌握计数器事情或者复位OUT0-2:(输出):计数器输出旗子暗记,当相应的计数器值减到0时,该段输出标志旗子暗记,在不同的事情办法下,OUT的输出波形不同。引脚说完了,进入该节点的正题吧,如下图所示:
3.8253的6种事情办法这六种的事情办法的差异在于:它们启动计数器进行计数的触发办法不同,计数过程中,门控旗子暗记GATE对计数操作的影响不同,计数结束后OUT输出线上的输出波形不同。事情过程中须要两个写脉冲,第一个脉冲写入掌握字,第二个脉冲写入计数初值,个中最大计数初值为0,由于它事情过程是自减过程。每个计数器的掌握命令字均送入掌握寄存器各计数器的计数初值送到该计数器的计数寄存器及初值寄存器。办法0软件启动,不自动重复计数计数结束输出高电平其输出旗子暗记可用于外部可屏蔽中断要求旗子暗记办法1硬件启动,不自动重复计数计数开始输出低电平,结束后在变高办法2软硬件启动,自动重复计数计数到末了一个脉冲时输出低电平办法3软硬件启动,自动重复计数输出对称波形办法4软件启动,不自动重复计数计数结束输出一个CLK宽度的低电平办法5硬件启动,不自动重复计数波形与办法4相同4.频率与周期的关系上面涉及到了波形,那么肯定会涉及到周期,提到周期,就和频率有关了,频率的单位是Hz、KHz、MHz、GHz,频率的倒数便是周期,以是:
1Hz = 1s
1KHz = 1ms(毫秒)
1MHz =1um(微秒)
1GHz=1ns(纳秒)
利用8253的计数器通道2产生频率为10000Hz的方波,设计数时钟脉冲的频率是10000Hz。则其初始化的过程为:MOV AL 10110110B //先通报掌握字,利用计数器2,所以是10//其次是先写低位再写高位,所以是11//提到方波,所以是办法3 011//末了采取二进制,所以是0OUT COTR,AL //将掌握字写入掌握寄存器MOV AX,1 //由于哀求是产生10000Hz的方波,而时钟脉冲恰好是10000Hz,以是这里的计数初始值为1OUT CTN2,AL //先写计数初值低字节MOV AL,AHOUT CTR2,AL //再写计数初值高字节这个高低字节没看懂的话,再看第二个例题
若选择通道0,事情在办法1,计数初值为2350H,按十进制计数,并设计8253端口地址为40H~43H,则其初始化过程为:MOV AL,33H;掌握字:计数器0,先低位后高位,办法1,十进制OUT 43H,AL;写入掌握字到8253的掌握寄存器中MOV AL,50H;OUT 40H,AL;计数初值低字节MOV AL,23H;OUT 40H,AL;计数初值高字节










