Programmer Notepad的配置與AVRGCC入門_第1頁
Programmer Notepad的配置與AVRGCC入門_第2頁
Programmer Notepad的配置與AVRGCC入門_第3頁
Programmer Notepad的配置與AVRGCC入門_第4頁
Programmer Notepad的配置與AVRGCC入門_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.:.;Programmer Notepad的配置與AVRGCC入門作者:佚名 來源:不詳 錄入: HYPERLINK jdzj/user/info.asp?username=Admin Admin 更新時(shí)間:2021-7-26 19:29:16 點(diǎn)擊數(shù):3 【字體: 】單片機(jī)AVR的編程工具很多,有C,ASM,PASCAL,BASIC等等。除ASM由ATMEL公司免費(fèi)提供外,其它大多數(shù)的工具都是需求收費(fèi)的。而C編譯器更是其中收費(fèi)最高的編譯器。但也有例外,那就是GCC它不但免費(fèi)而且功能也幾乎是“最強(qiáng)的。所以我作為入門者,就開場 HYPERLINK shop.picavr/ o 需求購買單片機(jī)開

2、發(fā)板和電子元器件的朋友可到東哥電子商城看看,DG300A 51/AVR開發(fā)板 ¥280元 學(xué)習(xí)它了!一、 單片機(jī)編程1、 單片機(jī)與電腦的編程有些許不同,它除一些必要地算法外,更重要的是對端口的操作。如開關(guān)量采集、開關(guān)量控制輸出、模擬量的輸入、通訊的操作、顯示器與鍵的控制等等都需求操作端口。2、 電腦存儲永久數(shù)據(jù)普通都在硬盤等介質(zhì)中。而單片機(jī)那么存放在EPROM、EEPROM、FLASH等存儲器中。3、 通訊接口的編程對單片機(jī)來說是至關(guān)重要的,特別在工控、網(wǎng)絡(luò)等的運(yùn)用中猶為重要。4、 單片機(jī)的編程與電腦編程相比有諸多限制。這就要求編程者對單片機(jī)硬件有一定的了解。二、 AVR單片機(jī)編程1、 AVR

3、單片的硬件:我們以ATMega 16為例為闡明一下AVR單片機(jī)吧!這是ATMEGA 16的引腳及其功能圖(其DataSheet)A、 從圖中我們可以看出有4個(gè)8位端口共32個(gè)引腳,大多有雙重功能。它們分別命名為PORTA、PORTB、PORTC、PORTD。B、 PORTA具備普通IO口功能外還有AD轉(zhuǎn)換功能,其精度可以到達(dá)10位,即采集到的ADC的值最大不超越10230-1023,對應(yīng)外面實(shí)踐電壓值的精度需求一定的簡單換算主要看其參考電壓。如參考電壓為2.5V,那么有2.5V為1023,那么其精度為2.5V/1023就是0.00244V。如參考電壓為5V,那么有5V/1023也就是0.004

4、9V。C、 PORTB口除了根本的IO功能外,特別要提的是PB4、5、6、7的功能,它是SPI同步串行接口,更重要的是,它可以用來下載程序。D、 其它的暫且不說,必竟不是AVR單片機(jī)的引見文章嘛。2、 AVR單片機(jī)的軟件:軟件當(dāng)然是用來控控制這些接口的運(yùn)作及其代表的含義的。這也是個(gè)非常大的問題,假設(shè)他一點(diǎn)都不懂軟件,請也找本計(jì)算機(jī)編程的書看看吧。三、 開場AVRGCC編程吧好了,下面我們來看一個(gè)簡單的程序吧。在WinAVR的Programmer NotePad 2中的圖:圖2執(zhí)行Make All后,生成HEX文件本例中的文件名2.HEX。以下是它的全過程。 make.exe all- begi

5、n -avr-gcc (GCC) 3.4.1 /告知avr-gcc的版本號Copyright (C)2004 Free Software Foundation,Inc. /編譯器所屬于公司及其版權(quán)信息This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE./這是ELF文件的一些信息,ELF文件用于調(diào)試。Size before: /轉(zhuǎn)換前的ELF文件信息2.e

6、lf :section size addr.text 208 0.data 0 8388704.bss 0 8388704.noinit 0 8388704.eeprom 0 8454144.stab 780 0.stabstr 1469 0Total 2457Converting to AVR Extended COFF: 2.cof/將ELF文件轉(zhuǎn)換成AVR Studio可以接受的格式avr-objcopy -debugging -change-section-address .data-0 x800000 -change-section-address .bss-0 x800000 -c

7、hange-section-address .noinit-0 x800000 -change-section-address .eeprom-0 x810000 -O coff-ext-avr 2.elf 2.cofDiscarding local symbol outside any compilation unit: .do_copy_data_startDiscarding local symbol outside any compilation unit: .do_copy_data_loopDiscarding local symbol outside any compilatio

8、n unit: .do_clear_bss_startDiscarding local symbol outside any compilation unit: .do_clear_bss_loopSize after: /轉(zhuǎn)換后的文件信息。2.elf :section size addr.text 208 0.data 0 8388704.bss 0 8388704.noinit 0 8388704.eeprom 0 8454144.stab 780 0.stabstr 1469 0Total 2457Errors: none /編譯過程中產(chǎn)生的錯(cuò)誤數(shù)- end - /編譯終了 Proces

9、s Exit Code: 0 /avr-gcc終了信息,0表示正常終了接下來用AVRISP程序?qū)?.hex文件下載后AVR單片機(jī)中,觀看效果??梢运妓髻I個(gè)雙龍的實(shí)驗(yàn)器SL_AVRAD。下面我們來看看avr-gcc的IDE吧。主窗口(圖3)這是非常規(guī)范的Windows Style窗口。當(dāng)然它由于不是專為avr-gcc設(shè)計(jì),所以對它進(jìn)展設(shè)置是必不可少的!下面我就來設(shè)置它,以使它成為我們好用的工具吧。呵呵!可千萬別小看它哦在設(shè)置它之前讓我們來看看,我們希望是一個(gè)怎樣的工具吧。參照其它軟件的IDE。首先,我們得有個(gè)工程工程管理器,這點(diǎn)PN已有,不需我們?nèi)ピO(shè)它。其次,得方便我們編輯源代碼,最好是有關(guān)鍵字

10、代碼高度顯示,以方便我們識別它們。假設(shè)能再給我們實(shí)時(shí)的一些提示就更好了!這方便PN做得非常很好有人說SI很好,不過我覺得每個(gè)人有每個(gè)人的習(xí)慣,不用強(qiáng)求。再次,我們得在不分開IDE的情況下,編輯C言語的makefile文件。生成我“目的代碼計(jì)算機(jī)中術(shù)語的話叫可執(zhí)行文件,并且,下載到我們單片機(jī)中。好了!來看看我們對它的設(shè)置吧!1、代碼高亮設(shè)置將它設(shè)置成他習(xí)慣的方式。步驟如下:翻開PN菜單Tools-Options,在Options對話框中選擇Style-Schemes,他說看到了如圖4、5、6所示的內(nèi)容了。如今開場他的設(shè)置吧。代碼高亮設(shè)置1-預(yù)編譯圖4代碼高亮設(shè)置2-操作符(如+-*/括號等)圖5

11、代碼高亮設(shè)置3-數(shù)字圖6別小看這點(diǎn)小功能啊,它能幫他找到不少編程錯(cuò)誤哦圖7想將代碼打印出來嗎,有協(xié)助 的!圖8其它高亮設(shè)置同上請大家自已動(dòng)手吧!一定要按本人的習(xí)慣哦。3、 設(shè)置PN中的菜單“新建和工具欄圖標(biāo) ,點(diǎn)擊它新建文件時(shí)的文件缺省類型。我們當(dāng)然希望是C類型文件啦,如以下圖:定義新建缺省的文件類型圖94、 下面開場設(shè)置的我們的avr-gcc工具菜單吧!C語文的Make工具設(shè)定(圖10): 精心的設(shè)置可以讓他的PN,不用其它工具差哦。5、 C言語Makefile對于初學(xué)者來說太難了,根本不知道它是干嘛的,怎樣任務(wù)說的有點(diǎn)夸張及怎樣編寫。幸好WinAVR提供應(yīng)了我們一個(gè)非常好用的工具mfile

12、。下面就將它集成到我們的PN中來吧!Makefile工具在PN中的設(shè)定圖11留意本工具設(shè)置為特殊設(shè)置Makefile的設(shè)置是將C:WinAVRbin下的wish84.exe、tcl84.dll、tk84.dll三個(gè)文件復(fù)制到C:WinAVRmfile目錄下。并用PN翻開C:WinAVRmfilemfile.tcl。修正成以下圖所示修正mfile.tcl為圖中選中的部分并保管圖126、 設(shè)置ISP Programmer工具ISP串行下載器的設(shè)置圖13按下F4后運(yùn)轉(zhuǎn)的結(jié)果圖147、 到如今,我想他對PN有了一些了解了吧??纯聪旅鎺讉€(gè)圖吧!幾個(gè)快捷鍵及其對應(yīng)工具的設(shè)置圖15它們用著真實(shí)是方便啊Mak

13、efile執(zhí)行后的圖圖16這是PN對大工程、大工程管理的超強(qiáng)部分了圖17到此,Programmer NotePad 設(shè)置完成。四、 Avr-gcc簡易入門1、 對端口的操作: A、 假設(shè)我想將PORTB端口設(shè)置為輸出口8位,那么在gcc中用如下方式DDRB=0 xFF; 留意:0 xFF=0B1111 1111表示全為1,代表了輸出。假設(shè)他改上式為:DDRB=0 x01; /即0B0000 0001,那么表示,他將PORTB的第0位PB0設(shè)置為輸出,其它PB1-7為輸入。DDRB為AVR的端口設(shè)置存放器。B、 從端口PORTB中讀入形狀,用如下方式:Unsigned Char a=PINB;

14、/讀入端口PORTB的形狀。假設(shè)端口PORTB的形狀如下:PB0為高電平 1PB1為低電平 0PB2為高電平 1PB3為高電平 1PB4為高電平 1PB5為低電平 0PB6為低電平 0PB7為高電平 1那么有a = 0b1001 1101 = 0 x9DC、 向端口PORTB寫形狀設(shè)置形狀:假設(shè)要裝PORTB第0位和第2位置1高電平。DDRB=0;/PORTB全部為輸出。PORTB=0 x03; /0b0000 0101D、 而更多的情況,我們是要將端口的某一位改動(dòng)形狀,而不是對整個(gè)端口操作?;蛑幌胫蓝丝诘哪骋晃坏男螤钊绾蔚??那么如何來做呢?例如:將PB4置1,PORTB=PORTB | 0

15、 x10; /0 x10=0b0001 0000將PB4置0,PORTB=PORTB & 0 xEF; /0 xEF=0b1110 1111將PB4置翻轉(zhuǎn),PORTB=PORTB0 x10; /0 x10=0001 0000檢驗(yàn)PB4的形狀,char a=PINB & 0 x10; /假設(shè)PB4為1,是a0,否那么a=0當(dāng)然,上面寫法對C言語來說,幾乎就是渣滓代碼了。C言語有它本人的方式,例如:PORTB |= 0 x10;PORTB &= 0 xEF;PORTB =0 x10;If (PINB & 0 x10) 他的語句; 能否覺得到比較簡約啊?!E、 當(dāng)然avr-gcc也提供了兩個(gè)函數(shù)對操

16、作位,如:sbi (PORTB,4); cbi (PORTB,4);分別將PB4置1和清零。2、 變量的類型charunsigned charshortunsigned shortintunsigned intlongunsigned longlong longunsigned long longfloatdoublevoid等等等等,這就請讀者本人看資料了。3、 程序控制語句,C言語提供了非常豐富的程序流程控制語句。i. 循環(huán)語句 A、 For(;)語句,如:for(i=0;i8;i+)循環(huán)體; /本例循環(huán)8次。留意!for語句是先比較后加減的。B、 While(exp)語句,如:i=0;

17、While(i8)循環(huán)體;i+; /本例循環(huán)8次。也是先比較后執(zhí)行循環(huán)體的。C、 Do while語句,如:i=0;doi+;循環(huán)體;while(x8);/本例循環(huán)7次,由于它是先執(zhí)行后比較的語句。由于i+在第一次比較時(shí)i曾經(jīng)是1了。ii. 分支語句。A、 if語句,大名鼎鼎語句了,幾乎一切編程軟件都有它的身影。沒什么好說的。B、 switch語句。等好了,這些就不說下去了,由于假設(shè)他連這些都不清楚。他該做的是找本C教程吧。4、 中斷效力控制SIGNALvoid UART_Init(void) /中斷初始化函數(shù)/UART_Ready = 1;UART_ReceivedChar = 0;pUAR

18、T_Buffer = 0; outp(BV(RXCIE)|BV(RXEN),UCR); / 允許串行接納中斷 /outp( (u08)UART_BAUD_SELECT, UBRR); / 設(shè)置UART波特率 /sei(); / 翻開全局中斷 / SIGNAL(SIG_UART_RECV) /串口接納完成中斷效力進(jìn)程子程序/ UART_ReceivedChar = 1; / 指示曾經(jīng)接納到一個(gè)字符 /UART_RxChar = inp(UDR); / 將收到的字符存儲起來 /其中SIGNAL標(biāo)示了下面的語句由中斷來調(diào)用。五、 實(shí)例設(shè)計(jì)與編程 實(shí)驗(yàn)電路圖圖18好了,寫了這么多,讓我們也看個(gè)實(shí)例先吧,硬件電路圖如圖18。軟件編程如下:軟件在PN中編寫的結(jié)果如上圖。其中第1、2行為預(yù)編譯語句,它們通知編譯器一些重要的信息。如單片機(jī)內(nèi)的存放器稱號對應(yīng)的向量等.DDRB、PORTB就在io.h內(nèi)定義的其實(shí)它在本例中是在iom16.h中定義的,io.h

溫馨提示

  • 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

提交評論