資料介紹
Avr單片機(jī)和其他單片機(jī)一樣,有自己的指令和寄存器,特定的IO口操作方法,有定時(shí)器,AD轉(zhuǎn)換,串行口,PWM輸出,EEPROM等。為了縮短大家學(xué)習(xí)的時(shí)間,快速的了解avr編程思路,擬定avr程序設(shè)計(jì)系列教程。我使用avr也不是很長(zhǎng)時(shí)間,技術(shù)有限,錯(cuò)誤再所難免,還請(qǐng)指出,以期改正。
【說(shuō)明】:本頁(yè)是針對(duì)從來(lái)沒有碰過(guò)單片機(jī)或者用過(guò)單片機(jī)而沒有用c語(yǔ)言的朋友,如果你已經(jīng)用過(guò)其他單片機(jī),此頁(yè)說(shuō)明可能對(duì)你沒有很大幫助,且顯得有些幼稚,請(qǐng)你跳過(guò)。
本站所有程序都是在icc+avrstudio下進(jìn)行的,如果你沒有配置好環(huán)境
采用icc的原因之一是它自帶一個(gè)非常好用的application builder,生成的代碼結(jié)構(gòu)清晰,層次清楚,特別適合新手,如下圖。
非常好用的 icc application builder
下面通過(guò)一個(gè)簡(jiǎn)單的程序,分析avr程序要素,使用icc的程序生成器,Application Builder 界面如下:
icc的程序生成器
進(jìn)入該界面后,我更改設(shè)置,Target CPU,及目標(biāo)芯片設(shè)置位mega16這個(gè)非常常用的芯片,Xtal speed 及晶振頻率,我選了我用的7.3728MHz。
下面我們來(lái)看看我們得到的代碼。【說(shuō)明】:“#”只是為了方便解釋代碼,并非為程序內(nèi)容。
#1 //ICC-AVR application builder : 2006-11-3 14:42:54
#2 // Target : M16
#3 // Crystal: 7.3728Mhz
#4 #include
#5 #include
#6 void port_init(void)
#7 {
#8 PORTA = 0x00;
#9 DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
#10 }
#11 //call this routine to initialize all peripherals
#12 void init_devices(void)
#13 {
#14 //stop errant interrupts until set up
#15 CLI(); //disable all interrupts
#16 port_init();
#17 MCUCR = 0x00;
#18 GICR = 0x00;
#19 TIMSK = 0x00; //timer interrupt sources
#20 SEI(); //re-enable interrupts
#21 //all peripherals are now initialized
#13 }
#1——#3,注釋行,分別說(shuō)明了程序生成者是ICC-AVR application builder,生成時(shí)間,CPU類型,晶振大小,在本例中晶振大小沒有用途,但在實(shí)際操作中,晶振大小將影響定時(shí)器的設(shè)置,PWM波形的輸出,串口波特率的設(shè)定,總線時(shí)序等多方面的問題。
#4——#5,包含特定頭文件,學(xué)過(guò)c語(yǔ)言的人都知道,c語(yǔ)言里幾乎每個(gè)程序都要包含特定的頭文件,在這里,iom16v.h和macros.h都在icc程序安裝文件夾下一個(gè)include的目錄中,iom16v.h和你選擇的芯片相對(duì)應(yīng),如果你選擇的是atmega32,那個(gè)這個(gè)文件就是iom32v.h,等等,在這樣的文件中定義了對(duì)應(yīng)的芯片的各個(gè)硬件地址。macros.h文件中定義了一些宏命令和一些老的語(yǔ)言寫法。通常每一個(gè)程序都要包含這個(gè)頭文件。
#6 void port_init(void),定義函數(shù)port_init,函數(shù)的用途是初始化串口,前面一個(gè)void表示函數(shù)沒有輸出,括號(hào)里的void表示這個(gè)函數(shù)沒有輸入變量。
#7,#10 C語(yǔ)言中所有函數(shù)體都要寫在{}內(nèi),一個(gè)開始,一個(gè)結(jié)束。
#8,定義PA口為0x00,及PA口上的所有管腳輸出為低電平,同樣道理,如果些微PORTA=0xFF,則都輸入高電平,0xFF及二進(jìn)制的11111111,如果想讓某一位輸出高,其他為低,如00000001,則是PA0輸出為高電平,PA1——PA7輸出為低電平。說(shuō)明:每個(gè)口線與單片機(jī)實(shí)際引腳的對(duì)應(yīng)關(guān)系請(qǐng)參看技術(shù)手冊(cè)。
#9,定義引腳的輸出輸入模式,1為輸出,0為輸入。當(dāng)使用輸出模式及設(shè)置為1時(shí),PORTA的值將影響內(nèi)部上拉電阻的使用,如果PORTA對(duì)應(yīng)管腳的值為1,則使用內(nèi)部上拉電阻,否則不采用。 除了這里說(shuō)的“=”之外,管腳的控制還有其他算符,|= ,&=! ,^=,==,請(qǐng)參考學(xué)習(xí)筆記:avr端口操作的例子理解,將在本頁(yè)后面部分說(shuō)明。
同理,下面部分為BCD口的操作。
#11,注釋,說(shuō)明你可以使用下面的程序來(lái)實(shí)現(xiàn)初始化。
#13,程序的開始和結(jié)束。
#15,內(nèi)部定義的宏,關(guān)閉所有中斷。
#16,調(diào)用端口初始化的程序。
#17,MCUCR = 0x00;電源管理及睡眠模式寄存器設(shè)置,這里設(shè)為0x00,為空閑模式,更多內(nèi)容,請(qǐng)參看atmega16技術(shù)手冊(cè)。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- C語(yǔ)言零基礎(chǔ)入門教學(xué)資料匯總下載 132次下載
- AVR開發(fā)工具介紹資料下載
- 學(xué)C語(yǔ)言,為什么大家會(huì)說(shuō)這本書是坑?資料下載
- 單片機(jī)難不難學(xué)?編程難不難?資料下載
- MATLAB語(yǔ)言與C語(yǔ)言的區(qū)別資料下載
- 初學(xué)C語(yǔ)言,你的“行囊”需要準(zhǔn)備什么呢?資料下載
- C語(yǔ)言函數(shù)為什么不能返回?cái)?shù)組?資料下載
- 如何學(xué)習(xí)c語(yǔ)言?C語(yǔ)言學(xué)習(xí)筆記資料免費(fèi)下載 66次下載
- AVR單片機(jī)教程之AVR軟件、工具、M16的基礎(chǔ)知識(shí)資料免費(fèi)下載 13次下載
- LED燈中斷C語(yǔ)言程序資料免費(fèi)下載 8次下載
- AVR單片機(jī)C語(yǔ)言總綱
- AVR單片機(jī)C語(yǔ)言開發(fā)入門指導(dǎo)1
- AVR單片機(jī)C語(yǔ)言開發(fā)入門指導(dǎo)2
- 十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- AVR單片機(jī)C語(yǔ)言開發(fā)入門指導(dǎo)
- plc編程語(yǔ)言與c語(yǔ)言的聯(lián)系 c語(yǔ)言和PLC有什么區(qū)別 4302次閱讀
- vb語(yǔ)言和c++語(yǔ)言的區(qū)別 2434次閱讀
- C語(yǔ)言中strlen和sizeof的區(qū)別 569次閱讀
- C語(yǔ)言入門基礎(chǔ)知識(shí)科普 4851次閱讀
- 詳解C語(yǔ)言中的短路現(xiàn)象 4049次閱讀
- ?為什么嵌入式開發(fā)要選擇C語(yǔ)言? 1336次閱讀
- 使用51單片機(jī)讀寫AT29C040的C語(yǔ)言程序免費(fèi)下載 4814次閱讀
- C語(yǔ)言的誕生 C語(yǔ)言與C++40年的相愛相殺 1361次閱讀
- C語(yǔ)言的簡(jiǎn)介和特點(diǎn)說(shuō)明 8053次閱讀
- 微雪電子USB AVR JTAG ICE XPII下載器簡(jiǎn)介 4379次閱讀
- 學(xué)習(xí)開發(fā)環(huán)境和編程語(yǔ)言:匯編語(yǔ)言和C語(yǔ)言的比較 9082次閱讀
- Java編程和c語(yǔ)言哪一種更有優(yōu)勢(shì)_C語(yǔ)言與JAVA的區(qū)別是什么 2.4w次閱讀
- C語(yǔ)言的運(yùn)行環(huán)境有哪些_哪些是值得推薦的_C語(yǔ)言常用開發(fā)環(huán)境詳解 10.7w次閱讀
- c語(yǔ)言的應(yīng)用領(lǐng)域有哪些 3.2w次閱讀
- 嵌入式Linux開發(fā)之C語(yǔ)言學(xué)習(xí)秘訣 9990次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1491次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費(fèi)
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計(jì)
- 0.23 MB | 4次下載 | 免費(fèi)
- 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論