資料介紹
Avr單片機和其他單片機一樣,有自己的指令和寄存器,特定的IO口操作方法,有定時器,AD轉換,串行口,PWM輸出,EEPROM等。為了縮短大家學習的時間,快速的了解avr編程思路,擬定avr程序設計系列教程。我使用avr也不是很長時間,技術有限,錯誤再所難免,還請指出,以期改正。
【說明】:本頁是針對從來沒有碰過單片機或者用過單片機而沒有用c語言的朋友,如果你已經用過其他單片機,此頁說明可能對你沒有很大幫助,且顯得有些幼稚,請你跳過。
本站所有程序都是在icc+avrstudio下進行的,如果你沒有配置好環境
采用icc的原因之一是它自帶一個非常好用的application builder,生成的代碼結構清晰,層次清楚,特別適合新手,如下圖。
非常好用的 icc application builder
下面通過一個簡單的程序,分析avr程序要素,使用icc的程序生成器,Application Builder 界面如下:
icc的程序生成器
進入該界面后,我更改設置,Target CPU,及目標芯片設置位mega16這個非常常用的芯片,Xtal speed 及晶振頻率,我選了我用的7.3728MHz。
下面我們來看看我們得到的代碼。【說明】:“#”只是為了方便解釋代碼,并非為程序內容。
#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,注釋行,分別說明了程序生成者是ICC-AVR application builder,生成時間,CPU類型,晶振大小,在本例中晶振大小沒有用途,但在實際操作中,晶振大小將影響定時器的設置,PWM波形的輸出,串口波特率的設定,總線時序等多方面的問題。
#4——#5,包含特定頭文件,學過c語言的人都知道,c語言里幾乎每個程序都要包含特定的頭文件,在這里,iom16v.h和macros.h都在icc程序安裝文件夾下一個include的目錄中,iom16v.h和你選擇的芯片相對應,如果你選擇的是atmega32,那個這個文件就是iom32v.h,等等,在這樣的文件中定義了對應的芯片的各個硬件地址。macros.h文件中定義了一些宏命令和一些老的語言寫法。通常每一個程序都要包含這個頭文件。
#6 void port_init(void),定義函數port_init,函數的用途是初始化串口,前面一個void表示函數沒有輸出,括號里的void表示這個函數沒有輸入變量。
#7,#10 C語言中所有函數體都要寫在{}內,一個開始,一個結束。
#8,定義PA口為0x00,及PA口上的所有管腳輸出為低電平,同樣道理,如果些微PORTA=0xFF,則都輸入高電平,0xFF及二進制的11111111,如果想讓某一位輸出高,其他為低,如00000001,則是PA0輸出為高電平,PA1——PA7輸出為低電平。說明:每個口線與單片機實際引腳的對應關系請參看技術手冊。
#9,定義引腳的輸出輸入模式,1為輸出,0為輸入。當使用輸出模式及設置為1時,PORTA的值將影響內部上拉電阻的使用,如果PORTA對應管腳的值為1,則使用內部上拉電阻,否則不采用。 除了這里說的“=”之外,管腳的控制還有其他算符,|= ,&=! ,^=,==,請參考學習筆記:avr端口操作的例子理解,將在本頁后面部分說明。
同理,下面部分為BCD口的操作。
#11,注釋,說明你可以使用下面的程序來實現初始化。
#13,程序的開始和結束。
#15,內部定義的宏,關閉所有中斷。
#16,調用端口初始化的程序。
#17,MCUCR = 0x00;電源管理及睡眠模式寄存器設置,這里設為0x00,為空閑模式,更多內容,請參看atmega16技術手冊。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- C語言零基礎入門教學資料匯總下載 132次下載
- AVR開發工具介紹資料下載
- 學C語言,為什么大家會說這本書是坑?資料下載
- 單片機難不難學?編程難不難?資料下載
- MATLAB語言與C語言的區別資料下載
- 初學C語言,你的“行囊”需要準備什么呢?資料下載
- C語言函數為什么不能返回數組?資料下載
- 如何學習c語言?C語言學習筆記資料免費下載 66次下載
- AVR單片機教程之AVR軟件、工具、M16的基礎知識資料免費下載 13次下載
- LED燈中斷C語言程序資料免費下載 8次下載
- AVR單片機C語言總綱
- AVR單片機C語言開發入門指導1
- AVR單片機C語言開發入門指導2
- 十天學會AVR單片機與C語言視頻教程 下載
- AVR單片機C語言開發入門指導
- plc編程語言與c語言的聯系 c語言和PLC有什么區別 4302次閱讀
- vb語言和c++語言的區別 2434次閱讀
- C語言中strlen和sizeof的區別 569次閱讀
- C語言入門基礎知識科普 4851次閱讀
- 詳解C語言中的短路現象 4049次閱讀
- ?為什么嵌入式開發要選擇C語言? 1336次閱讀
- 使用51單片機讀寫AT29C040的C語言程序免費下載 4814次閱讀
- C語言的誕生 C語言與C++40年的相愛相殺 1361次閱讀
- C語言的簡介和特點說明 8053次閱讀
- 微雪電子USB AVR JTAG ICE XPII下載器簡介 4379次閱讀
- 學習開發環境和編程語言:匯編語言和C語言的比較 9082次閱讀
- Java編程和c語言哪一種更有優勢_C語言與JAVA的區別是什么 2.4w次閱讀
- C語言的運行環境有哪些_哪些是值得推薦的_C語言常用開發環境詳解 10.7w次閱讀
- c語言的應用領域有哪些 3.2w次閱讀
- 嵌入式Linux開發之C語言學習秘訣 9990次閱讀
下載排行
本周
- 1DC電源插座圖紙
- 0.67 MB | 3次下載 | 免費
- 2AN-1267: 使用ADSP-CM408F ADC控制器的電機控制反饋采樣時序
- 1.41MB | 3次下載 | 免費
- 3AN158 GD32VW553 Wi-Fi開發指南
- 1.51MB | 2次下載 | 免費
- 4AN148 GD32VW553射頻硬件開發指南
- 2.07MB | 1次下載 | 免費
- 5AN111-LTC3219用戶指南
- 84.32KB | 次下載 | 免費
- 6AN153-用于電源系統管理的Linduino
- 1.38MB | 次下載 | 免費
- 7AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下載 | 免費
- 8SM2018E 支持可控硅調光線性恒流控制芯片
- 402.24 KB | 次下載 | 免費
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 450次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 138次下載 | 1 積分
- 3基于STM32單片機智能手環心率計步器體溫顯示設計
- 0.10 MB | 130次下載 | 免費
- 4使用單片機實現七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 5美的電磁爐維修手冊大全
- 1.56 MB | 24次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 18次下載 | 免費
- 7感應筆電路圖
- 0.06 MB | 10次下載 | 免費
- 8萬用表UT58A原理圖
- 0.09 MB | 9次下載 | 5 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論
查看更多