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

下載本文檔

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

文檔簡介

1、簡單跑馬燈的設(shè)計AVR單片機(jī)的C言語編程Embedded C Programming 1. C言語體系構(gòu)造2. 變量和常量3. AVR單片機(jī)I/O端口特性簡單跑馬燈的設(shè)計Flash LED Design設(shè)計內(nèi)容:共有8個LED需求每隔500MS同時點(diǎn)亮或熄滅,LED接在PORTA口,輸出高電平燈亮 ,輸出低電平常燈滅。要求1:自行編程。要求2:采用自動引導(dǎo)程序進(jìn)展配置生成軟件初始化代碼框架,然后填入本人的程序代碼。經(jīng)過CodeVision編譯,留意時鐘頻率。分組輪番閃爍的跑馬燈實(shí)訓(xùn)1:要求按照如下所示的方式1點(diǎn)亮,間隔500ms后,再換成方式2點(diǎn)亮,依此類推,周而復(fù)始。 方式1: 方式2:要求

2、:采用自動引導(dǎo)程序進(jìn)展配置生成軟件初始化代碼框架,然后填入本人的程序代碼。要求設(shè)置時鐘頻率為2M。下載程序時要求采用內(nèi)部RC振蕩器的熔絲配置。AVR的IO端口特性 Input & Output Port設(shè)置數(shù)據(jù)方向部分電路數(shù)據(jù)并行輸出部分電路數(shù)據(jù)并行輸入部分電路 8位的并行輸入、輸出接口。并行輸入:經(jīng)過一條輸入指令可以一次讀出8個引腳的形狀,組成一個字節(jié)的數(shù)據(jù)。普通用來采集外部數(shù)據(jù)。并行輸出:經(jīng)過一條輸出指令可以將一個字節(jié)的數(shù)據(jù)送到8個引腳上。普通用來輸出控制信息。 AVR的I/O口是真正的I/O口,能正確反映I/O口的真實(shí)情況。I/O口有輸入/輸出, 三態(tài)高阻輸入,也可設(shè)定內(nèi)部拉高電阻作輸入

3、端的功能,便于作各種運(yùn)用特性所需(多功能I/O口)。但是運(yùn)用時,必需進(jìn)展方向設(shè)置,是作為輸入,還是作為輸出接口運(yùn)用。I/O接口及其運(yùn)用AVR的IO端口特性 Input & Output Port每個端口為具有可選上拉電阻的雙向I/O端口。每個并行端口有三個相關(guān)的I/O存放器:數(shù)據(jù)方向存放器DDRx數(shù)據(jù)存放器PORTx端口輸入引腳存放器PINx其中x對應(yīng)A、B、C、D四個端口 當(dāng)端口的某位DDRxn=1 時,那么此位定義為輸出方式。且輸出值等于PORTxn。其中n代表位的序號當(dāng)端口的某位DDRxn=0 時,那么此位定義為輸入方式。 不論如何配置DDRxn,都可以經(jīng)過讀取PINxn存放器來獲得引腳

4、電平。為可讀/寫的存放器為只讀存放器AVR的IO端口特性 Input & Output Port 一切AVR I/O端口都具有真正的讀修正寫的功能:可以經(jīng)過軟件恣意設(shè)置任何一位的輸入、輸出方式。并且輸出緩沖器具有對稱的驅(qū)動才干,可以輸出或吸收大電流,直接驅(qū)動LED。 一切的端口引腳都具有與電壓無關(guān)的上拉電阻。并有維護(hù)二極管與VCC 和地相連。 假設(shè)有引腳未被運(yùn)用,建議這些引腳賦予一個確定電平,使能內(nèi)部上拉電阻。 復(fù)位后即缺省配置方向:輸入 PIN為物理引腳上拉:封鎖 此時引腳的形狀不確定上拉轉(zhuǎn)換DDxPORTxPINx物理引腳上拉方向:輸入 PIN可輸出電流上拉:ON 此時引腳的形狀可正確讀入

5、?0111口線輸出DDxPORTxPINx物理引腳上拉方向:輸出 PIN反映輸出真實(shí)情況上拉:OFF11111111AVR單片機(jī)I/O口是真正的I/口仿真器編程下載與熔絲配置的運(yùn)用Program Download& Fuse Config JTAGICE 可以對支持的器件的FLASH、EEPROM、熔絲位和加密位編程,可以執(zhí)行芯片擦除、編程、校驗(yàn)、加密的操作 AVRStudio中點(diǎn)擊命令: TOOLS-Program AVR/CONNECT 或TOOLS-Program AVR/AUTO CONNECT 留意:假設(shè)正在調(diào)試,那么也必需點(diǎn)擊DEBUG-Stop Debugging 來退出仿真調(diào)試

6、程序?qū)TAGICE 的占用。 仿真器編程下載與熔絲配置的運(yùn)用Program Download& Fuse Config Program 選項卡留意,只需帶JTAG口功能的AVR才支持JTAGICE 編程 FLASH緩沖區(qū)和EEPROM緩沖區(qū)可以支持的文件格式:Atmel .rom和.eepIntel HEX二進(jìn)制.bin仿真器編程下載與熔絲配置的運(yùn)用Program Download& Fuse Config Fuse 選項卡:功能熔絲位的配置:BOOT區(qū)熔絲位的配置:支持引導(dǎo)加載程序的芯片有更多的平安位,可以鎖定存儲器中的引導(dǎo)加載區(qū)。FLASH鎖定位:選擇芯片編程運(yùn)用的平安級別。留意,請保證

7、“JTAG Interface Enable一項一直有效,否那么目的芯片就將失去與JTAGICE 的通訊才干,只需經(jīng)過并行編程的方法才干重新激活該熔絲位 4. Lock&Bits 選項卡加密鎖定位的設(shè)置留意,假設(shè)想要將加密位刪除,那么只能對芯片做擦除操作。仿真器編程下載與熔絲配置的運(yùn)用Program Download& Fuse Config 實(shí)戰(zhàn)演練實(shí)訓(xùn)2:如下圖電路,要求按照如下所示的方式1點(diǎn)亮,間隔0.2s后,再換成方式2點(diǎn)亮,依此類推,周而復(fù)始。 方式1: 方式2:設(shè)計要求:采用自動引導(dǎo)程序進(jìn)展配置生成軟件初始化代碼框架,然后填入本人的程序代碼。經(jīng)過CodeVision編譯,要求下載程

8、序時要求采用外部時鐘的熔絲配置。 led2.c運(yùn)用延時函數(shù)的詳細(xì)引見Delay Function運(yùn)用延時函數(shù)前要用#include預(yù)處置命令。下面延時函數(shù)運(yùn)用程序循環(huán)產(chǎn)生延時,調(diào)用它們之前要封鎖中斷,否那么會比預(yù)期的延時要長。要在CodeVisionAVR軟件的ProjectConfigureC Compiler菜單中設(shè)定準(zhǔn)確的時鐘頻率。并同程序下載時設(shè)置的熔絲位一致。本目的板的時鐘只能設(shè)置成內(nèi)部RC和外部晶振兩種方式。主要的延時函數(shù):void delay_us(unsigned int n) 實(shí)現(xiàn)n個微秒的延時,其中n必需是常數(shù)表達(dá)式。void delay_ms(unsigned int n

9、) 實(shí)現(xiàn)n個毫秒的延時,其中n必需是常數(shù)表達(dá)式。此函數(shù)會每毫秒清一次看門狗。實(shí)戰(zhàn)演練實(shí)訓(xùn)3:如下圖電路,要求按照如下所示的方式1點(diǎn)亮,每次點(diǎn)亮兩只燈,間隔0.2s后,再換成方式2點(diǎn)亮相鄰的兩只,依此類推,四次后,再回到第一次,周而復(fù)始循環(huán)50次。要求分別用while,do-while, 語句完成 方式1: 方式2: 方式3: 方式4:C言語體系構(gòu)造是函數(shù)構(gòu)造 Embedded C Structure/*This program was produced by theCodeWizardAVR V1.24.7e StandardChip type : ATmega16Program type :

10、 ApplicationClock frequency : 8.000000 MHzMemory model : SmallExternal SRAM size : 0Data Stack size : 256*/ LED controller program注釋部分:由“/* */配對括起來的部分內(nèi)容,可以包括多行。注釋部分:由“/引導(dǎo)的一行內(nèi)容。C言語體系構(gòu)造是函數(shù)構(gòu)造 Embedded C Structure#include #include/ Declare your global variables herevoid main(void).void function(void).預(yù)編

11、譯命令:文件包含指令函數(shù)頭函數(shù)體主函數(shù)main( ):C程序總是從main( )函數(shù)開場執(zhí)行。而不論其在程序中的位置如何。當(dāng)主函數(shù)執(zhí)行終了時,亦即程序執(zhí)行終了。定義了一些與I/0接口有關(guān)的特定變量,他們對應(yīng)單片機(jī)呢部的特殊功能存放器,用大寫字母書寫。C言語構(gòu)造風(fēng)格特點(diǎn) Embedded C Structure Character1.習(xí)慣用小寫字母,大小寫敏感2.一行上可以寫幾條語句,一條語句也可以寫在幾行上。可運(yùn)用空行和空格3.C程序由語句組成,用“;作為語句終止符4. 書寫上留意運(yùn)用縮進(jìn)格式。5.程序由一個或多個函數(shù)組成,必需有且只能有一個主函數(shù)main()6.程序執(zhí)行從main開場,在ma

12、in中終了,其它函數(shù)經(jīng)過嵌套調(diào)用得以執(zhí)行。7. 允許運(yùn)用注釋。 C言語的注釋格式為: /* */技巧:為防止脫漏必需配對運(yùn)用的符號,例如注釋符號/* */ 、函數(shù)體的起止標(biāo)識符花括號 、圓括號等等。void main(void)/ Port A initialization. DDRA=0 xFF; PORTA=0 xFF; . while (1) / Place your code here PORTA=0 xFF; delay_ms(500); ;變量與變量名 Variable Concept and Variable Identifier變量:程序運(yùn)轉(zhuǎn)過程中其值可以改動的量,系統(tǒng)為程序中

13、的每一個變量開辟一個存儲單元。變量的兩個要素:變量名和變量值變量命名遵照標(biāo)識符命名規(guī)那么,在程序中,經(jīng)過變量名來援用變量的值。標(biāo)識符:用來標(biāo)識變量名、符號常量名、數(shù)組名、函數(shù)名、文件名的有效字符序列。標(biāo)識符定義的本卷須知:字母或下劃線開頭,后跟字母、數(shù)字和下劃線組成。不能和系統(tǒng)運(yùn)用的名字關(guān)鍵字沖突。長度無一致規(guī)定,許多系統(tǒng)取8個字符。但目前并不如此。編程技巧:運(yùn)用見名知意的字符串命名變量標(biāo)識符。C言語的根本數(shù)據(jù)類型以及變量的定義 Variable Define根本數(shù)據(jù)類型:整型、實(shí)型、字符型C程序中用到的每一個變量都要指定它們所屬的數(shù)據(jù)類型。 其緣由在于:不同類型的數(shù)據(jù)在內(nèi)存中占據(jù)不同長度的存

14、儲區(qū),而且采用不同的表示方式。一個數(shù)據(jù)類型對應(yīng)著一個值的范圍并且對應(yīng)一組允許的操作。一切的變量一定要“先定義、后運(yùn)用:Int a,b,c; /*指定a,b,c為整型變量*/float x,y; /*指定x,y為單精度實(shí)型變量*/double z; /*指定z為雙精度實(shí)型變量*/char c1,c2; /*指定c1,c2為字符型變量*/變量的內(nèi)存存儲情況 Variable Range常量 Constant常量:1.整型常量2.實(shí)型常量3.字符型常量4.字符串常量5.符號常量6.flash常量整型常量三種方式表示:十進(jìn)制:如 123 60 0八進(jìn)制:以0開場,如 0123十六進(jìn)制:以0 x開場,如

15、0 x123實(shí)型常量小數(shù)方式: 如 123.0 .123 0.0 12.5指數(shù)方式:如123e2 123E2字符常量:單引號括起來的一個字符。如: a 字符常量的值是一個數(shù)字值。如字符常量 0 ,其ASCII為48,所以存儲的實(shí)踐值為48。字符常量可以象整數(shù)一樣參與運(yùn)算。字符串常量:雙引號括起來的字符序列。 如“Hi,AVR,0等字符串在存儲時末尾被自動加上 字符0字符常量與只包含一個字符的字 符串常量的區(qū)別符號常量:用一個標(biāo)識符代表一個常量#define PI 3.14159符號常量本義字符:本義字符功能 ASCII記號 本義字符 功 能 ASCII記號 a 響鈴 BEL 反斜杠字? b 退

16、格 BS 單引號字符 f 走紙換頁 FF “雙引號字符 n 換行 NL ? 問號 ? r 回車 CR ooo13位8進(jìn)制數(shù) ooo t 橫向跳格 HT xhh12位16進(jìn)制數(shù) hh v 縱向跳格 VTFLASH常量:存儲在程序存儲區(qū)的常量Flash charhi,avr;算術(shù)運(yùn)算符 Arithmetic OperationC言語提供了如下算術(shù)運(yùn)算符:加法運(yùn)算 減法運(yùn)算 *乘法運(yùn)算符除法運(yùn)算符% 求余運(yùn)算符,或稱模運(yùn)算符如: 4 % 20闡明:兩個整數(shù)相除結(jié)果為整數(shù),如8/5的結(jié)果為1,舍去小數(shù)部分。假設(shè)參與運(yùn)算的兩個數(shù)中有一個數(shù)為實(shí)數(shù),那么結(jié)果是實(shí)型。求余運(yùn)算要求%兩側(cè)都是整型數(shù)據(jù)。賦值運(yùn)算符

17、和賦值表達(dá)式Evaluation Operation & Evaluation Express簡單的賦值運(yùn)算符:復(fù)合的賦值運(yùn)算符=+ =、-=、*=、%=、/= i + = 2 等價于 i = i + 2 a * = b + 5 等價于 a = a * (b + 5) x% = 3 等價于 x = x%3void main(void) / Port A initialization. DDRA=0 xFF; PORTA=0 xFF; . while (1) / Place your code here PORTA=0 xFF; delay_ms(100); PORTA=0 x00; delay

18、_ms(100); ; C程序的三種根本構(gòu)造 C程序采用構(gòu)造化的程序設(shè)計方法,程序由假設(shè)干個根本構(gòu)造組成。每一個根本構(gòu)造可以包含一個或假設(shè)干個語句。主要有三種構(gòu)造:順序構(gòu)造:程序按照語句順序進(jìn)展執(zhí)行。循環(huán)構(gòu)造:當(dāng)型循環(huán)構(gòu)造:“先判別,再操作直到型循環(huán)構(gòu)造:“先操作,再判別選擇分支構(gòu)造:while語句訓(xùn)練Cycle Structure Programmingwhile語句用來實(shí)現(xiàn)“當(dāng)型循環(huán),執(zhí)行過程:首先判別表達(dá)式, 當(dāng)表達(dá)式的值為真非0時,反復(fù)執(zhí)行循環(huán)體。為假0時執(zhí)行循環(huán)體外面的語句。循環(huán)體循環(huán)繼續(xù)的條件表達(dá)式下一條語句非0真0假循環(huán)體語句組while執(zhí)行過程格式:while循環(huán)繼續(xù)的條件表達(dá)式 語句組; 花括號不能丟掉!請問:下述程序?qū)崿F(xiàn)了什么功能?main( ) int i,sum=0; while(i=10) sum=sum+i; i+; do-while語句Cycle Structure Programmingdo-while語句用來實(shí)現(xiàn)“直到型循環(huán)執(zhí)行過程:先無條件執(zhí)行一次循環(huán)體,然后判別條件表達(dá)式,當(dāng)表達(dá)式的值為真非0時,前往執(zhí)行循環(huán)體直到條件表達(dá)式為假0為止。絕對不能少分號

溫馨提示

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

評論

0/150

提交評論