2012年单片机第5章s12输入输出口_第1页
2012年单片机第5章s12输入输出口_第2页
2012年单片机第5章s12输入输出口_第3页
2012年单片机第5章s12输入输出口_第4页
2012年单片机第5章s12输入输出口_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第5章S12并行输入/输出接口5.1

I/O端口功能简介I/O端口:即输入/输出端口,是MCU与外界进行交互的重要通道,实现各种接口。5.1.1

I/O端口简介MC9SDG128有丰富的I/O引脚,多功能、多复用A口、B口、E口、K口:(扩展方式时,可作总线)PORTA(0~7)PORTB(0~7)PORTE(0~7)PORTK(0~5)H口、J口、M口、S口、P口、T口:(复合功能,优先权左右递减)PORTH

---SPI/GPIOPORTJ

---CAN/I2C/GPIOPORTM

---CAN/BDLC/GPIOPORTS

---SCI/SPI/GPIOPORTP

---PWM/SPI/GPIOPORTT

---ECT/GPIO注:GPIO=通用并行输入/输出MCU5.1.

I/O端口功能通过设置相应寄存器,实现以下功能:DDR寄存器---数据方向,定义是输入还是输出;PORTA、PORTB

、PTS

、PTH…;RDR寄存器

---

定PER寄存器

---

当I使能内部上拉或下拉;PIE寄存器

---

禁PPS寄存器

--

上1、PER有效时,2、端口中断允许义驱动能力;/O口作为输入口时,定义是否止、允许端口中断;下拉选择:选择上拉还是下拉时,选择上升沿还是下降沿触发VccK2R4R3有下拉电阻R4VccK3R5I3“悬空”状态I3MCU

I2K1R1R2有上拉电阻R2I1Vcc输入电I/O寄存器

---

数据寄存路器框,图定义输出电平的高低;5.2

I/O端口设置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不降Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0PUPKE\\PUPEE\\PUPBEPUPAEBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RDPK\\RDPE\\RDPBRDPA2. H、M、P、S、T

口DDRx:数据方向寄存器LDAASTDA%11110000DDRH;高输出;低输入。PTx

:

I/O寄存器STDALDAAPTHPTH

;高4位输出锁存数据;低4位引脚逻辑PTIx

输入寄存器(只读寄存器)

DDRx=0,反映输入引脚电平高低;

DDRx=1,反映引脚超载或短路,1:异常,0:正常;LDAA

PTIH;RDRx

低功耗驱动寄存器0:正常输出;1:正常的1/6LDAA

#$F0 ;

STAARDRSPERx

上下拉使能寄存器(是否允许上下拉功能使用)0:禁止上拉或下拉;1:允许选择上拉或下拉电阻;LDAA

#%10101010

;

STAA

RDRS列:LDAASTAALDAA#$00DDRP#$FF;P口输入STAAPERP;P口上下拉使能LDAA#$0FSTAAPIEP;P口低4位中断使能LADA#$0FSTAAPPSP;高4位上拉,无中断;;低位下拉,上升沿引发中断;PPSx

上下拉选择寄存器(选择具体是上拉还是下拉)①条件:引脚定义为输入并且上下拉使能(PERx)

;0:上拉

1:下拉②条件:P、J、H(有中断功能端口)且中断使能。=1:满足上下拉使能且输入前提下,定义引脚为下拉,上升沿引发中断;=0:满足上下拉使能且输入前提下,定义引脚为上拉,下降沿引发中断;其它I/OAD口:作为作A通/D用转I/换O模口块时的与模前拟述量类输似入,口作和其外它界功触能略发过脉。冲的输入口,也可以做为普通输入口,PORTAD0,PORTAD1注:各寄存器,复位默认值:00000000B;各口的数据方向为输入时,内部上、下拉才可设置有效;各口的数据方向为输出时,内部上、下拉被禁止;各寄存器的均有实际存储地址,但编程时使用寄存器名字即可PORTADx

仅能输入,没有数据方向寄存器。5.3

人机交互接口设计MCU与外设如何连接---接口,解决信息传递、控制交互…输入设备---如按键、开关,键盘等;输出设备---如LED灯、蜂鸣器、LED数码管、LCD显示屏等;基本原则:由外设确定硬件接口+软件配合。【例】点亮LED灯,并使蜂鸣器发声。;**************************ORG

$1000#$FFDDRB ;设置

#$FEPORTB ;输出main:START:LDAASTAALDAASTAABRA

*+5VR1510LEDR21K+5VNPN8050BuzzerPB0PB1PB2PB3PB4PB5PB6PB7U0Freescale

MCU5.3.1

独立式按键接口前图中拨位开关换为按键即可;程序也同前。硬件---开关输入低有效,上拉,S12可直接用内部上拉软件---查询式,逐位检测每个I/O引脚状态;独立式按键结构--检测简单;占用I/O引脚多。按键数目较少时用5.3.2

按键去抖动若常所按的键在闭合位置和断开位置之间抖动几下才稳定下来抖动持续的时间因操作者和按键特性而异,一般为5~10ms去抖动:克服检测误判

硬件方法---按键后端加双稳态触发器

软件方法---检测到有键按下时,延时10~20ms左右再检测,该键保持在按下状态,则确定为按键按下;松按检测同理。注:通常使用软件去抖动键盘的其它问题还有:一键多能、多键同按……GN+5抖动问题:按键在按下或抬起时,由于机械弹性的影响,通+5VR

到微处理器输入端口

。。开关开始时的回弹

结束时的回弹开关打开

开关打开V(1)开关闭合D(0)

键按下

t+5V+5V行线列线GND

+5VR1

R2

R3

R45.1K

5.1K

5.1K

5.1KPB0PB1PB2PB3PB4PB5PB6PB7U0Freescale

MCU+5VR5510LED1R6510LED2R7510LED3R8510LED4SW3-1SW3-4SW3-3SW3-2;*

按键检查子程序:无键输入直接退出,有键输入时等松手后退出;*

出口参数:Key_numb

=按键号,0

无键,1-4

键号Test_key:;独立式按键;屏蔽高4位影响PSHAMOVB

#0,

Key_NumbLDAA

PORTAORAA

#$F0COMABEQTest_key_RTS;无键输入,直接退出JSR

DELAY_20MSLDAA

PORTA;;;Key_Numb;查键号,条件控制循环Test_key_NEXT:

INCLSRABNETest_key_NEXTTest_key_LP1:;判松手LDAA

PORTAORAA

#$F0COMABNETest_key_LP1;未松手则继续Test_key_RTS:JSR

DELAY_20MSPULARTS补充:多分支结构程序设计;根据键号执行相应子程序。KeyMain:; A=A

*

2

(分支编号)JSR

Key16LDAA

Key_NumbLSLALDX

#Jmp_TableLDY A,

XJMP

YJmp_Table:

FDB

Key0SubFDB

Key1Sub….Key0Sub:FDB

Key16SubRTS

;

无键输入Key1Sub:

…………RTSKey16Sub:

…………RTS5.3.3

矩阵式键盘接口也叫行列式键盘,行、列交叉处跨接按键;2x8,4x4,4x8,8x8等按键响应方式:主程序循环查询、中断后检测按键检测方法:行扫描法

右图,原理:1、全扫描各行送“0”,查是否有键按下

2、逐行扫描逐行送“0”,确定哪行、哪列键按下行反转法R15.1KR25.1KR35.1KR45.1K+5VPA0

PA1

PA2

PA3

PA4

PA5

PA6

PA7U0Freescale

MCUS1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16R1

5.1KR2

5.1KR3

5.1KR4

5.1K+5VPA0

PA1

PA2

PA3

PA4

PA5

PA6

PA7U0Freescale

MCUS1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16键值计算方法(以符号“1”为例)VDDMCU内部上拉电阻PTA0PTA1PTA2PTA3PTA7PTA6PTA5PTA4列线n1

n2

n3

n4行线m1m2m3m4123A456B789C*

0#D输出输入7

6

5

4

3

2

1

0PTA口11101110键值=$EE123A456B7*809#CD键值计算方法(以符号“8”为例)VDDMCU内部上拉电阻PTA0PTA1PTA2PTA3PTA7PTA6PTA5PTA4列线n1

n2

n3

n4行线m1m2m3m4123A456B789C*

0#D输出输入7

6

5

4

3

2

1

0PTA口11011011键值=$DB123A456B7*809#CD问题:如果输入是A口低4位,输出高4位键值是$BD键值计算按前图的接法可以得出键值表,如右。键值可以通过扫描法获得,由键值通过查表法编程得到真正定义值。(即书例5-6)行扫描法汇编程序1EE2DE3BEA7E4ED5DD6BDB7D7EB8DB9BBC7B*E70D7#B7D77定义值键值112233A4455667B879810911C12*13014#15D16定义值键值;

读键盘口:入口: B

=

输出行号;

出口:A=列值及相关标志位;DDRA=$F0,PA0~PA3输入(列);PA4~PA7输出(行);;条件A

内部上拉电阻,按键有效时为“0”InKeyPort:STABPORTALDAAPORTAORAA#$F0;高4位无用,屏蔽COMA;高4位始终为$0RTS程序分析:B=0时,4行A口输出4个低电平,如果有按键,则A口输入端必定有一个以上0返回,判断有无键按下;如果无键按下,A

返回时零当B=7,3,1,0时,可以分别测试1,2,3,4行是否有建按下;取反指令使得有键按下时A寄存器位非零;;

读键盘口:入口: B

=

输出行号出口:A=列值及相关标志位DDRA=

$F0;;InKeyPort:STAB

PORTALDAA

PORTAORAA

#$F0COMARTS;非编码键盘:无键输入退出。;出口参数:Key_numb=0无键,1-16键号Key16:

PSHDMOVB #0,

Key_Numb;测试所有4行;判断有无键;无键退出CLRBBSR

InKeyPortBEQ

Key16_RTSJSR

DELAY_20MSLDAB

#$7F

;开始逐行扫描K16NL:

BSR

InKeyPortBNE

Key16_LP1;加一行Key_Numb#4Key_NumbLDAAADDASTAALSRBCMPB

#$07;下一行;容错处理BNE

K16NLMOVB#0,

Key_NumbKey16_LP1:Key16_LP2:BRA

Key16_RTSINC

Key_NumbLSRABNECLRBBSRBNEKey16_LP1;对所有行

InKeyPortKey16_LP2JSR

DELAY_20MSKey16_RTS:

PULDRTS程序功能:是否有键按下是什么键好键释放否+5V+5V行线列线GND

+5VR1

R2

R3

R45.1K

5.1K

5.1K

5.1KPB0PB1PB2PB3PB4PB5PB6PB7U0Freescale

MCU+5VR5510LED1R6510LED2R7510LED3R8510LED4SW3-1SW3-4SW3-3SW3-2重庆大学通信工程学院 任勇;*

按键检查子程序:无键输入直接退出,有键输入时等松手后退出;*

出口参数:Key_numb

=按键号,0

无键,1-4

键号Test_key:;独立式按键;屏蔽高4位影响PSHAMOVB

#0,

Key_NumbLDAA

PORTAORAA

#$F0COMABEQTest_key_RTS;无键输入,直接退出JSR

DELAY_20MSLDAA

PORTA;;;Key_Numb;查键号,条件控制循环Test_key_NEXT:

INCLSRABNETest_key_NEXTTest_key_LP1:;判松手LDAA

PORTAORAA

#$F0COMABNETest_key_LP1;未松手则继续Test_key_RTS:JSR

DELAY_20MSPULARTS6.4

人机交互接口设计LED数码管的工作原理结构7段,8个发光二极管(字段),组合显示出数字、字符分:共阴极(给1,段亮);共阳极(给0,段亮)提供段驱动电流,并加适当限流电阻字形编码见表6-1译码分类软件译码(查表)硬件译码(专用芯片)扫描分类静态扫描动态扫描VCCe d

GND

c

dp1

2

3

4

510

9

8

7

6g f

GND

a

babcdefgdp(a)

外形结构与引脚(b)

共阴极(C)共阳极6.4.2

数码管编程实例扫描法LED显示编程原理abcdefgdpabcdefgdpabcdefgdpabcdefgdpCS3

CS2

CS1

CS0位选线扫描法:CS0~CS3中只有一个为0。位选线扫描法:CS0~CS3中只有一个为0。6.4.3

LED数码管显示汇编程序设计DISP:LDXLDY#$2000#TABLELDAB

#$FFCLC;准备完毕LP:LDAA#$FFSTAAPTT;关LEDLDAA

X;取数LDAA

A,Y;查段码STAA

PTP;P口输出ROLB;左移位选STAB

PTT;T口输出BSR

DELAY10msINX

;指针加1CPX

#2004 ;比较BNE

LP ;4次循环RTS

;返回gdpfabcdeCOMgdpfabcdeCOMgdpfabcdeCOMgdpfabcdeCOM限限限限PP0

PP1

PP2

PP3

PP4

PP5

PP6

PP7PT0

PT1

PT2

PT3

PT4

PT5

PT6

PT7U0Freescale

MCUEntry:LDAA#$FF;P、STAADDRP;T口STAADDRT;输出LOOP:JSRDISPBRALOOPTABLE:DC.B

$3F,$06,$5B,$4F,$66,$6D,$7D,

07,$7F,$6F列5-5:共阴、动态显示4位BCD码($2000开始存放)的程序示.本章习题:S12MCU的I/O口有哪些?各能复用为什么功能?A口作为通用I/O口时有哪几个几个寄存器?A口、B口的数据方向寄存器和上拉控制寄存器的作用是什么?编写汇编程序:连接在PB4~PB7有4个LED灯,实现跑马灯显示。画电路图:实现4x4矩阵键盘+4位LED数码管显示。通读书例5-10汇编程序,理解并学习键盘、数码管的软件编程。列5-6$2000KEYNUMB

EQUDELAY:

CLCLDAA#$00STAA

KEYNUMBLDY

#TABLE2LP3:

LDAB

YINYLDAA

KEYVALSBABEQ

DISPLAY1INC

KEYNUMBLDAA

KEYNUMB#$10NOKEYLP3LDABSBABEQBRANOKEY:

RTS#$01 ;共阳

PTTKEYNUMB;#TABLE3B,YPTPDISPLAY1:

LDAASTAALDABCOUNTER1:

LDYLDAASTAARTSTABLE2:

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

评论

0/150

提交评论