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

下載本文檔

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

文檔簡介

1、E&C College AVR Training 2005Slide 1簡單跑馬燈的設(shè)計(jì)簡單跑馬燈的設(shè)計(jì)E&C College AVR Training 2005Slide 2AVRAVR單片機(jī)的單片機(jī)的C C語言編程語言編程Embedded Embedded C Programming 1. C1. C語言體系結(jié)構(gòu)語言體系結(jié)構(gòu)2. 2. 變量和常量變量和常量3. AVR3. AVR單片機(jī)單片機(jī)I/OI/O端口特性端口特性E&C College AVR Training 2005Slide 3簡單跑馬燈的設(shè)計(jì)簡單跑馬燈的設(shè)計(jì)Flash LED Design設(shè)計(jì)內(nèi)容:設(shè)計(jì)內(nèi)容:共有共有8 8個(gè)個(gè)

2、LEDLED需要需要每隔每隔500MS500MS同時(shí)點(diǎn)亮或熄同時(shí)點(diǎn)亮或熄滅滅,LED,LED接在接在PORTAPORTA口,輸口,輸出高電平燈亮出高電平燈亮 ,輸出低,輸出低電平時(shí)燈滅。電平時(shí)燈滅。要求要求1:自行編程。自行編程。要求要求2:采用自動(dòng)引導(dǎo)程序采用自動(dòng)引導(dǎo)程序進(jìn)行配置生成軟件初始進(jìn)行配置生成軟件初始化代碼框架,然后填入化代碼框架,然后填入自己的程序代碼。通過自己的程序代碼。通過CodeVision編譯,注意編譯,注意時(shí)鐘頻率。時(shí)鐘頻率。E&C College AVR Training 2005Slide 4分組輪流閃爍的跑馬燈分組輪流閃爍的跑馬燈實(shí)訓(xùn)實(shí)訓(xùn)1:要求按照如下所示的:要

3、求按照如下所示的方式方式1點(diǎn)亮,間隔點(diǎn)亮,間隔500ms后后,再換成方式,再換成方式2點(diǎn)亮,依此點(diǎn)亮,依此類推,周而復(fù)始。類推,周而復(fù)始。 方式方式1: 方式方式2:要求:采用自動(dòng)引導(dǎo)程序進(jìn)要求:采用自動(dòng)引導(dǎo)程序進(jìn)行配置生成軟件初始化代行配置生成軟件初始化代碼框架,然后填入自己的碼框架,然后填入自己的程序代碼。程序代碼。要求設(shè)置時(shí)鐘要求設(shè)置時(shí)鐘頻率為頻率為2M2M。下載程序時(shí)要。下載程序時(shí)要求采用內(nèi)部求采用內(nèi)部RCRC振蕩器的熔振蕩器的熔絲配置。絲配置。E&C College AVR Training 2005Slide 5AVR的的IO端口特性端口特性 Input & Output Port

4、設(shè)置數(shù)據(jù)方向設(shè)置數(shù)據(jù)方向部分電路部分電路數(shù)據(jù)并行輸出數(shù)據(jù)并行輸出部分電路部分電路數(shù)據(jù)并行輸入數(shù)據(jù)并行輸入部分電路部分電路E&C College AVR Training 2005Slide 6 8 8位的并行輸入、輸出接口。位的并行輸入、輸出接口。并行輸入并行輸入:通過一條輸入指令可以一次讀出:通過一條輸入指令可以一次讀出8 8個(gè)引腳的狀態(tài)個(gè)引腳的狀態(tài),組成一個(gè)字節(jié)的數(shù)據(jù)。,組成一個(gè)字節(jié)的數(shù)據(jù)。一般用來采集外部數(shù)據(jù)。一般用來采集外部數(shù)據(jù)。并行輸出并行輸出:通過一條輸出指令可以將一個(gè)字節(jié)的數(shù)據(jù)送到:通過一條輸出指令可以將一個(gè)字節(jié)的數(shù)據(jù)送到8 8個(gè)引腳上。個(gè)引腳上。一般用來輸出控制信息。一般用來輸

5、出控制信息。 AVRAVR的的I/OI/O口是真正的口是真正的I/OI/O口口, ,能正確反映能正確反映I/OI/O口的真實(shí)情口的真實(shí)情況。況。I/OI/O口有輸入口有輸入/ /輸出輸出, , 三態(tài)高阻輸入三態(tài)高阻輸入, ,也可設(shè)定內(nèi)部拉高也可設(shè)定內(nèi)部拉高電阻作輸入端的功能,便于作各種應(yīng)用特性所需電阻作輸入端的功能,便于作各種應(yīng)用特性所需( (多功能多功能I/OI/O口口) )。但是使用時(shí),必須進(jìn)行方向設(shè)置,是作為輸入,還是但是使用時(shí),必須進(jìn)行方向設(shè)置,是作為輸入,還是作為輸出接口使用。作為輸出接口使用。I/OI/O接口及其應(yīng)用接口及其應(yīng)用E&C College AVR Training 20

6、05Slide 7AVR的的IO端口特性端口特性 Input & Output Port每個(gè)端口為每個(gè)端口為具有可選上拉電阻具有可選上拉電阻的的雙雙向向I/O端口端口。每個(gè)并行端口有三個(gè)相關(guān)每個(gè)并行端口有三個(gè)相關(guān)的的I/O寄存器:寄存器:1. 數(shù)據(jù)方向寄存器數(shù)據(jù)方向寄存器DDRx2. 數(shù)據(jù)寄存器數(shù)據(jù)寄存器PORTx3. 端端口輸入引腳寄存器口輸入引腳寄存器PINx4. (其中其中x對應(yīng)對應(yīng)A、B、C、D四個(gè)端口四個(gè)端口 ) 當(dāng)當(dāng)端口的某位端口的某位DDRxn=1 時(shí),則此位定義為輸出模式。時(shí),則此位定義為輸出模式。且輸出值等于且輸出值等于PORTxn。 (其中其中n代表位的序號(hào))代表位的序號(hào))

7、 當(dāng)端口的某位當(dāng)端口的某位DDRxn=0 時(shí),則此位定義為輸入模式。時(shí),則此位定義為輸入模式。 不論如何配置不論如何配置DDRxn,都可以通過讀取都可以通過讀取PINxn寄寄存器來獲得引腳電平。存器來獲得引腳電平。為可讀為可讀/寫的寄存器寫的寄存器為只讀寄存器為只讀寄存器E&C College AVR Training 2005Slide 8AVR的的IO端口特性端口特性 Input & Output Port 所有所有AVR I/O端口都具有真正的讀修改寫的功能端口都具有真正的讀修改寫的功能:可以通過軟件任意設(shè)置任何一位的輸入、輸出模式可以通過軟件任意設(shè)置任何一位的輸入、輸出模式。并且輸出緩

8、沖器具有并且輸出緩沖器具有對稱的驅(qū)動(dòng)能力對稱的驅(qū)動(dòng)能力,可以輸出或吸收可以輸出或吸收大電流,直接驅(qū)動(dòng)大電流,直接驅(qū)動(dòng)LED。 所有的端口引腳都具有與電壓無關(guān)的上拉電阻。并所有的端口引腳都具有與電壓無關(guān)的上拉電阻。并有保護(hù)二極管與有保護(hù)二極管與VCC 和地相連。和地相連。 如果有引腳未被使用,建議這些引腳賦予一個(gè)確定如果有引腳未被使用,建議這些引腳賦予一個(gè)確定電平,使能內(nèi)部上拉電阻。電平,使能內(nèi)部上拉電阻。E&C College AVR Training 2005Slide 9 復(fù)位后即缺省配置復(fù)位后即缺省配置方向方向: 輸入輸入 PIN為物理引腳為物理引腳上拉上拉: 關(guān)閉關(guān)閉 此時(shí)引腳的狀態(tài)不

9、確定此時(shí)引腳的狀態(tài)不確定E&C College AVR Training 2005Slide 10上上拉轉(zhuǎn)換拉轉(zhuǎn)換DDxPORTxPINx物理引腳物理引腳上拉上拉方向方向: 輸入輸入 PIN可輸出電流可輸出電流上拉上拉: ON 此時(shí)引腳的狀態(tài)可正確讀入此時(shí)引腳的狀態(tài)可正確讀入?01 1 1E&C College AVR Training 2005Slide 11口口線輸出線輸出DDxPORTxPINx物理引腳物理引腳上拉上拉方向方向: 輸出輸出 PIN反映輸出真實(shí)情況反映輸出真實(shí)情況上拉上拉: OFF1111 1111E&C College AVR Training 2005Slide 12A

10、VRAVR單片機(jī)單片機(jī)I/OI/O口是真正的口是真正的I/I/口口E&C College AVR Training 2005Slide 13仿真器編程下載與熔絲配置的使用仿真器編程下載與熔絲配置的使用Program Download& Fuse Config JTAGICE 可以對支持的器件的可以對支持的器件的FLASH、EEPROM、熔絲位和加密位編程,可以執(zhí)行芯片擦除熔絲位和加密位編程,可以執(zhí)行芯片擦除、編程、校驗(yàn)、加密的操作、編程、校驗(yàn)、加密的操作 AVRStudio中點(diǎn)擊命令:中點(diǎn)擊命令: TOOLS-Program AVR/CONNECT 或或TOOLS-Program AVR/AU

11、TO CONNECT 注意:如果正在調(diào)試,那么也必須點(diǎn)擊注意:如果正在調(diào)試,那么也必須點(diǎn)擊DEBUG-Stop Debugging 來退出仿真調(diào)試程序?qū)硗顺龇抡嬲{(diào)試程序?qū)TAGICE 的占用。的占用。 E&C College AVR Training 2005Slide 14仿真器編程下載與熔絲配置的使用仿真器編程下載與熔絲配置的使用Program Download& Fuse Config Program Program 選項(xiàng)卡選項(xiàng)卡注意,只有帶注意,只有帶JTAGJTAG口功能的口功能的AVRAVR才支持才支持JTAGICE JTAGICE 編程編程 FLASH緩沖區(qū)和緩沖區(qū)和EEPR

12、OM緩沖區(qū)可以支持的文件格式:緩沖區(qū)可以支持的文件格式:1. Atmel .rom和和.eep2. Intel HEX3. 二進(jìn)制二進(jìn)制.binE&C College AVR Training 2005Slide 15仿真器編程下載與熔絲配置的使用仿真器編程下載與熔絲配置的使用Program Download& Fuse Config Fuse Fuse 選項(xiàng)卡:選項(xiàng)卡:1.1. 功能熔絲位的配置:功能熔絲位的配置:2.2. BOOTBOOT區(qū)熔絲位的配置:支持引導(dǎo)加載程序的芯片有更區(qū)熔絲位的配置:支持引導(dǎo)加載程序的芯片有更多的安全位,可以鎖定存儲(chǔ)器中的引導(dǎo)加載區(qū)。多的安全位,可以鎖定存儲(chǔ)器中

13、的引導(dǎo)加載區(qū)。3.3. FLASHFLASH鎖定位:選擇芯片編程使用的安全級(jí)別。鎖定位:選擇芯片編程使用的安全級(jí)別。注意,請保證注意,請保證“JTAG Interface Enable”JTAG Interface Enable”一項(xiàng)始終有效一項(xiàng)始終有效,否則目標(biāo)芯片就將失去與否則目標(biāo)芯片就將失去與JTAGICE JTAGICE 的通信能力,只的通信能力,只有通過并行編程的辦法才能重新激活該熔絲位有通過并行編程的辦法才能重新激活該熔絲位 4. Lock&Bits 4. Lock&Bits 選項(xiàng)卡選項(xiàng)卡加密鎖定位的設(shè)置加密鎖定位的設(shè)置注意,如果想要將加密位刪除,那么只能對芯片做擦除注意,如果想要

14、將加密位刪除,那么只能對芯片做擦除操作。操作。E&C College AVR Training 2005Slide 16仿真器編程下載與熔絲配置的使用仿真器編程下載與熔絲配置的使用Program Download& Fuse Config E&C College AVR Training 2005Slide 17實(shí)戰(zhàn)演練實(shí)戰(zhàn)演練實(shí)訓(xùn)實(shí)訓(xùn)2:如圖所示電路,要求按照:如圖所示電路,要求按照如下所示的方式如下所示的方式1點(diǎn)亮,間隔點(diǎn)亮,間隔0.2s后,再換成方式后,再換成方式2點(diǎn)亮,依點(diǎn)亮,依此類推,周而復(fù)始。此類推,周而復(fù)始。 方式方式1: 方式方式2:設(shè)計(jì)要求:設(shè)計(jì)要求:采用自動(dòng)引導(dǎo)程序進(jìn)采用自

15、動(dòng)引導(dǎo)程序進(jìn)行配置生成軟件初始化代碼框行配置生成軟件初始化代碼框架,然后填入自己的程序代碼架,然后填入自己的程序代碼。通過。通過CodeVisionCodeVision編譯,要求編譯,要求下載程序時(shí)要求采用外部時(shí)鐘下載程序時(shí)要求采用外部時(shí)鐘的熔絲配置。的熔絲配置。 (led2.c)E&C College AVR Training 2005Slide 18應(yīng)用延時(shí)函數(shù)的詳細(xì)介紹應(yīng)用延時(shí)函數(shù)的詳細(xì)介紹Delay Function1.1. 使用延時(shí)函數(shù)前要用使用延時(shí)函數(shù)前要用#include#include預(yù)處理命令。預(yù)處理命令。2.2. 下面延時(shí)函數(shù)使用程序循環(huán)產(chǎn)生延時(shí),調(diào)用它們之前下面延時(shí)函數(shù)使

16、用程序循環(huán)產(chǎn)生延時(shí),調(diào)用它們之前要關(guān)閉中斷,否則會(huì)比預(yù)期的延時(shí)要長。要關(guān)閉中斷,否則會(huì)比預(yù)期的延時(shí)要長。3.3. 要在要在CodeVisionAVRCodeVisionAVR軟件的軟件的ProjectConfigureC ProjectConfigureC CompilerCompiler菜單中設(shè)定準(zhǔn)確的時(shí)鐘頻率。菜單中設(shè)定準(zhǔn)確的時(shí)鐘頻率。并同程序下載并同程序下載時(shí)設(shè)置的熔絲位一致。本目標(biāo)板的時(shí)鐘只能設(shè)置成內(nèi)時(shí)設(shè)置的熔絲位一致。本目標(biāo)板的時(shí)鐘只能設(shè)置成內(nèi)部部RCRC和外部晶振兩種模式。和外部晶振兩種模式。4.4. 主要的延時(shí)函數(shù):主要的延時(shí)函數(shù):1)1) void delay_us(unsig

17、ned void delay_us(unsigned intint n) n)2)2) 實(shí)現(xiàn)實(shí)現(xiàn)n n個(gè)微秒的延時(shí),其中個(gè)微秒的延時(shí),其中n n必須是常數(shù)表達(dá)式。必須是常數(shù)表達(dá)式。2)2) void delay_ms(unsigned void delay_ms(unsigned intint n) n) 實(shí)現(xiàn)實(shí)現(xiàn)n n個(gè)毫秒的延時(shí),其中個(gè)毫秒的延時(shí),其中n n必須是常數(shù)表達(dá)式。此函數(shù)必須是常數(shù)表達(dá)式。此函數(shù)會(huì)每毫秒清一次看門狗。會(huì)每毫秒清一次看門狗。E&C College AVR Training 2005Slide 19實(shí)戰(zhàn)演練實(shí)戰(zhàn)演練實(shí)訓(xùn)實(shí)訓(xùn)3:如圖所示電路,要求按照:如圖所示電路,要求

18、按照如下所示的方式如下所示的方式1點(diǎn)亮,每次點(diǎn)亮,每次點(diǎn)亮兩只燈,間隔點(diǎn)亮兩只燈,間隔0.2s后,再后,再換成方式換成方式2點(diǎn)亮相鄰的兩只,點(diǎn)亮相鄰的兩只,依此類推,四次后,再回到第依此類推,四次后,再回到第一次,周而復(fù)始循環(huán)一次,周而復(fù)始循環(huán)50次次。(。(要求分別用要求分別用while,do-while, 語語句完成)句完成) 方式方式1: 方式方式2: 方式方式3: 方式方式4:E&C College AVR Training 2005Slide 20C C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu) Embedded C Structure/*This program was prod

19、uced by theCodeWizardAVR V1.24.7e StandardChip type : ATmega16Program type : ApplicationClock frequency : 8.000000 MHzMemory model : SmallExternal SRAM size : 0Data Stack size : 256*/ LED controller program注釋部分:由注釋部分:由“/* */”配對配對括起來的部分括起來的部分內(nèi)容,可以包內(nèi)容,可以包括多行。括多行。注釋部分:由注釋部分:由“/”引導(dǎo)的一行引導(dǎo)的一行內(nèi)容。內(nèi)容。E&C Coll

20、ege AVR Training 2005Slide 21C C語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu)語言體系結(jié)構(gòu)是函數(shù)結(jié)構(gòu) Embedded C Structure#include #include/ Declare your global variables herevoid main(void).void function(void).預(yù)編譯命令:文預(yù)編譯命令:文件包含指令件包含指令函數(shù)頭函數(shù)頭函數(shù)體函數(shù)體主函數(shù)主函數(shù)main( ):C程序程序總是總是從從main( )函數(shù)開始執(zhí)行。而函數(shù)開始執(zhí)行。而不論其在程序中的位置如何不論其在程序中的位置如何。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程序執(zhí)

21、行完畢。即程序執(zhí)行完畢。定義了一些與定義了一些與I/0接口有關(guān)的接口有關(guān)的特定變量,他們對應(yīng)單片機(jī)呢特定變量,他們對應(yīng)單片機(jī)呢部的特殊功能寄存器,用大寫部的特殊功能寄存器,用大寫字母書寫。字母書寫。E&C College AVR Training 2005Slide 22C C語言結(jié)構(gòu)風(fēng)格特點(diǎn)語言結(jié)構(gòu)風(fēng)格特點(diǎn) Embedded C Structure Character1.習(xí)慣用小寫字母,習(xí)慣用小寫字母,大小寫敏感大小寫敏感2.一行上可以寫幾條語句,一條語句也可以一行上可以寫幾條語句,一條語句也可以寫在幾行上。寫在幾行上??墒褂每招泻涂崭窨墒褂每招泻涂崭?.C程序由語句組成,程序由語句組成,用

22、用“;”作為語句終止作為語句終止符符4. 書寫上注意使用縮進(jìn)格式。書寫上注意使用縮進(jìn)格式。5.程序由一個(gè)或多個(gè)函數(shù)組成程序由一個(gè)或多個(gè)函數(shù)組成,必須有且只能必須有且只能有一個(gè)主函數(shù)有一個(gè)主函數(shù)main()6.程序執(zhí)行程序執(zhí)行從從main開始,在開始,在main中結(jié)束中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。7. 允許使用注釋。允許使用注釋。 C C語言的注釋格式為:語言的注釋格式為: / /* * * */ /技巧技巧:為避免遺漏必須:為避免遺漏必須配對使用的符號(hào)配對使用的符號(hào),例,例如注釋符號(hào)如注釋符號(hào)/ /* * * */ / 、函數(shù)體的起止、函數(shù)體的起止標(biāo)識(shí)符(

23、花括號(hào)標(biāo)識(shí)符(花括號(hào) )、圓括號(hào)()等)、圓括號(hà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); ;E&C College AVR Training 2005Slide 23變量與變量名變量與變量名 Variable Concept and Variable Identifier變量:程序運(yùn)行過程中其值可以改變的量,變量:程序運(yùn)行過程中其值可以改變的量,系統(tǒng)為程序中系統(tǒng)為程序中

24、的每一個(gè)變量開辟一個(gè)存儲(chǔ)單元。的每一個(gè)變量開辟一個(gè)存儲(chǔ)單元。變量的兩個(gè)要素:變量的兩個(gè)要素:變量名和變量值變量名和變量值變量命名遵循變量命名遵循標(biāo)識(shí)符標(biāo)識(shí)符命名規(guī)則,命名規(guī)則,在程序中,通過變量名來在程序中,通過變量名來引用變量的值引用變量的值。標(biāo)識(shí)符:用來標(biāo)識(shí)變量名、符號(hào)常量名、數(shù)組名、函數(shù)名標(biāo)識(shí)符:用來標(biāo)識(shí)變量名、符號(hào)常量名、數(shù)組名、函數(shù)名、文件名的有效字符序列。、文件名的有效字符序列。標(biāo)識(shí)符定義的注意事項(xiàng):標(biāo)識(shí)符定義的注意事項(xiàng):1.1. 字母(或下劃線)開頭,后跟字母、數(shù)字和下劃線組成。字母(或下劃線)開頭,后跟字母、數(shù)字和下劃線組成。2.2. 不能和系統(tǒng)使用的名字(不能和系統(tǒng)使用的名字

25、(關(guān)鍵字關(guān)鍵字)沖突。)沖突。3.3. 長度無統(tǒng)一規(guī)定,許多系統(tǒng)取長度無統(tǒng)一規(guī)定,許多系統(tǒng)取8 8個(gè)字符。但目前并不如此。個(gè)字符。但目前并不如此。編程技巧:使用見名知意的字符串命名變量標(biāo)識(shí)符。編程技巧:使用見名知意的字符串命名變量標(biāo)識(shí)符。E&C College AVR Training 2005Slide 24C C語言的基本數(shù)據(jù)類型以及變量的定義語言的基本數(shù)據(jù)類型以及變量的定義 Variable Define 基本數(shù)據(jù)類型:整型、實(shí)型、字符型基本數(shù)據(jù)類型:整型、實(shí)型、字符型 C程序中用到的每一個(gè)變量都要指定它們所屬的數(shù)據(jù)類型。程序中用到的每一個(gè)變量都要指定它們所屬的數(shù)據(jù)類型。 其其原因原因在

26、于:不同類型的數(shù)據(jù)在內(nèi)存中占據(jù)在于:不同類型的數(shù)據(jù)在內(nèi)存中占據(jù)不同長度的存儲(chǔ)不同長度的存儲(chǔ)區(qū)區(qū),而且采用,而且采用不同的表示方式不同的表示方式。一個(gè)數(shù)據(jù)類型。一個(gè)數(shù)據(jù)類型對應(yīng)著一個(gè)值對應(yīng)著一個(gè)值的范圍的范圍并且并且對應(yīng)一組允許的操作對應(yīng)一組允許的操作。 所有的變量一定要所有的變量一定要“先定義、后使用先定義、后使用”:Int a,b,c; /*指定指定a,b,c為整型變量為整型變量*/float x,y; /*指定指定x,y為單精度實(shí)型變量為單精度實(shí)型變量*/double z; /*指定指定z為雙精度實(shí)型變量為雙精度實(shí)型變量*/char c1,c2; /*指定指定c1,c2為字符型變量為字符型

27、變量*/E&C College AVR Training 2005Slide 25變量的內(nèi)存存儲(chǔ)情況變量的內(nèi)存存儲(chǔ)情況 Variable RangeE&C College AVR Training 2005Slide 26常量常量 Constant常量:常量:1 1. .整型常量整型常量2.2.實(shí)型常量實(shí)型常量3.3.字符型常量字符型常量4.4.字符串常量字符串常量5.5.符號(hào)常量符號(hào)常量6.flash6.flash常量常量整型常量三種形式表示:整型常量三種形式表示:十進(jìn)制:如十進(jìn)制:如 123 60 0八進(jìn)制:以八進(jìn)制:以0開始,如開始,如 0123十六進(jìn)制:以十六進(jìn)制:以0 x開始,如開始

28、,如0 x123實(shí)型常量小數(shù)形式:實(shí)型常量小數(shù)形式: 如如 123.0 .123 0.0 12.5指數(shù)形式:指數(shù)形式:如如123e2 123E2字符常量字符常量: :單引號(hào)括起來的一個(gè)字符。如:單引號(hào)括起來的一個(gè)字符。如: a a 字符常量的值是一個(gè)數(shù)字值。如字符常字符常量的值是一個(gè)數(shù)字值。如字符常量量 0 0 ,其,其ASCIIASCII為為4848,所以存儲(chǔ)的,所以存儲(chǔ)的實(shí)際值為實(shí)際值為4848。字符常量可以象整數(shù)一樣參與運(yùn)算。字符常量可以象整數(shù)一樣參與運(yùn)算。字符串常量:字符串常量:雙引號(hào)括起來的字符序列。雙引號(hào)括起來的字符序列。 如如“Hi,AVR,0等等字符串在存儲(chǔ)時(shí)末尾被自動(dòng)加上字符

29、串在存儲(chǔ)時(shí)末尾被自動(dòng)加上 字符字符0字符常量與只包含一個(gè)字符的字字符常量與只包含一個(gè)字符的字 符串常量的區(qū)別符串常量的區(qū)別符號(hào)常量符號(hào)常量: :用一個(gè)標(biāo)識(shí)符代表一個(gè)常量用一個(gè)標(biāo)識(shí)符代表一個(gè)常量#define PI 3.14159#define PI 3.14159轉(zhuǎn)義字符:轉(zhuǎn)義字符:轉(zhuǎn)義字符功能轉(zhuǎn)義字符功能 ASCII記號(hào)記號(hào) 轉(zhuǎn)義字符轉(zhuǎn)義字符 功功 能能 ASCII記號(hào)記號(hào) a 響鈴響鈴 BEL 反斜杠字反斜杠字? ? b 退格退格 BS 單引號(hào)字符單引號(hào)字符 f 走紙換頁走紙換頁 FF “雙引號(hào)字符雙引號(hào)字符 n 換行換行 NL ? 問號(hào)問號(hào) ? r 回車回車 CR ooo13位位8進(jìn)制數(shù)

30、進(jìn)制數(shù) ooo t 橫向跳格橫向跳格 HT xhh12位位16進(jìn)制數(shù)進(jìn)制數(shù) hh v 縱向跳格縱向跳格 VTFLASH常量:常量:存儲(chǔ)在程序存儲(chǔ)區(qū)的常量存儲(chǔ)在程序存儲(chǔ)區(qū)的常量Flash char”hi,avr”;E&C College AVR Training 2005Slide 27算術(shù)運(yùn)算符算術(shù)運(yùn)算符 Arithmetic OperationC語言提供了如下算術(shù)運(yùn)算符:語言提供了如下算術(shù)運(yùn)算符:(加法運(yùn)算)(加法運(yùn)算) (減法運(yùn)算)(減法運(yùn)算) * *(乘法運(yùn)算符)(乘法運(yùn)算符)(除法運(yùn)算符)(除法運(yùn)算符)% % (求余運(yùn)算符,或稱模運(yùn)算符)(求余運(yùn)算符,或稱模運(yùn)算符)如:如: 4 % 2

31、4 % 20 0說明:說明: 兩個(gè)整數(shù)相除結(jié)果為整數(shù),如兩個(gè)整數(shù)相除結(jié)果為整數(shù),如8/5的結(jié)果為的結(jié)果為1,舍去小數(shù)部分。,舍去小數(shù)部分。 如果參加運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),則結(jié)果是實(shí)型。如果參加運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),則結(jié)果是實(shí)型。 求余運(yùn)算要求求余運(yùn)算要求%兩側(cè)都是整型數(shù)據(jù)。兩側(cè)都是整型數(shù)據(jù)。E&C College AVR Training 2005Slide 28賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式Evaluation Operation & Evaluation Express簡單的賦值運(yùn)算符:簡單的賦值運(yùn)算符:復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符=+ =、-=、*=、%

32、=、/= i + = 2 等價(jià)于 i = i + 2 a * = b + 5 等價(jià)于 a = a * (b + 5) x% = 3 等價(jià)于 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_ms(100); ; E&C College AVR Training 2005Slide 29C C程序的三種基本結(jié)構(gòu)程序的三種基本結(jié)構(gòu) C C程序

33、采用結(jié)構(gòu)化的程序設(shè)計(jì)方法,程序由若干個(gè)程序采用結(jié)構(gòu)化的程序設(shè)計(jì)方法,程序由若干個(gè)基本結(jié)構(gòu)組成。每一個(gè)基本結(jié)構(gòu)可以包含一個(gè)或若干基本結(jié)構(gòu)組成。每一個(gè)基本結(jié)構(gòu)可以包含一個(gè)或若干個(gè)語句。主要有三種結(jié)構(gòu):個(gè)語句。主要有三種結(jié)構(gòu):1.1. 順序結(jié)構(gòu)順序結(jié)構(gòu):程序按照語句順序進(jìn)行執(zhí)行。:程序按照語句順序進(jìn)行執(zhí)行。2.2. 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu):3.3. 當(dāng)型循環(huán)結(jié)構(gòu):當(dāng)型循環(huán)結(jié)構(gòu):“先判斷,再操作先判斷,再操作”4.4. 直到型循環(huán)結(jié)構(gòu):直到型循環(huán)結(jié)構(gòu):“先操作,再判斷先操作,再判斷”3.3. 選擇(分支)結(jié)構(gòu):選擇(分支)結(jié)構(gòu):E&C College AVR Training 2005Slide 30whi

34、lewhile語句訓(xùn)練語句訓(xùn)練Cycle Structure Programmingwhilewhile語句用來實(shí)現(xiàn)語句用來實(shí)現(xiàn)“當(dāng)型當(dāng)型”循環(huán),循環(huán),執(zhí)行過程:首先判斷表達(dá)式,執(zhí)行過程:首先判斷表達(dá)式, 當(dāng)表達(dá)式的值為真(非當(dāng)表達(dá)式的值為真(非0 0)時(shí),)時(shí),反復(fù)執(zhí)行循環(huán)體。為假(反復(fù)執(zhí)行循環(huán)體。為假(0 0)時(shí))時(shí)執(zhí)行循環(huán)體外面的語句。執(zhí)行循環(huán)體外面的語句。循環(huán)體循環(huán)體循環(huán)繼續(xù)的條循環(huán)繼續(xù)的條件表達(dá)式件表達(dá)式下一條語句下一條語句非非0(真)(真)0(假)假)循環(huán)體語句組循環(huán)體語句組while執(zhí)行過程執(zhí)行過程格式:格式:while(循環(huán)繼續(xù)的條件表達(dá)式)循環(huán)繼續(xù)的條件表達(dá)式) 語句組語句組

35、; 花括號(hào)不花括號(hào)不能丟掉!能丟掉!請問:下述程序?qū)崿F(xiàn)了什么功能?請問:下述程序?qū)崿F(xiàn)了什么功能?main( )main( ) intint i,sum=0; i,sum=0; while(i=10) while(i=10) sum=sum+i; sum=sum+i; i+; i+; E&C College AVR Training 2005Slide 31do-whiledo-while語句語句Cycle Structure Programmingdo-while語句用來實(shí)現(xiàn)語句用來實(shí)現(xiàn)“直到型直到型”循環(huán)循環(huán)執(zhí)行過程:先執(zhí)行過程:先無條件無條件執(zhí)行一次循環(huán)體,執(zhí)行一次循環(huán)體,然后判斷條件表達(dá)式,當(dāng)表達(dá)式的值然后判斷條件表達(dá)式,當(dāng)表達(dá)式的值為真(非為真(非0)時(shí),返回執(zhí)行循環(huán)體直)時(shí),返回執(zhí)行循環(huán)體直到條件表達(dá)式為假(到條件表達(dá)式為假(0)為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論