|
為了禰補(bǔ)單片機(jī)軟件設(shè)計(jì)教材資源的缺乏,本資料著重從軟件設(shè)計(jì)的角度介紹MC68HC908GP32單片機(jī)的軟件編寫方法和應(yīng)用示例。利用獨(dú)立的文章的形式介紹了此單片機(jī)的端口、瑣相環(huán)、AD轉(zhuǎn)換、串行通信、鍵盤中斷、定時(shí)器以及外連芯片MC11489等應(yīng)用。 本著用多少學(xué)多少的原則,刪除了許多不常用的寄存器值得含義,對(duì)重要的知識(shí)點(diǎn)均以加粗方式標(biāo)出。達(dá)到速成的目的。 此資料所有代碼經(jīng)作者精心組織編寫并在北京理工大學(xué)卡爾飛思實(shí)驗(yàn)室BMTC——MC68HC08單片機(jī)系統(tǒng)V3.0實(shí)驗(yàn)板調(diào)試通過(guò)。 MC68HC08端口簡(jiǎn)介和程序的一般框架 作為第一篇從軟件介紹MC68HC08的文章,我們先從軟件的角度認(rèn)識(shí)認(rèn)識(shí)這個(gè)四十多只腳的東東吧。 雖然它只有四十多只管腳,但是,幾乎所有的管腳都是復(fù)用的,即身兼兩職。主要可分為電源,晶振,ABCDE五組端口,中斷,復(fù)位等等。 趁著大家精力還算旺盛,先說(shuō)最有用的,最容易的。ABCDE五組端口 每組端口都有兩個(gè)寄存器,一個(gè)叫方向寄存器,用來(lái)說(shuō)明這個(gè)端口用作輸入還是輸出。五個(gè)端口的方向寄存器分別叫做:DDRA,DDRB,DDRC,DDRD,DDRE。每個(gè)寄存器都有八位,分別為對(duì)應(yīng)管腳的輸入輸出方向。如DDRB=0b01100000,(b指二進(jìn)制數(shù)。此數(shù)亦可以寫成十六進(jìn)制數(shù)0x60)規(guī)定B端口的第五第六兩管腳作為輸出,其它作為輸入。 另一個(gè)叫數(shù)據(jù)寄存器,也是八位。分別是PTA到PTE。端口當(dāng)作輸出的時(shí)候,可以寫寄存器。端口當(dāng)作輸入的時(shí)候可以讀寄存器。當(dāng)某位為1的時(shí)候,端口為管腳高電平,當(dāng)為、0的時(shí)候,端口管腳為低電平。比如,我想讓B端口的第五位(作輸出)為低電平,則寫作PTB_PTB5=0; 每個(gè)端口都能作為平常的輸入輸出端口。另外,每個(gè)端口都有第二功能。 A端口:八個(gè)管腳 常用作鍵盤輸入。此時(shí),端口作為輸入。硬件自動(dòng)置A口所有位為高電平。某鍵被按下時(shí),產(chǎn)生低電平,從而達(dá)到檢測(cè)按鍵的目的。鍵盤操作見(jiàn)《外部中斷和鍵盤中斷》一文。 B端口:八個(gè)管腳 常用作A/D轉(zhuǎn)換器輸入端口。對(duì)應(yīng)了八個(gè)輸入通道。 C端口:六個(gè)管腳 可用作LED指示燈的輸出接口。如本實(shí)驗(yàn)室的開發(fā)板將PB0-PB4與五個(gè)指示燈相連。低電平點(diǎn)亮。 D端口:六個(gè)管腳 功能比較多,有計(jì)數(shù)器輸入管腳2個(gè),SPI通信管腳2個(gè)等 E端口:只有兩個(gè)管腳 經(jīng)常作為串口收發(fā)端,PTE0為TX,PTE1為RX 中斷信號(hào): 管腳,平常為高電平,當(dāng)收到低電平信號(hào)時(shí)產(chǎn)生一個(gè)外部中斷。 晶振:OSC2 OSC1 和COMXFC 復(fù)位信號(hào)管腳 。 電源管腳:略 第二個(gè)主題:程序的基本框架 MC68HC08程序的框架比較統(tǒng)一,下面介紹兩種最常用的。 查詢式程序框架: //step0 變量定義 #include <hidef.h> #include <MC68HC908GP32.h> void main(void){ //step1 初始化CONFIG控制字 CONFIG1=0x01; CONFIG2=0x01; //step3 初始化鎖相環(huán) PCTL=0X00; PBWC=0X80; PMSH=0X03; PMSL=0XD1; PMRS=0XD0; PMDS=0X01; PCTL=0X32; DDRC=0XFF; PTC=0XFF; //step4設(shè)置其它初始化控制字 //step4 進(jìn)入循環(huán) for(;;){ //step5 在循環(huán)中作端口輸入輸出的工作 if (寄存器可以讀) 讀寄存器; if(寄存器可以寫)寫寄存器; … } 中斷式程序框架: Step1-3 與查詢式一樣 //Step4 設(shè)置其它初始化控制字,并開啟有關(guān)中斷。 //step5開中斷 EnableInterrupts; //step6 進(jìn)入死循環(huán) For(;;); } //step7 設(shè)計(jì)中斷服務(wù)程序,就是中斷響應(yīng)函數(shù),有幾個(gè)中斷向量就寫幾個(gè) Interrupt 中斷號(hào) intResponce(void){ 禁止有關(guān)中斷; 進(jìn)行寄存器讀寫操作等; 允許有關(guān)中斷; } //其中intResponce是函數(shù)的名稱,可以自行訂制。 熟悉查詢與中斷的基本工作方式是了解單片機(jī)程序的前提。下面就要介紹各種很有用的功能啦。不過(guò)為了先揀好玩的說(shuō),另外為了給以后的文章做基礎(chǔ)。先說(shuō)一說(shuō)它最友好的輸出方式——五位七段數(shù)碼的顯示方法
共7頁(yè): 上一頁(yè) 1 [2] [3] [4] [5] [6] [7] 下一頁(yè) <!--自定義字段--> |