第5章s12输入输出口

上传人:今*** 文档编号:110172948 上传时间:2019-10-29 格式:PPT 页数:26 大小:343.50KB
返回 下载 相关 举报
第5章s12输入输出口_第1页
第1页 / 共26页
第5章s12输入输出口_第2页
第2页 / 共26页
第5章s12输入输出口_第3页
第3页 / 共26页
第5章s12输入输出口_第4页
第4页 / 共26页
第5章s12输入输出口_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《第5章s12输入输出口》由会员分享,可在线阅读,更多相关《第5章s12输入输出口(26页珍藏版)》请在金锄头文库上搜索。

1、第5章 S12并行输入/输出接口,5.1 I/O端口功能简介 I/O端口:即输入/输出端口,是MCU与外界进行交互的重要通道,实现各种接口。 5.1.1 I/O端口简介 MC9SDG128有丰富的I/O引脚,多功能、多复用,A口、B口、E口、K口: (扩展方式时,可作总线) PORTA(07) PORTB(07) PORTE(07) PORTK(05),H口、J口、M口、S口、P口、T口: (复合功能,优先权左右递减 ) PORTH -SPI/GPIO PORTJ -CAN/I2C/GPIO PORTM -CAN/BDLC/GPIO PORTS -SCI/SPI/GPIO PORTP -PWM

2、/SPI/GPIO PORTT -ECT/GPIO 注:GPIO=通用并行输入/输出,MCU,5.1. I/O端口功能 通过设置相应寄存器,实现以下功能: DDR寄存器 - 数据方向,定义是输入还是输出; I/O寄存器 - 数据寄存器,定义输出电平的高低; PORTA、PORTB 、PTS 、PTH; RDR寄存器 - 定义驱动能力; PER寄存器 - 当I/O口作为输入口时,定义是否使能内部上拉或下拉; PIE寄存器 - 禁止、允许端口中断; PPS寄存器 - 上下拉选择: 1、PER有效时,选择上拉还是下拉 2、端口中断允许时,选择上升沿还是下降沿触发,输入电路框图,5.2 I/O端口设置

3、 1. A口、B口、E口、K口 数据方向寄存器DDRA、DDRB、DDRE、DDRK 某位:0-输入,1-输出 数据寄存器PORTA、PORTB、PORTE、PORTK 读时:各位得到外部引脚的逻辑电平;(数据方向为输入时) 写时:各位数据锁存,并更新外部引脚的逻辑电平; 上拉控制寄存器PUCR(8位同时上拉或无拉电阻) 4口共用,PUPAE、PUPBE、PUPEE、PUPKE位为1使上拉;0无 降功率驱动控制寄存器RDRIV(8位同时全功率或降功率) 4口共用,RDPA、RDPB、RDPE、RDPK位为使输出降功率;0不降,2. H、M、P、S、T 口,DDRx :数据方向寄存器 LDAA

4、%11110000 STDA DDRH ;高输出;低输入。 PTx : I/O寄存器 STDA PTH LDAA PTH ;高4位输出锁存数据;低4位引脚逻辑 PTIx 输入寄存器(只读寄存器) DDRx=0,反映输入引脚电平高低; DDRx=1,反映引脚超载或短路 ,1:异常,0:正常; LDAA PTIH ; RDRx 低功耗驱动寄存器 0:正常输出; 1:正常的1/6 LDAA #$F0 ; STAA RDRS PERx 上下拉使能寄存器(是否允许上下拉功能使用) 0:禁止上拉或下拉 ; 1:允许选择上拉或下拉电阻; LDAA #%10101010 ; STAA RDRS,条件:P、J、

5、H(有中断功能端口)且中断使能。 =1:满足上下拉使能且输入前提下,定义引脚为 下拉,上升沿引发中断; =0:满足上下拉使能且输入前提下,定义引脚为 上拉,下降沿引发中断;,PPSx 上下拉选择寄存器 (选择具体是上拉还是下拉),列: LDAA #$00 STAA DDRP ; P口输入 LDAA #$FF STAA PERP ;P口上下拉使能 LDAA #$0F STAA PIEP ;P口低4位中断使能 LADA #$0F STAA PPSP ;高4位上拉,无中断; ;低位下拉, 上升沿引发中断;,条件:引脚定义为输入并且上下拉使能(PERx) ; 0:上拉 ; 1:下拉,3.其它I/O A

6、D口:作为A/D转换模块的模拟量输入口和外界触发脉冲的输入口,也可以做为普通输入口,PORTAD0,PORTAD1 注: 各寄存器,复位默认值:0000 0000B; 各口的数据方向为输入时,内部上、下拉才可设置有效; 各口的数据方向为输出时,内部上、下拉被禁止; 各寄存器的均有实际存储地址,但编程时使用寄存器名字即可 PORTADx 仅能输入,没有数据方向寄存器。,作通用I/O口时与前述类似,作其它功能略过。,5.3 人机交互接口设计 MCU与外设如何连接-接口,解决信息传递、控制交互 输入设备-如按键、开关,键盘等; 输出设备-如LED灯、蜂鸣器、LED数码管、LCD显示屏等; 基本原则:

7、由外设确定硬件接口+软件配合。 【例】点亮LED灯,并使蜂鸣器发声。,;* ORG $1000 main: START: LDAA #$FF STAA DDRB ;设置 LDAA #$FE STAA PORTB ;输出 BRA *,5.3.1 独立式按键接口 前图中拨位开关换为按键即可;程序也同前。 硬件-开关输入低有效,上拉,S12可直接用内部上拉 软件-查询式,逐位检测每个I/O引脚状态; 独立式按键结构-检测简单;占用I/O引脚多。按键数目较少时用 5.3.2 按键去抖动 抖动问题:按键在按下或抬起时,由于机械弹性的影响,通常所按的键在闭合位置和断开位置之间抖动几下才稳定下来。抖动持续的

8、时间因操作者和按键特性而异,一般为510ms。 去抖动:克服检测误判 硬件方法-按键后端加双稳态触发器 软件方法-检测到有键按下时,延时1020ms左右再检测,若该键保持在按下状态,则确定为按键按下;松按检测同理。 注:通常使用软件去抖动 键盘的其它问题还有:一键多能、多键同按,;* 按键检查子程序:无键输入直接退出,有键输入时等松手后退出 ;* 出口参数:Key_numb 按键号, 0 无键,14 键号 Test_key: PSHA ;独立式按键 MOVB #0, Key_Numb LDAA PORTA ORAA #$F0 ;屏蔽高4位影响 COMA BEQ Test_key_RTS ; 无

9、键输入,直接退出 JSR DELAY_20MS LDAA PORTA ; Test_key_NEXT: INC Key_Numb LSRA ; 查键号,条件控制循环 BNE Test_key_NEXT Test_key_LP1: LDAA PORTA ; 判松手 ORAA #$F0 COMA BNE Test_key_LP1 ;未松手则继续 JSR DELAY_20MS Test_key_RTS: PULA RTS,补充:多分支结构程序设计 ; 根据键号执行相应子程序。 KeyMain: JSR Key16 LDAA Key_Numb LSLA ; A= A * 2 (分支编号) LDX #J

10、mp_Table LDY A, X JMP Y Jmp_Table: FDB Key0Sub FDB Key1Sub . FDB Key16Sub Key0Sub: RTS ; 无键输入 Key1Sub: RTS Key16Sub: RTS,5.3.3 矩阵式键盘接口 也叫行列式键盘,行、列交叉处跨接按键;2x8,4x4,4x8,8x8等 按键响应方式:主程序循环查询、中断后检测,按键检测方法: (1)行扫描法 右图,原理: 1、全扫描 各行送“0”,查是否有键按下 2、逐行扫描 逐行送“0”,确定哪行、哪列键按下 (2)行反转法,键值计算方法(以符号“1”为例),0,0,键值计算方法(以符号

11、“8”为例),1,1,问题:如果输入是A口低4位,输出高4位 键值是$BD,键值计算 按前图的接法可以得出键值表,如右。键值可以通过扫描法获得,由键值通过查表法编程得到真正定义值。 (即书例5-6) 行扫描法汇编程序,; 读键盘口:入口: B = 输出行号 ; 出口:A = 列值及相关标志位 ; DDRA= $F0,PA0PA3输入(列);PA4PA7输出(行); ;条件 A 内部上拉电阻,按键有效时为“0” InKeyPort: STAB PORTA LDAA PORTA ORAA #$F0 ;高4位无用,屏蔽 COMA ;高4位始终为$0 RTS 程序分析: B=0时,4行A口输出4个低电

12、平,如果有按键, 则A口输入端 必定有一个以上0返回,判断有无键按下; 如果无键按下, A 返回时零 当B=7,3,1,0时,可以分别测试1,2,3,4行是否有建按下; 取反指令使得有键按下时A寄存器位非零;,; 读键盘口:入口: B = 输出行号 ; 出口:A = 列值及相关标志位 ; DDRA= $F0 InKeyPort: STAB PORTA LDAA PORTA ORAA #$F0 COMA RTS ;非编码键盘:无键输入退出。 ;出口参数:Key_numb0无键,116键号 Key16: PSHD MOVB #0, Key_Numb CLRB ;测试所有4行 BSR InKeyPo

13、rt ;判断有无键 BEQ Key16_RTS ; 无键退出 JSR DELAY_20MS LDAB #$7F ;开始逐行扫描 K16NL: BSR InKeyPort BNE Key16_LP1,LDAA Key_Numb ADDA #4 ;加一行 STAA Key_Numb LSRB ;下一行 CMPB #$07 ; 容错处理 BNE K16NL MOVB #0, Key_Numb BRA Key16_RTS Key16_LP1: INC Key_Numb LSRA BNE Key16_LP1 Key16_LP2: CLRB ;对所有行 BSR InKeyPort BNE Key16_LP

14、2 JSR DELAY_20MS Key16_RTS: PULD RTS,程序功能: 是否有键按下 是什么键好 键释放否,重庆大学通信工程学院 任勇,;* 按键检查子程序:无键输入直接退出,有键输入时等松手后退出 ;* 出口参数:Key_numb 按键号, 0 无键,14 键号 Test_key: PSHA ;独立式按键 MOVB #0, Key_Numb LDAA PORTA ORAA #$F0 ;屏蔽高4位影响 COMA BEQ Test_key_RTS ; 无键输入,直接退出 JSR DELAY_20MS LDAA PORTA ; Test_key_NEXT: INC Key_Numb LSRA ; 查键号,条件控制循环 BNE Test_key_NEXT Test_key_LP1: LDAA PORTA ; 判松手 ORAA #$F0 COMA BNE Test_key_LP1 ;未松手则继续 JSR DELAY_20MS Test_key_RTS: PULA RTS,6.4 人机交互接口设计 6.4.1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号