嵌入式系統(tǒng)原理與設(shè)計(jì) 課件 第六講 C+Proteus_第1頁(yè)
嵌入式系統(tǒng)原理與設(shè)計(jì) 課件 第六講 C+Proteus_第2頁(yè)
嵌入式系統(tǒng)原理與設(shè)計(jì) 課件 第六講 C+Proteus_第3頁(yè)
嵌入式系統(tǒng)原理與設(shè)計(jì) 課件 第六講 C+Proteus_第4頁(yè)
嵌入式系統(tǒng)原理與設(shè)計(jì) 課件 第六講 C+Proteus_第5頁(yè)
已閱讀5頁(yè),還剩115頁(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單片機(jī)與嵌入式系統(tǒng)第六講本次課主要內(nèi)容第二章單片機(jī)原理(四)2單片機(jī)的C語(yǔ)言基礎(chǔ)知識(shí)(二)單片機(jī)仿真環(huán)境Proteus基礎(chǔ)知識(shí)!單片機(jī)原理(四)1.本次課的目標(biāo)2.C51的輸入輸出3.C51程序基本結(jié)構(gòu)與相關(guān)語(yǔ)句4.單片機(jī)仿真環(huán)境Proteus5.Proteus仿真實(shí)例:跑馬燈例子6.小結(jié)31.本次課的目標(biāo)了解單片機(jī)C語(yǔ)言的輸入與輸出;熟悉C51程序基本結(jié)構(gòu);了解Proteus仿真工具;4單片機(jī)原理(四)1.本次課的目標(biāo)2.C51的輸入輸出3.C51程序基本結(jié)構(gòu)與相關(guān)語(yǔ)句4.單片機(jī)仿真環(huán)境Proteus5.Proteus仿真實(shí)例:跑馬燈例子6.小結(jié)5第五講內(nèi)容回顧:C51與ANSI

C的異同67C51語(yǔ)言標(biāo)準(zhǔn)C語(yǔ)言語(yǔ)言格式.C、.C51.C調(diào)試工具KeilC51TurboC特點(diǎn)需考慮單片機(jī)存儲(chǔ)器結(jié)構(gòu)及其片內(nèi)資源定義相應(yīng)的數(shù)據(jù)類(lèi)型和變量不需要考慮這些問(wèn)題庫(kù)函數(shù)按MCS-51單片機(jī)相應(yīng)情況定義

按微型計(jì)算機(jī)定義數(shù)據(jù)類(lèi)型增加了針對(duì)MCS-51單片機(jī)特有的數(shù)據(jù)類(lèi)型存儲(chǔ)模式變量的存儲(chǔ)模式與MCS-51單片機(jī)的存儲(chǔ)器緊密相關(guān)輸入/輸出處理

通過(guò)MCS-51單片機(jī)串行口完成,輸入輸出指令執(zhí)行前必須對(duì)串行口初始化通過(guò)輸入輸出指令完成函數(shù)使用

有專(zhuān)門(mén)的中斷函數(shù)相同語(yǔ)法規(guī)則、程序結(jié)構(gòu)和程序設(shè)計(jì)方法等兩者相同SMALL模式、COMPACT模式和LARGE模式8存儲(chǔ)器類(lèi)型指明變量所處的單片機(jī)的存儲(chǔ)器區(qū)域情況data直接尋址的片內(nèi)RAM低128B,訪問(wèn)速度快bdata片內(nèi)RAM的可位尋址區(qū)(20H~2FH),允許字節(jié)和位混合訪問(wèn)idata間接尋址訪問(wèn)的片內(nèi)RAM,允許訪問(wèn)全部片內(nèi)RAMpdata用Ri間接訪問(wèn)的片外RAM的低256Bxdata用DPTR間接訪問(wèn)的片外RAM,允許訪問(wèn)全部64k片外RAMcode程序存儲(chǔ)器ROM64k空間非常重要!

問(wèn)題:下列定義的bit型變量哪個(gè)正確?

bitdataa1; bitbdataa2; bitpdataa3; bitxdataa4;`9/*正確*//*正確*//*錯(cuò)誤*//*錯(cuò)誤*/2.C51的輸入輸出

在C51語(yǔ)言中,它本身不提供輸入和輸出語(yǔ)句,輸入和輸出操作是由函數(shù)來(lái)實(shí)現(xiàn)的。在C51的標(biāo)準(zhǔn)函數(shù)庫(kù)中提供了一個(gè)名為“stdio.h”的一般I/O函數(shù)庫(kù),它當(dāng)中定義了C51中的輸入和輸出函數(shù)。當(dāng)對(duì)輸入和輸出函數(shù)使用時(shí),須先用預(yù)處理命令“#include<stdio.h>”將該函數(shù)庫(kù)包含到文件中。10

在C51的一般I/O函數(shù)庫(kù)中定義的I/O函數(shù)都是通過(guò)串行接口實(shí)現(xiàn),在使用I/O函數(shù)之前,應(yīng)先對(duì)MCS-51單片機(jī)的串行接口進(jìn)行初始化。11初始化程序如下:

SCON=0x40;//串口工作在方式1 TMOD=0x20;//T1工作在模式2,自動(dòng)裝載初值

PCON=0x00;//波特率不倍增

TL1=0xFD; TH1=0xFD;//波特率9600 TI=1; //發(fā)送中斷標(biāo)志位 TR1=1; //啟動(dòng)定時(shí)器112單片機(jī)串口一講詳細(xì)討論。2.1格式輸出函數(shù)printf()2.2格式輸入函數(shù)scanf()132.1格式輸出函數(shù)printf()

printf()函數(shù)的的作用是通過(guò)串行接口輸出若干任意類(lèi)型的數(shù)據(jù),它的格式如下:

printf(格式控制,輸出參數(shù)表)

格式控制是用雙引號(hào)括起來(lái)的字符串,也稱(chēng)轉(zhuǎn)換控制字符串,它包括三種信息:格式說(shuō)明符、普通字符和轉(zhuǎn)義字符。14printf("xis:%d\n",x);(1)格式說(shuō)明符,由“%”和格式字符組成,它的作用是用于指明輸出的數(shù)據(jù)的格式輸出,如%d、%f等。(2)普通字符,這些字符按原樣輸出,用來(lái)輸出某些提示信息。(3)轉(zhuǎn)義字符,用來(lái)輸出特定的控制符,如輸出轉(zhuǎn)義字符\n就是使輸出換一行。

輸出參數(shù)表是需要輸出的一組數(shù)據(jù),可以是表達(dá)式。15printf("xis:%d\n",x);格式字符數(shù)據(jù)類(lèi)型輸出格式dint帶符號(hào)十進(jìn)制數(shù)uint無(wú)符號(hào)十進(jìn)制數(shù)oint無(wú)符號(hào)八進(jìn)制數(shù)xint無(wú)符號(hào)十六進(jìn)制數(shù),用“a~f”表示Xint無(wú)符號(hào)十六進(jìn)制數(shù),用“A~F”表示ffloat帶符號(hào)十進(jìn)制數(shù)浮點(diǎn)數(shù),形式為[-]dddd.dddde,Efloat帶符號(hào)十進(jìn)制數(shù)浮點(diǎn)數(shù),形式為[-]d.ddddE

ddg,Gfloat自動(dòng)選擇e或f格式中更緊湊的一種輸出格式cchar單個(gè)字符s指針指向一個(gè)帶結(jié)束符的字符串p指針帶存儲(chǔ)器批示符和偏移量的指針,形式為M:aaaa其中,M可分別為:C(code),D(data),I(idata),P(pdata)如M為a,則表示的是指針偏移量17轉(zhuǎn)義字符含義ASCII碼(十六進(jìn)制數(shù))\o空字符(null)00H\n換行符(LF)0AH\r回車(chē)符(CR)0DH\t水平制表符(HT)09H\b退格符(BS)08H\f換頁(yè)符(FF)0CH\‘單引號(hào)27H\”雙引號(hào)22H\\反斜杠5CH演示:Project1方式1:通過(guò)Keil

μVision仿真方式2:通過(guò)Proteus+串口助手仿真18方式三:通過(guò)Keil

μVision仿真+串口助手 modecom19600,0,8,1 assigncom1<Sin>Sout19預(yù)備知識(shí):虛擬串口軟件及其使用202.2格式輸入函數(shù)scanf()

scanf()函數(shù)的作用是通過(guò)串行接口實(shí)現(xiàn)數(shù)據(jù)輸入,它的使用方法與printf()類(lèi)似,scanf()的格式如下:

scanf(格式控制,地址列表)格式控制與printf()函數(shù)的情況類(lèi)似,也是用雙引號(hào)括起來(lái)的一些字符,可以包括以下三種信息:空白字符、普通字符和格式說(shuō)明。21(1)空白字符,包含空格、制表符、換行符等,這些字符在輸出時(shí)被忽略。(2)普通字符,除了以百分號(hào)“%”開(kāi)頭的格式說(shuō)明符而外的所有非空白字符,在輸入時(shí)要求原樣輸入。(3)格式說(shuō)明,由百分號(hào)“%”和格式說(shuō)明符組成,用于指明輸入數(shù)據(jù)的格式,它的基本情況與printf()相同。

22

scanf(格式控制,地址列表)地址列表是由若干個(gè)地址組成,它可以是指針變量、取地址運(yùn)算符“&”加變量(變量的地址)或字符串名(表示字符串的首地址)。23格式字符數(shù)據(jù)類(lèi)型輸出格式dint指針帶符號(hào)十進(jìn)制數(shù)uint指針無(wú)符號(hào)十進(jìn)制數(shù)oint指針無(wú)符號(hào)八進(jìn)制數(shù)xint指針無(wú)符號(hào)十六進(jìn)制數(shù)f,e,Efloat指針浮點(diǎn)數(shù)cchar指針字符sstring指針字符串C51中輸入函數(shù)scanf()的格式字符及功能【例】使用格式輸入輸出函數(shù)的例子:

printf("inputx:\n"); //輸出提示信息

scanf("%d",&x); //輸入x和y的值

printf("\nxis:%d\n",x);

printf("\ninputy:\n");

scanf("%d",&y); //輸入x和y的值

printf("\nyis:%d\n",y);

printf("\n"); //輸出換行

printf("%d+%d=%d",x,y,x+y);//按十進(jìn)制形式輸出

printf("\n"); //輸出換行

printf("%xH+%xH=%XH",x,y,x+y);//按十六進(jìn)制形式輸出26演示:Project6(Keil

μVision)1、KeilC的仿真結(jié)果27演示:Project6(

Keil

μVision+串口助手)1、使用虛擬串口,應(yīng)用串口軟件輸入 modecom19600,0,8,1 assigncom1<Sin>Sout2、使用Proteus仿真,應(yīng)用串口軟件輸入28演示:Project6(Proteus+串口助手)單片機(jī)原理(四)1.本次課的目標(biāo)2.C51的輸入輸出3.C51程序基本結(jié)構(gòu)與相關(guān)語(yǔ)句4.單片機(jī)仿真環(huán)境Proteus5.Proteus仿真實(shí)例:跑馬燈例子6.小結(jié)293.C51程序基本結(jié)構(gòu)與相關(guān)語(yǔ)句3.1C51的基本結(jié)構(gòu)3.2If語(yǔ)句3.3switch/case語(yǔ)句3.4while語(yǔ)句3.5dowhile語(yǔ)句3.6for語(yǔ)句3.7循環(huán)的嵌套3.8break和continue語(yǔ)句3.9return語(yǔ)句303.1C51的基本結(jié)構(gòu)一.順序結(jié)構(gòu)

順序結(jié)構(gòu)是最基本、最簡(jiǎn)單的結(jié)構(gòu),在這種結(jié)構(gòu)中,程序由低地址到高地址依次執(zhí)行,圖為順序結(jié)構(gòu)流程圖,程序先執(zhí)行A操作,然后再執(zhí)行B操作。31AB二.選擇結(jié)構(gòu)選擇結(jié)構(gòu)可使程序根據(jù)不同的情況,選擇執(zhí)行不同的分支,在選擇結(jié)構(gòu)中,程序先都對(duì)一個(gè)條件進(jìn)行判斷。當(dāng)條件成立,即條件語(yǔ)句為“真”時(shí),執(zhí)行一個(gè)分支,當(dāng)條件不成立時(shí),即條件語(yǔ)句為“假”時(shí),執(zhí)行另一個(gè)分支。32如圖,當(dāng)條件S成立時(shí),執(zhí)行分支A,當(dāng)條件P不成立時(shí),執(zhí)行分支B。

在C51中,實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句為if/else,if/elseif語(yǔ)句。另外在C51中還支持多分支結(jié)構(gòu),多分支結(jié)構(gòu)既可以通過(guò)if和elseif語(yǔ)句嵌套實(shí)現(xiàn),可用swith/case語(yǔ)句實(shí)現(xiàn)。33條件P語(yǔ)句A語(yǔ)句B成立不成立三.循環(huán)結(jié)構(gòu)

在程序處理過(guò)程中,有時(shí)需要某一段程序重復(fù)執(zhí)行多次,這時(shí)就需要循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn),循環(huán)結(jié)構(gòu)就是能夠使程序段重復(fù)執(zhí)行的結(jié)構(gòu)。循環(huán)結(jié)構(gòu)又分為兩種:當(dāng)(while)型循環(huán)結(jié)構(gòu)和直到(do...while)型循環(huán)結(jié)構(gòu)。34(1)當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)如圖,當(dāng)條件P成立(為“真”)時(shí),重復(fù)執(zhí)行語(yǔ)句A,當(dāng)條件不成立(為“假”)時(shí)才停止重復(fù),執(zhí)行后面的程序。35條件P語(yǔ)句A成立不成立(2)直到型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)如圖,先執(zhí)行語(yǔ)句A,再判斷條件P,當(dāng)條件成立(為“真”)時(shí),再重復(fù)執(zhí)行語(yǔ)句A,直到條件不成立(為“假”)時(shí)才停止重復(fù),執(zhí)行后面的程序。構(gòu)成循環(huán)結(jié)構(gòu)的語(yǔ)句主要有:while、dowhile、for、goto等。36條件P語(yǔ)句A成立不成立3.2If語(yǔ)句if語(yǔ)句是C51中的一個(gè)基本條件選擇語(yǔ)句,它通常有三種格式:(1)if(表達(dá)式){語(yǔ)句;}(2)if(表達(dá)式){語(yǔ)句1;}else{語(yǔ)句2;}(3)if(表達(dá)式1){語(yǔ)句1;} elseif(表達(dá)式2)(語(yǔ)句2;)

elseif(表達(dá)式3)(語(yǔ)句3;)

…… elseif(表達(dá)式n-1)(語(yǔ)句n-1;)

else{語(yǔ)句n}37【例】if語(yǔ)句的用法。(1)if(x!=y)printf(“x=%d,y=%d\n”,x,y);

執(zhí)行上面語(yǔ)句時(shí),如果x不等于y,則輸出x的值和y的值。(2)if(x>y)max=x;elsemax=y;

執(zhí)行上面語(yǔ)句時(shí),如x大于y成立,則把x送給最大值變量max,如x大于y不成立,則把y送給最大值變量max。使max變量得到x、y中的大數(shù)。38(3)if(score>=90)printf(“YourresultisanA\n”);elseif(score>=80)printf(“YourresultisanB\n”);elseif(score>=70)printf(“YourresultisanC\n”);elseif(score>=60)printf(“YourresultisanD\n”);elseprintf(“YourresultisanE\n”);

執(zhí)行上面語(yǔ)句后,能夠根據(jù)分?jǐn)?shù)score分別打出A、B、C、D、E五個(gè)等級(jí)。393.3switch/case語(yǔ)句if語(yǔ)句通過(guò)嵌套可以實(shí)現(xiàn)多分支結(jié)構(gòu),但結(jié)構(gòu)復(fù)雜。switch是C51中提供的專(zhuān)門(mén)處理多分支結(jié)構(gòu)的多分支選擇語(yǔ)句。格式如下:switch(表達(dá)式){case常量表達(dá)式1:{語(yǔ)句1;}break;case常量表達(dá)式2:{語(yǔ)句2;}break;……case常量表達(dá)式n:{語(yǔ)句n;}break;default:{語(yǔ)句n+1;}}40說(shuō)明如下:(1)switch后面括號(hào)內(nèi)的表達(dá)式,可以是整型或字符型表達(dá)式。(2)當(dāng)該表達(dá)式的值與某一“case”后面的常量表達(dá)式的值相等時(shí),就執(zhí)行該“case”后面的語(yǔ)句,然后遇到break語(yǔ)句退出switch語(yǔ)句。若表達(dá)式的值與所有case后的常量表達(dá)式的值都不相同,則執(zhí)行default后面的語(yǔ)句,然后退出switch結(jié)構(gòu)。(3)每一個(gè)case常量表達(dá)式的值必須不同否則會(huì)出現(xiàn)自相矛盾的現(xiàn)象。41(4)case語(yǔ)句和default語(yǔ)句的出現(xiàn)次序?qū)?zhí)行過(guò)程沒(méi)有影響。(5)每個(gè)case語(yǔ)句后面可以有“break”,也可以沒(méi)有。有break語(yǔ)句,執(zhí)行到break則退出switch結(jié)構(gòu),若沒(méi)有,則會(huì)順次執(zhí)行后面的語(yǔ)句,直到遇到break或結(jié)束。(6)每一個(gè)case語(yǔ)句后面可以帶一個(gè)語(yǔ)句,也可以帶多個(gè)語(yǔ)句,還可以不帶。語(yǔ)句可以用花括號(hào)括起,也可以不括。(7)多個(gè)case可以共用一組執(zhí)行語(yǔ)句。42【例】switch/case語(yǔ)句的用法。對(duì)學(xué)生成績(jī)劃分為A~D,對(duì)應(yīng)不同的百分制分?jǐn)?shù),要求根據(jù)不同的等級(jí)打印出它的對(duì)應(yīng)百分?jǐn)?shù)。可以通過(guò)下面的switch/case語(yǔ)句實(shí)現(xiàn)。

……switch(grade){case‘A’:printf(“90~100\n”);break;case‘B’:printf(“80~90\n”);break;case‘C’:printf(“70~80\n”);break;case‘D’:printf(“60~70\n”);break;case‘E’:printf(“<60\n”);break;default:printf(“error”\n)}433.4while語(yǔ)句while語(yǔ)句在C51中用于實(shí)現(xiàn)當(dāng)型循環(huán)結(jié)構(gòu),它的格式如下:

while(表達(dá)式)

{語(yǔ)句;}

/*循環(huán)體*/44while語(yǔ)句后面的表達(dá)式是能否循環(huán)的條件,后面的語(yǔ)句是循環(huán)體。當(dāng)表達(dá)式為非0(真)時(shí),就重復(fù)執(zhí)行循環(huán)體內(nèi)的語(yǔ)句;當(dāng)表達(dá)式為0(假),則中止while循環(huán),程序?qū)?zhí)行循環(huán)結(jié)構(gòu)之外的下一條語(yǔ)句。45while語(yǔ)句特點(diǎn)是:先判斷條件,后執(zhí)行循環(huán)體。在循環(huán)體中對(duì)條件進(jìn)行改變,然后再判斷條件,如條件成立,則再執(zhí)行循環(huán)體,如條件不成立,則退出循環(huán)。如條件第一次就不成立,則循環(huán)體一次也不執(zhí)行。46【例】通過(guò)while語(yǔ)句實(shí)現(xiàn)計(jì)算并輸出1~100的累加和。47#include<reg52.h> //包含特殊功能寄存器庫(kù)#include<stdio.h> //包含I/O函數(shù)庫(kù)voidmain(void) //主函數(shù){int

i,s=0; //定義整型變量i和si=1;SCON=0x40;//串口工作在方式1TMOD=0x20;//T1工作在模式2,自動(dòng)裝載初值PCON=0x00;//波特率不倍增TL1=0xFD;TH1=0xFD;//波特率9600TI=1; TR1=1; //啟動(dòng)定時(shí)器1while(i<=100) //累加1~100之和在s中{s=s+i;i++;}while(1){printf("1+2+3......+100=%d\n",s);};}48演示:Project23.5dowhile語(yǔ)句dowhile語(yǔ)句在C51中用于實(shí)現(xiàn)直到型循環(huán)結(jié)構(gòu),它的格式如下:

do{語(yǔ)句;}

/*循環(huán)體*/

while(表達(dá)式);49

dowhile語(yǔ)句的特點(diǎn):先執(zhí)行循環(huán)體中的語(yǔ)句,后判斷表達(dá)式。如表達(dá)式成立(真),則再執(zhí)行循環(huán)體,然后又判斷,直到有表達(dá)式不成立(假)時(shí),退出循環(huán),執(zhí)行dowhile結(jié)構(gòu)的下一條語(yǔ)句。dowhile語(yǔ)句在執(zhí)行時(shí),循環(huán)體內(nèi)的語(yǔ)句至少會(huì)被執(zhí)行一次。50【例】通過(guò)dowhile語(yǔ)句實(shí)現(xiàn)計(jì)算并輸出1~100的累加和。#include<reg52.h> //包含特殊功能寄存器庫(kù)#include<stdio.h> //包含I/O函數(shù)庫(kù)voidmain(void) //主函數(shù){

int

i,s=0; //定義整型變量i和s

i=1; SCON=0x40;//串口工作在方式1 TMOD=0x20;//T1工作在模式2,自動(dòng)裝載初值

PCON=0x00;//波特率不倍增

TL1=0xFD; TH1=0xFD;//波特率9600 TI=1; TR1=1; //啟動(dòng)定時(shí)器1 do{ s=s+i;

i++;} while(i<=100); while(1) {printf("1+2+3......+100=%d\n",s); };}51演示:Project33.6for語(yǔ)句

在C51語(yǔ)言中,for語(yǔ)句是使用最靈活、用得最多的循環(huán)控制語(yǔ)句,同時(shí)也最為復(fù)雜。它可以用于循環(huán)次數(shù)已經(jīng)確定的情況,也可以用于循環(huán)次數(shù)不確定的情況。它完全可以代替while語(yǔ)句,功能最強(qiáng)大。52for語(yǔ)句的格式如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語(yǔ)句;}

/*循環(huán)體*/53for語(yǔ)句后面帶三個(gè)表達(dá)式,它的執(zhí)行過(guò)程如下:(1)先求解表達(dá)式1的值。(2)求解表達(dá)式2的值,如表達(dá)式2的值為真,則執(zhí)行循環(huán)休中的語(yǔ)句,然后執(zhí)行下一步(3)的操作,如表達(dá)式2的值為假,則結(jié)束for循環(huán),轉(zhuǎn)到最后一步。(3)若表達(dá)式2的值為真,則執(zhí)行完循環(huán)體中的語(yǔ)句后,求解表達(dá)式3,然后轉(zhuǎn)到第四步。(4)轉(zhuǎn)到(2)繼續(xù)執(zhí)行。(5)退出for循環(huán),執(zhí)行下面的一條語(yǔ)句。

54for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語(yǔ)句;}

/*循環(huán)體*/在for循環(huán)中,一般表達(dá)式1為初值表達(dá)式,用于給循環(huán)變量賦初值;表達(dá)式2為條件表達(dá)式,對(duì)循環(huán)變量進(jìn)行判斷;表達(dá)式3為循環(huán)變量更新表達(dá)式,用于對(duì)循環(huán)變量的值進(jìn)行更新,使循環(huán)變量能不滿足條件而退出循環(huán)55for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語(yǔ)句;}

/*循環(huán)體*/#include<reg52.h> //包含特殊功能寄存器庫(kù)#include<stdio.h> //包含I/O函數(shù)庫(kù)voidmain(void) //主函數(shù){

int

i,s=0; //定義整型變量i和s

i=1; SCON=0x40;//串口工作在方式1 TMOD=0x20;//T1工作在模式2,自動(dòng)裝載初值

PCON=0x00;//波特率不倍增

TL1=0xFD; TH1=0xFD;//波特率9600 TI=1; TR1=1; //啟動(dòng)定時(shí)器1 for(i=1;i<=100;i++)s=s+i;//累加1~100之和在s中

while(1) {

printf("1+2+3......+100=%d\n",s); };}56演示:Project43.7循環(huán)的嵌套

在一個(gè)循環(huán)的循環(huán)體中允許又包含一個(gè)完整的循環(huán)結(jié)構(gòu),這種結(jié)構(gòu)稱(chēng)為循環(huán)的嵌套。外面的循環(huán)稱(chēng)為外循環(huán),里面的循環(huán)稱(chēng)為內(nèi)循環(huán),如果在內(nèi)循環(huán)的循環(huán)體內(nèi)又包含循環(huán)結(jié)構(gòu),就構(gòu)成了多重循環(huán)。在C51中,允許上述三種循環(huán)結(jié)構(gòu)相互嵌套。57【例】用嵌套結(jié)構(gòu)構(gòu)造一個(gè)延時(shí)程序voiddelay(unsignedintx){unsignedcharj;while(x--){for(j=0;j<125;j++);}}

這里,用內(nèi)循環(huán)構(gòu)造一個(gè)基準(zhǔn)的延時(shí),調(diào)用時(shí)通過(guò)參數(shù)設(shè)置外循環(huán)的次數(shù),這樣就可以形成各種延時(shí)關(guān)系。583.8break和continue語(yǔ)句break和continue語(yǔ)句通常用于循環(huán)結(jié)構(gòu)中,用來(lái)跳出循環(huán)結(jié)構(gòu)。但是二者又有所不同。1.break語(yǔ)句前面已介紹過(guò)用break語(yǔ)句可以跳出switch結(jié)構(gòu),使程序繼續(xù)執(zhí)行switch結(jié)構(gòu)后面的一個(gè)語(yǔ)句。使用break語(yǔ)句還可以從循環(huán)體中跳出循環(huán),提前結(jié)束循環(huán)而接著執(zhí)行循環(huán)結(jié)構(gòu)下面的語(yǔ)句。它不能用在除了循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其它語(yǔ)句中。59【例】下面一段程序用于計(jì)算圓的面積,當(dāng)計(jì)算到面積大于100時(shí),由break語(yǔ)句跳出循環(huán)。for(r=1;r<=10;r++){ area=pi*r*r; if(area>100)break;

printf(“%f\n”,area);}602.continue語(yǔ)句continue語(yǔ)句用在循環(huán)結(jié)構(gòu)中,用于結(jié)束本次循環(huán),跳過(guò)循環(huán)體中continue下面尚未執(zhí)行的語(yǔ)句,直接進(jìn)行下一次是否執(zhí)行循環(huán)的判定。

continue語(yǔ)句和break語(yǔ)句的區(qū)別在于:continue語(yǔ)句只是結(jié)束本次循環(huán)而不是終止整個(gè)循環(huán);break語(yǔ)句則是結(jié)束循環(huán),不再進(jìn)行條件判斷。61【例】輸出100~200間不能被3整除的數(shù)for(i=100;i<=200;i++){ if(i%3==0)continue;

printf(“%d”;i);}

在程序中,當(dāng)i能被3整除時(shí),執(zhí)行continue語(yǔ)句,結(jié)束本次循環(huán),跳過(guò)printf()函數(shù),只有能被3整除時(shí)才執(zhí)行printf()函數(shù)。623.9return語(yǔ)句return語(yǔ)句一般放在函數(shù)的最后位置,用于終止函數(shù)的執(zhí)行,并控制程序返回調(diào)用該函數(shù)時(shí)所處的位置。返回時(shí)還可以通過(guò)return語(yǔ)句帶回返回值。return語(yǔ)句格式有兩種:(1)return;(2)return(表達(dá)式);63如果return語(yǔ)句后面帶有表達(dá)式,則要計(jì)算表達(dá)式的值,并將表達(dá)式的值作為函數(shù)的返回值。若不帶表達(dá)式,則函數(shù)返回時(shí)將返回一個(gè)不確定的值。通常我們用return語(yǔ)句把調(diào)用函數(shù)取得的值返回給主調(diào)用函數(shù)。64單片機(jī)原理(四)1.本次課的目標(biāo)2.C51的輸入輸出3.C51程序基本結(jié)構(gòu)與相關(guān)語(yǔ)句4.單片機(jī)仿真環(huán)境Proteus5.Proteus仿真實(shí)例:跑馬燈例子6.小結(jié)654.單片機(jī)仿真環(huán)境Proteus4.1Proteus簡(jiǎn)介4.2Proteus主要特點(diǎn)4.3Proteus微處理器系統(tǒng)仿真流程4.4Proteus電路原理圖設(shè)計(jì)4.5Proteus電路繪圖工具的使用4.6常用ProteusISIS的庫(kù)元件認(rèn)識(shí)664.1Proteus簡(jiǎn)介ProteusISIS是英國(guó)Labcenter公司開(kāi)發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析各種模擬器件和集成電路。6768在Proteus中,從原理圖設(shè)計(jì)、單片機(jī)編程、系統(tǒng)仿真到PCB設(shè)計(jì)一氣呵成。真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。69ISIS——智能原理圖輸入系統(tǒng),系統(tǒng)設(shè)計(jì)與仿真的基本平臺(tái);VSM仿真單元——含混合模型仿真、VSM仿真、高級(jí)圖形仿真(ASF)等;ARES——高級(jí)PCB布線編輯軟件。ASF高級(jí)圖形分析模塊處理器仿真模型VSM高級(jí)布線/編輯ARES動(dòng)態(tài)器件庫(kù)混合模型仿真器原理圖輸入系統(tǒng)ISISPROTEUS4.2Proteus主要特點(diǎn)實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。支持主流單片機(jī)系統(tǒng)的仿真。提供軟件調(diào)試功能。具有強(qiáng)大的原理圖繪制、PCB設(shè)計(jì)功能。704.3Proteus微處理器系統(tǒng)仿真流程單片機(jī)系統(tǒng)的仿真是ProteusVSM的主要特色。用戶可在Proteus中直接編輯、編譯、調(diào)試代碼,并直觀地看到仿真結(jié)果。CPU模型有ARM7(LPC21xx)、PIC、AtmelAVR、MotorolaHCXX以及8051/8052系列。同時(shí)模型庫(kù)中包含了LED/LCD顯示、鍵盤(pán)、按鈕、開(kāi)關(guān)、常用電機(jī)等通用外圍設(shè)備。VSM甚至能仿真多個(gè)CPU,它能處理含兩個(gè)或以上微控制器的系統(tǒng)設(shè)計(jì)。71(1)原理圖輸入(2)建立源代碼文件(3)源代碼文件與單片機(jī)的鏈接(4)交互式仿真(5)完善的調(diào)試功能(6)仿真舉例72(1)原理圖輸入731、選擇代碼生成工具2、建立新的源代碼文件3、源文件命名74(2)建立源代碼文件4、源代碼編輯5、源代碼編譯、鏈接6、程序加載到CPU(3)源代碼文件與單片機(jī)的鏈接實(shí)時(shí)顯示系統(tǒng)輸出結(jié)果實(shí)時(shí)顯示元器件引腳電平76(4)交互式仿真PC串行口物理接口模型實(shí)際溫度測(cè)量板PROTEUS仿真電路通過(guò)物理接口模型,可以實(shí)現(xiàn)虛擬仿真電路與外部實(shí)際電路的雙向通信。串行電纜內(nèi)部數(shù)據(jù)存儲(chǔ)器窗口源代碼窗口:提供了四種程序執(zhí)行命令按鈕程序調(diào)試斷點(diǎn)處理器程序計(jì)數(shù)器的當(dāng)前位置SFR存儲(chǔ)器窗口CPU寄存器窗口觀測(cè)窗口78(5)完善的調(diào)試功能游戲手柄(可映射到PC鍵盤(pán)上)游戲顯示屏(LCD)引腳邏輯狀態(tài)顯示CPU運(yùn)行游戲程序79(6)仿真舉例Proteus支持PHILIPS的以下ARM7芯片的仿真:LPC2101~2106LPC2114LPC2124LPC2131LPC2132LPC2134LPC2136LPC2138此外還有ARM7TDMI仿真模型4.4Proteus電路原理圖設(shè)計(jì)4.4.1電路原理圖的設(shè)計(jì)流程4.4.2設(shè)計(jì)方法和步驟4.4.3電路繪圖工具的使用814.4.1電路原理圖的設(shè)計(jì)流程(1)新建設(shè)計(jì)文檔(2)設(shè)置工作環(huán)境(3)放置元器件(4)對(duì)原理圖進(jìn)行布線(5)建立網(wǎng)絡(luò)表(6)原理圖的電氣規(guī)則檢查(7)調(diào)整(8)存盤(pán)和輸出報(bào)表834.4.2設(shè)計(jì)方法和步驟演示:Project7(1)創(chuàng)建一個(gè)新的設(shè)計(jì)文件(2)設(shè)置工作環(huán)境(3)拾取元器件(4)在原理圖中放置元器件(5)編輯元器件(6)繪制原理圖(7)對(duì)原理圖進(jìn)行電氣規(guī)則檢測(cè)(8)存盤(pán)及輸出報(bào)表85(1)創(chuàng)建一個(gè)新的設(shè)計(jì)文件首先進(jìn)入ProteusISIS編輯環(huán)境選擇【File】→【NewDesign】菜單項(xiàng),在彈出的模板對(duì)話框中選擇DEFAULT模板,并將新建的設(shè)計(jì)保存在C盤(pán)根目錄下,保存文件名為“example”(2)設(shè)置工作環(huán)境打開(kāi)【Template】菜單,對(duì)工作環(huán)境進(jìn)行設(shè)置。選擇【System】→【SetSheetSizes】菜單項(xiàng),在出現(xiàn)的對(duì)話框中選擇A4復(fù)選框,單擊“OK”按鈕確認(rèn),即可完成頁(yè)面設(shè)置(3)拾取元器件選擇【Library】→【PickDevice/Symbol】菜單項(xiàng),在其中添加元器件;單擊“OK”按鈕,或在元器件列表區(qū)域雙擊元器件名稱(chēng),即可完成對(duì)該元器件的添加。添加的元器件將出現(xiàn)在對(duì)象選擇器列表中;在完成了對(duì)元器件的查找后,可以按照要求,依次找到其他元器件。2

ResistorsQuantity:ReferencesValue1R110k1R22203

CapacitorsQuantity:ReferencesValue2C1,C222pf1C310uF1

IntegratedCircuitsQuantity:ReferencesValue1U1AT89C511

DiodesQuantity:ReferencesValue1D1

1

MiscellaneousQuantity:ReferencesValue1X112M89(4)在原理圖中放置元器件在當(dāng)前設(shè)計(jì)文檔的對(duì)象選擇器中添加元器件后,就要在原理圖中放置元器件。(1)選擇對(duì)象選擇器中的元器件,在ProteusISIS編輯環(huán)境主界面的預(yù)覽窗口將出現(xiàn)元器件的圖標(biāo)。(2)在編輯窗口雙擊鼠標(biāo)左鍵,元器件被放置到原理圖中。(3)按照上述步驟,分別將各元器件放置到原理圖中。90(4)將光標(biāo)指向編輯窗口的元器件,并單擊該對(duì)象使其高亮顯示。(5)拖動(dòng)該對(duì)象到合適的位置。(6)調(diào)整好所有元器件后,選擇【View】→【Redraw】菜單項(xiàng),刷新屏幕,此時(shí)圖紙上有了全部元器件。(5)編輯元器件放置好元器件后,雙擊相應(yīng)的元器件,即可打開(kāi)該元器件的編輯對(duì)話框。(1)單擊元器件,將高亮顯示(2)再次單擊元器件,彈出對(duì)話框,編輯該元器件。92(6)繪制原理圖在兩個(gè)元器件間進(jìn)行連線的步驟如下:(1)單擊第一個(gè)對(duì)象連接點(diǎn)。(2)如果想讓ProteusISIS自動(dòng)定出走線路徑,只需單擊另一個(gè)連接點(diǎn);如果想自己決定走線路徑,只需在希望的拐點(diǎn)處單擊。(7)對(duì)原理圖進(jìn)行電氣規(guī)則檢測(cè)選擇【Tools】→【ElectricalRuleCheck】菜單項(xiàng),出現(xiàn)電氣規(guī)則檢測(cè)報(bào)告單。(8)存盤(pán)及輸出報(bào)表將設(shè)計(jì)好的原理圖文件存盤(pán)。同時(shí),可使用【Tools】→【BillofMaterials】菜單項(xiàng)輸出BOM文檔。4.5Proteus電路繪圖工具的使用4.5.1隱藏電源引腳4.5.2總線模式4.5.3連線標(biāo)簽?zāi)J?.5.4終端模式964.5.1隱藏電源引腳在“EditComponent”對(duì)話框中,通過(guò)單擊“HiddenPins”按鈕,可查看或編輯隱藏的電源引腳。974.5.2總線模式(1)放置總線①?gòu)墓ぞ呦渲羞x擇總線“Bus”圖標(biāo);②在期望總線起始端出現(xiàn)的位置單擊鼠標(biāo)左鍵;③在期望總線路徑的拐點(diǎn)處單擊鼠標(biāo)左鍵;④在總線的終點(diǎn)單擊鼠標(biāo)左鍵,然后單擊鼠標(biāo)右鍵,可結(jié)束總線放置。98(2)放置總線分支

為了使電路圖顯得專(zhuān)業(yè)而美觀,通常把總線分支畫(huà)成與總線成45°角的相互平行的斜線。99方法:按Ctrl鍵。1004.5.3連線標(biāo)簽?zāi)J?1)從工具箱中選擇“WireLabel”圖標(biāo);(2)把鼠標(biāo)指針指向期望放置標(biāo)簽的總線分支位置,被選中的導(dǎo)線變成虛線,鼠標(biāo)指針處出現(xiàn)一個(gè)“×”號(hào),此時(shí)單擊鼠標(biāo)左鍵,出現(xiàn)“EditWireLabel”對(duì)話框;(3)在該對(duì)話框的“Label”選項(xiàng)卡中鍵入相應(yīng)的文本;(4)單擊“OK”按鈕,結(jié)束文本的輸入。1014.5.4終端模式

從工具箱中選擇“TerminalMode”圖標(biāo),出現(xiàn)如終端選擇窗口。DEFAULT:默認(rèn)端口INPUT:輸入端口OUTPUT:輸出端口BIDIR:雙向端口POWER:電源GROUND:地BUS:總線1024.6常用ProteusISIS的庫(kù)元件認(rèn)識(shí)

大部分電路是由庫(kù)中的元件通過(guò)連線來(lái)完成的,而庫(kù)元件的調(diào)用是畫(huà)圖的第一步,如何快速準(zhǔn)確地找到元件是繪圖的關(guān)鍵。 Proteus中常用的元器件被分成了25大類(lèi)。AnalogICs模擬ICResistors電阻CMOS4000seriesCMOS4000系列SimulatorPrimitives仿真基元DataConverters數(shù)據(jù)轉(zhuǎn)換器Switches&Relays開(kāi)關(guān)和繼電器Diodes二極管Transistors三極管Ele

溫馨提示

  • 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)論