C語(yǔ)言教學(xué)專業(yè)知識(shí)講座市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第1頁(yè)
C語(yǔ)言教學(xué)專業(yè)知識(shí)講座市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第2頁(yè)
C語(yǔ)言教學(xué)專業(yè)知識(shí)講座市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第3頁(yè)
C語(yǔ)言教學(xué)專業(yè)知識(shí)講座市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第4頁(yè)
C語(yǔ)言教學(xué)專業(yè)知識(shí)講座市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.8.9 邱公室:S303 C語(yǔ)言程序設(shè)計(jì)單片機(jī)第1頁(yè)單片機(jī)基本功效單片機(jī)能直接做什么?C語(yǔ)言怎么實(shí)現(xiàn)?引腳功效1、最小化電路1電源電路:提供能量2晶振電路:推進(jìn) CPU工作3復(fù)位電路:規(guī)范CPU工作起點(diǎn)2、IO端口功效一、數(shù)據(jù)輸入和輸出功效1輸入狀態(tài)時(shí)電氣標(biāo)準(zhǔn):(1)輸入端高阻(1-10M歐)(2)邏輯數(shù)據(jù):3.5V-1; 0.4V-0(3)安全電壓:5.5V2輸出信號(hào)電氣標(biāo)準(zhǔn):(1)電平信號(hào)大小:1-3.55V (5V理想值), 0-00.4V(0V理想值)。(2)電流輸出能力:03mA(通常需要擴(kuò)展才能驅(qū)動(dòng)外設(shè));單個(gè)引腳可到達(dá)20mA 2電流越大,則電平信號(hào)越

2、偏離理想值第2頁(yè)怎樣編程?什么是編程? 人希望單片機(jī)實(shí)現(xiàn)某個(gè)功效,將功效分解成C語(yǔ)言能夠直接執(zhí)行任務(wù)單元,再按照一定次序組合,依次執(zhí)行,(流程設(shè)計(jì)) 用C語(yǔ)言,在KEILC編寫(xiě)環(huán)境下,把為了實(shí)現(xiàn)該功效,而需要單片機(jī)逐一完成一個(gè)個(gè)任務(wù)單元講述一遍,(編程) 然后KEIL C軟件檢驗(yàn)沒(méi)有語(yǔ)法錯(cuò)誤,翻譯成機(jī)器語(yǔ)言,(編譯) 按ROM存放范圍,排版成規(guī)范格式,(鏈接) 燒錄到ROM中,然后CPU逐一取出執(zhí)行,實(shí)現(xiàn)人功效意圖怎樣才能編程?1知道單片機(jī)能直接干什么?基本功效2知道C語(yǔ)言能直接讓單片機(jī)干什么,指令語(yǔ)句,語(yǔ)法3依據(jù)要實(shí)現(xiàn)總?cè)蝿?wù)功效,任務(wù)分解,細(xì)化到詳細(xì)指令,再按照一定次序和邏輯關(guān)系重新組合,形

3、成指令流程4用C語(yǔ)言描述指令流程。第3頁(yè)端口IO功效以4個(gè)并行口為單位,直接輸入或者輸出0 x00-0 xFF數(shù)據(jù)單片機(jī)從P0.0P0.7讀取數(shù)據(jù),或者向外界輸出信號(hào),都是經(jīng)過(guò)位于RAM編號(hào)為0 x80存放器進(jìn)行,該編號(hào)(地址)不好記憶,所以取名P0,取名指令,由sfr來(lái)下達(dá)。sfr P0 = 0 x80;sfr P1 = 0 x90;sfr P2 = 0 xA0;sfr P3 = 0 xB0;定義了名字以后,P0若等于0 x37,表示引腳信號(hào):P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 0 0 1 1 0 1 1 1P1-P3一樣。 單片機(jī)中每個(gè)專用存放器

4、都有專門(mén)地址,為了便于記憶,都進(jìn)行了命名,這個(gè)工作量挺大,C語(yǔ)言事先把這個(gè)工作已經(jīng)做好了,存放在文件“reg51.h”中,我們能夠直接引用,引用規(guī)則:#include reg51.h 這么一來(lái),包含reg51.h文件中全部?jī)?nèi)容到本程序中,無(wú)須重新編寫(xiě)其中內(nèi)容,而直接利用其中內(nèi)容。降低工作量,方便。該文件普通不可缺乏。第4頁(yè)宏定義假如P0口數(shù)據(jù)是來(lái)自AD轉(zhuǎn)換數(shù)據(jù),P1口是按鍵數(shù)據(jù),那怎樣愈加便于記憶端口詳細(xì)功效?比如:你在等快遞,這時(shí)快遞員張三來(lái)了,他人告訴你”張三來(lái)了“,與“快遞員來(lái)了”,更輕易讓你了解?能夠重新給P0口取個(gè)新名字:#define AD_data P0#define key_d

5、ata P1格式:#define new_name defined_nameC 語(yǔ)言在程序中,自動(dòng)將new_name等效看成defined_name。這就是宏定義第5頁(yè)并行口數(shù)據(jù)輸入輸出并行口輸出并行口名=源數(shù)據(jù);/;表示指令(語(yǔ)句)結(jié)束比如:P0=0 x5F;并行口輸入并行口作為源數(shù)據(jù)時(shí),并行口名只要出現(xiàn)一次,就讀取一次當(dāng)前端口數(shù)據(jù)比如:in_data=P0;第6頁(yè)單獨(dú)引腳IO對(duì)并行口某一個(gè)引腳單獨(dú)IO,其余不變1依據(jù)引腳功效,給該引腳取個(gè)名字,2讓單片機(jī)知道更名字對(duì)應(yīng)使用是哪個(gè)引腳比如P1.0是按鍵up,P1.1是按鍵down,P2.1是ledsbit up_key=P10;sbit do

6、wn_key=P10;sbit led=P21;單獨(dú)引腳輸出:引腳名=源數(shù)據(jù);/;表示指令(語(yǔ)句)結(jié)束比如:led=0; led=1;單獨(dú)引腳輸入單獨(dú)引腳作為源數(shù)據(jù)時(shí),該引腳名只要出現(xiàn)一次,就讀取一次當(dāng)前端口數(shù)據(jù)比如:if(up_key=0) led=0;第7頁(yè)變量數(shù)據(jù)存放變量:完成某個(gè)任務(wù)過(guò)程中,需要暫時(shí)保留數(shù)據(jù)。存放在RAM中,新數(shù)據(jù)替換原來(lái)數(shù)據(jù)。RAM是連續(xù)一段存放單元,變量數(shù)據(jù)存放在哪里,需要跟單片機(jī)說(shuō)清楚4個(gè)問(wèn)題: 1,存放數(shù)據(jù)要幾個(gè)字節(jié)? 數(shù)據(jù)類型 unsigned char ; int long float 2,數(shù)據(jù)存放在那個(gè)RAM區(qū)域? 默認(rèn)片內(nèi)RAM data(可省略0-7f

7、) 位尋址區(qū) bdata ;片外RAM xdata 3,在區(qū)域中那個(gè)位置? 地址編號(hào)不好記,給變量命名 變量名 4,初始值是多少?比如: int data in_data=0 x00;in_data=-;第8頁(yè)指令1 賦值語(yǔ)句功效 :類似于MOV格式: (接收數(shù)據(jù))變量名 = 數(shù)據(jù)源;數(shù)據(jù)源:能夠是一個(gè)常數(shù),能夠是別變量,能夠是一個(gè)變量、數(shù)據(jù)組合而成一個(gè)算術(shù)或者邏輯運(yùn)算表示式。使用條件:語(yǔ)句中全部包括變量和數(shù)據(jù)都必須是已經(jīng)定義或者已知。比如: in_data=0 x12; 第9頁(yè)3 、C程序基本結(jié)構(gòu)1包含文件:頭文件2宏定義,類型重定義3變量、常量初始化4主程序第10頁(yè)3、C程序基本結(jié)構(gòu) /*

8、 程序功效、編寫(xiě)日期等概述FILE NAME: loopled_key.cCHIP TYPE: AT89C51TIME: -8*/#include reg51.h“#include “stdio.h”#include “math.h”/頭文件調(diào)取,有些功效,在別任務(wù)中曾經(jīng)用到,為了防止重復(fù)編寫(xiě),把包含這些功效文件調(diào)取過(guò)來(lái),/可供此次任務(wù)直接使用#define out_port P2 / 比如定義P2口輸出控制信號(hào) /比如定義P0口0和1腳采集按鍵狀態(tài) sbit key_state=P00/ 定義新類型typedef unsigned char u_8;typedef unsigned int

9、u16;#/為完成任務(wù)各個(gè)角色定義數(shù)據(jù) u_8 loop_num=0;/定義循環(huán)次數(shù):0-7float code PI=3.14;/常數(shù) void delayms(uint);/ 定義輸出彩燈效果數(shù)據(jù)常數(shù) uchar led_out8 = 0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;void main(void) /演出正式開(kāi)始! 第11頁(yè)C語(yǔ)言運(yùn)算符及表示式一、運(yùn)算符及表示式1.C運(yùn)算符介紹算術(shù)運(yùn)算符:+ - * / % + -關(guān)系運(yùn)算符: = !=邏輯運(yùn)算符:! & |位運(yùn)算符 : | &賦值運(yùn)算符:= 及其擴(kuò)展條件運(yùn)算符:?:逗號(hào)運(yùn)算符

10、:,指針運(yùn)算符:* &求字節(jié)數(shù) :sizeof特殊運(yùn)算符:() . - 第12頁(yè) 2.運(yùn)算符分類單目運(yùn)算符前綴單目運(yùn)算符:-a,+a,-a后綴單目運(yùn)算符:a+,a-雙目運(yùn)算符: + - * / %三目運(yùn)算符號(hào): ? :第13頁(yè) 三、算術(shù)運(yùn)算符1.基本算術(shù)運(yùn)算符:+ - * / %(取?;蛉∮? 說(shuō)明: 1.兩整數(shù)相除,結(jié)果為整數(shù),舍去小數(shù)部分. 2. %要求兩側(cè)均為整型數(shù)據(jù).例 -5/2.0 = 2*3 = 5/2= +5=-2.5625例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2 1 -110()第14頁(yè)2.自增(+) 、自減(-)運(yùn)算方法: (2)在混合運(yùn)算中main

11、( ) int m=3,i,b; i=+m; b=m+; printf(“m=%d,i=%d”,m,i);前綴方式:在表示式計(jì)算前,先執(zhí)行m=m+1,再使用m 代替+m計(jì)算表示式值.后綴方式:在表示式計(jì)算前,先使用m代替m+計(jì)算出 表示式值.再執(zhí)行m=m+1.等價(jià)于m=m+1; i=m;運(yùn)行結(jié)果:m=5,i=4,b=4三、算術(shù)運(yùn)算符第15頁(yè) 說(shuō)明: (1)不能用于常量和表示式2.自增(+) 、自減(-)如 float f=6.5; f+; /* f=7.5 */如 5+ (a+b)+第16頁(yè)3.算術(shù)表示式與數(shù)學(xué)中概念一致 說(shuō)明: (1)表示式中不能使用 和 . (2)C語(yǔ)言沒(méi)有乘方運(yùn)算運(yùn)算符.

12、 如 x3如 數(shù)學(xué)表示式:(b-c)+(a-d)24 x*x*xC表示式: (b-c)+(a-d)*2)* 4第17頁(yè)C語(yǔ)言解讀4.算術(shù)運(yùn)算符優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí) 使用1,2,3,4.表示,數(shù)字越小,優(yōu)先級(jí)越高,運(yùn) 算時(shí)優(yōu)先級(jí)高運(yùn)算符先運(yùn)算.結(jié)合性 左結(jié)合性:+ - * / % 右結(jié)合性:+ -+ - 2 高* / % 3+ - 4 低 第18頁(yè)如 a+b/c先/后+先+后- a=b=44.算術(shù)運(yùn)算符優(yōu)先級(jí)和結(jié)合性表示式計(jì)算方法 先優(yōu)先級(jí),后結(jié)合性:優(yōu)先級(jí)高運(yùn)算符先運(yùn)算, 當(dāng)同一優(yōu)先級(jí)運(yùn)算符同時(shí)出現(xiàn)時(shí),按它們結(jié)合 性確定運(yùn)算次序. 先b=4 后a=ba*(b+c) 先+后*a-+i-i+等價(jià)于

13、a-(+i)等價(jià)于-(i+)a+b-c第19頁(yè)例:輸入一個(gè)球半徑值,計(jì)算并輸出球體積。(V=4/3r3 ) main( ) float r,v; printf(請(qǐng)輸入球半徑:); scanf(%f,&r); v=4.0/3*3.14*r*r*r; printf(球體積為:%fn,v);第20頁(yè)四、關(guān)系運(yùn)算符1.關(guān)系運(yùn)算符(比較運(yùn)算符)序號(hào)運(yùn)算符優(yōu)先級(jí)結(jié)合性16左結(jié)合性24=5=76!=2.運(yùn)算規(guī)則:條件滿足,則結(jié)果為真(1), 不然為假(0).例 2=3 值為 a(32)值為 532值為 5=4+1值為第21頁(yè)五、邏輯運(yùn)算符序號(hào)運(yùn)算符優(yōu)先級(jí)結(jié)合性1&11左結(jié)合性2|123!2右結(jié)合性1.邏輯運(yùn)

14、算符 2.運(yùn)算規(guī)則aba&ba|b!a00001010111001011110例 -5&2 值為 3&0 值為 3|0 值為 !8 值為 !8 值為 0|8&!5值為101010第22頁(yè) 邏輯運(yùn)算符、算術(shù)運(yùn)算符和關(guān)系運(yùn)算符之間優(yōu)先級(jí)比較 運(yùn)算符優(yōu)先級(jí)!高低算術(shù)運(yùn)算符關(guān)系運(yùn)算符& |五、邏輯運(yùn)算符第23頁(yè) 想一想: 數(shù)學(xué)表示式3x10所對(duì)應(yīng)C語(yǔ)言表示式應(yīng)怎樣表示? 數(shù)學(xué)表示式:3x10 C表示式: 3x&xb)?a:c值為_(kāi).第25頁(yè)賦值運(yùn)算符類別運(yùn)算符優(yōu)先級(jí)結(jié)合性簡(jiǎn)單賦值運(yùn)算符=14右結(jié)合性復(fù)合賦值運(yùn)算符+=、-=、*=、/=、&=、|=、等第26頁(yè)main( ) int a=3,b=-3,c

15、; c=a*2+b; a+=5; b*=c-1; printf(“%d,%d,%dn”,a,b,c);第27頁(yè)九、數(shù)據(jù)之間混合運(yùn)算.自動(dòng)轉(zhuǎn)換(隱式轉(zhuǎn)換) 轉(zhuǎn)換規(guī)則: (1)總則:不一樣類型數(shù)據(jù)混合運(yùn)算時(shí),先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算. (2)轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加方向進(jìn)行,以確保精度不降低. (3)全部浮點(diǎn)數(shù)都是以float型進(jìn)行運(yùn)算. (4)賦值運(yùn)算左邊量和右邊量類型不一致時(shí), 將右邊量類型自動(dòng)轉(zhuǎn)換為左邊量類型. 第28頁(yè) 數(shù)據(jù)類型間轉(zhuǎn)換doublefloatlongintchar,short低高運(yùn)算對(duì)象類型不一樣時(shí)由低向高轉(zhuǎn)換.例 int i=2; float f=1.0; long d=4

16、0; char l=2;例 int i; i=4.5/2; 左邊:int右邊:doubledoubleint10 +a + i *f d / l第29頁(yè)例 (double)(3/2) (double)3/22.強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)普通形式:(數(shù)據(jù)類型名)(操作對(duì)象)例 float x; int i; char ch; ch=(char)(97); x=(float)3; i=(int)3.6; i=(int)(x+4.5); 第30頁(yè)C程序解讀第31頁(yè)第32頁(yè)C 程序解讀uchar const led_out8 = 0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0

17、 x40,0 x80;本項(xiàng)目中,循環(huán)彩燈在特定循環(huán)次數(shù)時(shí)輸出數(shù)據(jù)是個(gè)固定量,是個(gè)常量,所以,預(yù)先設(shè)定好,放在連續(xù)ROM中,取個(gè)名字:led_out,預(yù)置初值.常量定義常量:在完成任務(wù)過(guò)程中,需要一個(gè)或者多個(gè)固定數(shù)據(jù)。存放在ROM中,預(yù)留一塊固定大小存放空間(依據(jù)數(shù)據(jù)大小范圍),而且取個(gè)名字,便于查找,也能夠預(yù)置數(shù)據(jù)常量定義結(jié)構(gòu):類型名 常量定義符合 變量名 =初值 ;類型名:依據(jù)數(shù)據(jù)大小范圍,預(yù)留一塊固定大小存放空間Char int long float 常量定義符合:const常量名:跟命名規(guī)則一樣。初值一定要寫(xiě)第33頁(yè)C 程序解讀void main(void) /演出正式開(kāi)始!out_po

18、rt=0 xff;/賦值語(yǔ)句,指令格式:接收數(shù)據(jù)變量= 給出數(shù)據(jù)(常量或者變量);delayms(1000);/子程序調(diào)用格式:子程序名(運(yùn)行子程序所需數(shù)據(jù));out_port=0;out_port=led_out0;If(key_state=0) 主程序是不可缺乏結(jié)構(gòu),程序功效執(zhí)行從它開(kāi)始第34頁(yè)C 程序解讀void delayms(uint);屢次使用任務(wù)模塊,稱為子程序,在正式使用之前,亮個(gè)相,在它以后程序都認(rèn)識(shí)它,也就能夠使用它了。結(jié)構(gòu): 返回結(jié)果數(shù)據(jù)類型 子程序名稱 (運(yùn)行子程序需要數(shù)據(jù)類型);本例中,延時(shí)(范圍在0-65535)個(gè)毫秒。delayms(1000); /延時(shí)1秒第35頁(yè)3、C程序基本結(jié)構(gòu) 一、運(yùn)算符 1算術(shù)運(yùn)算符+,-,*,/,%運(yùn)算規(guī)則:1與代數(shù)運(yùn)算規(guī)則相同,2括號(hào)優(yōu)先,3結(jié)果自動(dòng)類型轉(zhuǎn)換成多字節(jié)例:char x=8, z; int y=120; z=(char) (x+y)/4;2邏輯運(yùn)算符&,|,,運(yùn)算規(guī)則:相同位數(shù)兩個(gè)數(shù)據(jù)逐位進(jìn)行。3移位運(yùn)算符規(guī)則:左移 ,右移。移出丟失,空出補(bǔ)04關(guān)系運(yùn)算符 , ,= ,!= ,&,|規(guī)則:關(guān)系正確,結(jié)果是 1 ;關(guān)系不對(duì),結(jié)果是 0.第36頁(yè)3、C程序基本結(jié)構(gòu)二、表示式由變量,常數(shù),括號(hào),運(yùn)算符組成

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論