第七章8051单片机系统扩展与接口技术精选.ppt

第七章8051单片机系统扩展与接口技术精选.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章8051单片机系统扩展与接口技术精选

这种操作方式,就好像PA口为0的这根线,从最低位开始逐位移动(称作扫描),直到PA.7为0为止。很明显,对于我们上例中的第5行第4列键按下,必然有: 在PA口输出为B时PB.0—PB.3不全为1,而是XXXX0111B。 读取被按键盘的行值,可用扫描方法。即首先使8155PA口输出仅PA.0为0、其余位都是1然后去读PB口的值,如读得PB.3—PB.0为全1;则接着使PA.1为0其余位都是1,再读PB口,若仍为全1;再继续使PA.2为0,其余位为1,再读PB口 …直到读出PB.0—PB.3不全为1或0位移到PA.7为0为止。 行值 键值 此时行输出数据和列输入数据中0位置,即表示了该键的键值。 * 综上所述,行-列式键盘的扫描键值可归结为二个步骤: 判断有无键按下; 判断按下键的行、列号, 并求出键值, 键值 = 行号×10H+列号 若求得键值,则可利用散转指令,去执行键盘各自的功能程序。 假如在图7-23硬件图中,设定: 行号=0,1,2,3,4,5,6,7; 列号=0,1,2,3; 可得键值如图所示: * 下面是图7-24所示电路的键盘扫描及识别程序(JSB)算法及清单(约定FFH为无效键值,设8155A口地址为FE01H,B口地址为FE02H)): * 2.程序清单; JSB: ACALL KSl ;调用按键判断子程序,判断是否有键按下。 JNZ LK1 ;有键按下时,(A≠0)转去抖动延时。 MOV A, #0FFH AJMP FH ;无键按下返回。 LK1: ACALL DELAY12 ;延时12MS。 ACALL KS1 ;查有无键按下,若有,则为键真实按下。 JNZ LK2 ;键按下(A≠0)转逐列扫描。 MOV A, #0FFH AJMP FH ;没有键按下,返回 。 LK2: M0V R2, #OFEH ;首行扫描字送R2。 M0V R4, #00H ;首行号送R4。 LK4: M0V DPTR, #FE01H ;指向A口。 MOV A, R2 M0VX @DPTR,A ;行扫描字送至8155PA口。 INC DPTR ;指向8155PB口。 MOVX A, @DPTR ;8155 PB口读入列状态。 * JB ACC·0, LONE ;若第0列无键按下,转查第1列。 M0V A, #00H ;第0列有键按下,将列首键号00H 送A。 AJMP LKP ;转求键值。 LONE:JB ACC.1, LTWO ;若第1列无键按下,转第2列。 M0V A, #01H ;第1列有键按下,将列号 01H 送A。 AJMP LKP ;转求键值。 LTWO:JB ACC.2, LTHR ;若第2列无键按下,转查第3列。 M0V A, #02H ;第2列有键按下,将列号02H送A。 AJMP LKP ;转求键值。 LTHR:JB ACC.3, NEXT ;若第3列无键按下,改扫描下一行。 M0V A,

文档评论(0)

bodkd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档