第5章 S12輸入輸出口_第1頁
第5章 S12輸入輸出口_第2頁
第5章 S12輸入輸出口_第3頁
第5章 S12輸入輸出口_第4頁
第5章 S12輸入輸出口_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章S12并行輸入/輸出接口5.1I/O端口功能簡介

I/O端口:即輸入/輸出端口,是MCU與外界進(jìn)行交互的重要通道,實(shí)現(xiàn)各種接口。5.1.1I/O端口簡介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=通用并行輸入/輸出MCU重慶大學(xué)通信工程學(xué)院任勇5.1.I/O端口功能通過設(shè)置相應(yīng)寄存器,實(shí)現(xiàn)以下功能:DDR寄存器---數(shù)據(jù)方向,定義是輸入還是輸出;I/O寄存器---數(shù)據(jù)寄存器,定義輸出電平的高低;PORTA、PORTB、PTS、PTH…;RDR寄存器---定義驅(qū)動能力;PER寄存器---當(dāng)I/O口作為輸入口時(shí),定義是否使能內(nèi)部上拉或下拉;PIE寄存器---禁止、允許端口中斷;PPS寄存器--上下拉選擇:

1、PER有效時(shí),選擇上拉還是下拉

2、端口中斷允許時(shí),選擇上升沿還是下降沿觸發(fā)輸入電路框圖重慶大學(xué)通信工程學(xué)院任勇5.2I/O端口設(shè)置

1.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í)上拉或無拉電阻)

4口共用,PUPAE、PUPBE、PUPEE、PUPKE位為1使上拉;0無

降功率驅(qū)動控制寄存器RDRIV(8位同時(shí)全功率或降功率)

4口共用,RDPA、RDPB、RDPE、RDPK位為使輸出降功率;0不降Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0PUPKE\\PUPEE\\PUPBEPUPAEBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RDPK\\RDPE\\RDPBRDPA重慶大學(xué)通信工程學(xué)院任勇2.H、M、P、S、T口DDRx:數(shù)據(jù)方向寄存器

LDAA%11110000STDADDRH;高輸出;低輸入。PTx:I/O寄存器

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

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

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

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

LDAAPTIH;RDRx

低功耗驅(qū)動寄存器

0:正常輸出;1:正常的1/6LDAA#$F0;STAARDRSPERx

上下拉使能寄存器(是否允許上下拉功能使用)

0:禁止上拉或下拉;1:允許選擇上拉或下拉電阻;

LDAA#%10101010;STAARDRS

重慶大學(xué)通信工程學(xué)院任勇條件:P、J、H(有中斷功能端口)且中斷使能。

=1:滿足上下拉使能且輸入前提下,定義引腳為下拉,上升沿引發(fā)中斷;

=0:滿足上下拉使能且輸入前提下,定義引腳為上拉,下降沿引發(fā)中斷;

PPSx

上下拉選擇寄存器(選擇具體是上拉還是下拉)列:LDAA#$00STAADDRP;P口輸入LDAA#$FFSTAAPERP;P口上下拉使能LDAA#$0FSTAAPIEP;P口低4位中斷使能LADA#$0FSTAAPPSP;高4位上拉,無中斷;;低位下拉,上升沿引發(fā)中斷;條件:引腳定義為輸入并且上下拉使能(PERx);

0:上拉;1:下拉

重慶大學(xué)通信工程學(xué)院任勇3.其它I/OAD口:作為A/D轉(zhuǎn)換模塊的模擬量輸入口和外界觸發(fā)脈沖的輸入口,也可以做為普通輸入口,PORTAD0,PORTAD1注:各寄存器,復(fù)位默認(rèn)值:00000000B;各口的數(shù)據(jù)方向?yàn)檩斎霑r(shí),內(nèi)部上、下拉才可設(shè)置有效;各口的數(shù)據(jù)方向?yàn)檩敵鰰r(shí),內(nèi)部上、下拉被禁止;各寄存器的均有實(shí)際存儲地址,但編程時(shí)使用寄存器名字即可PORTADx僅能輸入,沒有數(shù)據(jù)方向寄存器。作通用I/O口時(shí)與前述類似,作其它功能略過。重慶大學(xué)通信工程學(xué)院任勇5.3人機(jī)交互接口設(shè)計(jì)

MCU與外設(shè)如何連接---接口,解決信息傳遞、控制交互…

輸入設(shè)備---如按鍵、開關(guān),鍵盤等;輸出設(shè)備---如LED燈、蜂鳴器、LED數(shù)碼管、LCD顯示屏等;基本原則:由外設(shè)確定硬件接口+軟件配合。【例】點(diǎn)亮LED燈,并使蜂鳴器發(fā)聲。;**************************ORG$1000main:START:LDAA#$FFSTAADDRB;設(shè)置LDAA#$FESTAAPORTB;輸出BRA*

重慶大學(xué)通信工程學(xué)院任勇5.3.1獨(dú)立式按鍵接口

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

抖動問題:按鍵在按下或抬起時(shí),由于機(jī)械彈性的影響,通常所按的鍵在閉合位置和斷開位置之間抖動幾下才穩(wěn)定下來。抖動持續(xù)的時(shí)間因操作者和按鍵特性而異,一般為5~10ms。去抖動:克服檢測誤判硬件方法---按鍵后端加雙穩(wěn)態(tài)觸發(fā)器軟件方法---檢測到有鍵按下時(shí),延時(shí)10~20ms左右再檢測,若該鍵保持在按下狀態(tài),則確定為按鍵按下;松按檢測同理。注:通常使用軟件去抖動鍵盤的其它問題還有:一鍵多能、多鍵同按……重慶大學(xué)通信工程學(xué)院任勇;*按鍵檢查子程序:無鍵輸入直接退出,有鍵輸入時(shí)等松手后退出;*出口參數(shù):Key_numb=按鍵號,0無鍵,1-4鍵號

Test_key: PSHA;獨(dú)立式按鍵MOVB#0,Key_Numb

LDAAPORTA ORAA#$F0;屏蔽高4位影響 COMA

BEQTest_key_RTS;無鍵輸入,直接退出JSRDELAY_20MS

LDAAPORTA;;;Test_key_NEXT:INCKey_Numb LSRA

;查鍵號,條件控制循環(huán) BNETest_key_NEXTTest_key_LP1:

LDAAPORTA;判松手 ORAA#$F0 COMA

BNETest_key_LP1;未松手則繼續(xù)JSRDELAY_20MSTest_key_RTS:PULARTS重慶大學(xué)通信工程學(xué)院任勇

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

LSLA;A=A*2(分支編號)LDX#Jmp_TableLDYA,XJMPYJmp_Table:FDBKey0Sub FDBKey1Sub….FDBKey16SubKey0Sub:RTS;無鍵輸入Key1Sub:…………RTSKey16Sub:…………RTS重慶大學(xué)通信工程學(xué)院任勇5.3.3矩陣式鍵盤接口

也叫行列式鍵盤,行、列交叉處跨接按鍵;2x8,4x4,4x8,8x8等按鍵響應(yīng)方式:主程序循環(huán)查詢、中斷后檢測按鍵檢測方法:(1)行掃描法右圖,原理:1、全掃描各行送“0”,查是否有鍵按下2、逐行掃描逐行送“0”,確定哪行、哪列鍵按下(2)行反轉(zhuǎn)法

重慶大學(xué)通信工程學(xué)院任勇重慶大學(xué)通信工程學(xué)院任勇鍵值計(jì)算方法(以符號“1”為例)輸出輸入76543210PTA口01110111鍵值=$EE123A456B7*809#CD重慶大學(xué)通信工程學(xué)院任勇鍵值計(jì)算方法(以符號“8”為例)輸出輸入76543210PTA口10111101鍵值=$DB123A456B7*809#CD問題:如果輸入是A口低4位,輸出高4位鍵值是$BD重慶大學(xué)通信工程學(xué)院任勇鍵值計(jì)算按前圖的接法可以得出鍵值表,如右。鍵值可以通過掃描法獲得,由鍵值通過查表法編程得到真正定義值。(即書例5-6)行掃描法匯編程序

1EE2DE3BEA7E4ED5DD6BDB7D7EB8DB9BBC7B

*E70D7#B7D77定義值鍵值112233A4455667B879810911C12

*13014#15D16定義值鍵值重慶大學(xué)通信工程學(xué)院任勇;讀鍵盤口:入口:B=輸出行號;出口:A=列值及相關(guān)標(biāo)志位;DDRA=$F0,PA0~PA3輸入(列);PA4~PA7輸出(行);;條件A內(nèi)部上拉電阻,按鍵有效時(shí)為“0”InKeyPort:STABPORTALDAAPORTAORAA#$F0;高4位無用,屏蔽COMA;高4位始終為$0RTS程序分析:

B=0時(shí),4行A口輸出4個低電平,如果有按鍵,則A口輸入端必定有一個以上0返回,判斷有無鍵按下;如果無鍵按下,A返回時(shí)零當(dāng)B=7,3,1,0時(shí),可以分別測試1,2,3,4行是否有建按下;取反指令使得有鍵按下時(shí)A寄存器位非零;重慶大學(xué)通信工程學(xué)院任勇;讀鍵盤口:入口:B=輸出行號;出口:A=列值及相關(guān)標(biāo)志位;DDRA=$F0InKeyPort:STABPORTALDAAPORTAORAA#$F0COMARTS;非編碼鍵盤:無鍵輸入退出。;出口參數(shù):Key_numb=0無鍵,1-16鍵號Key16:PSHDMOVB#0,Key_NumbCLRB;測試所有4行BSRInKeyPort;判斷有無鍵 BEQKey16_RTS;無鍵退出JSRDELAY_20MS

LDAB#$7F;開始逐行掃描K16NL:BSRInKeyPortBNEKey16_LP1

LDAAKey_NumbADDA#4;加一行STAAKey_NumbLSRB;下一行CMPB#$07;容錯處理BNEK16NLMOVB#0,Key_NumbBRAKey16_RTSKey16_LP1:INCKey_NumbLSRABNEKey16_LP1Key16_LP2:

CLRB;對所有行BSRInKeyPortBNEKey16_LP2JSRDELAY_20MSKey16_RTS:PULDRTS程序功能:是否有鍵按下是什么鍵好鍵釋放否重慶大學(xué)通信工程學(xué)院任勇重慶大學(xué)通信工程學(xué)院任勇;*按鍵檢查子程序:無鍵輸入直接退出,有鍵輸入時(shí)等松手后退出;*出口參數(shù):Key_numb=按鍵號,0無鍵,1-4鍵號

Test_key: PSHA;獨(dú)立式按鍵MOVB#0,Key_Numb

LDAAPORTA ORAA#$F0;屏蔽高4位影響 COMA

BEQTest_key_RTS;無鍵輸入,直接退出JSRDELAY_20MS

LDAAPORTA;;;Test_key_NEXT:INCKey_Numb LSRA

;查鍵號,條件控制循環(huán) BNETest_key_NEXTTest_key_LP1:

LDAAPORTA;判松手 ORAA#$F0 COMA

BNETest_key_LP1;未松手則繼續(xù)JSRDELAY_20MSTest_key_RTS:PULARTS重慶大學(xué)通信工程學(xué)院任勇6.4人機(jī)交互接口設(shè)計(jì)6.4.1LED數(shù)碼管的工作原理結(jié)構(gòu)

7段,8個發(fā)光二極管(字段),組合顯示出數(shù)字、字符分:共陰極(給1,段亮);共陽極(給0,段亮)提供段驅(qū)動電流,并加適當(dāng)限流電阻

字形編碼見表6-1譯碼分類軟件譯碼(查表)硬件譯碼(專用芯片)

掃描分類靜態(tài)掃描動態(tài)掃描(a)外形結(jié)構(gòu)與引腳(b)共陰極(C)共陽極重慶大學(xué)通信工程學(xué)院任勇6.4.2數(shù)碼管編程實(shí)例

掃描法LED顯示編程原理

位選線掃描法:CS0~CS3中只有一個為0。重慶大學(xué)通信工程學(xué)院任勇6.4.3LED數(shù)碼管顯示匯編程序設(shè)計(jì)DISP:LDX#$2000LDY#TABLELDAB#$FFCLC;準(zhǔn)備完畢LP:LDAA#$FFSTAAPTT;關(guān)LEDLDAAX;取數(shù)LDAAA,Y;查段碼STAAPTP;P口輸出ROLB;左移位選STABPTT;T口輸出BSRDELAY10msINX;指針加1CPX#2004;比較BNELP;4次循環(huán)RTS;返回Entry:LDAA#$FF;P、STAADDRP;T口STAADDRT;輸出LOOP:JSRDISPBRALOOPTABLE:DC.B$3F,$06,$5B,$4F,$66,$6D,$7D,07,$7F,$6F

列5-5:共陰、動態(tài)顯示4位BCD碼($2000開始存放)的程序示.重慶大學(xué)通信工程學(xué)院任勇本章習(xí)題:S12MCU的I/O口有哪些?各能復(fù)用為什么功能?A口作為通用I/O口時(shí)有哪幾個幾個寄存器?A口、B口的數(shù)據(jù)方向寄存器和上拉控制寄存器的作用是什么?編寫匯編程序:連接在PB4~PB7有4個LED燈,實(shí)現(xiàn)跑馬燈顯示。畫電路圖:實(shí)現(xiàn)4x4矩陣鍵盤+4位LED數(shù)碼管顯示。通讀書例5-10匯編程序,理解并學(xué)習(xí)鍵盤、數(shù)碼管的軟件編程。重慶大學(xué)通信工程學(xué)院任勇列5-6KEYNUMBEQU$2000DELAY:CLCLDAA#$00STAAKEYNUMBLDY#TABLE2LP3:LDABYINYLDAAKEYVALSBABEQDISPLAY1INCKEYNUMBLDAAKEYNUMBLDAB#$10SBABEQNOKEYBRALP3NOKEY:RTSDISPLAY1:LDAA#$01;共陽STAAPTTLDABKEYNUMB;COUNTER1:LDY#TABLE3LDAAB,YSTAAPTPRTS

TABLE2:FCB$ee,$de,$be,$7e,$ed,$dd,$bd,$7d,$eb,$db,$bb,$7b,$e7,$d7,$b7,$77;4x4行列鍵值,預(yù)定義的,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.KEYNUMB可以不用;2.#TABLE24.BEQDISPL

溫馨提示

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

評論

0/150

提交評論