1第六章常用的接口芯片及其应用6.1I/O接口概述6.2简单接口6.3总线控制器8288及总线裁决器82896.4可编程并行接口82556.5可编程定时器82536.6可编程串行接口82516.7中断控制接口6.8A/D及D/A变换器接口6.9DMA控制器8237沈阳航空工业学院26.5可编程定时器8253教学重点8253的引脚和6种工作方式8253的编程8253在IBMPC系列机上的应用沈阳航空工业学院3定时器和计数器定时控制在微机系统中极为重要定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器沈阳航空工业学院4定时功能的实现方法软件延时——利用微处理器执行一个延时程序段实现不可编程的硬件定时——采用分频器、单稳电路或简易定时电路控制定时时间可编程的硬件定时——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路沈阳航空工业学院58253/8254定时计数器3个独立的16位计数器通道每个计数器有6种工作方式按二进制或十进制(BCD码)计数8254是8253的改进型沈阳航空工业学院66.5.18253/8254的内部结构和引脚D7~D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2沈阳航空工业学院7计数器结构示意图预置寄存器GATECLKOUT减1计数器输出锁存器计数初值存于预置寄存器;在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值沈阳航空工业学院8计数器的3个引脚CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号沈阳航空工业学院92.与处理器接口D0~D7数据线A0~A1地址线RD*读信号WR*写信号CS*片选信号CS*A1A0I/O地址读操作RD*写操作WR*00000101001140H41H42H43H读计数器0读计数器1读计数器2无操作写计数器0写计数器1写计数器2写控制字沈阳航空工业学院106.5.28253/8254的工作方式8253有6种工作方式,由方式控制字确定熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式每种工作方式的过程类似:⑴设定工作方式⑵设定计数初值⑶硬件启动⑷计数初值进入减1计数器⑸每输入一个时钟计数器减1的计数过程⑹计数过程结束沈阳航空工业学院11方式0计数结束中断①②⑤④⑥GATEOUTCLK031244方式0WR①设定工作方式②设定计数初值④计数值送入计数器⑤计数过程⑥计数结束沈阳航空工业学院12方式1可编程单稳脉冲①②⑤④⑥①设定工作方式②设定计数初值③③硬件启动④计数值送入计数器⑤计数过程⑥计数结束GATEOUTCLK031244方式1WR沈阳航空工业学院13方式2频率发生器(分频器)03124GATEOUTCLK4方式2031240312403124WR沈阳航空工业学院14方式3方波发生器03124GATEOUTCLK4方式3031240312403124WR沈阳航空工业学院15方式4软件触发选通信号GATEOUTCLK031244方式42233310WR沈阳航空工业学院16方式5硬件触发选通信号GATEOUTCLK031244方式522333110WR沈阳航空工业学院17各种工作方式的输出波形方式0方式1方式2方式3方式4方式50N0N0N0/N110NN/2N/20/N0N01N01N01讨论:计数开始的时刻沈阳航空工业学院18计数开始的时刻需要注意:处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。从第二个CLK信号的下降沿,计数器才真正开始减1计数。实验:计数开始的时刻沈阳航空工业学院19实验1计数开始实验1计数开始计数开始沈阳航空工业学院20实验2计数开始沈阳航空工业学院21问题讨论通过本例,请大家思考理论(原理)与实践(工程)的关系体会教学实践环节(上机、实验)的重要性同时,还请大家注意大学的常规教学侧重理论(原理)的掌握大家需要加强实践(实验)、积累实际经验你还能提供这样的实例吗?沈阳航空工业学院226.5.38253/8254的编程8253加电后的工作方式不确定8253必须初始化编程,才能正常工作写入控制字写入计数初值读取计数值8254新增读回命令D7D6D5D4D3D2D1D0沈阳航空工业学院231写入方式控制字计数器读写格式工作方式数制D7D6D5D4D3D2D1D000计数器001计数器110计数器211非法00计数器锁存命令01只读写低字节10只读写高字节11先读写低字节后读写高字节000方式0001方式1010方式2011方式3100方式4101方式50二进制1十进制控制字写入控制字I/O地址(A1A0=11)示例沈阳航空工业学院242写入计数值选择二进制时计数值范围:0000H~FFFFH0000H是最大值,代表65536选择十进制(BCD码)计数值范围:0000~99990000代表最大值10000计数值写入计数器各自的I/O地址示例沈阳航空工业学院253读取计数值对8位数据线,读取16位计数值需分两次计数在不断进行,应该将当前计数值先行锁存,然后读取:向控制字I/O地址:给8253写入锁存命令从计数器I/O地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制沈阳航空工业学院266.5.38253在IBMPC系列机上的应用A0A1———A0—A1—D0~D7D0~D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2DQCLK+5V接至DMA控制器接至扬声器驱动器PB0PB1IRQ0DRQ08253+5V1.19318MHzDACK0BRDIORIOWRDWRCST/CCS沈阳航空工业学院27一、定时中断和定时刷新从阅读初始化程序段看计数器0作为定时中断的作用将计数器1作为定时刷新看如何编写初始化程序段沈阳航空工业学院28定时中断moval,36h;计数器0为方式3,采用二进制计数,;先低后高写入计数值out43h,al;写入方式控制字moval,0;计数值为0out40h,al;写入低字节计数值out40h,al;写入高字节计数值8253初始化沈阳航空工业学院29计数器0:定时中断计数器0:方式3,计数值:65536,输出频率为1.19318MHz÷65536=18.206Hz的方波门控为常启状态,这个方波信号不断产生OUT0端接8259A的IRQ0,用作中断请求信号每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能沈阳航空工业学院30计数器1:定时刷新需要重复不断提出刷新请求门控总为高,选择方式2或32ms内刷新128次,即15.6s刷新一次计数初值为18沈阳航空工业学院31定时刷新moval,54h;计数器1为方式2,采用二进制计数,只写低8位计数值out43h,al;写入方式控制字moval,18;计数初值为18out41h,al;写入计数值8253初始化沈阳航空工业学院32二、扬声器控制计数器2的输出控制扬声器的发声音调计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声扬声器还受控于并行接口(8255芯片)必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音沈阳航空工业学院33频率设置speakerprocpushaxmoval,0b6hout43h,al;写入控制字popaxout42h,al;写入低8位计数值moval,ahout42h,al;写入高8位计数值retspeakerendp扬声器控制沈阳航空工业学院34扬声器开speakonprocpushaxinal,61horal,03h;D1D0=PB1PB0=11B,其他位不变out61h,alpopaxretspeakonendp扬声器控制沈阳航空工业学院35扬声器关speakoffprocpushaxinal,61handal,0fch;D1D0=PB1PB0=00B,其他位不变out61h,alpopaxretspeakoffendp扬声器控制沈阳航空工业学院36主程序;数据段freqdw1193180/600;代码段movax,freqcallspeaker;设置扬声器音调callspeakon;打开扬声器声音movah,1;等待按键int21hcallspeakoff;关闭扬声器声音扬声器控制沈阳航空工业学院379.2.3可编程硬件延时利用日时钟每隔55ms中断一次不变的特点,可以编写一段不随系统时钟频率变化的固定延时程序由于日时钟中断的时间单位是55ms,所以无法实现更短时间的延时这时只有利用实时时钟中断,不过它的最短延时约是1ms(976s)沈阳航空工业学院38日时钟;延时开始movah,0int1ahadddx,90;加5秒(5×18=90)movbx,dx;期望值送bxrepeat:int1ah;再读日时钟cmpbx,dx;与期望值比较jnerepeat;不等,则循环……;相等,延时结束可编程硬件延时沈阳航空工业学院39实时时钟;延时开始movcx,0movdx,1952;延时1.952ms=2×976smovah,86hint15h;功能调用返回时,定时时间到可编程硬件延时沈阳航空工业学院406.5.4扩充定时计数器的应用例题1利用扩充定时计数器对外部事件的计数例题2为A/D转换电路提供可编程的采样信号沈阳航空工业学院41例1A0A1———A0—A1外部事件产生源8253OUT0GATE0CLK0200~207HIRQD0~D7D0~D7译码电路AENA3~A9+5VCSIORIOWRDWR沈阳航空工业学院42初始化程序段movdx,203h;设置方式控制字moval,10houtdx,almovdx,200h;设置计数初值moval,64h;计数初值为100outdx,al输出:明确向哪个端口输出什么数据输入:清楚从哪个端口输入什么数据沈阳航空工业学院43例28253OUT0GATE0CLK0OUT1GATE1CLK1OUT2GATE2CLK2启动转换时钟源频率F+5V计数值MNLA0A1A1A2200H~207HCS沈阳航空工业学院44初始化计数器0moval,14hmovdx,206houtdx,almoval,cnt0movdx,200houtdx,almoval,52hmovdx,206houtdx,almoval,cnt1movdx,202houtdx,almoval,96hmovdx,206houtdx,almoval,cnt2movdx,204houtdx,al