微控制器原理及应用:第05章-2 基本输入输出接口_第1页
微控制器原理及应用:第05章-2 基本输入输出接口_第2页
微控制器原理及应用:第05章-2 基本输入输出接口_第3页
微控制器原理及应用:第05章-2 基本输入输出接口_第4页
微控制器原理及应用:第05章-2 基本输入输出接口_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 基本输入输出接口 并行IO口简介并行IO口编程举例键盘中断A/D转换第五章 基本输入输出接口 并行IO口简介并行IO口编程举例键盘中断A/D转换(1)键的识别 如何知道键盘上哪个键被按下就是键盘识别问题。键盘识别主要有行扫描法与行反转法。(2)抖动问题 当按下一个键时,会出现所按的键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况,当释放一个按键时也会出现类似的情况,这就是抖动问题。在软件上,解决抖动的方法通常是延迟等待抖动的消失。(3)重键问题 有两个或两个以上按键同时处于闭合状态的处理问题。在软件上,处理重键问题通常有连锁法与巡回法。 键盘的基本问题 +5V 5K4行线m1 m

2、2 m3 m4 列线 n1 n2 n3 n4 44键盘结构 PTA74 输入 PTA30输出7 6 5 4 3 2 1 01011000011111101101110111111111011111111 5V行扫描法键值键值可以通过扫描法获得,由键值通过查表法编程得到定义值。 0 EE 1 DE 2 BE 3 7E 4 ED 5 DD 6 BD 7 7D 8 EB 9 DB A BB B 7B C E7 D D7 E B7 F 77定义值键值键盘定义行反转法(1)用行反转法识别闭合键时,要将行线接一个并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作在输入方式。(2)程序使CPU

3、通过输出端口往各行线上全部送低电平,然后读入列值。如果此时有某一个键被按下,则必定会使某一列线的值为0。 (3)然后,程序再对两个并行端口进行方式设置,使接行线的并行端口工作在输入方式,而接列线的并行端口工作在输出方式,并将刚才读得的列线值从所接的并行端口输出,再读取行线的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一个唯一的行值和列值,从而可识别所按下的键。行反转法重键 连锁法1.在所有键释放后,只承认此后闭合的第一个键。2.此键闭合时,按下的其他键均不给予识别。3.直到所有的键释放以后才读入下一个键。1A键先按后放,B键后按先放;只读A键,不读B键。

4、2A键先按先放,B键后按后放;只识别A键,不识别B键。3A和B同时按下,但A先放;违章操作,两键都不读。重键 连锁法等前面所识别的键被释放以后,就可以对其他闭合键做识别。1.如果A键先按先放,B键后按后放,且A键、B键在同一行,识别A键,舍弃B键。2.如果A键先按先放,B键后按后放,且A键和B键不在一行上,巡回法认为这是正常快速操作,对两键均作读入。3.如果A键、B键同时按下,但A键后释放,B键先释放,而A键处于较小的行号上,则只有A键被读入,但如果A键处于较大的行号上,则由于它后释放,所以会使A键、B键均被读入。重键 巡回法KBI寄存器寄存器说明INTKBSCR键盘中断状态和控制寄存器$00

5、1A地址:KBI寄存器INTKBIER 键盘中断允许寄存器$001BKBI状态控制寄存器INTKBSCRKEYF0IMASKKMODEKACKK读:写:KBI状态控制寄存器 INTKBSCR 地址:$001A复位: 0 0 0 0 0 0 0 0 键盘中断标志位:只读1键盘中断已产生0未产生键盘中断键盘中断触发位:1键输入线发生负跳变或为低电平时产生中断请求0仅当键输入线发生负跳变时产生中断请求键盘中断屏蔽位:1屏蔽键盘中断请求0开放键盘中断键盘中断响应位:只写1=清除键盘中断请求 INTKBSCRINTKBIERKBI寄存器KBI中断允许寄存器INTKBIERKBIE7KBIE6KBIE5K

6、BIE4KBIE3KBIE2KBIE1KBIE0读:写:KBI中断使能寄存器 INTKBIER 地址:$001B1定义PTAx为键盘中断引入引脚0不定义键盘中断引入引脚当输入有效时(由MODEK确定),1KEYF,若IMASK0,则向CPU请求中断。KBIEx0时,PTAx作为普通I/O口线,不产生中断请求。KBIEx(x=70)=1时,PTAx(x=70)作为键输入线,同时接通PTAx内部上拉电阻。复位: 0 0 0 0 0 0 0 0 INTKBSCRINTKBIER7 6 5 4 3 2 1 0 键盘中断编程相关问题 1) 键盘中断矢量地址:$FFE0$FFE1。 2)键盘中断初始化顺序

7、:先设置键盘状态和控制寄存器(INTKBSCR),后设置键盘中断允许寄存器(INTKBIER)。 3)为避免键盘误中断,在键盘初始化时,建议按下列顺序: 令IMASK=1(屏蔽键盘中断)、设置KBIEx1(定义中断引脚)、写ACKK=1(清除键盘中断请求)、令IMASK=0(开放键盘中断)。 4)注意在中断子程序中的入口和出口参数。 5)在Wait和Stop模式下,键盘中断仍可发生。主程序TmpVar1 DS 1 KB_Value DS 1 main:Entry: LDHX #$023F TXS MOV #$FF,DDRB MOV #$FF,PTB SEI JSR KB_Init MOV #$

8、F0,PTA BCLR 1,INTKBSCR;IMASK=0 CLI;开中断 BRA *PTA0PTA1PTA2PTA3PTA7PTA6PTA5PTA4行线 m1m2m3m4列线 n1n2n3n45V键盘中断初始化程序 KB_Init: LDA #%00 STA PTA LDA #%00001111 STA DDRA LDA #%11110000 STA PTAPUE BSET 1,INTKBSCR BCLR 0,INTKBSCR LDA #%11110000 STA INTKBIER BSET 2,INTKBSCR RTSKEYFIMASKMODEKACKK键盘中断子程序KB_Int: JS

9、R KB_A ;调子程序KB_A取得键值A STA KB_Value ;放入内存KB_Value JSR KB_Def ;调子程序KB_Def JSR KB_exe ;调子程序KB_exe MOV #$F0,PTA ;行线全部拉低 BSET 2,INTKBSCR RTIKEYFIMASKMODEKACKK扫描法读取键值子程序KB_A: MOV #%11111110,TmpVar1 LDX #$04KB1: MOV TmpVar1,PTA NOP NOP LDA PTA AND #%11110000 CBEQA #$F0,KB2 LDA PTA BRA KB3KB2: SEC ROL TmpVa

10、r1 DBNZX KB1 LDA #$FF KB3: RTS1111111011111101111110111111011111010111111111101111110111111011PTA0PTA1PTA2PTA3PTA4PTA5PTA6PTA7PTA键值转为定义值子程序KB_Def LDHX #$0000KB_Def1: LDA KB_Table,X CBEQA #$00,KB_Def3 CMP KB_Value BNE KB_Def2 INCX LDA KB_Table,X BRA KB_DefR KB_Def2: INCX INCX BRA KB_Def1 KB_Def3: LDA #$FF KB_DefR: RTSKB_Table : FCB $EE,0,$DE, 1,$BE, 2,$7E, 3 FCB $ED,4,$DD, 5,$BD, 6,$7D, 7 FCB $EB, 8,$DB, 9,$BB, A,$7B,B FCB $E7, C,$D7, D,$B7, E,$77, F FCB $00 执行子程序KB_exe: CMP #$FF BNE LED BRA P_EDLED: TAX LSLX JMP TAB

温馨提示

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

评论

0/150

提交评论