2012年單片機(jī)第5章s12輸入輸出口_第1頁(yè)
2012年單片機(jī)第5章s12輸入輸出口_第2頁(yè)
2012年單片機(jī)第5章s12輸入輸出口_第3頁(yè)
2012年單片機(jī)第5章s12輸入輸出口_第4頁(yè)
2012年單片機(jī)第5章s12輸入輸出口_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

I/O端口功能簡(jiǎn)介I/O端口:即輸入/輸出端口,是MCU與外界進(jìn)行交互的重要通道,實(shí)現(xiàn)各種接口。5.1.1

I/O端口簡(jiǎn)介MC9SDG128有豐富的I/O引腳,多功能、多復(fù)用A口、B口、E口、K口:(擴(kuò)展方式時(shí),可作總線)PORTA(0~7)PORTB(0~7)PORTE(0~7)PORTK(0~5)H口、J口、M口、S口、P口、T口:(復(fù)合功能,優(yōu)先權(quán)左右遞減)PORTH

---SPI/GPIOPORTJ

---CAN/I2C/GPIOPORTM

---CAN/BDLC/GPIOPORTS

---SCI/SPI/GPIOPORTP

---PWM/SPI/GPIOPORTT

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

I/O端口功能通過(guò)設(shè)置相應(yīng)寄存器,實(shí)現(xiàn)以下功能:DDR寄存器---數(shù)據(jù)方向,定義是輸入還是輸出;PORTA、PORTB

、PTS

、PTH…;RDR寄存器

---

定PER寄存器

---

當(dāng)I使能內(nèi)部上拉或下拉;PIE寄存器

---

禁PPS寄存器

--

上1、PER有效時(shí),2、端口中斷允許義驅(qū)動(dòng)能力;/O口作為輸入口時(shí),定義是否止、允許端口中斷;下拉選擇:選擇上拉還是下拉時(shí),選擇上升沿還是下降沿觸發(fā)VccK2R4R3有下拉電阻R4VccK3R5I3“懸空”狀態(tài)I3MCU

I2K1R1R2有上拉電阻R2I1Vcc輸入電I/O寄存器

---

數(shù)據(jù)寄存路器框,圖定義輸出電平的高低;5.2

I/O端口設(shè)置A口、B口、E口、K口數(shù)據(jù)方向寄存器DDRA、DDRB、DDRE、DDRK某位:0---輸入,1---輸出數(shù)據(jù)寄存器PORTA、PORTB、PORTE、PORTK讀時(shí):各位得到外部引腳的邏輯電平;(數(shù)據(jù)方向?yàn)檩斎霑r(shí))寫時(shí):各位數(shù)據(jù)鎖存,并更新外部引腳的邏輯電平;上拉控制寄存器PUCR(8位同時(shí)上拉或無(wú)拉電阻)4口共用,PUPAE、PUPBE、PUPEE、PUPKE位為1使上拉;0無(wú)降功率驅(qū)動(dòng)控制寄存器RDRIV(8位同時(shí)全功率或降功率)4口共用,RDPA、RDPB、RDPE、RDPK位為使輸出降功率;0不降Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0PUPKE\\PUPEE\\PUPBEPUPAEBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RDPK\\RDPE\\RDPBRDPA2. H、M、P、S、T

口DDRx:數(shù)據(jù)方向寄存器LDAASTDA%11110000DDRH;高輸出;低輸入。PTx

:

I/O寄存器STDALDAAPTHPTH

;高4位輸出鎖存數(shù)據(jù);低4位引腳邏輯PTIx

輸入寄存器(只讀寄存器)

DDRx=0,反映輸入引腳電平高低;

DDRx=1,反映引腳超載或短路,1:異常,0:正常;LDAA

PTIH;RDRx

低功耗驅(qū)動(dòng)寄存器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位上拉,無(wú)中斷;;低位下拉,上升沿引發(fā)中斷;PPSx

上下拉選擇寄存器(選擇具體是上拉還是下拉)①條件:引腳定義為輸入并且上下拉使能(PERx)

;0:上拉

1:下拉②條件:P、J、H(有中斷功能端口)且中斷使能。=1:滿足上下拉使能且輸入前提下,定義引腳為下拉,上升沿引發(fā)中斷;=0:滿足上下拉使能且輸入前提下,定義引腳為上拉,下降沿引發(fā)中斷;其它I/OAD口:作為作A通/D用轉(zhuǎn)I/換O??趬K時(shí)的與模前擬述量類輸似入,口作和其外它界功觸能略發(fā)過(guò)脈。沖的輸入口,也可以做為普通輸入口,PORTAD0,PORTAD1注:各寄存器,復(fù)位默認(rèn)值:00000000B;各口的數(shù)據(jù)方向?yàn)檩斎霑r(shí),內(nèi)部上、下拉才可設(shè)置有效;各口的數(shù)據(jù)方向?yàn)檩敵鰰r(shí),內(nèi)部上、下拉被禁止;各寄存器的均有實(shí)際存儲(chǔ)地址,但編程時(shí)使用寄存器名字即可PORTADx

僅能輸入,沒(méi)有數(shù)據(jù)方向寄存器。5.3

人機(jī)交互接口設(shè)計(jì)MCU與外設(shè)如何連接---接口,解決信息傳遞、控制交互…輸入設(shè)備---如按鍵、開(kāi)關(guān),鍵盤等;輸出設(shè)備---如LED燈、蜂鳴器、LED數(shù)碼管、LCD顯示屏等;基本原則:由外設(shè)確定硬件接口+軟件配合?!纠奎c(diǎn)亮LED燈,并使蜂鳴器發(fā)聲。;**************************ORG

$1000#$FFDDRB ;設(shè)置

#$FEPORTB ;輸出main:START:LDAASTAALDAASTAABRA

*+5VR1510LEDR21K+5VNPN8050BuzzerPB0PB1PB2PB3PB4PB5PB6PB7U0Freescale

MCU5.3.1

獨(dú)立式按鍵接口前圖中撥位開(kāi)關(guān)換為按鍵即可;程序也同前。硬件---開(kāi)關(guān)輸入低有效,上拉,S12可直接用內(nèi)部上拉軟件---查詢式,逐位檢測(cè)每個(gè)I/O引腳狀態(tài);獨(dú)立式按鍵結(jié)構(gòu)--檢測(cè)簡(jiǎn)單;占用I/O引腳多。按鍵數(shù)目較少時(shí)用5.3.2

按鍵去抖動(dòng)若常所按的鍵在閉合位置和斷開(kāi)位置之間抖動(dòng)幾下才穩(wěn)定下來(lái)抖動(dòng)持續(xù)的時(shí)間因操作者和按鍵特性而異,一般為5~10ms去抖動(dòng):克服檢測(cè)誤判

硬件方法---按鍵后端加雙穩(wěn)態(tài)觸發(fā)器

軟件方法---檢測(cè)到有鍵按下時(shí),延時(shí)10~20ms左右再檢測(cè),該鍵保持在按下?tīng)顟B(tài),則確定為按鍵按下;松按檢測(cè)同理。注:通常使用軟件去抖動(dòng)鍵盤的其它問(wèn)題還有:一鍵多能、多鍵同按……GN+5抖動(dòng)問(wèn)題:按鍵在按下或抬起時(shí),由于機(jī)械彈性的影響,通+5VR

到微處理器輸入端口

。。開(kāi)關(guān)開(kāi)始時(shí)的回彈

結(jié)束時(shí)的回彈開(kāi)關(guān)打開(kāi)

開(kāi)關(guān)打開(kāi)V(1)開(kāi)關(guān)閉合D(0)

鍵按下

t+5V+5V行線列線GND

+5VR1

R2

R3

R45.1K

5.1K

5.1K

5.1KPB0PB1PB2PB3PB4PB5PB6PB7U0Freescale

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

按鍵檢查子程序:無(wú)鍵輸入直接退出,有鍵輸入時(shí)等松手后退出;*

出口參數(shù):Key_numb

=按鍵號(hào),0

無(wú)鍵,1-4

鍵號(hào)Test_key:;獨(dú)立式按鍵;屏蔽高4位影響PSHAMOVB

#0,

Key_NumbLDAA

PORTAORAA

#$F0COMABEQTest_key_RTS;無(wú)鍵輸入,直接退出JSR

DELAY_20MSLDAA

PORTA;;;Key_Numb;查鍵號(hào),條件控制循環(huán)Test_key_NEXT:

INCLSRABNETest_key_NEXTTest_key_LP1:;判松手LDAA

PORTAORAA

#$F0COMABNETest_key_LP1;未松手則繼續(xù)Test_key_RTS:JSR

DELAY_20MSPULARTS補(bǔ)充:多分支結(jié)構(gòu)程序設(shè)計(jì);根據(jù)鍵號(hào)執(zhí)行相應(yīng)子程序。KeyMain:; A=A

*

2

(分支編號(hào))JSR

Key16LDAA

Key_NumbLSLALDX

#Jmp_TableLDY A,

XJMP

YJmp_Table:

FDB

Key0SubFDB

Key1Sub….Key0Sub:FDB

Key16SubRTS

;

無(wú)鍵輸入Key1Sub:

…………RTSKey16Sub:

…………RTS5.3.3

矩陣式鍵盤接口也叫行列式鍵盤,行、列交叉處跨接按鍵;2x8,4x4,4x8,8x8等按鍵響應(yīng)方式:主程序循環(huán)查詢、中斷后檢測(cè)按鍵檢測(cè)方法:行掃描法

右圖,原理:1、全掃描各行送“0”,查是否有鍵按下

2、逐行掃描逐行送“0”,確定哪行、哪列鍵按下行反轉(zhuǎn)法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鍵值計(jì)算方法(以符號(hào)“1”為例)VDDMCU內(nèi)部上拉電阻PTA0PTA1PTA2PTA3PTA7PTA6PTA5PTA4列線n1

n2

n3

n4行線m1m2m3m4123A456B789C*

0#D輸出輸入7

6

5

4

3

2

1

0PTA口11101110鍵值=$EE123A456B7*809#CD鍵值計(jì)算方法(以符號(hào)“8”為例)VDDMCU內(nèi)部上拉電阻PTA0PTA1PTA2PTA3PTA7PTA6PTA5PTA4列線n1

n2

n3

n4行線m1m2m3m4123A456B789C*

0#D輸出輸入7

6

5

4

3

2

1

0PTA口11011011鍵值=$DB123A456B7*809#CD問(wèn)題:如果輸入是A口低4位,輸出高4位鍵值是$BD鍵值計(jì)算按前圖的接法可以得出鍵值表,如右。鍵值可以通過(guò)掃描法獲得,由鍵值通過(guò)查表法編程得到真正定義值。(即書例5-6)行掃描法匯編程序1EE2DE3BEA7E4ED5DD6BDB7D7EB8DB9BBC7B*E70D7#B7D77定義值鍵值112233A4455667B879810911C12*13014#15D16定義值鍵值;

讀鍵盤口:入口: B

=

輸出行號(hào);

出口:A=列值及相關(guān)標(biāo)志位;DDRA=$F0,PA0~PA3輸入(列);PA4~PA7輸出(行);;條件A

內(nèi)部上拉電阻,按鍵有效時(shí)為“0”InKeyPort:STABPORTALDAAPORTAORAA#$F0;高4位無(wú)用,屏蔽COMA;高4位始終為$0RTS程序分析:B=0時(shí),4行A口輸出4個(gè)低電平,如果有按鍵,則A口輸入端必定有一個(gè)以上0返回,判斷有無(wú)鍵按下;如果無(wú)鍵按下,A

返回時(shí)零當(dāng)B=7,3,1,0時(shí),可以分別測(cè)試1,2,3,4行是否有建按下;取反指令使得有鍵按下時(shí)A寄存器位非零;;

讀鍵盤口:入口: B

=

輸出行號(hào)出口:A=列值及相關(guān)標(biāo)志位DDRA=

$F0;;InKeyPort:STAB

PORTALDAA

PORTAORAA

#$F0COMARTS;非編碼鍵盤:無(wú)鍵輸入退出。;出口參數(shù):Key_numb=0無(wú)鍵,1-16鍵號(hào)Key16:

PSHDMOVB #0,

Key_Numb;測(cè)試所有4行;判斷有無(wú)鍵;無(wú)鍵退出CLRBBSR

InKeyPortBEQ

Key16_RTSJSR

DELAY_20MSLDAB

#$7F

;開(kāi)始逐行掃描K16NL:

BSR

InKeyPortBNE

Key16_LP1;加一行Key_Numb#4Key_NumbLDAAADDASTAALSRBCMPB

#$07;下一行;容錯(cuò)處理BNE

K16NLMOVB#0,

Key_NumbKey16_LP1:Key16_LP2:BRA

Key16_RTSINC

Key_NumbLSRABNECLRBBSRBNEKey16_LP1;對(duì)所有行

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重慶大學(xué)通信工程學(xué)院 任勇;*

按鍵檢查子程序:無(wú)鍵輸入直接退出,有鍵輸入時(shí)等松手后退出;*

出口參數(shù):Key_numb

=按鍵號(hào),0

無(wú)鍵,1-4

鍵號(hào)Test_key:;獨(dú)立式按鍵;屏蔽高4位影響PSHAMOVB

#0,

Key_NumbLDAA

PORTAORAA

#$F0COMABEQTest_key_RTS;無(wú)鍵輸入,直接退出JSR

DELAY_20MSLDAA

PORTA;;;Key_Numb;查鍵號(hào),條件控制循環(huán)Test_key_NEXT:

INCLSRABNETest_key_NEXTTest_key_LP1:;判松手LDAA

PORTAORAA

#$F0COMABNETest_key_LP1;未松手則繼續(xù)Test_key_RTS:JSR

DELAY_20MSPULARTS6.4

人機(jī)交互接口設(shè)計(jì)LED數(shù)碼管的工作原理結(jié)構(gòu)7段,8個(gè)發(fā)光二極管(字段),組合顯示出數(shù)字、字符分:共陰極(給1,段亮);共陽(yáng)極(給0,段亮)提供段驅(qū)動(dòng)電流,并加適當(dāng)限流電阻字形編碼見(jiàn)表6-1譯碼分類軟件譯碼(查表)硬件譯碼(專用芯片)掃描分類靜態(tài)掃描動(dòng)態(tài)掃描VCCe d

GND

c

dp1

2

3

4

510

9

8

7

6g f

GND

a

babcdefgdp(a)

外形結(jié)構(gòu)與引腳(b)

共陰極(C)共陽(yáng)極6.4.2

數(shù)碼管編程實(shí)例掃描法LED顯示編程原理abcdefgdpabcdefgdpabcdefgdpabcdefgdpCS3

CS2

CS1

CS0位選線掃描法:CS0~CS3中只有一個(gè)為0。位選線掃描法:CS0~CS3中只有一個(gè)為0。6.4.3

LED數(shù)碼管顯示匯編程序設(shè)計(jì)DISP:LDXLDY#$2000#TABLELDAB

#$FFCLC;準(zhǔn)備完畢LP:LDAA#$FFSTAAPTT;關(guān)LEDLDAA

X;取數(shù)LDAA

A,Y;查段碼STAA

PTP;P口輸出ROLB;左移位選STAB

PTT;T口輸出BSR

DELAY10msINX

;指針加1CPX

#2004 ;比較BNE

LP ;4次循環(huán)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:共陰、動(dòng)態(tài)顯示4位BCD碼($2000開(kāi)始存放)的程序示.本章習(xí)題:S12MCU的I/O口有哪些?各能復(fù)用為什么功能?A口作為通用I/O口時(shí)有哪幾個(gè)幾個(gè)寄存器?A口、B口的數(shù)據(jù)方向寄存器和上拉控制寄存器的作用是什么?編寫匯編程序:連接在PB4~PB7有4個(gè)LED燈,實(shí)現(xiàn)跑馬燈顯示。畫電路圖:實(shí)現(xiàn)4x4矩陣鍵盤+4位LED數(shù)碼管顯示。通讀書例5-10匯編程序,理解并學(xué)習(xí)鍵盤、數(shù)碼管的軟件編程。列5-6$2000KEYNUMB

EQUDELAY:

CLCLDAA#$00STAA

KEYNUMBLDY

#TABLE2LP3:

LDAB

YINYLDAA

KEYVALSBABEQ

DISPLAY1INC

KEYNUMBLDAA

KEYNUMB#$10NOKEYLP3LDABSBABEQBRANOKEY:

RTS#$01 ;共陽(yáng)

PTTKEYNUMB;#TABLE3B,YPTPDISPLAY1:

LDAASTAALDABCOUNTER1:

LDYLDAASTAARTSTABLE2:

FCB

$ee,$de,$be,$7e,$ed,$dd,$bd,$7d,$eb,$db,$bb,$7b,$e7,$d7,$b7,$77;4x4行列鍵值,預(yù)定義的,16個(gè)可能的讀回值TABLE3:

FCB

$f9,$a4,$b0,$99,$92,$82,$f8,$80,$90,$c0,$88,$83,$c6,$a1,$86,$8e;共

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論