在編寫了很多關(guān)于PIC16F系列微控制器的實(shí)驗(yàn)教程之后,我想到了繼續(xù)發(fā)展到PIC18F的增強(qiáng)范圍的PIC系列微控制器系列PIC18F。盡管PIC16F系列是出色的通用單片機(jī),但仍出現(xiàn)了某些限制,例如,程序和數(shù)據(jù)存儲(chǔ)器有限,堆棧尺寸小以及所有中斷源必須共享一個(gè)中斷向量。其有限的指令集也無法直接支持USB和CAN等更高級(jí)的外圍設(shè)備接口。 PIC18F系列的基礎(chǔ)是要解決限制PIC16F系列的問題。 PIC18F系列單片機(jī)具有更大的指令集,更多的內(nèi)存,更大的堆棧,更多的外部中斷,更高的速度,增強(qiáng)的I/O端口架構(gòu)以及我們將在接下來的教程中探索的更多功能。我已經(jīng)決定,我不會(huì)像在PIC16F上那樣花很多時(shí)間在焊接和制作自己的PIC18F微控制器原型板上。我將使用mikroElektronika的PIC板的StartUSB編寫這些教程。
mikroElektronika的PIC板的StartUSB
那么PIC的StartUSB是什么?
PIC的StartUSB 是一個(gè)小型開發(fā)板,具有具有快速USB 2.0支持的PIC18F2550單片機(jī)。它具有用于所有MCU引腳的連接墊以及兩個(gè)用于放置附加組件的附加原型設(shè)計(jì)區(qū)域。該板的最大優(yōu)點(diǎn)是,該微控制器已使用快速USB引導(dǎo)加載程序進(jìn)行了預(yù)編程,因此無需任何外部編程器。您可以使用mikroBootloader將與應(yīng)用程序相關(guān)的HEX文件從PC傳輸?shù)絇IC的程序存儲(chǔ)器。 MikroBootloader是mikroElektronika為其USB HID Bootloader開發(fā)的PC應(yīng)用程序。板載miniUSB連接器,振蕩器(8.0 MHz晶體),復(fù)位電路,電源指示燈LED以及另外兩個(gè)LED提供了快速啟動(dòng)所需的一切。另外兩個(gè)LED通過跳線連接到PIC18F2550的RA1和RB1引腳。上圖顯示了具有所有組件和其他原型制作區(qū)域的StartUSB for PIC板。
今天的教程很重要,因?yàn)槲覀儗⒂懻撚嘘P(guān)PIC板的StartUSB的完整設(shè)置,這將使您開始探索PIC18F系列單片機(jī)的世界。您需要安裝的第一件事是mikroC Pro for PIC,這是由mikroElektronika為PIC12,PIC16和PIC18系列微控制器開發(fā)的C編譯器。您可以下載該軟件的演示版本,該版本將允許您編譯最多2 K程序字的程序。安裝編譯器后,下載mikroBootloader,這是PC的應(yīng)用程序,可與存儲(chǔ)在StartUSB板上PIC18F2550單片機(jī)中的Bootloader程序進(jìn)行通信。可以從以下鏈接下載用于PIC和mikrobootloader的StartUSB用戶指南。
StartUSB板的用戶手冊(cè)提供了該板的電路圖以及有關(guān)如何將其連接到PC以便使用mikroBootloader下載應(yīng)用程序HEX文件的說明。在繼續(xù)前進(jìn)之前,請(qǐng)先閱讀手冊(cè)中的這些詳細(xì)信息。
用于USB的PIC板的StartUSB電路圖,其中兩個(gè)LED連接到RA1和RB1
使用“ Hello World”測(cè)試板
我們將通過一個(gè)簡單的測(cè)試程序開始我們的旅程,該程序?qū)⒋_保一切設(shè)置正確且我們將準(zhǔn)備使用PIC18F2550進(jìn)行更高級(jí)的實(shí)驗(yàn)。該程序?qū)⒁?00 ms的持續(xù)時(shí)間交替閃爍兩個(gè)板上LED(連接到RA1和RB1引腳)。在mikroC Pro for PIC中,以項(xiàng)目形式開發(fā)應(yīng)用程序。如果您以前從未使用過mikroC Pro for PIC,那么mikroElektronika的文件“在mikroC Pro for PIC中創(chuàng)建第一個(gè)項(xiàng)目”將指導(dǎo)您創(chuàng)建第一個(gè)項(xiàng)目。遵循這些步驟時(shí),選擇單片機(jī)為PIC18F2550,將器件時(shí)鐘選擇為8.0 MHz。在主程序窗口中,鍵入以下程序。
/*
用于PIC板的StartUSB測(cè)試程序
說明:兩個(gè)板上LED交替閃爍500 ms
MCU:PIC18F2550,外部晶振= 8.0 MHz,PLL的實(shí)際時(shí)鐘= 48.0 MHz
版權(quán)@ Rajendra Bhatt
2011年3月29日
*/
//定義LED連接
sbit LED1 at RA1_bit;
sbit LED2 RB1_bit;
void main(){
CMCON = 0x07;//禁用比較器
TRISA = 0x00;
TRISB = 0x00;
LED1 = 0;
LED2 = 1;
做{
LED1 =?LED1;
LED2 =?LED2;
Delay_ms(500);
} while(1);
}
下載mikroC項(xiàng)目文件
編譯程序以獲取HEX文件,然后使用mikroBootloader應(yīng)用程序?qū)⑵浼虞d到PIC18F2550單片機(jī)中。請(qǐng)按照StartUSB板用戶手冊(cè)中提到的說明進(jìn)行操作。加載程序后,請(qǐng)重置板并等待5秒鐘,直到微控制器退出引導(dǎo)加載程序模式并開始執(zhí)行新加載的應(yīng)用程序。您將看到兩個(gè)板載LED交替閃爍。等一下,它們被編程為以0.5秒的持續(xù)時(shí)間閃爍,但是您會(huì)看到它們的運(yùn)行速度快得多。看來微控制器時(shí)鐘比所應(yīng)用的外部振蕩器(8.0 MHz)快得多。由于存在內(nèi)置的PLL電路,因此在PIC18F2550中是可能的。
用于PIC板的StartUSB上的LED閃爍
PIC18F2550板上的USB模塊需要48.0 MHz的時(shí)鐘才能全速運(yùn)行。該時(shí)鐘由內(nèi)置96 MHz PLL模塊通過將其輸出除以2得到。PLL本身由來自主時(shí)鐘源的4 MHz輸入信號(hào)驅(qū)動(dòng),在本例中為8.0 MHz晶體。因此,可以通過使用PLL預(yù)分頻器值2從8.0 MHz的源中獲得驅(qū)動(dòng)PLL所需的4.0 MHz。然后,將PLL(96 MHz)的輸出除以2,以獲得USB操作所需的48 MHz時(shí)鐘。微控制器內(nèi)核和其他外設(shè)也可以使用此時(shí)鐘速度,但不是必須的。還有其他選項(xiàng)可以滿足USB模塊的時(shí)鐘要求,并且仍然為從主振蕩器源為其余器件提供時(shí)鐘提供了靈活性。這些詳細(xì)信息可在PIC18F2550的數(shù)據(jù)手冊(cè)中找到。但是,對(duì)于用于PIC板的StartUSB,由于需要USB自舉程序,USB模塊和微控制器內(nèi)核,兩者都使用源自PLL的48.0 MHz時(shí)鐘。不幸的是,引導(dǎo)加載程序不允許用戶更改時(shí)鐘設(shè)置,因此,它始終為48.0 MHz,除非您先擦除引導(dǎo)加載程序,然后使用外部編程器修改時(shí)鐘設(shè)置的配置寄存器。因此,板載PIC18F2550單片機(jī)實(shí)際上以48.0 MHz而不是8.0 MHz運(yùn)行。這就是LED閃爍快得多的原因。為了解決這個(gè)問題,請(qǐng)從mikroC的“項(xiàng)目”菜單中打開“編輯項(xiàng)目”窗口,并確保時(shí)鐘設(shè)置與下面顯示的匹配。
正確的時(shí)鐘下一步,保存項(xiàng)目,再次編譯,然后將HEX文件重新加載到PIC18F2550中。現(xiàn)在,您將看到LED以正確的速率閃爍。因此,您已經(jīng)準(zhǔn)備好使用PIC18F微控制器。請(qǐng)繼續(xù)關(guān)注有關(guān)PIC18F的更多高級(jí)實(shí)驗(yàn)教程。
責(zé)任編輯:wv
-
單片機(jī)
+關(guān)注
關(guān)注
6044文章
44631瀏覽量
639187 -
PIC18F
+關(guān)注
關(guān)注
0文章
37瀏覽量
17903
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AN4121-采用PIC16F單片機(jī)進(jìn)行系統(tǒng)電源控制
![AN4121-采用<b class='flag-5'>PIC16F</b><b class='flag-5'>單片機(jī)</b>進(jìn)行系統(tǒng)電源控制](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AN4873-使用PIC單片機(jī)的集成運(yùn)算放大器測(cè)量水中的總?cè)芙夤腆w
![AN4873-使用<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>的集成運(yùn)算放大器測(cè)量水中的總?cè)芙夤腆w](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AN4875-AVR DD系列單片機(jī)入門
![AN4875-AVR DD系列<b class='flag-5'>單片機(jī)</b><b class='flag-5'>入門</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TB3320-PIC單片機(jī)集成模擬外設(shè)入門
![TB3320-<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>集成模擬外設(shè)<b class='flag-5'>入門</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
普冉PY32F002A單片機(jī)特性介紹
![普冉PY32<b class='flag-5'>F</b>002A<b class='flag-5'>單片機(jī)</b>特性介紹](https://file1.elecfans.com/web2/M00/0C/06/wKgaomcth3qAWS7SAAA0ywFFxuc992.png)
![](https://file1.elecfans.com/web2/M00/0A/B6/wKgaomcTJ42AWndVAAm_uOgXAlM613.png)
![](https://file1.elecfans.com/web1/M00/F2/D0/wKgZoWcMeEGAHSfkAAIfQyKsB60242.jpg)
EN8F202直接替代微芯PIC10F200,PIC10F202,PIC10F204,PIC10F206單片機(jī)
PIC單片機(jī)的優(yōu)勢(shì)和不足之處
32位M0核普冉單片機(jī) PY32F003開發(fā)板20腳 快速入門 易于上手
![32位M0核普冉<b class='flag-5'>單片機(jī)</b> PY32<b class='flag-5'>F</b>003開發(fā)板20腳 快速<b class='flag-5'>入門</b> 易于上手](https://file1.elecfans.com//web2/M00/06/30/wKgZombipiSAePQNAAykeVlL0zw744.jpg)
十天學(xué)會(huì)單片機(jī)可能嗎?單片機(jī)入門需要多久?
![十天學(xué)會(huì)<b class='flag-5'>單片機(jī)</b>可能嗎?<b class='flag-5'>單片機(jī)</b><b class='flag-5'>入門</b>需要多久?](https://file.elecfans.com/web2/M00/9B/3D/poYBAGQjnauAVXOgAABFcEbXdEE684.png)
![](https://file1.elecfans.com/web2/M00/00/53/wKgaomaoq0CAPG7HAAUXQT5FCH0622.png)
EN8F1823E完全替代PIC16F883,PIC16F1883,PIC16F1936,PIC16F1937
![](https://file1.elecfans.com/web2/M00/FA/4D/wKgZomaM-A6ASiHaAAI1lEWiaw4487.jpg)
容嬤嬤語錄:EN8F1821完全替代PIC12F1822、PIC16F15313微芯單片機(jī)!#單片機(jī)
如何系統(tǒng)、科學(xué)地自學(xué)單片機(jī)?
![如何系統(tǒng)、科學(xué)地自學(xué)<b class='flag-5'>單片機(jī)</b>?](https://file.elecfans.com/web2/M00/9B/3D/poYBAGQjnauAVXOgAABFcEbXdEE684.png)
單片機(jī)是什么?單片機(jī)編程如何入門?
![<b class='flag-5'>單片機(jī)</b>是什么?<b class='flag-5'>單片機(jī)</b>編程如何<b class='flag-5'>入門</b>?](https://file.elecfans.com/web2/M00/9B/3D/poYBAGQjnauAVXOgAABFcEbXdEE684.png)
評(píng)論