- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
现代微机原理与接口技术综合练习
* 现代微机原理与接口技术 * 综 合 练 习 例1 假设有一个4×4的矩阵键盘通过并行接口芯片8255与微机相连。8255的A口作为输出口,与键盘的行线相连;B口为输入口,与键盘列线相连。 ? 设8255A口地址为60H,B口地址为61H,控制寄存器地址为63H,请编写键盘扫描程序。 ? 程序如下: mov al, 82h out 63h, al begin: mov al, 0 ;检查是否有键按下 out 60h, al wait: in al, 61h and al, 0fh cmp al, 0fh jz wait ;无键按下,继续等待 sm: mov dl, 4;行数送dl mov al, 0feh;扫描码,0行为0 mov ch, 0 ;键号初值为0 srow: out 60h, al ;扫描一行 rcl al,1 ;修改扫描行 mov ah, al ;保存下次要扫描的扫描码 in al, 61h ;读列线状态 and al, 0fh cmp al, 0fh ;是否有列线为0 jnz scol ;有列线为0转到scol add ch, 4 ;否则键号+4 mov al, ah ;取回行扫描码 dec dl ;行数减1 jnz srow ;继续扫描行 jmp begin scol: rcr al, 1 jnc proce ;该列为0,转处理程序 inc ch ;否则键号+1, jmp scol ;继续查找 proce: …… 思考题 如何将上题改成中断方式?假设任意键按下后,会通过8259的IR5向CPU发中断请求,另外,8255的端口地址是60H~63H,8259的端口地址是20H~21H,使用74LS138译码器,请修改原图,使其满足题目要求,并要给出译码电路。然后写出相应的键盘扫描程序。 PC7 IR5 CS 去138 PPICS A0 A1 A0 A1 8259 INT INTR CS INTRCS A0 A0 Y0 Y7 A B C G2B G2A G1 15 14 13 12 11 10 9 7 1 2 3 4 5 6 74LS138 A5 A6 A7 A8 A9 AEN’ INTRCS PPICS 去8255 去8259 138译码电路部分 例2.频率计数器设计 用8254计数外来信号频率fIN(fCLK=1MHz)。 用T/C1产生基准时钟间隔,采用方式1;T/C0采用方式0对外来信号计数;OUT1控制GATE0来停止计数。 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 D0~D7 A1 A0 RD WR CS 信号 fCLK TRG EOC 返回下页 返回下二页 思路: T/C1产生10ms的基准时间间隔,然后通过OUT1控制T/C0计数,用 fIN=(N-M+1)/10ms*1000Hz 公式来计算。其中N是T/C0的初始值,M是计数基准时间到时的T/C0当前计数值。 为了辅助控制,我们用8255A口初始化为输出,其中位0为TRG,用来控制计数器1的GATE。8255B口初始化为输入,其中位0接到OUT1脚,通过对该位的不断查询,来确定10ms是否结束,结束后,根据T/C0的计数数值进行计算。 OUT PIO0,0 ;TRG=0 MOV AL ;T/C1 OUT 43H,AL MOV AH,2710H ;间隔为10ms(2710H=10000) OUT 41H,AL MOV AL, AH OUT 41H,AL MOV AL ;T/C0 OUT 43H,AL MOV AL,00H ;初值为65536 OUT 40H,AL OUT 40H,AL ;STC产生一个脉冲 OUT PIO0,2 ;TRG=1,开始计数 返回下页 转上页 S1: IN AL,PIO1 ;循环读EOC JZ S1 ;等到EOC=1才退出循环 IN AL,40H MOV AH,AL IN AL,40H XCHG AH,AL ;AX为当前计数值
文档评论(0)