林夕依然AVR學習筆記移植筆記_1.doc

林夕依然AVR學習筆記移植筆記_1.doc

ID:57453730

大小:968.00 KB

頁數(shù):21頁

時間:2020-08-21

林夕依然AVR學習筆記移植筆記_1.doc_第1頁
林夕依然AVR學習筆記移植筆記_1.doc_第2頁
林夕依然AVR學習筆記移植筆記_1.doc_第3頁
林夕依然AVR學習筆記移植筆記_1.doc_第4頁
林夕依然AVR學習筆記移植筆記_1.doc_第5頁
資源描述:

《林夕依然AVR學習筆記移植筆記_1.doc》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。

1、林夕依然ATmega16學習筆記例程移植到AtmelStudio6.2筆記相信你已經(jīng)有了一定的C語言及數(shù)字電路基礎,以及能定下心來,決心學點東西。如果做不到的話,麻煩您把我輕輕的放開,該干啥干啥去。前言最近學習AVR,網(wǎng)上找了N多資料后,發(fā)現(xiàn)就算林夕依然ATmega16學習筆記最合俺的心意。優(yōu)點如下:1、不講原理,直接操作,適合俺這種不愿背書的差生。2、每個例程都附有源程序及PROTEUS仿真文件,省了買零件的金錢及焊板的時間。缺點當然也有:1、太省事了,初學者容易只跑跑例程,不求甚解(這也是市售所有學習板的通?。?、基于ICCAVR,

2、而不是最新的AtmelStudio。3、理論知識太少(也算是優(yōu)點)。還有一條就是這玩意是用EXE文件打包的,初次下載時,我不敢打開,生怕會給我強裝軟件或者開個后門什么的。后來在網(wǎng)上下載了一個開發(fā)板的附帶光盤文件,發(fā)現(xiàn)里面也帶著這玩意。心想這里面不該會有問題呀,才不是太放心的打開,打開后發(fā)現(xiàn)相見恨晚呀!好吧,先把這些例程一個一個琢磨完吧。不過看程序時發(fā)現(xiàn)想打瞌睡,也難怪,看這玩意也太沒挑戰(zhàn)性了。既然我的電腦中裝了AtmelStudio,即然ICCAVR遲早要過時,不如把這里面的例程移植到AtmelStudio中吧!順便也可以學習一下編程。筆

3、記不妨公開,俺也好刷一點成在感。本文中所有例程均在AtmelStudio6.2+Proteus7.8中調試通過。本文是我個人學習時的筆記,希望后來者能少走一點彎路。學習MCU的惟一捷徑是多讀例程,多寫程序,別無他法。林夕依然ATmega16學習筆記下載鏈結如下::pan.baidu./s/1eQBFb7k密碼:mzah實驗1:8種LED點亮模式1、移植到AtmelStudio中的步驟打開AtmelStudio6.2,新建一個項目。不知道啥意思,我選第二個后,在下面起好項目名稱及選好項目目錄后OK。這個好辦,按CPU型號選就好了。終于進入編

4、輯窗口了。一言蔽之,提取包中所有.c(C源碼)、.h(C頭文件)、.dsn(PROTEUS仿真文件)文件。AtmelStudio自己生成的那個.c文件要刪掉,否則你懂的。移植的時候,要把頭文件換一下,否則用不了所有的iom16v.h替換為avr/io.h所有#include全部注釋掉。有這一句的文件中,全部增加#defineBIT(x)(1<<(x))當然了,移植的時候,我們懶得逐一去改BIT,才這么將就一下。那么AtmelStudio與BIT()等價的命令是什么呢?打開sfr_defs.h文件,里面有一行:沒錯,At

5、melStudio中與BIT等價的命令是_BV。再把隨項目自動生成的那個C文件(含main函數(shù)的那個)刪掉。main函數(shù)要改成int型。嗯,C99是這樣規(guī)定的,新出的標準C編譯器都得這么干,否則會有警告。某個不僅僅是五百強的公司的編程規(guī)中可是明文規(guī)定編譯時不準有任何警告。按F7編譯在項目目錄中找到生成的hex文件,一般在DEBUG子目錄里,用Proteus仿真。2、Proteus仿真步驟假設已經(jīng)裝好Proteus,我裝的是7.8版本。雙擊打開包中的DSN文件。如上圖所示,雙擊CPU,彈出下框。在ProgramFile中找到剛才編譯出來的h

6、ex文件。然后點擊OK。點擊程序左下角的三角形圖標開始仿真我們現(xiàn)在可以愉悅的看著LED圖標在歡快的上下滾動。3、知識點作為開山第一個實驗,知識點會多一些,我會很認真的寫,希望你能看懂。AtmelStudio不支持直接對單個位進行操作,若要對單個位進行操作,則要通過與或非的辦法。小知識:ICCAVR位操作的宏定義blog.163./huangbin_1985/blog/static/13386/C語言位操作的功能是其比較出色的地方,現(xiàn)在許多微處理器都支持C編譯器也可看出。匯編語言的位操作也很直觀,但在某些C編譯器對位操作卻不能象匯編中對單個

7、的位進行直接處理,而要轉化為對一個字節(jié)的操作,在ICCAVR中這種限制充分體現(xiàn)出來。如要對PORTA的PORTA0置1,則應寫成PORTA

8、=0X01;這樣的位處在字節(jié)的兩端還比較直觀,但若是要置PORTA的第3位,第6位置1,則寫出的程序可讀性不強了。于是便有了一些宏操作定義#defineBIT(x)(1<<(x))(需要包含頭文件macros.h)才可直接使用。下面給出兩種置1和清0的宏定義:置1:1,#defineset(x)(1<<(x))2,#definesetb(temp,x)temp

9、=(1<<(x))清0:1,#defin

10、eclr(x)(~(1<<(x)))2,#defineclrb(temp,x)temp&=~(1<<(x))比較上述置1的兩種宏定義,第1種在寫1時需寫成PORTA

11、=set(x);x表示要處

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。