一、先來(lái)一段樸實(shí)的獨(dú)白吧
寫這篇文的時(shí)間是2018年3月21日。大學(xué)2013畢業(yè),專業(yè)是機(jī)械,但喜歡電子。篇首聲明:哪一行都有鄙視鏈,就連打個(gè)游戲都不例外。如果大神路過(guò)這里,請(qǐng)您show your mercy然后walk away就當(dāng)nothing happened. 當(dāng)然,大牛都是很低調(diào)的,因?yàn)樗麄兩硇亩汲吝M(jìn)編程的世界里不能自撥。好了本文就ICCAVR的使用說(shuō)明作一個(gè)入門式的引導(dǎo),方便新、老網(wǎng)友作一種可供使用的參考。
上大學(xué)并不是為了純讀書,而是自我發(fā)現(xiàn)、反饋、然后決定的心理成熟過(guò)程,好吧這就是我的層次。上學(xué)時(shí)為了搞懂一個(gè)東西,在網(wǎng)上查找所有的有用的信息資料,當(dāng)然必須免費(fèi)的,唉不談。。現(xiàn)在如果需要一些資源直接買買買,省時(shí)省力省心。嗯回不去的過(guò)去。感謝在知識(shí)產(chǎn)權(quán)還不嚴(yán)謹(jǐn)?shù)漠?dāng)時(shí)網(wǎng)絡(luò)給了我很多。我想現(xiàn)在終于有些時(shí)間了,可以做一些反饋了。同時(shí),希望一切都回歸理性。
二、介紹ICCAVR
AVR單片機(jī)是ATMEL公司開(kāi)發(fā)的高速8位處理。
低檔Tiny系列AVR單片機(jī): 主要有Tiny11/12/13/15/26/28等;
中檔AT90S系列AVR 單片機(jī): 主要有AT90S1200/2313/8515/8535等; (正在淘汰或轉(zhuǎn)型到Mega中)
高檔ATmega系列AVR單片機(jī): 主要有ATmega8/16/32/64/128( 存儲(chǔ)容量為8/16/32/64/128 KB)以及ATmega8515/8535等。
ICCAVR編譯軟件是ATMEL公司推薦的第三方編譯器之一,目前ICCAVR7.22版本在網(wǎng)上可下載使用。
那么如何新建一個(gè)工程項(xiàng)目,做好準(zhǔn)備工作,然后開(kāi)始寫程序代碼呢,下面按步驟一步一步說(shuō)明:
1 菜單》Project》New,先新建一個(gè)工程
2 在彈出的窗口中選擇保存在哪個(gè)文件夾中,最好單獨(dú)建個(gè)文件存放該工程。然后輸入工程文件名,比如test,然后點(diǎn)保存。
3 菜單》File》New,來(lái)新建一個(gè)存放程序的文件
4 新建了一個(gè)窗口,窗口默認(rèn)名為Untitled-1,點(diǎn)擊一個(gè)該窗口空白處隨便輸入幾個(gè)字符,可以看到保存按鈕由灰色變成彩色,點(diǎn)擊 菜單》File》Save,在彈出的窗口中選擇保存在哪個(gè)文件夾中,最好與剛才新建的工程保存在同一個(gè)文件夾下。然后輸入程序文件名,比如testpro0000.c 此處注意,要以.C結(jié)尾,表明是一個(gè)C程序文件聲明,然后點(diǎn)保存。
5 可以看到默認(rèn)的文件名Untitled-1被保存成我們輸入的testpro0000.c,在界面右邊目錄樹(shù)上鼠標(biāo)右鍵 選擇Add file(s),將此程序文件添加到第一步新建的項(xiàng)目test中去。
6 在彈出的窗口中 找到我們剛才建的程序文件testpro0000.c,點(diǎn)擊打開(kāi)
7 如下圖,該.c文件已經(jīng)在項(xiàng)目的目錄下了,準(zhǔn)備工作結(jié)束
8 接下來(lái)說(shuō)一下重點(diǎn)有用的一個(gè)功能:應(yīng)用生成器,就是下圖中像掃把一個(gè)的小圖標(biāo)
9 不要猶豫,點(diǎn)它,彈出一個(gè)向?qū)Т翱冢贑PU選項(xiàng)里選擇我們用的型號(hào),例如Target CPU,選M16,即ATMEGA16,Xtal speed 即晶振頻率,選擇你所用的晶振頻率,最右邊 External interrputs 即外部中斷,我選中打開(kāi)INT0,中斷觸發(fā)方式為L(zhǎng)ow level,即低電平觸發(fā)。
10 在Timer0選項(xiàng)里選中Use Timer0 打開(kāi)定時(shí)器T0,旁邊Overflow interrupt意思是定時(shí)器中斷溢出處理函數(shù)打開(kāi)與否,選中(即一個(gè)小叉叉表示選中)打開(kāi)它,因?yàn)榈綍r(shí)我們要在這個(gè)函數(shù)里處理一些變量。Desired value 意思是你需要的數(shù)值,旁邊的Units 是單位表示。比如我要定時(shí)4us,就可如下圖這么選。下邊Prescale select 是預(yù)分頻,選擇8或其它數(shù)值,可以看到右側(cè)Actual value 表示能實(shí)現(xiàn)的實(shí)際精度。此項(xiàng)目中我們就打開(kāi)INT0和T0,其它的功能先不做示例。點(diǎn)擊OK.
11 彈出一個(gè)新的未命名Untitled窗口,里面就是我們剛才用生成器生成的程序構(gòu)架,我在//后做了注釋,因?yàn)椴⑽幢4嬖撐募岳锩娴淖煮w也沒(méi)有被ICC編譯器識(shí)別并以彩色顏色表示。那么,我們知道了這些函數(shù)是干什么用的,就可以開(kāi)心的復(fù)制-粘貼到我們的程序文件testpro0000.c中去了,有用的信息COPY之后,下圖中的Untitled-3窗口使命也就完成了,選擇File》close,在彈出的窗口中選擇 不保存 即可。然后就可以在testpro0000.c里寫代碼了、改程序 、新建變量、調(diào)試程序了,然后點(diǎn)擊紅色的編譯程序按鈕,顯示0 errors,0 warnings 即大功告成!
12 程序編譯通過(guò)以后,在我們第一步建的項(xiàng)目文件夾下,會(huì)產(chǎn)生以.hex結(jié)尾的文件,這個(gè)文件就是編譯器生成的機(jī)器代碼,我們可以用工具將此HEX文件燒錄下載到我們的AVR單片機(jī)中去,單片機(jī)就可以執(zhí)行代碼了。這個(gè)軟件就是 PROGISP 目前版本1.72在網(wǎng)上可供下載。
當(dāng)然,我們要先需要一根下載線,連接電腦和AVR單片機(jī)。這根線的關(guān)鍵詞是 USBASP ,請(qǐng)自行搜索,網(wǎng)上很多賣的,買個(gè)帶保護(hù)的等等。買個(gè)次品把主板燒了就不劃算了。下載很簡(jiǎn)單,選擇目標(biāo)CPU為ATMEGA16后,第1步【調(diào)入flash】,找到目標(biāo)hex打開(kāi),第2步點(diǎn)【自動(dòng)】即可。
13 AVR單片機(jī)熔絲位設(shè)置,在PROGISP軟件中點(diǎn)擊三個(gè)小點(diǎn)的一個(gè)按鈕,請(qǐng)參見(jiàn)上面PROGISP主界面圖中的標(biāo)注,會(huì)彈出一個(gè)小窗口,有位配置方式,向?qū)Х绞剑x擇向?qū)Х绞剑纯稍诓涣私飧鞣N參數(shù)的意義下,實(shí)現(xiàn)編程熔絲位。請(qǐng)?zhí)崆白鲂┬」φn,不要手抖鎖死芯片哦!
14 一個(gè)小例子,僅作看看。
//ICC-AVR application builder : 2016/5/24 16:38:13
// Target : M16
// Crystal: 11.059Mhz
#include #include #define uchar unsigned char #define uint unsigned int uchar flag0=0,flag1=0,flag2=0; uchar i,j,k; void port_init(void) { DDRA = 0xFF; PORTA = 0xF8; } #pragma interrupt_handler int0_isr:iv_INT0 void int0_isr(void) { i=PIND; i=i&0X04; if(i==0X00) {flag0=1;//external interupt on INT0 PORTA|=0X01;}//&=0XFE } #pragma interrupt_handler int1_isr:iv_INT1 void int1_isr(void) { j=PIND; j=j&0X08; if(j==0x00) {flag1=1;//external interupt on INT1 PORTA|=0X02;}//&=0XFD } #pragma interrupt_handler int2_isr:iv_INT2 void int2_isr(void) { k=PINB; k=k&0X04; if(k==0X00) {flag2=1;//external interupt on INT2 PORTA|=0X04;}//&0XFB } void delayms(unsigned int ms) //16MHZ { unsigned int x,y; for(x=0;x ; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); delayms(360);//等待傳感器進(jìn)入穩(wěn)定狀態(tài) MCUCR = 0x0A; GICR = 0xE0; TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } void main( void ) { init_devices(); while(1) { if (flag0==1) { GICR&=~(1< //i=PIND; //i=i&0X04; //if(i==0X00) //{ PORTA&=0XFE; delayms(1); GICR|=(1< //} } if (flag0!=1) { i=PIND; i=i&0X04; if(i!=0X00) { PORTA|=0X01; } } if (flag1==1) { GICR&=~(1< j=PIND; j=j&0X08; if(j==0x00) { PORTA&=0XFD; delayms(1); GICR|=(1< } } if (flag1!=1) { j=PIND; j=j&0X08; if(j!=0X00) { PORTA|=0X02; } } if (flag2==1) { GICR&=~(1< k=PINB; k=k&0X04; if(k==0X00) { PORTA&=0XFB; delayms(1); GICR|=(1< } } if (flag2!=1) { k=PINB; k=k&0X04; if(k!=0X00) { PORTA|=0X04; } } } } 三、本文供基礎(chǔ)參考,想深入還需要花些時(shí)間在上面。在東西比較雜的情況下,發(fā)散思維幫助融匯貫通。
上一篇:通過(guò)采用單片機(jī)和指紋識(shí)別模塊實(shí)現(xiàn)電子機(jī)械鎖的設(shè)計(jì)
下一篇:ATmega328芯片-“變身”-溫度計(jì)-,附示例教程
推薦閱讀
史海拾趣
隨著公司規(guī)模的擴(kuò)大,Coil-Q意識(shí)到單靠自身的力量難以應(yīng)對(duì)日益激烈的市場(chǎng)競(jìng)爭(zhēng)。于是,公司積極尋求與其他企業(yè)的戰(zhàn)略合作,與多家知名電子品牌建立了長(zhǎng)期穩(wěn)定的合作關(guān)系。通過(guò)共享資源、共同研發(fā),Coil-Q不僅拓展了業(yè)務(wù)領(lǐng)域,還提高了自身的技術(shù)水平和市場(chǎng)競(jìng)爭(zhēng)力。
隨著技術(shù)的不斷發(fā)展,Enterpoint公司意識(shí)到,要想在競(jìng)爭(zhēng)激烈的市場(chǎng)中保持領(lǐng)先地位,必須不斷進(jìn)行技術(shù)突破和產(chǎn)品升級(jí)。公司投入大量資源進(jìn)行研發(fā),成功開(kāi)發(fā)出一系列具有高性能、低能耗特點(diǎn)的數(shù)據(jù)處理設(shè)備。這些產(chǎn)品的推出不僅提升了公司的市場(chǎng)競(jìng)爭(zhēng)力,也為客戶帶來(lái)了更高效、更穩(wěn)定的數(shù)據(jù)處理體驗(yàn)。
Enterpoint公司起源于一個(gè)由幾位電子工程領(lǐng)域的專家組成的創(chuàng)業(yè)團(tuán)隊(duì)。當(dāng)時(shí),他們看到了電子行業(yè)中對(duì)于高效、可靠的數(shù)據(jù)處理解決方案的迫切需求,于是決定創(chuàng)立Enterpoint公司,專注于開(kāi)發(fā)這一領(lǐng)域的創(chuàng)新產(chǎn)品。團(tuán)隊(duì)初期面臨著資金短缺、技術(shù)挑戰(zhàn)和市場(chǎng)認(rèn)知度低等多重困難,但他們憑借著對(duì)技術(shù)的熱情和堅(jiān)持,不斷研發(fā)新產(chǎn)品,逐漸在電子行業(yè)中嶄露頭角。
在Enterpoint公司的發(fā)展過(guò)程中,他們始終將客戶服務(wù)放在首位。公司建立了一套完善的客戶服務(wù)體系,為客戶提供從產(chǎn)品咨詢、技術(shù)支持到售后服務(wù)的全方位支持。這種對(duì)客戶的關(guān)注和投入,不僅贏得了客戶的信任和好評(píng),也為公司的品牌建設(shè)打下了堅(jiān)實(shí)的基礎(chǔ)。
API Technologies一直注重技術(shù)創(chuàng)新和研發(fā)投入。公司不斷引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和技術(shù)人才,加大對(duì)新產(chǎn)品、新技術(shù)的研發(fā)力度。通過(guò)不斷的技術(shù)創(chuàng)新,API Technologies成功推出了一系列具有自主知識(shí)產(chǎn)權(quán)的高性能產(chǎn)品,不僅提升了公司的核心競(jìng)爭(zhēng)力,也為公司的持續(xù)發(fā)展注入了新的動(dòng)力。
電源工程師需要的基本技能和專業(yè)理論知識(shí)(薪水評(píng)估) 開(kāi)關(guān)電源產(chǎn)品的設(shè)計(jì)過(guò)程實(shí)際是一個(gè)優(yōu)化折衷的過(guò)程.工程師們常常在各種電性能參數(shù)之間舉棋不定,如穩(wěn)態(tài)性能與動(dòng)態(tài)性能的折衷,功率密度與可靠性的折衷等.在追求低功耗高效率的今天,擺在電源工程師面前的難題仍然是功耗和性能的取舍. 開(kāi)發(fā)一個(gè)開(kāi)關(guān)電 ...… 查看全部問(wèn)答∨ |
急求DSP控制寫CF卡的程序代碼,相關(guān)資料也可以,謝謝幫助! 要用DSP控制向CF卡寫數(shù)據(jù),具體流程是什么?請(qǐng)高手指點(diǎn) 急求DSP控制寫CF卡的程序代碼,相關(guān)資料也可以,謝謝幫助! 我的郵箱:haolinchen_0@126.com… 查看全部問(wèn)答∨ |
分析:百萬(wàn)高清攝像機(jī)容易被忽視的考察點(diǎn) [轉(zhuǎn)帖] 最近看到很多網(wǎng)友在喜歡論壇粘貼百萬(wàn)高清網(wǎng)絡(luò)攝像機(jī)的漂亮圖片,來(lái)吸引大家的眼球,確實(shí)清晰度要比模擬攝像機(jī)高很多。百萬(wàn)高清是行業(yè)發(fā)展的必然趨勢(shì),但是大家千萬(wàn)不能只看到像素,卻忽略了百萬(wàn)高清網(wǎng)絡(luò)攝像機(jī)的其他重要考察點(diǎn)。 【發(fā)熱量】 ...… 查看全部問(wèn)答∨ |
|
團(tuán)購(gòu)示波器群:359838(6位qq群) 團(tuán)購(gòu)示波器群:359838(6位qq群) --本群目的:團(tuán)購(gòu)示波器和其他各種電工儀表工具以及DIY 業(yè)余DIY或者搞兼職,萬(wàn)用表是必用的,每個(gè)電工都有, 但示波器就不一定了,沒(méi)示波器,調(diào)電路不是不行,得多花 非常多的功夫。 這些功夫就是錢啊,時(shí)間就 ...… 查看全部問(wèn)答∨ |
請(qǐng)問(wèn)哪位大大有TMS320F2812的SCI初始化代碼啊? 老師要我寫一個(gè)SCI的初始化代碼,我看了這個(gè)芯片的文檔后,還是感覺(jué)云里霧里的,后天就要交了,著急死了。。。 一直弄不明白TXWAKE、WUT這兩個(gè)信號(hào)到底是干嘛用的。。。求牛人解救啊。。。… 查看全部問(wèn)答∨ |
故障現(xiàn)象:一輛上海通用五菱LZW6360Ei7型微型客車,配備電噴發(fā)動(dòng)機(jī)。該車出現(xiàn)嚴(yán)重的加速無(wú)力、“缺缸”現(xiàn)象,以致無(wú)法正常行駛。據(jù)車主反映,每次更換火花塞后,車輛能正常行駛1000km左右,然后就出現(xiàn)高速“闖車”現(xiàn)象,而且越來(lái)越嚴(yán)重,最后導(dǎo)致車 ...… 查看全部問(wèn)答∨ |
我現(xiàn)在想用lm3s8962或者TMS320F交換lpc2000系列開(kāi)發(fā)板。 聯(lián)系方式:kxs002@163.com QQ:81960697… 查看全部問(wèn)答∨ |
rt, 我使用LPCxpresso 編譯器。 #define NO_CRP 0xFFFFFFFF #define NO_ISP_MAGIC 0x4E697370 #define CRP1_MAGIC 0x12345678 #define CRP2_MAGIC ...… 查看全部問(wèn)答∨ |
出現(xiàn)c232,“delayms”:redefinition錯(cuò)誤,怎么辦!? #include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; //申明U1鎖存器的鎖存端// sbit wela=P2^7;   ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹(shù)莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- 480Wh/kg!湖南久森半固態(tài)金屬鋰負(fù)極電池即將量產(chǎn)
- 中國(guó)首條硫化物固體電解質(zhì)量產(chǎn)線正式落地
- QUT開(kāi)發(fā)出新的LENS系統(tǒng) 可以讓機(jī)器人進(jìn)行類似大腦的導(dǎo)航
- 毫米波雷達(dá)裝機(jī)量分析:毫米波雷達(dá)裝車量持續(xù)攀升,大陸和博世占據(jù)60%以上市場(chǎng)份額
- TDK推出適用于車載濾波器的同軸電纜供電電感器
- 大摩給“人形機(jī)器人100”清單注入新思路
- 行家預(yù)判:2025年車載Mini LED反超OLED
- 2025數(shù)智未來(lái)峰會(huì):深度解讀AI賦能工業(yè)的趨勢(shì)與實(shí)踐
- 工業(yè)自動(dòng)化中的Raspberry Pi:簡(jiǎn)化經(jīng)濟(jì)實(shí)惠的邊緣計(jì)算
- 意法半導(dǎo)體宣布擴(kuò)大在新加坡的“Lab-in-Fab”廠內(nèi)實(shí)驗(yàn)室合作項(xiàng)目
- 有獎(jiǎng)直播:當(dāng)智能遇上工業(yè),技術(shù)如何落地?
- 英飛凌BMS解決方案,為電動(dòng)汽車和儲(chǔ)能系統(tǒng)保駕護(hù)航!
- 泰克直播:帶您了解您所不知道的示波器使用技巧
- 看視頻答題,玩轉(zhuǎn)幸運(yùn)大抽獎(jiǎng):Littelfuse汽車電子電路保護(hù)知多少
- 端午節(jié)芯幣兌換禮品專場(chǎng)禮品專場(chǎng)
- 零起點(diǎn)入門,帶你動(dòng)手做AVR開(kāi)發(fā)板
- 免費(fèi)測(cè)評(píng)|ESP32-S2-Kaluga-1新型多媒體開(kāi)發(fā)板,靈活拆裝,滿足多種需求
- STM32CubeMX系列教程11:串行外設(shè)接口SPI(二)
- STM32CubeMX系列教程12:控制器局域網(wǎng)絡(luò)(CAN)
- STM32CubeMX系列教程13:實(shí)時(shí)時(shí)鐘(RTC)
- STM32CubeMX系列教程14:電源控制器(PWR)
- STM32CubeMX系列教程15:看門狗(WDG)
- 人類的臉部藏著什么秘密?AI只想盯著你的臉看
- 永阜康科技突破單節(jié)鋰電池局限性,推出IC-HT878/HT878T
- 蘋果裁員200人,自動(dòng)駕駛項(xiàng)目怎么了?
- TE 與中航國(guó)際和中國(guó)航材分別簽訂了合作協(xié)議
- 解析純電動(dòng)車的一些黑科技技術(shù)
- 超低功耗mcu-低功耗mcu的選擇方法
- DSP的室內(nèi)慣性導(dǎo)航系統(tǒng)設(shè)計(jì)
- CPLD在嵌入式系統(tǒng)與CAN總線網(wǎng)絡(luò)通信中的應(yīng)用
- 模擬芯片供應(yīng)商競(jìng)爭(zhēng)力點(diǎn)評(píng)
- 基于verilog-A_的模擬電路行為模型及仿真.pdf
- 新手 WDK 環(huán)境編譯 出錯(cuò)
- AD畫原理圖怎么返回上一步還有多出一段線條怎么剪除?
- PSCD0705T-680M-S的技術(shù)參數(shù)
- 別人整理的電源設(shè)計(jì)謎團(tuán)
- 大批量低價(jià)出液晶屏 有實(shí)力的進(jìn)來(lái)看看!!!!大功率燈珠