飞思卡尔位单片机MCS键盘中断模块与AD转换模块_第1页
飞思卡尔位单片机MCS键盘中断模块与AD转换模块_第2页
飞思卡尔位单片机MCS键盘中断模块与AD转换模块_第3页
飞思卡尔位单片机MCS键盘中断模块与AD转换模块_第4页
飞思卡尔位单片机MCS键盘中断模块与AD转换模块_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章第九章 键盘中断模块与键盘中断模块与a/d转换模块转换模块 主要内容v 键盘基本问题与gp32的键盘中断口v 汇编语言键盘中断模块编程实例 v 08c语言键盘中断模块编程实例 v mc68hc908gp32 mcu内部的a/d转换模块 v mc68hc908gp32 mcu a/d转换编程实例 9.1 键盘基本问题与gp32的键盘中断口9.1 键盘基本问题与键盘基本问题与gp32的键盘中断口的键盘中断口9.1.1 键盘的基本问题键盘的基本问题 (1)键的识别)键的识别 如何知道键盘上哪个键被按下就是键盘识别问题。键盘识别主要如何知道键盘上哪个键被按下就是键盘识别问题。键盘识别主要有行扫描

2、法与行反转法。有行扫描法与行反转法。(2)抖动问题)抖动问题 当按下一个键时,会出现所按的键在闭合位置和断开位置之间跳当按下一个键时,会出现所按的键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况,当释放一个按键时也会出现类似的情几下才稳定到闭合状态的情况,当释放一个按键时也会出现类似的情况,这就是抖动问题。解决抖动的方法通常是延迟等待抖动的消失或况,这就是抖动问题。解决抖动的方法通常是延迟等待抖动的消失或多次识别判定。多次识别判定。(3)重键问题)重键问题 有两个或两个以上按键同时处于闭合状态的处理问题。在软件上,有两个或两个以上按键同时处于闭合状态的处理问题。在软件上,处理重键问题通常

3、有连锁法与巡回法。处理重键问题通常有连锁法与巡回法。 9.1 键盘基本问题与gp32的键盘中断口 +5v 5k4行线行线m1 m2 m3 m4 列线列线 n1 n2 n3 n4 44键盘结构键盘结构9.1 键盘基本问题与gp32的键盘中断口9.1.2 mc68hc908gp32单片机的键盘中断模块单片机的键盘中断模块(1)键盘状态和控制寄存器()键盘状态和控制寄存器(keyboard status and control register ,intkbscr) intkbscr包含了键盘中断请求标志、屏蔽键盘中断请求、定义包含了键盘中断请求标志、屏蔽键盘中断请求、定义键盘中断的触发方式、清除键

4、盘中断标志等功能。其地址是键盘中断的触发方式、清除键盘中断标志等功能。其地址是$001a。数据位数据位 d7 d6 d5 d4 d3 d2 d1 d0定义定义 key ackk imaskk modek复位复位 0 0 0 0 0 0 0 0键盘中断键盘中断屏蔽位屏蔽位 键盘中断键盘中断引脚触发引脚触发方式位方式位 键盘键盘(中断中断)应答位应答位键盘键盘(中断中断)标志位标志位 未用未用9.1 键盘基本问题与gp32的键盘中断口(2)键盘中断允许寄存器()键盘中断允许寄存器(keyboard interrupt enable register,intbier) intbier的各位决定所对应

5、的引脚是否允许中断进入。地址为:的各位决定所对应的引脚是否允许中断进入。地址为:$001b。 数据位数据位 d7 d6 d5 d4 d3 d2 d1 d0定义定义kbie7 kbie6 kbie5 kbie4 kbie3 kbie2 kbie1 kbie0复位复位 0 0 0 0 0 0 0 0 d7d0,分别记为,分别记为kbie7kbie0,可读写。若,可读写。若kbiex=1,表,表示相应引脚示相应引脚kbiex pin(也就是引脚(也就是引脚ptax pin)被定义为中断引入引)被定义为中断引入引脚,反之则不能作为中断输入引脚。复位时,全为脚,反之则不能作为中断输入引脚。复位时,全为0

6、。 9.1 键盘基本问题与gp32的键盘中断口(3)键盘中断编程相关问题)键盘中断编程相关问题 要进行键盘中断方面的编程,需了解下列问题:要进行键盘中断方面的编程,需了解下列问题: 1)键盘中断矢量地址:)键盘中断矢量地址:$ffe0$ffe1。 2)键盘中断初始化顺序:先设置键盘状态和控制寄存器)键盘中断初始化顺序:先设置键盘状态和控制寄存器(intkbscr),后设置键盘中断允许寄存器(),后设置键盘中断允许寄存器(intkbier)。)。 3)为避免键盘误中断,在键盘初始化时,建议按下列顺序:)为避免键盘误中断,在键盘初始化时,建议按下列顺序: 令令imaskk=1(屏蔽键盘中断屏蔽键盘

7、中断)、设置、设置kbiex1(定义中断引脚定义中断引脚)、写、写ackk=1(清除键盘中断请求清除键盘中断请求)、令、令imaskk=0(开放键盘中断开放键盘中断)。 也可以用下述方法:也可以用下述方法: 通过通过ddra定义定义ptax pin为输出、写为输出、写1到到ptax(使得(使得ptax pin为高电为高电平)、设置平)、设置kbiex1(定义中断引脚定义中断引脚)。 4)注意在中断子程序中的入口和出口参数。)注意在中断子程序中的入口和出口参数。 5)在)在wait和和stop模式下,键盘中断仍可发生。模式下,键盘中断仍可发生。返回返回9.2 汇编语言键盘中断模块编程实例9.2

8、汇编语言键盘中断模块编程实例汇编语言键盘中断模块编程实例44键盘与单片机接法示例键盘与单片机接法示例 vdd 单片机单片机 内部上拉电阻内部上拉电阻 1 2 3 a 单片机单片机pta口引脚口引脚行线行线m1 pta0 4 5 6 b m2 pta1 7 8 9 c m3 pta2 * 0 # d m4 pta3 列线列线 n1 n2 n3 n4 pta7 pta6 pta5 pta49.2 汇编语言键盘中断模块编程实例(1)键值计算方法)键值计算方法按上图的接法可以得出按上图的接法可以得出键值表,如下图。键值键值表,如下图。键值可以通过扫描法获得,可以通过扫描法获得,由键值通过查表法编程由键

9、值通过查表法编程得到定义值。得到定义值。9.2.1 按键识别与键盘定义子程序按键识别与键盘定义子程序 1 ee 2 de 3 be a 7e 4 ed 5 dd 6 dd b 7d 7 eb 8 db 9 bb c 7b * e7 0 d7 # b7 d 77定义符定义符键值键值键盘定义键盘定义(2)键盘编程汇编语言子程序键盘编程汇编语言子程序9.3 08c语言键盘中断模块编程实例(1)键盘中断编程汇编主程序键盘中断编程汇编主程序(2)键盘中断编程的键盘中断编程的pc机方的机方的vb界面与程序界面与程序9.3 08c语言键盘中断模块编程实例语言键盘中断模块编程实例 9.3.1 按键识别与键盘定

10、义函数按键识别与键盘定义函数 9.3.2 键盘中断编程键盘中断编程08c语言举例语言举例(1)键盘中断编程实例的键盘中断编程实例的08c主函数主函数(2)键盘中断编程实例的键盘中断编程实例的08c中断矢量表文件中断矢量表文件9.2.2 键盘中断编程举例键盘中断编程举例返回返回9.4 mc68hc908gp32 mcu内部的a/d转换模块9.4 mc68hc908gp32 mcu内部的内部的a/d转换模块转换模块9.4.1 a/d转换相关基础知识转换相关基础知识 a/d转换模块(转换模块(analog to digital convert module)即模数转换)即模数转换模块的功能是将电压信

11、号转换为对应的数字信号。实际应用中,这个模块的功能是将电压信号转换为对应的数字信号。实际应用中,这个电压信号可能由温度、湿度、压力等实际物理量经过传感器和相应的电压信号可能由温度、湿度、压力等实际物理量经过传感器和相应的变换电路转化而来。经过变换电路转化而来。经过a/d转换,转换,mcu就可以处理这些物理量。就可以处理这些物理量。(1)采样精度)采样精度:数字量变化一个最小量时模拟信号的变化量。数字量变化一个最小量时模拟信号的变化量。 (2)采样速率)采样速率:完成一次完成一次a/d采样所要花费的时间。采样所要花费的时间。 (3)滤波)滤波:对采样的数据进行筛选去掉误差较大的毛刺。对采样的数据

12、进行筛选去掉误差较大的毛刺。 (4)物理量回归)物理量回归:把把a/d采样值与实际物理量对应起来。采样值与实际物理量对应起来。 9.4 mc68hc908gp32 mcu内部的a/d转换模块9.4.2 mc68hc908gp32 a/d转换模块的寄存器转换模块的寄存器(1)a/d转换状态和控制寄存器(转换状态和控制寄存器(analog-to-digital status and control registeradscr) adscr主要功能是:选取要转换的通道、决定转换结束数据获取主要功能是:选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换。其地址是的方式、设置是连续

13、转换还是一次转换。其地址是$003c。数据位 d7 d6 d5 d4 d3 d2 d1 d0定义coco aien adco adch4 adch3 adch2 adch1 adch0复位 0 0 0 1 1 1 1 1转换完成转换完成标志位标志位a/d转换转换中断允许中断允许标志位标志位 连续转换连续转换控制位控制位通道选择通道选择 9.4 mc68hc908gp32 mcu内部的a/d转换模块(2)a/d转换数据寄存器(转换数据寄存器(analog-to-digital data registeradr) adr存放存放a/d转换的转换的8位结果,每次位结果,每次a/d转换结束更新该寄存器

14、。转换结束更新该寄存器。编程从该寄存器读取编程从该寄存器读取a/d转换结果。该寄存器地址为:转换结果。该寄存器地址为:$003d,为只读,为只读寄存器,复位时为寄存器,复位时为$00。 9.4 mc68hc908gp32 mcu内部的a/d转换模块(3)a/d转换输入时钟寄存器(转换输入时钟寄存器(analog-to-digital input clock registeradclk) adclk决定决定a/d转换的时钟频率来源、分频系数值,芯片内的转换的时钟频率来源、分频系数值,芯片内的a/d转换器要求转换器要求adc时钟频率为时钟频率为1mhz左右。左右。adclk 的地址是:的地址是:$

15、003e。adc时钟分频时钟分频系数选择位系数选择位 adc输入时输入时钟源选择位钟源选择位 未用未用 数据位 d7 d6 d5 d4 d3 d2 d1 d0定义 adiv2 adiv1 adiv0 adiclk - - - -复位 0 0 0 1 1 1 1 1 adc时钟要求:时钟要求: adc时钟频率时钟频率1mhz。具体编程时根据。具体编程时根据a/d转换转换的时钟频率来源确定分频系数值,确保芯片内的的时钟频率来源确定分频系数值,确保芯片内的a/d转换器时钟频率为转换器时钟频率为1mhz左右即可。左右即可。9.4 mc68hc908gp32 mcu内部的a/d转换模块9.4.3 a/d

16、转换模块的基本编程方法转换模块的基本编程方法(1)a/d转换初始化转换初始化 lda #%00110000 ;使用内部总线时钟,使用内部总线时钟,2分频分频 sta adclk ;送入寄存器送入寄存器adclk(2)启动)启动a/d转换转换 lda #%00000000 ;0通道,转换结束不产生中断,一次通道,转换结束不产生中断,一次a/d转换转换 sta adscr ;并启动并启动0通道转换通道转换(3)获)获a/d转换结果转换结果 brclr 7, adscr,* ;coco位位=0则等待则等待coco位位=1 lda adr ;转换结束,转换结果送入转换结束,转换结果送入a中中返回返回9

17、.5 mc68hc908gp32 mcu a/d转换编程实例 9.5 mc68hc908gp32 mcu a/d转换编程实例转换编程实例9.5.1 a/d转换汇编语言编程实例转换汇编语言编程实例(1)a/d转换有关子程序转换有关子程序(2)a/d转换测试程序汇编主程序转换测试程序汇编主程序9.5.2 a/d转换转换08c语言编程实例语言编程实例(1)a/d转换有关转换有关c语言子函数语言子函数(2)a/d转换转换08c测试实例主函数测试实例主函数返回返回 本章共介绍了两部分内容。本章共介绍了两部分内容。 键盘部分:介绍键盘中断模块的编程方法,并给出规范的扫描法键盘部分:介绍键盘中断模块的编程方法,并给出规范的扫描

温馨提示

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

评论

0/150

提交评论