微型计算机原理与接口技术第9章8255_第1页
微型计算机原理与接口技术第9章8255_第2页
微型计算机原理与接口技术第9章8255_第3页
微型计算机原理与接口技术第9章8255_第4页
微型计算机原理与接口技术第9章8255_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章可编程并行接口8255A8255A的简介8255A的外部引脚8255A的内部逻辑结构8255A的工作设定8255A的应用18255A的简介8255A是一种通用的可编程并行I/O接口芯片(PPI),通过对它进行编程,可以有不同的工作方式。通常不需要附加外部逻辑电路就可以直接为CPU与外设之间提供数据通道。28255A的外部引脚引脚名称信号名称D7~D0双向数据总线PA7~PA0PB7~PB0PC7~PC0A口双向数据线B口双向数据线C口双向数据线RESET复位信号,使所有内部寄存器清零CSA1A0片选信号,A1

和A0不同组合,可选不同端口RDWR读、写信号线38255A内部逻辑结构3个I/O端口A,B,C:每个都是8位并行端口,都可由程序选择作为输入或输出。A组和B组控制电路:A组包括A口和C口的上半部(PC7~PC4);B组包括B口和C口的下半部(PC3~PC0)。数据总线缓冲器:双向三态8位缓冲器,能直接与CPU数据总线对接。读/写控制电路:与地址总线中的A1,A0以及有关的控制信号RD,WR,RESET相连,用来管理内部和外部数据,状态或控制字的传送。48255A的端口寻址引脚寻址的端口CSA1A0000010011×0101×端口A端口B端口C控制字寄存器本芯片没有被选中58255A工作设计8255A的控制字方式控制字对C口按位置位/复位控制字8255A的方式选择6方式控制字D7D6D5D4D3D2D1D0方式标志位D7=100A口方式001A口方式11×A口方式20A口输出1A口输入0C口高四位输出1C口高四位输入0B口方式01B口方式10B口输出1B口输入0C口低四位输出1C口低四位输入7举例设8255A的控制字寄存器的端口地址为63H,若A口工作于方式1,B口工作于方式0,A口、B口和C口的高四位作输入,C口的低四位作输出,写出方式控制字,并写入8255A的控制字寄存器中。8对C口按位置位/复位控制字D7D6D5D4D3D2D1D0该类型控制字标志位D7=0任意值000选中PC0001选中PC1010选中PC2011选中PC3100选中PC4101选中PC5110选中PC6111选中PC70复位1置位9举例设8255A的口地址为60H~63H,PC5平时为低电平,要求从PC5引脚输出一个正脉冲。试编写程序段。108255A的方式选择方式0——基本输入/输出方式方式1——选通输入/输出方式,A口和B口作为数据的输入/输出端口,C口的高5位作为A口的联络信号,C口低3位作为B口联络信号。方式2——双向选通传送方式,只有通道A工作在这种方式,C口的高5位作为A口的联络信号。118255A方式08255A的每个口都作为基本的输入和输出口A口、B口、C口的高4位、C口的低4位都可独立设定为输入口和输出口;这样8255A在方式0时,各个端口的输入、输出可以有16种不同的组合128255A方式1通道A:包括一个8位数据端口(端口A),和一个5位的控制端口(端口C的高5位PC7~PC3)通道B:包括一个8位数据端口(端口B),和一个3位的控制端口(端口C的低3位PC2~PC0)138255A方式1输入C口各引脚定义通道C口各引脚定义APC7,6用作输入/输出信号,由方式控制字D3位设定PC5=IBF,端口A的输入缓冲器满信号PC4=STB,端口A的选通输入控制信号PC3=INTR,通道A发出的中断请求信号BPC2=STB,端口B的选通输入控制信号PC1=IBF,端口B的输入缓冲器满信号PC0=INTR,通道B发出的中断请求信号148255A方式1输入中断的允许与禁止通道号允许中断禁止中断APC4=1PC4=0BPC2=1PC2=0158255A方式1输出C口各引脚定义通道C口各引脚定义APC7=OBF,端口A输出缓冲器满信号PC6=ACK,端口A的响应输入信号PC5,4用作输入/输出信号,由方式控制字D3位设定PC3=INTR,通道A发出的中断请求信号BPC2=ACK,端口B的响应输入信号PC1=OBF,端口B输出缓冲器满信号PC0=INTR,通道B发出的中断请求信号168255A方式1输出中断的允许和禁止通道号允许中断禁止中断APC6=1PC6=0BPC2=1PC2=0178255A方式2该方式只能用于端口A,A口既能发送数据,又能接收数据C口的高5位PC7~PC3,用作A口的控制信息和状态信息端口B可以工作在方式0或方式1,既可以作为输入,也可以作为输出188255A方式2C口各引脚的定义PC7=OBF,输出,输出缓冲器满信号PC6=ACK,输入,由外设发来的对OBF的响应信号PC5=IBF,输出,输入缓冲器满信号PC4=STB,外设发来的选通信号PC3=INTR,输出,双向工作时,向CPU发出中断请求信号PC2~PC0:若B口工作在方式0,可作为基本输入/输出口;若B口工作在方式1,可作为控制信号和状态信号198255A方式2中断的允许和禁止通道号输入/输出允许中断禁止中断A输入输出PC4=1PC6=1PC4=0PC6=0208255A的应用用LED显示开关状态键盘接口8255A在PC/XT机中的应用PC/XT机中的扬声器发声程序设计接口七段数码管数字显示211、用LED显示开关状态逻辑电路图8255A端口地址的确定8255A工作方式设定程序代码22逻辑电路图写出8255A各端口的地址?238255A工作方式设定端口端口地址工作方式输入/输出A0F0H0输入B0F2H0输出24程序代码

MOVDX,0F6H MOVAL,10010000B OUTDX,ALNEXT: MOVDX,0F0H INAL,DX ;从A口读入开关状态

MOVDX,0F2H OUTDX,AL ;B口LED显示开关状态

JMPNEXT252、键盘接口按键开关的比较键盘接口电路8255A工作方式设定键盘扫描原理程序代码26按键开关的比较开关种类价格性能应用场合机械式便宜易产生抖动,手感好计算机键盘薄膜式便宜密封性好家电、医疗仪器电容式较贵无抖动,需要附加电路测电容的变化车间电器中霍尔效应式贵密封性好,寿命长,响应快精密仪器27键盘接口电路4×4键盘矩阵通过A口向某一行输出0,再通过B口低4位读取列值,如果有0值,则该行有键按下288255A工作方式设定端口端口地址工作方式输入/输出A0FF9H0输出B0FFBH0输入29键盘扫描原理所有键都释放了?有键按下?获取键盘扫描码否是是消除抖动初始化否有键按下?是否结束30获取键盘扫描码过程该行有键按下?是否扫描第0行该行有键按下?是否扫描第1行该行有键按下?是否扫描第2行该行有键按下?是否扫描第3行出错处理获取键盘扫描码31键盘扫描码的设置PB7PB6PB5PB4PB3PB2PB1PB0指示按键所在行有且仅有一位为0,哪一位为0表示哪一行有键按下指示按键所在列有且仅有一位为0,哪一位为0表示哪一列有键按下第0行第3行第0列第3列……如果按键位于第1行第2列,写出该键的扫描码。32键扫描码和键值的对应扫描码77H7BH7DH7EH0B7H0BBH0BDH0BEH键值01234567扫描码0D7H0DBH0DDH0DEH0E7H0EBH0EDH0EEH键值89ABCDEF某键的键值一般人为设定,本例中键扫描码和键值的对应关系如下表所示:33程序代码在数据段中设置键盘扫描码表8255初始化检查按键获取键盘扫描码34在数据段中设置键盘扫描码表DATASEGMENTTABLEDB77H,7BH,7DH,7EHDB0B7H,0BBH,0BDH,0BEHDB0D7H,0DBH,0DDH,0DEHDB0E7H,0EBH,0EDH,0EEHDATAENDS每个扫描码所在单元的偏移量即为该扫描码对应的键值。358255初始化代码MOVDX,0FFFHMOVAL,10000010BOUTDX,AL36检查按键的工作过程首先检查所有键是否都处于松开状态:通过A口向所有行送0,然后读取列值,即读取B口的低四位,如果全部为1,说明所有的键都松开了;如果至少有一位为0的话,说明至少有一个键仍然处于按下的状态,则等待。37检查按键的代码 MOVDX,0FF9H MOVAL,0 OUTDX,AL MOVDX,0FFBHWAIT1: INAL,DX ANDAL,0FH CMPAL,0FH JNEWAIT1WAIT2: INAL,DX ANDAL,0FH CMPAL,0FH JEWAIT2通过A口向所有行输出0从B口读取列值检查所有按键是否都松开了,如没有,则等待如果都松开了则等待按键38延时去抖动由于机械开关的按钮从开始到按下接触稳定,需要经过一段时间的抖动过程,这个过程一般持续20ms。用软件的方法解决抖动问题:在程序安排一定的延时MOVCX,COUNTLOOP$其中的COUNT的值与具体的CPU和主频有关39COUNT值的计算需要延时的时间(秒)CPU的时钟频率(Hz)LOOP指令执行时所需的时钟周期数8086CPU的时钟频率为5MHz,LOOP指令执行需要17个时钟周期数,如果要延时20毫秒,则COUNT值为5866,即16EAH40键盘扫描码的获取如果按键有效的话,这时可以读取键盘的扫描码。实质就是判断被按下的键的行号和列号采用逐行扫描的办法:先扫描第0行,即通过A口输出一个第0位为0其余位为1的数,在从B口读取列值,即B口的低四位,如果这四位均为1的话,说明第0行没有键按下,继续扫描第1行;如果这四位有且仅有一位为0的话,说明被按下的键就在第0行,然后从B口读取被按下的键的扫描码。41键盘扫描码的获取程序 MOVAL,0FEHNR: PUSHAX MOVDX,0FF9H OUTDX,AL MOVDX,0FFBH INAL,DX ANDAL,0FH CMPAL,0FH JNEENCODE POPAX ROLAL,1 JMPNRENCODE:MOVBX,000FH INAL,DXNEXT: CMPAL,TABLE[BX] JEDONE DECBX JNSNEXT MOVAH,1 JMPEXITDONE: MOVAL,BL MOVAH,0EXIT: HLT 扫描第0行检查是否有键按下如果有获取键值如没扫描下一行有效键值送AL423、8255A在PC/XT机中的应用硬件连接8255A的工作方式软件编程(大家自学)43硬件连接448255A各端口的工作方式端口号端口地址工作方式输入/输出功能A60H0输入1、机器刚上电自检,输出,输出当前检测部件的标志,以便查错2、进入正常工作状态,输入,读取键盘的8为扫描码B61H0输出用来输出若干控制信号C62H0输入用来读取系统内部的状态454、PC/XT机扬声器发声程序设计PC/XT机中的扬声器接口电路扬声器发声原理音乐简谱音调和时长音乐程序设计46PC/XT机中的扬声器接口电路47扬声器发声原理扬声器发声主要决定于上图中A和B的波形,由此有两种方式:B点固定为高电平,A点为方波(见教材第271页

例7-9)A点固定为高电平,B点为方波(如果B点的方波的频率固定,则为纯音;如果B点方波的频率不断变化,则能够演奏美妙的音乐)本例采用第二种方法。48一首乐曲组成乐曲的每个音符的频率值和持续时间(节拍)是乐曲程序发声所需要的两个数据。4950音符--频率对照表音符12345671频率131147165175196220246262音符234567i频率294330349392440494523.......51音符节拍--持续时间的对应在2/4中,四分音符为一节,每一小节二拍,全音符持续2拍,二分音符持续1拍,四分音符持续半拍,八分音符持续四分之一拍。如果给全音符分配1s(100×10ms)的时间,则二分音符的持续时间为0.5s(50×10ms),四分音符持续时间0.25s(25×10ms),八分音符持续时间0.125s(12.5×10ms)。52乐曲转化为频率表和持续时间表Freqdw262,294,330,294,330,392,330,294,262,294,440

dw262,294,330,294,330,392,330,294,262,294 Durationdw10dup(50),100

dw8dup(50),2dup(100)注:Duration表中的数值为10ms的倍数。53频率表中各种频率方波的产生通过8253通道2产生:工作方式设为3;计数初值N=fclk/f

(f即为频率表中某个频率值,fclk即为CLK2端时钟频率1.19318MHz)8253初始化代码548253初始化代码MOVAL,10110110BOUT43H,ALMOVDX,0012HMOVAX,34DCHDIVDI;DI为频率表中某频率值OUT42H,ALMOVAL,AHOUT42H,ALDX:AX为8086CPU的主频AX为通道2的计数初值55持续时间表中的10ms延时的产生通过硬件产生固定时间的延时,与具体的CPU和主频无关。硬件定时的方法:通过监控8255B口(61H)的PB4,使PB4每15.08us触发一次,以产生一个固定不变的时间基准。5610ms延时代码waitfprocnear pushaxwaitf1: inal,61h andal,10h ;PB4

cmpal,ah jewaitf1

movah,al loopwaitf1 popax retwaitf

endpMOVCX,633CALLWAITFWAITF子程序产生15.08us的延时633×15.08=10ms57完整代码在数据段建立乐曲的频率和持续时间表8253通道2工作方式初始化在频率表取出某频率值,转换为8253初始化时写入的计数初值产生某一频率的声音并持续相应的时间,即演奏当前的音符演奏下一个音符,直到乐曲演奏完毕585、七段数码管数字显示设8255A的口地址为200H~203H,A口接4个开关K3~K0,B口接一个七段数码管,用来显示4个开关所拨通的16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论