版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.1 I/O端口功能简介端口功能简介 I/O端口:即输入端口:即输入/输出端口,是输出端口,是MCU与外界进行交互的重与外界进行交互的重要通道,实现各种接口。要通道,实现各种接口。5.1.1 I/O端口简介端口简介 MC9SDG128有丰富的有丰富的I/O引脚,多功能、多复用引脚,多功能、多复用 A口、口、B口、口、E口、口、K口:口:(扩展方式时,可作总线)(扩展方式时,可作总线)nPORTA(07)nPORTB(07)nPORTE(07)nPORTK(05)H口、口、J口、口、M口、口、S口、口、P口、口、T口:口:(复合功能,优先权左(复合功能,优先权左右递减右递减 )nPORTH -
2、SPI/GPIO nPORTJ -CAN/I2C/GPIOnPORTM -CAN/BDLC/GPIOnPORTS -SCI/SPI/GPIOnPORTP -PWM/SPI/GPIOnPORTT -ECT/GPIO 注:注:GPIO=通用并行输入通用并行输入/输出输出MCU5.1. I/O端口功能端口功能 通过设置相应寄存器,实现以下功能:通过设置相应寄存器,实现以下功能:nDDR寄存器寄存器 - 数据方向,定义是输入还是输出;数据方向,定义是输入还是输出;nI/O寄存器寄存器 - 数据寄存器,定义输出电平的高低;数据寄存器,定义输出电平的高低;PORTA、PORTB 、PTS 、PTH;nRD
3、R寄存器寄存器 - 定义驱动能力;定义驱动能力;nPER寄存器寄存器 - 当当I/O口作为输入口时,定义是否口作为输入口时,定义是否使使能能内部上拉或下拉;内部上拉或下拉;nPIE寄存器寄存器 - 禁止、允许端口中断;禁止、允许端口中断;nPPS寄存器寄存器 - 上下拉选择:上下拉选择: 1、PER有效时,选择上拉还是下拉有效时,选择上拉还是下拉 2、端口中断允许时,选择上升沿还是下降沿触发、端口中断允许时,选择上升沿还是下降沿触发 Vcc K2 R4 R3 有下拉电阻R4 Vcc K3 R5 I3“悬空”状态 I3 I2 MCU K1 R1 R2 有上拉电阻R2 I1 Vcc 输入电输入电路
4、框图路框图5.2 I/O端口设置端口设置 1. A口、口、B口、口、E口、口、K口口n 数据方向寄存器数据方向寄存器DDRA、DDRB、DDRE、DDRK 某位:某位:0-输入,输入,1-输出输出 n 数据寄存器数据寄存器PORTA、PORTB、PORTE、PORTK 读时:各位得到外部引脚的逻辑电平;(数据方向为输入时)读时:各位得到外部引脚的逻辑电平;(数据方向为输入时) 写时:各位数据锁存,并更新外部引脚的逻辑电平;写时:各位数据锁存,并更新外部引脚的逻辑电平; n 上拉控制寄存器上拉控制寄存器PUCR(8位同时上拉或无拉电阻)位同时上拉或无拉电阻) 4口共用,口共用,PUPAE、PUP
5、BE、PUPEE、PUPKE位为位为1使上拉;使上拉;0无无 n 降功率驱动控制寄存器降功率驱动控制寄存器RDRIV(8位同时全功率或降功率)位同时全功率或降功率) 4口共用,口共用,RDPA、RDPB、RDPE、RDPK位为使输出降功率;位为使输出降功率;0不降不降Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0PUPKEPUPEEPUPBE PUPAEBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RDPKRDPERDPB RDPAnDDRx :数据方向寄存器数据方向寄存器 LDAA %11110000 STDA DDRH ;高输出;低输入。;高输出;低输入
6、。nPTx : I/O寄存器寄存器 STDA PTH LDAA PTH ;高;高4位输出锁存数据;低位输出锁存数据;低4位引脚逻辑位引脚逻辑nPTIx 输入寄存器(只读寄存器)输入寄存器(只读寄存器) DDRx=0,反映输入引脚电平高低;,反映输入引脚电平高低; DDRx=1,反映引脚超载或短路,反映引脚超载或短路 ,1:异常,:异常,0:正常;:正常; LDAA PTIH ;nRDRx 低功耗驱动寄存器低功耗驱动寄存器 0:正常输出;:正常输出; 1:正常的:正常的1/6 LDAA #$F0 ; STAA RDRSnPERx 上下拉上下拉使能使能寄存器(是否允许上下拉功能使用)寄存器(是否允
7、许上下拉功能使用) 0:禁止上拉或下拉:禁止上拉或下拉 ; 1:允许选择上拉或下拉电阻;:允许选择上拉或下拉电阻; LDAA #%10101010 ; STAA RDRS p 条件:条件:P、J、H(有中断功能端口)且中断使能。有中断功能端口)且中断使能。 =1:满足上下拉使能且输入前提下,定义引脚为:满足上下拉使能且输入前提下,定义引脚为 下拉,上升沿引发中断;下拉,上升沿引发中断; =0:满足上下拉使能且输入前提下,定义引脚为:满足上下拉使能且输入前提下,定义引脚为 上拉,下降沿引发中断;上拉,下降沿引发中断;n PPSx 上下拉选择寄存器上下拉选择寄存器 (选择具体是上拉还是下拉选择具体
8、是上拉还是下拉)列:列: LDAA #$00 STAA DDRP ; P口输入口输入 LDAA #$FF STAA PERP ;P口上下拉使能口上下拉使能 LDAA #$0F STAA PIEP ;P口低口低4位中断使能位中断使能 LADA #$0F STAA PPSP ;高;高4位上拉,无中断;位上拉,无中断; ;低位下拉,;低位下拉, 上升沿引发中断;上升沿引发中断;p 条件:引脚定义为输入并且上下拉使能条件:引脚定义为输入并且上下拉使能(PERx) ; 0:上拉:上拉 ; 1:下拉:下拉 3.其它其它I/O AD口:作为口:作为A/D转换模块的模拟量输入口和外界触发脉冲的输转换模块的模拟
9、量输入口和外界触发脉冲的输入口入口,也可以做为普通输入口,也可以做为普通输入口,PORTAD0,PORTAD1注:注:n 各寄存器,复位默认值:各寄存器,复位默认值:0000 0000B;n 各口的数据方向为输入时,内部上、下拉才可设置有效;各口的数据方向为输入时,内部上、下拉才可设置有效;n 各口的数据方向为输出时,内部上、下拉被禁止;各口的数据方向为输出时,内部上、下拉被禁止;n 各寄存器的均有实际存储地址,但编程时使用寄存器名字即可各寄存器的均有实际存储地址,但编程时使用寄存器名字即可n PORTADx 仅能输入,没有数据方向寄存器。仅能输入,没有数据方向寄存器。作通用作通用I/O口时与
10、前述类似,作其它功能略过。口时与前述类似,作其它功能略过。5.3 人机交互接口设计人机交互接口设计 MCU与外设如何连接与外设如何连接-接口,解决信息传递、控制交互接口,解决信息传递、控制交互 输入设备输入设备-如按键、开关,键盘等;如按键、开关,键盘等; 输出设备输出设备-如如LED灯、蜂鸣器、灯、蜂鸣器、LED数码管、数码管、LCD显示屏等;显示屏等; 基本原则:由外设确定硬件接口基本原则:由外设确定硬件接口+软件配合。软件配合。 【例】点亮【例】点亮LED灯,并使蜂鸣器发声。灯,并使蜂鸣器发声。;* ORG $1000main:START: LDAA #$FF STAA DDRB ;设置
11、设置 LDAA #$FE STAA PORTB ;输出输出 BRA * 5.3.1 独立式按键接口独立式按键接口 前图中拨位开关换为按键即可;程序也同前。前图中拨位开关换为按键即可;程序也同前。 硬件硬件-开关输入低有效,上拉,开关输入低有效,上拉,S12可直接用内部上拉可直接用内部上拉 软件软件-查询式,逐位检测每个查询式,逐位检测每个I/O引脚状态;引脚状态; 独立式按键结构独立式按键结构-检测简单;占用检测简单;占用I/O引脚多。按键数目较少时用引脚多。按键数目较少时用5.3.2 按键去抖动按键去抖动 抖动问题:按键在按下或抬起时,由于机械弹性的影响,通抖动问题:按键在按下或抬起时,由于
12、机械弹性的影响,通常所按的键在闭合位置和断开位置之间抖动几下才稳定下来。常所按的键在闭合位置和断开位置之间抖动几下才稳定下来。抖动持续的时间因操作者和按键特性而异,一般为抖动持续的时间因操作者和按键特性而异,一般为510ms。 去抖动:克服检测误判去抖动:克服检测误判n 硬件方法硬件方法-按键后端加双稳态触发器按键后端加双稳态触发器n 软件方法软件方法-检测到有键按下时,延时检测到有键按下时,延时1020ms左右再检测,若左右再检测,若该键保持在按下状态,则确定为按键按下;松按检测同理。该键保持在按下状态,则确定为按键按下;松按检测同理。注:通常使用软件去抖动注:通常使用软件去抖动 键盘的其它
13、问题还有:一键多能、多键同按键盘的其它问题还有:一键多能、多键同按 GND(0) +5V(1) t 键按下 开关打开 开关打开 开关闭合 开始时的回弹 结束时的回弹 +5V 到微处理器输入端口 开关 R +5V GND +5V 行线 列线 ;* 按键检查子程序:无键输入直接退出,有键输入时等松手后退出按键检查子程序:无键输入直接退出,有键输入时等松手后退出 ;* 出口参数:出口参数:Key_numb 按键号,按键号, 0 无键,无键,14 键号键号 Test_key: PSHA ;独立式按键独立式按键 MOVB #0, Key_Numb LDAA PORTA ORAA #$F0 ;屏蔽高屏蔽高
14、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 补充:补充:多分支结构程序设计多分支结构程序设计; 根据键号
15、执行相应子程序。根据键号执行相应子程序。 KeyMain: JSR Key16 LDAA Key_Numb LSLA ; A= A * 2 (分支编号)(分支编号) LDX #Jmp_Table LDY A, X JMP YJmp_Table: FDB Key0Sub FDB Key1Sub . FDB Key16SubKey0Sub: RTS ; 无键输入无键输入Key1Sub: RTSKey16Sub: RTS5.3.3 矩阵式键盘接口矩阵式键盘接口 也叫行列式键盘,行、列交叉处跨接按键;也叫行列式键盘,行、列交叉处跨接按键;2x8,4x4,4x8,8x8等等 按键响应方式:主程序循环查询
16、、中断后检测按键响应方式:主程序循环查询、中断后检测按键检测方法:按键检测方法:(1)行扫描法行扫描法 右图,原理:右图,原理:1、全扫描、全扫描 各行送各行送“0”,查是否有键按下查是否有键按下2、逐行扫描、逐行扫描 逐行送逐行送“0”,确定哪行、哪列确定哪行、哪列键按下键按下(2)行反转法行反转法 键值计算方法(键值计算方法(以符号以符号“1”为例)为例) VDD MCU 内部上拉电阻 PTA0 PTA1 PTA2 PTA3 PTA7 PTA6 PTA5 PTA4 列线n1 n2 n3 n4 行线m1 m2 m3 m4 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D 输出输
17、出输入输入 7 6 5 4 3 2 1 0PTA口口011101 1 1键值键值=$EE123A456B7*809#CD 键值计算方法(键值计算方法(以符号以符号“8”为例)为例) VDD MCU 内部上拉电阻 PTA0 PTA1 PTA2 PTA3 PTA7 PTA6 PTA5 PTA4 列线n1 n2 n3 n4 行线m1 m2 m3 m4 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D 输出输出输入输入 7 6 5 4 3 2 1 0PTA口口101111 0 1键值键值=$DB123A456B7*809#CD问题:如果输入是问题:如果输入是A口低口低4位,输出高位,输出
18、高4位位键值是键值是$BDl 键值计算键值计算 按前图的接法可以得按前图的接法可以得出键值表,如右。键出键值表,如右。键值可以通过扫描法获值可以通过扫描法获得,由键值通过查表得,由键值通过查表法编程得到真正定义法编程得到真正定义值。值。 (即书例(即书例5-6)l 行扫描法汇编程序行扫描法汇编程序 1 EE 2 DE 3 BE A 7E 4 ED 5 DD 6 BD B 7D 7 EB 8 DB 9 BB C 7B * E7 0 D7 # B7 D 77定义值键值 1 1 2 2 3 3 A 4 4 5 5 6 6 7 B 8 7 9 8 10 9 11 C 12 * 13 0 14 # 15
19、 D 16定义值键值; 读键盘口:入口: B = 输出行号; 出口:A = 列值及相关标志位; DDRA= $F0,PA0PA3输入(列);PA4PA7输出(行);条件 A 内部上拉电阻,按键有效时为“0”InKeyPort: STAB PORTA LDAA PORTA ORAA #$F0 ;高4位无用,屏蔽 COMA ;高4位始终为$0 RTS程序分析:程序分析:n B=0时,时,4行行A口输出口输出4个低电平,如果有按键,个低电平,如果有按键, 则则A口输入端口输入端 必定有一个以上必定有一个以上0返回,判断有无键按下;返回,判断有无键按下;n 如果无键按下,如果无键按下, A 返回时零返
20、回时零n 当当B=7,3,1,0时,可以分别测试时,可以分别测试1,2,3,4行是否有建按下;行是否有建按下;n 取反指令使得有键按下时取反指令使得有键按下时A寄存器位非零;寄存器位非零;; 读键盘口:入口: B = 输出行号; 出口:A = 列值及相关标志位; DDRA= $F0InKeyPort: STAB PORTA LDAA PORTA ORAA #$F0 COMA RTS;非编码键盘:无键输入退出。非编码键盘:无键输入退出。;出口参数:出口参数:Key_numb0无键,无键,116键号键号Key16: PSHD MOVB #0, Key_Numb CLRB ;测试所有测试所有4行行
21、BSR InKeyPort ;判断有无键判断有无键 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_RTSKey16_LP1: INC Key_Numb LSRA BNE Key16_LP1Key16_LP2: CLRB ;对所有行 BSR
22、 InKeyPort BNE Key16_LP2 JSR DELAY_20MS Key16_RTS: PULD RTS 程序功能:n是否有键按下n是什么键好n键释放否 +5V GND +5V 行线 列线 ;* 按键检查子程序:无键输入直接退出,有键输入时等松手后退出按键检查子程序:无键输入直接退出,有键输入时等松手后退出 ;* 出口参数:出口参数:Key_numb 按键号,按键号, 0 无键,无键,14 键号键号 Test_key: PSHA ;独立式按键独立式按键 MOVB #0, Key_Numb LDAA PORTA ORAA #$F0 ;屏蔽高屏蔽高4位影响位影响 COMA BEQ T
23、est_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 RTS6.4 人机交互接口设计人机交互接口设计6.4.1 LED数码管的工作原理数码管的工作原理l 结构
24、结构 7段,段,8个发光二极管(字段),组合显示出数字、字符个发光二极管(字段),组合显示出数字、字符 分:共阴极(给分:共阴极(给1,段亮);共阳极(给,段亮);共阳极(给0,段亮),段亮) 提供段驱动电流,并加适当限流电阻提供段驱动电流,并加适当限流电阻 l 字形编码字形编码 见表见表6-1l 译码分类译码分类 软件译码软件译码(查表查表) 硬件译码硬件译码(专用芯片专用芯片) l 扫描分类扫描分类 静态扫描静态扫描 动态扫描动态扫描 (a) 外形结构与引脚外形结构与引脚 (b) 共阴极共阴极 (C) 共阳极共阳极 扫描法扫描法LED显示编程原理显示编程原理 CS3 a b c d e f
25、 g dp CS2 a b c d e f g dp CS1 a b c d e f g dp CS0 a b c d e f g dp 位选线扫描法:位选线扫描法:CS0CS0CS3CS3中只有一个为中只有一个为0 0。6.4.3 LED数码管显示汇编程序设计数码管显示汇编程序设计DISP:LDX #$2000 LDY #TABLE LDAB #$FF CLC ;准备完毕准备完毕LP: LDAA #$FF STAA PTT ;关关LED LDAA X ;取数取数 LDAA A,Y ;查段码查段码 STAA PTP ;P口输出口输出 ROLB ;左移位选左移位选 STAB PTT ;T口输出口
26、输出 BSR DELAY10ms INX ;指针加指针加1 CPX #2004 ;比较比较 BNE LP ;4次循环次循环 RTS ;返回返回Entry: LDAA #$FF ;P、 STAA DDRP ; T口口 STAA DDRT ;输出输出LOOP: JSR DISP BRA LOOPTABLE:DC.B $3F,$06,$5B,$4F,$66,$6D,$7D, 07,$7F,$6F 列列5-5:共阴、动态显示:共阴、动态显示4位位BCD码码($2000开始存放开始存放)的程序示的程序示.本章习题:本章习题:S12MCU的的I/O口有哪些?各能复用为什么功能?口有哪些?各能复用为什么功能
27、?A口作为通用口作为通用I/O口时有哪几个几个寄存器?口时有哪几个几个寄存器?A口、口、B口的数据方向寄存器和上拉控制寄存器的作用是什么?口的数据方向寄存器和上拉控制寄存器的作用是什么?编写汇编程序:连接在编写汇编程序:连接在PB4PB7有有4个个LED灯,实现跑马灯显示。灯,实现跑马灯显示。画电路图:实现画电路图:实现4x4矩阵键盘矩阵键盘+4位位LED数码管显示。数码管显示。1.通读书例通读书例5-10汇编程序,理解并学习键盘、数码管的软件编程。汇编程序,理解并学习键盘、数码管的软件编程。列列5-6KEYNUMB EQU $2000 DELAY: CLC LDAA #$00 STAA KE
28、YNUMB LDY #TABLE2LP3: LDAB Y INY LDAA KEYVAL SBA BEQ DISPLAY1 INC KEYNUMB LDAA KEYNUMB LDAB #$10 SBA BEQ NOKEY BRA LP3NOKEY: RTSDISPLAY1: LDAA #$01 ;共阳共阳 STAA PTT LDAB KEYNUMB;COUNTER1: LDY #TABLE3 LDAA B,Y STAA PTP RTS TABLE2: FCB $ee,$de,$be,$7e,$ed,$dd,$bd,$7d,$eb,$db,$bb,$7b,$e7,$d7,$b7,$77 ;4x4行列键值,预定义的,行列键值,预定义的,16个可能的读回值个可能的读回值TABLE3: FCB $f9,$a4,$b0,$99,$92,$82,$f8,$80,$90,$c0,$88,$83,$c6,$a1,$86,$8e;共阳字符编码共阳字符编码: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B, C, D, E, F 讨论:讨论
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保护环境珍惜资源的建议书
- 中秋节联欢会的精彩致辞范文(12篇)
- 中秋晚会幼儿活动主持词范文(5篇)
- 五好职工先进事迹材料(16篇)
- 损伤病人的护理-习题题库
- 轮胎噪声测试方法 转鼓法 编制说明
- 摄影感想课件教学课件
- 《鲁宾逊漂流记》读后感
- 宪法教育课件教学课件
- 三年级数学计算题专项练习汇编及答案
- 钽铌冶金课件
- 10KV供配电工程施工组织设计方案
- DBJ50∕T-044-2019 园林种植土壤质量标准数据
- 应届生学历学位证明模板
- 2023年海尔各季度财务报表分析
- 迈尔尼《战争》阅读练习及答案
- 高一(17)家长会 (共32张PPT)
- 安全生产监督体系完整
- 输电线路工程基础施工方案
- 人工工日单价计算表
- 廉洁风险防控手册
评论
0/150
提交评论