C語言基本結(jié)構(gòu)和AVR單片機IO口介紹課件_第1頁
C語言基本結(jié)構(gòu)和AVR單片機IO口介紹課件_第2頁
C語言基本結(jié)構(gòu)和AVR單片機IO口介紹課件_第3頁
C語言基本結(jié)構(gòu)和AVR單片機IO口介紹課件_第4頁
C語言基本結(jié)構(gòu)和AVR單片機IO口介紹課件_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

簡單跑馬燈的設(shè)計簡單跑馬燈的設(shè)計AVR單片機的C語言編程

EmbeddedCProgramming

1.C語言體系結(jié)構(gòu)2.變量和常量3.AVR單片機I/O端口特性AVR單片機的C語言編程

EmbeddedCProgra簡單跑馬燈的設(shè)計

FlashLEDDesign設(shè)計內(nèi)容:共有8個LED需要每隔500MS同時點亮或熄滅,LED接在PORTA口,輸出高電平燈亮,輸出低電平時燈滅。要求1:自行編程。要求2:采用自動引導(dǎo)程序進行配置生成軟件初始化代碼框架,然后填入自己的程序代碼。通過CodeVision編譯,注意時鐘頻率。簡單跑馬燈的設(shè)計

FlashLEDDesign設(shè)計內(nèi)容:分組輪流閃爍的跑馬燈實訓(xùn)1:要求按照如下所示的方式1點亮,間隔500ms后,再換成方式2點亮,依此類推,周而復(fù)始。方式1:方式2:要求:采用自動引導(dǎo)程序進行配置生成軟件初始化代碼框架,然后填入自己的程序代碼。要求設(shè)置時鐘頻率為2M。下載程序時要求采用內(nèi)部RC振蕩器的熔絲配置。分組輪流閃爍的跑馬燈實訓(xùn)1:要求按照如下所示的方式1點亮,間AVR的IO端口特性

Input&OutputPort設(shè)置數(shù)據(jù)方向部分電路數(shù)據(jù)并行輸出部分電路數(shù)據(jù)并行輸入部分電路AVR的IO端口特性

Input&OutputPor8位的并行輸入、輸出接口。并行輸入:通過一條輸入指令可以一次讀出8個引腳的狀態(tài),組成一個字節(jié)的數(shù)據(jù)。一般用來采集外部數(shù)據(jù)。并行輸出:通過一條輸出指令可以將一個字節(jié)的數(shù)據(jù)送到8個引腳上。一般用來輸出控制信息。AVR的I/O口是真正的I/O口,能正確反映I/O口的真實情況。I/O口有輸入/輸出,三態(tài)高阻輸入,也可設(shè)定內(nèi)部拉高電阻作輸入端的功能,便于作各種應(yīng)用特性所需(多功能I/O口)。但是使用時,必須進行方向設(shè)置,是作為輸入,還是作為輸出接口使用。I/O接口及其應(yīng)用8位的并行輸入、輸出接口。I/O接口及其應(yīng)用AVR的IO端口特性

Input&OutputPort每個端口為具有可選上拉電阻的雙向I/O端口。每個并行端口有三個相關(guān)的I/O寄存器:數(shù)據(jù)方向寄存器DDRx數(shù)據(jù)寄存器PORTx端口輸入引腳寄存器PINx(其中x對應(yīng)A、B、C、D四個端口)當端口的某位DDRxn=1時,則此位定義為輸出模式。且輸出值等于PORTxn。

(其中n代表位的序號)當端口的某位DDRxn=0時,則此位定義為輸入模式。

不論如何配置DDRxn,都可以通過讀取PINxn寄存器來獲得引腳電平。為可讀/寫的寄存器為只讀寄存器AVR的IO端口特性

Input&OutputPorAVR的IO端口特性

Input&OutputPort

所有AVRI/O端口都具有真正的讀-修改-寫的功能:可以通過軟件任意設(shè)置任何一位的輸入、輸出模式。并且輸出緩沖器具有對稱的驅(qū)動能力,可以輸出或吸收大電流,直接驅(qū)動LED。所有的端口引腳都具有與電壓無關(guān)的上拉電阻。并有保護二極管與VCC和地相連。

如果有引腳未被使用,建議這些引腳賦予一個確定電平,使能內(nèi)部上拉電阻。AVR的IO端口特性

Input&OutputPor

復(fù)位后即缺省配置方向: 輸入PIN為物理引腳上拉: 關(guān)閉此時引腳的狀態(tài)不確定復(fù)位后即缺省配置上拉轉(zhuǎn)換DDxPORTxPINx物理引腳上拉方向: 輸入PIN可輸出電流上拉: ON此時引腳的狀態(tài)可正確讀入??0111上拉轉(zhuǎn)換DDxPORTxPINx物理引腳上拉方向: 輸入口線輸出DDxPORTxPINx物理引腳上拉方向: 輸出PIN反映輸出真實情況上拉: OFF11111111口線輸出DDxPORTxPINx物理引腳上拉方向: 輸出AVR單片機I/O口是真正的I/口AVR單片機I/O口是真正的I/口仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfig

JTAGICE可以對支持的器件的FLASH、EEPROM、熔絲位和加密位編程,可以執(zhí)行芯片擦除、編程、校驗、加密的操作AVRStudio中點擊命令:TOOLS->ProgramAVR/CONNECT或TOOLS->ProgramAVR/AUTOCONNECT

注意:如果正在調(diào)試,那么也必須點擊DEBUG->StopDebugging來退出仿真調(diào)試程序?qū)TAGICE的占用。

仿真器編程下載與熔絲配置的使用

ProgramDownlo仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfigProgram選項卡注意,只有帶JTAG口功能的AVR才支持JTAGICE編程

FLASH緩沖區(qū)和EEPROM緩沖區(qū)可以支持的文件格式:Atmel.rom和.eepIntelHEX二進制.bin仿真器編程下載與熔絲配置的使用

ProgramDownlo仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfigFuse選項卡:功能熔絲位的配置:BOOT區(qū)熔絲位的配置:支持引導(dǎo)加載程序的芯片有更多的安全位,可以鎖定存儲器中的引導(dǎo)加載區(qū)。FLASH鎖定位:選擇芯片編程使用的安全級別。注意,請保證“JTAGInterfaceEnable”一項始終有效,否則目標芯片就將失去與JTAGICE的通信能力,只有通過并行編程的辦法才能重新激活該熔絲位4.Lock&Bits選項卡——加密鎖定位的設(shè)置注意,如果想要將加密位刪除,那么只能對芯片做擦除操作。仿真器編程下載與熔絲配置的使用

ProgramDownlo仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfig仿真器編程下載與熔絲配置的使用

ProgramDownlo實戰(zhàn)演練實訓(xùn)2:如圖所示電路,要求按照如下所示的方式1點亮,間隔0.2s后,再換成方式2點亮,依此類推,周而復(fù)始。方式1:方式2:設(shè)計要求:采用自動引導(dǎo)程序進行配置生成軟件初始化代碼框架,然后填入自己的程序代碼。通過CodeVision編譯,要求下載程序時要求采用外部時鐘的熔絲配置。(led2.c)實戰(zhàn)演練實訓(xùn)2:如圖所示電路,要求按照如下所示的方式1點亮,應(yīng)用延時函數(shù)的詳細介紹

DelayFunction使用延時函數(shù)前要用#include<delay.h>預(yù)處理命令。下面延時函數(shù)使用程序循環(huán)產(chǎn)生延時,調(diào)用它們之前要關(guān)閉中斷,否則會比預(yù)期的延時要長。要在CodeVisionAVR軟件的Project→Configure→CCompiler菜單中設(shè)定準確的時鐘頻率。并同程序下載時設(shè)置的熔絲位一致。本目標板的時鐘只能設(shè)置成內(nèi)部RC和外部晶振兩種模式。主要的延時函數(shù):voiddelay_us(unsignedintn)實現(xiàn)n個微秒的延時,其中n必須是常數(shù)表達式。voiddelay_ms(unsignedintn)實現(xiàn)n個毫秒的延時,其中n必須是常數(shù)表達式。此函數(shù)會每毫秒清一次看門狗。應(yīng)用延時函數(shù)的詳細介紹

DelayFunction使用延時實戰(zhàn)演練實訓(xùn)3:如圖所示電路,要求按照如下所示的方式1點亮,每次點亮兩只燈,間隔0.2s后,再換成方式2點亮相鄰的兩只,依此類推,四次后,再回到第一次,周而復(fù)始循環(huán)50次。(要求分別用while,do-while,語句完成)方式1:方式2:方式3:方式4:實戰(zhàn)演練實訓(xùn)3:如圖所示電路,要求按照如下所示的方式1點亮,C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStructure/*****************************************************ThisprogramwasproducedbytheCodeWizardAVRV1.24.7eStandardChiptype:ATmega16Programtype:ApplicationClockfrequency:8.000000MHzMemorymodel:SmallExternalSRAMsize:0DataStacksize:256*****************************************************///LEDcontrollerprogram注釋部分:由“/**/”配對括起來的部分內(nèi)容,可以包括多行。注釋部分:由“//”引導(dǎo)的一行內(nèi)容。C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStrucC語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStructure#include<mega16.h>#include<delay.h>//Declareyourglobalvariablesherevoidmain(void){…….}voidfunction(void){…….}預(yù)編譯命令:文件包含指令函數(shù)頭函數(shù)體主函數(shù)main():C程序總是從main()函數(shù)開始執(zhí)行。而不論其在程序中的位置如何。當主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。定義了一些與I/0接口有關(guān)的特定變量,他們對應(yīng)單片機呢部的特殊功能寄存器,用大寫字母書寫。C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStrucC語言結(jié)構(gòu)風格特點

EmbeddedCStructureCharacter1.習慣用小寫字母,大小寫敏感2.一行上可以寫幾條語句,一條語句也可以寫在幾行上??墒褂每招泻涂崭?.C程序由語句組成,用“;”作為語句終止符4.書寫上注意使用縮進格式。5.程序由一個或多個函數(shù)組成,必須有且只能有一個主函數(shù)main()6.程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。7.

允許使用注釋。C語言的注釋格式為:/*……*/技巧:為避免遺漏必須配對使用的符號,例如注釋符號/*……*/、函數(shù)體的起止標識符(花括號{})、圓括號()等等。voidmain(void){ //PortAinitialization …….DDRA=0xFF;PORTA=0xFF; …….while(1){//PlaceyourcodeherePORTA^=0xFF;delay_ms(500);};}C語言結(jié)構(gòu)風格特點

EmbeddedCStructur變量與變量名

VariableConceptandVariableIdentifier變量:程序運行過程中其值可以改變的量,系統(tǒng)為程序中的每一個變量開辟一個存儲單元。變量的兩個要素:變量名和變量值變量命名遵循標識符命名規(guī)則,在程序中,通過變量名來引用變量的值。標識符:用來標識變量名、符號常量名、數(shù)組名、函數(shù)名、文件名的有效字符序列。標識符定義的注意事項:字母(或下劃線)開頭,后跟字母、數(shù)字和下劃線組成。不能和系統(tǒng)使用的名字(關(guān)鍵字)沖突。長度無統(tǒng)一規(guī)定,許多系統(tǒng)取8個字符。但目前并不如此。編程技巧:使用見名知意的字符串命名變量標識符。變量與變量名

VariableConceptandVC語言的基本數(shù)據(jù)類型以及變量的定義

VariableDefine基本數(shù)據(jù)類型:整型、實型、字符型C程序中用到的每一個變量都要指定它們所屬的數(shù)據(jù)類型。

其原因在于:不同類型的數(shù)據(jù)在內(nèi)存中占據(jù)不同長度的存儲區(qū),而且采用不同的表示方式。一個數(shù)據(jù)類型對應(yīng)著一個值的范圍并且對應(yīng)一組允許的操作。所有的變量一定要“先定義、后使用”:Inta,b,c;/*指定a,b,c為整型變量*/floatx,y;/*指定x,y為單精度實型變量*/doublez;/*指定z為雙精度實型變量*/charc1,c2;/*指定c1,c2為字符型變量*/C語言的基本數(shù)據(jù)類型以及變量的定義

VariableDe變量的內(nèi)存存儲情況

VariableRange變量的內(nèi)存存儲情況

VariableRange常量

Constant常量:1.整型常量2.實型常量3.字符型常量4.字符串常量5.符號常量6.flash常量整型常量三種形式表示:十進制:如123600八進制:以0開始,如0123十六進制:以0x開始,如0x123實型常量小數(shù)形式:如123.0.1230.012.5指數(shù)形式:如123e2123E2

字符常量:單引號括起來的一個字符。如:'a'字符常量的值是一個數(shù)字值。如字符常量'0',其ASCII為48,所以存儲的實際值為48。字符常量可以象整數(shù)一樣參與運算。字符串常量:雙引號括起來的字符序列。如“Hi,AVR","0"等字符串在存儲時末尾被自動加上字符'\0'字符常量與只包含一個字符的字符串常量的區(qū)別符號常量:用一個標識符代表一個常量#definePI3.14159符號常量轉(zhuǎn)義字符:轉(zhuǎn)義字符功能ASCII記號轉(zhuǎn)義字符

能ASCII記號\a 響鈴BEL \\ 反斜杠字? \

\b 退格BS \‘ 單引號字符 ’

\f走紙換頁FF \“ 雙引號字符 "

\n 換行 NL \? 問號 ? \r 回車 CR \ooo 1~3位8進制數(shù) ooo

\t橫向跳格HT \xhh 1~2位16進制數(shù) hh

\v縱向跳格VTFLASH常量:存儲在程序存儲區(qū)的常量Flashchar[]=”hi,avr”;常量

Constant常量:整型常量三種形式表示:實型常量算術(shù)運算符

ArithmeticOperationC語言提供了如下算術(shù)運算符: +(加法運算)-(減法運算)*(乘法運算符)/(除法運算符)%(求余運算符,或稱模運算符)如:4%2=0說明:兩個整數(shù)相除結(jié)果為整數(shù),如8/5的結(jié)果為1,舍去小數(shù)部分。如果參加運算的兩個數(shù)中有一個數(shù)為實數(shù),則結(jié)果是實型。求余運算要求%兩側(cè)都是整型數(shù)據(jù)。算術(shù)運算符

ArithmeticOperationC語言賦值運算符和賦值表達式

EvaluationOperation&EvaluationExpress簡單的賦值運算符:復(fù)合的賦值運算符=+=、-=、*=、%=、/=i+=2等價于i=i+2a*=b+5等價于a=a*(b+5)x%=3等價于x=x%3

voidmain(void) { //PortAinitialization …….

DDRA=0xFF;PORTA=0xFF; ……. while(1) { //Placeyourcodehere

PORTA=0xFF; delay_ms(100); PORTA=0x00; delay_ms(100); };

}賦值運算符和賦值表達式

EvaluationOperatiC程序的三種基本結(jié)構(gòu)

C程序采用結(jié)構(gòu)化的程序設(shè)計方法,程序由若干個基本結(jié)構(gòu)組成。每一個基本結(jié)構(gòu)可以包含一個或若干個語句。主要有三種結(jié)構(gòu):順序結(jié)構(gòu):程序按照語句順序進行執(zhí)行。循環(huán)結(jié)構(gòu):當型循環(huán)結(jié)構(gòu):“先判斷,再操作”直到型循環(huán)結(jié)構(gòu):“先操作,再判斷”選擇(分支)結(jié)構(gòu):C程序的三種基本結(jié)構(gòu)C程序采用結(jié)構(gòu)化的while語句訓(xùn)練

CycleStructureProgrammingwhile語句用來實現(xiàn)“當型”循環(huán),執(zhí)行過程:首先判斷表達式,當表達式的值為真(非0)時,反復(fù)執(zhí)行循環(huán)體。為假(0)時執(zhí)行循環(huán)體外面的語句。循環(huán)體循環(huán)繼續(xù)的條件表達式下一條語句非0(真)0(假)循環(huán)體語句組while執(zhí)行過程格式:while(循環(huán)繼續(xù)的條件表達式){語句組;}花括號不能丟掉!請問:下述程序?qū)崿F(xiàn)了什么功能?main(){inti,sum=0;while(i<=10){sum=sum+i;i++;}}while語句訓(xùn)練

CycleStructureProgdo-while語句

CycleStructureProgrammingdo-while語句用來實現(xiàn)“直到型”循環(huán)執(zhí)行過程:先無條件執(zhí)行一次循環(huán)體,然后判斷條件表達式,當表達式的值為真(非0)時,返回執(zhí)行循環(huán)體直到條件表達式為假(0)為止。絕對不能少分號!循環(huán)體格式:do{循環(huán)體語句組;}while(循環(huán)繼續(xù)條件);花括號不能丟掉!循環(huán)繼續(xù)的條件表達式下一條語句非0(真)0(假)循環(huán)體語句組請問:下述程序?qū)崿F(xiàn)了什么功能?main(){inti=0,sum=0;do{sum=sum+i;i++;}while(i<=100);}do-while語句

CycleStructurePro總循環(huán)次數(shù)已確定的情況下,可采用for語句形式為:for語句的一般形式:

for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)

{循環(huán)體語句組;} 分隔符為分號for語句

CycleStructureProgramming請問:下述程序?qū)崿F(xiàn)了什么功能?main(){inti,y=0;for(i=1;i<=10;i++){y=y+i;}}總循環(huán)次數(shù)已確定的情況下,可采用for語句形式為:分隔符為分循環(huán)繼續(xù)條件for的下一條語句非0(真)0(假)循環(huán)體語句組循環(huán)變量賦初值循環(huán)變量增值for語句循環(huán)執(zhí)行過程只求解一次要執(zhí)行若干次,具體次數(shù)由“循環(huán)繼續(xù)條件”決定for語句不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定,但給出了循環(huán)繼續(xù)條件的情況,它完全可以代替while語句和do-while語句。for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)

{循環(huán)體語句組;} 循環(huán)繼續(xù)條件for的下一條語句非0(真)0(假)循環(huán)體語句組LED控制的實戰(zhàn)演練

FlashLEDDesign實訓(xùn)內(nèi)容4:要求實現(xiàn)PA口的8個燈以200ms延時時間從左至右逐個點亮,反復(fù)此過程。實訓(xùn)內(nèi)容5:要求實現(xiàn)PA口的8個燈以200ms延時時間從左至右逐個點亮,再從右至左逐個點亮,反復(fù)此過程。實訓(xùn)內(nèi)容6:自由發(fā)揮LED控制的實戰(zhàn)演練

FlashLEDDesign實訓(xùn)內(nèi)簡單跑馬燈的設(shè)計簡單跑馬燈的設(shè)計AVR單片機的C語言編程

EmbeddedCProgramming

1.C語言體系結(jié)構(gòu)2.變量和常量3.AVR單片機I/O端口特性AVR單片機的C語言編程

EmbeddedCProgra簡單跑馬燈的設(shè)計

FlashLEDDesign設(shè)計內(nèi)容:共有8個LED需要每隔500MS同時點亮或熄滅,LED接在PORTA口,輸出高電平燈亮,輸出低電平時燈滅。要求1:自行編程。要求2:采用自動引導(dǎo)程序進行配置生成軟件初始化代碼框架,然后填入自己的程序代碼。通過CodeVision編譯,注意時鐘頻率。簡單跑馬燈的設(shè)計

FlashLEDDesign設(shè)計內(nèi)容:分組輪流閃爍的跑馬燈實訓(xùn)1:要求按照如下所示的方式1點亮,間隔500ms后,再換成方式2點亮,依此類推,周而復(fù)始。方式1:方式2:要求:采用自動引導(dǎo)程序進行配置生成軟件初始化代碼框架,然后填入自己的程序代碼。要求設(shè)置時鐘頻率為2M。下載程序時要求采用內(nèi)部RC振蕩器的熔絲配置。分組輪流閃爍的跑馬燈實訓(xùn)1:要求按照如下所示的方式1點亮,間AVR的IO端口特性

Input&OutputPort設(shè)置數(shù)據(jù)方向部分電路數(shù)據(jù)并行輸出部分電路數(shù)據(jù)并行輸入部分電路AVR的IO端口特性

Input&OutputPor8位的并行輸入、輸出接口。并行輸入:通過一條輸入指令可以一次讀出8個引腳的狀態(tài),組成一個字節(jié)的數(shù)據(jù)。一般用來采集外部數(shù)據(jù)。并行輸出:通過一條輸出指令可以將一個字節(jié)的數(shù)據(jù)送到8個引腳上。一般用來輸出控制信息。AVR的I/O口是真正的I/O口,能正確反映I/O口的真實情況。I/O口有輸入/輸出,三態(tài)高阻輸入,也可設(shè)定內(nèi)部拉高電阻作輸入端的功能,便于作各種應(yīng)用特性所需(多功能I/O口)。但是使用時,必須進行方向設(shè)置,是作為輸入,還是作為輸出接口使用。I/O接口及其應(yīng)用8位的并行輸入、輸出接口。I/O接口及其應(yīng)用AVR的IO端口特性

Input&OutputPort每個端口為具有可選上拉電阻的雙向I/O端口。每個并行端口有三個相關(guān)的I/O寄存器:數(shù)據(jù)方向寄存器DDRx數(shù)據(jù)寄存器PORTx端口輸入引腳寄存器PINx(其中x對應(yīng)A、B、C、D四個端口)當端口的某位DDRxn=1時,則此位定義為輸出模式。且輸出值等于PORTxn。

(其中n代表位的序號)當端口的某位DDRxn=0時,則此位定義為輸入模式。

不論如何配置DDRxn,都可以通過讀取PINxn寄存器來獲得引腳電平。為可讀/寫的寄存器為只讀寄存器AVR的IO端口特性

Input&OutputPorAVR的IO端口特性

Input&OutputPort

所有AVRI/O端口都具有真正的讀-修改-寫的功能:可以通過軟件任意設(shè)置任何一位的輸入、輸出模式。并且輸出緩沖器具有對稱的驅(qū)動能力,可以輸出或吸收大電流,直接驅(qū)動LED。所有的端口引腳都具有與電壓無關(guān)的上拉電阻。并有保護二極管與VCC和地相連。

如果有引腳未被使用,建議這些引腳賦予一個確定電平,使能內(nèi)部上拉電阻。AVR的IO端口特性

Input&OutputPor

復(fù)位后即缺省配置方向: 輸入PIN為物理引腳上拉: 關(guān)閉此時引腳的狀態(tài)不確定復(fù)位后即缺省配置上拉轉(zhuǎn)換DDxPORTxPINx物理引腳上拉方向: 輸入PIN可輸出電流上拉: ON此時引腳的狀態(tài)可正確讀入??0111上拉轉(zhuǎn)換DDxPORTxPINx物理引腳上拉方向: 輸入口線輸出DDxPORTxPINx物理引腳上拉方向: 輸出PIN反映輸出真實情況上拉: OFF11111111口線輸出DDxPORTxPINx物理引腳上拉方向: 輸出AVR單片機I/O口是真正的I/口AVR單片機I/O口是真正的I/口仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfig

JTAGICE可以對支持的器件的FLASH、EEPROM、熔絲位和加密位編程,可以執(zhí)行芯片擦除、編程、校驗、加密的操作AVRStudio中點擊命令:TOOLS->ProgramAVR/CONNECT或TOOLS->ProgramAVR/AUTOCONNECT

注意:如果正在調(diào)試,那么也必須點擊DEBUG->StopDebugging來退出仿真調(diào)試程序?qū)TAGICE的占用。

仿真器編程下載與熔絲配置的使用

ProgramDownlo仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfigProgram選項卡注意,只有帶JTAG口功能的AVR才支持JTAGICE編程

FLASH緩沖區(qū)和EEPROM緩沖區(qū)可以支持的文件格式:Atmel.rom和.eepIntelHEX二進制.bin仿真器編程下載與熔絲配置的使用

ProgramDownlo仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfigFuse選項卡:功能熔絲位的配置:BOOT區(qū)熔絲位的配置:支持引導(dǎo)加載程序的芯片有更多的安全位,可以鎖定存儲器中的引導(dǎo)加載區(qū)。FLASH鎖定位:選擇芯片編程使用的安全級別。注意,請保證“JTAGInterfaceEnable”一項始終有效,否則目標芯片就將失去與JTAGICE的通信能力,只有通過并行編程的辦法才能重新激活該熔絲位4.Lock&Bits選項卡——加密鎖定位的設(shè)置注意,如果想要將加密位刪除,那么只能對芯片做擦除操作。仿真器編程下載與熔絲配置的使用

ProgramDownlo仿真器編程下載與熔絲配置的使用

ProgramDownload&FuseConfig仿真器編程下載與熔絲配置的使用

ProgramDownlo實戰(zhàn)演練實訓(xùn)2:如圖所示電路,要求按照如下所示的方式1點亮,間隔0.2s后,再換成方式2點亮,依此類推,周而復(fù)始。方式1:方式2:設(shè)計要求:采用自動引導(dǎo)程序進行配置生成軟件初始化代碼框架,然后填入自己的程序代碼。通過CodeVision編譯,要求下載程序時要求采用外部時鐘的熔絲配置。(led2.c)實戰(zhàn)演練實訓(xùn)2:如圖所示電路,要求按照如下所示的方式1點亮,應(yīng)用延時函數(shù)的詳細介紹

DelayFunction使用延時函數(shù)前要用#include<delay.h>預(yù)處理命令。下面延時函數(shù)使用程序循環(huán)產(chǎn)生延時,調(diào)用它們之前要關(guān)閉中斷,否則會比預(yù)期的延時要長。要在CodeVisionAVR軟件的Project→Configure→CCompiler菜單中設(shè)定準確的時鐘頻率。并同程序下載時設(shè)置的熔絲位一致。本目標板的時鐘只能設(shè)置成內(nèi)部RC和外部晶振兩種模式。主要的延時函數(shù):voiddelay_us(unsignedintn)實現(xiàn)n個微秒的延時,其中n必須是常數(shù)表達式。voiddelay_ms(unsignedintn)實現(xiàn)n個毫秒的延時,其中n必須是常數(shù)表達式。此函數(shù)會每毫秒清一次看門狗。應(yīng)用延時函數(shù)的詳細介紹

DelayFunction使用延時實戰(zhàn)演練實訓(xùn)3:如圖所示電路,要求按照如下所示的方式1點亮,每次點亮兩只燈,間隔0.2s后,再換成方式2點亮相鄰的兩只,依此類推,四次后,再回到第一次,周而復(fù)始循環(huán)50次。(要求分別用while,do-while,語句完成)方式1:方式2:方式3:方式4:實戰(zhàn)演練實訓(xùn)3:如圖所示電路,要求按照如下所示的方式1點亮,C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStructure/*****************************************************ThisprogramwasproducedbytheCodeWizardAVRV1.24.7eStandardChiptype:ATmega16Programtype:ApplicationClockfrequency:8.000000MHzMemorymodel:SmallExternalSRAMsize:0DataStacksize:256*****************************************************///LEDcontrollerprogram注釋部分:由“/**/”配對括起來的部分內(nèi)容,可以包括多行。注釋部分:由“//”引導(dǎo)的一行內(nèi)容。C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStrucC語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStructure#include<mega16.h>#include<delay.h>//Declareyourglobalvariablesherevoidmain(void){…….}voidfunction(void){…….}預(yù)編譯命令:文件包含指令函數(shù)頭函數(shù)體主函數(shù)main():C程序總是從main()函數(shù)開始執(zhí)行。而不論其在程序中的位置如何。當主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。定義了一些與I/0接口有關(guān)的特定變量,他們對應(yīng)單片機呢部的特殊功能寄存器,用大寫字母書寫。C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)

EmbeddedCStrucC語言結(jié)構(gòu)風格特點

EmbeddedCStructureCharacter1.習慣用小寫字母,大小寫敏感2.一行上可以寫幾條語句,一條語句也可以寫在幾行上??墒褂每招泻涂崭?.C程序由語句組成,用“;”作為語句終止符4.書寫上注意使用縮進格式。5.程序由一個或多個函數(shù)組成,必須有且只能有一個主函數(shù)main()6.程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。7.

允許使用注釋。C語言的注釋格式為:/*……*/技巧:為避免遺漏必須配對使用的符號,例如注釋符號/*……*/、函數(shù)體的起止標識符(花括號{})、圓括號()等等。voidmain(void){ //PortAinitialization …….DDRA=0xFF;PORTA=0xFF; …….while(1){//PlaceyourcodeherePORTA^=0xFF;delay_ms(500);};}C語言結(jié)構(gòu)風格特點

EmbeddedCStructur變量與變量名

VariableConceptandVariableIdentifier變量:程序運行過程中其值可以改變的量,系統(tǒng)為程序中的每一個變量開辟一個存儲單元。變量的兩個要素:變量名和變量值變量命名遵循標識符命名規(guī)則,在程序中,通過變量名來引用變量的值。標識符:用來標識變量名、符號常量名、數(shù)組名、函數(shù)名、文件名的有效字符序列。標識符定義的注意事項:字母(或下劃線)開頭,后跟字母、數(shù)字和下劃線組成。不能和系統(tǒng)使用的名字(關(guān)鍵字)沖突。長度無統(tǒng)一規(guī)定,許多系統(tǒng)取8個字符。但目前并不如此。編程技巧:使用見名知意的字符串命名變量標識符。變量與變量名

VariableConceptandVC語言的基本數(shù)據(jù)類型以及變量的定義

VariableDefine基本數(shù)據(jù)類型:整型、實型、字符型C程序中用到的每一個變量都要指定它們所屬的數(shù)據(jù)類型。

其原因在于:不同類型的數(shù)據(jù)在內(nèi)存中占據(jù)不同長度的存儲區(qū),而且采用不同的表示方式。一個數(shù)據(jù)類型對應(yīng)著一個值的范圍并且對應(yīng)一組允許的操作。所有的變量一定要“先定義、后使用”:Inta,b,c;/*指定a,b,c為整型變量*/floatx,y;/*指定x,y為單精度實型變量*/doublez;/*指定z為雙精度實型變量*/charc1,c2;/*指定c1,c2為字符型變量*/C語言的基本數(shù)據(jù)類型以及變量的定義

VariableDe變量的內(nèi)存存儲情況

VariableRange變量的內(nèi)存存儲情況

VariableRange常量

Constant常量:1.整型常量2.實型常量3.字符型常量4.字符串常量5.符號常量6.flash常量整型常量三種形式表示:十進制:如123600八進制:以0開始,如0123十六進制:以0x開始,如0x123實型常量小數(shù)形式:如123.0.1230.012.5指數(shù)形式:如123e2123E2

字符常量:單引號括起來的一個字符。如:'a'字符常量的值是一個數(shù)字值。如字符常量'0',其ASCII為48,所以存儲的實際值為48。字符常量可以象整數(shù)一樣參與運算。字符串常量:雙引號括起來的字符序列。如“Hi,AVR","0"等字符串在存儲時末尾被自動加上字符'\0'字符常量與只包含一個字符的字符串常量的區(qū)別符號常量:用一個標識符代表一個常量#definePI3.14159符號常量轉(zhuǎn)義字符:轉(zhuǎn)義字符功能ASCII記號轉(zhuǎn)義字符

能ASCII記號\a 響鈴BEL \\ 反斜杠字? \

\b 退格BS \‘ 單引號字符 ’

\f走紙換頁FF \“ 雙引號字符 "

\n 換行 NL \? 問號 ? \r 回車 CR \ooo 1~3位8進制數(shù) ooo

\t橫向跳格HT \xhh 1~2位16進制數(shù) hh

\v縱向跳格VTFLASH常量:存儲在程序存儲區(qū)的常量Flashchar[]=”hi,avr”;常量

Constant常量:整型常量三種形式表示:實型常量算術(shù)運算符

ArithmeticOperationC語言提供了如下算術(shù)運算符: +(加法運算)-(減法運算)*(乘法運算符)/(除法運算符)%(求余運算符,或稱模運算符)如:4%2=0說明:兩個整數(shù)相除結(jié)果為整數(shù),如8/5的結(jié)果為1,舍去小數(shù)部分。如果參加運算的兩個數(shù)中有一個數(shù)為實數(shù),則結(jié)果是實型。求余運算要求%兩側(cè)都是整型數(shù)據(jù)。算術(shù)運算符

ArithmeticOperationC語言賦值運算符和賦值表達式

EvaluationOperation&EvaluationExpress簡單的賦值運算符:復(fù)合的賦值運算符=+=、-=、*=、%=、/=i+=2等價于i=i+2a*=b+5等價于a=a*(b+5)x%=3等價于x=x%3

voidmain(void) { //PortAinitialization …….

DDRA=0xFF;PORTA=0xFF; ……. while(1)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論