第三章:并口+led燈-_第1頁
第三章:并口+led燈-_第2頁
第三章:并口+led燈-_第3頁
第三章:并口+led燈-_第4頁
第三章:并口+led燈-_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章單片機(jī)并行I/O口應(yīng)用本章內(nèi)容2□并行I/O口電路結(jié)構(gòu)□認(rèn)識(shí)C語言□C語言的基本語句□C語言數(shù)據(jù)與運(yùn)算□數(shù)組的概念并行I/O口電路結(jié)構(gòu)MCS-51系列單片機(jī)共有四個(gè)8位并行I/O口,分別用P0、P1、P2、P3表示。每個(gè)I/O口既可以按位操作使用單個(gè)引腳,也可以按字節(jié)操作使用8個(gè)引腳。3除了I/O功能以外,在進(jìn)行單片機(jī)系統(tǒng)擴(kuò)展時(shí),P0口是作為單片機(jī)系統(tǒng)的地址/數(shù)據(jù)線使用的,一般稱為地址/數(shù)據(jù)分時(shí)復(fù)用引腳。4P0口的結(jié)構(gòu)□P1口是準(zhǔn)雙向口,只能作為通用I/O口使用?!鮌1口作為輸出口使用時(shí),無需再外接上拉電阻?!鮌1口作為輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口。讀引腳時(shí),必須先向電路中的鎖存器寫入“1”,使輸出級的FET截止。5P1口的結(jié)構(gòu)□P2口是準(zhǔn)雙向口,在實(shí)際應(yīng)用中,可以用于為系統(tǒng)提供高8位地址,也能作為通用I/O口使用?!鮌2口作為通用I/O口的輸出口使用時(shí),與P1口一樣無需再外接上拉電阻。□P2口作為通用I/O口的輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口。讀引腳時(shí),必須先向鎖存器寫入“1”。6P2口的結(jié)構(gòu)□P3口是準(zhǔn)雙向口,可以作為通用I/O口使用,還可以作為第二功能使用。作為第二功能使用的端口,不能同時(shí)當(dāng)作通用I/O口使用,但其他未被使用的端口仍可作為通用I/O口使用?!鮌3口作為通用I/O的輸出口使用時(shí),不用外接上拉電阻。7P3口的結(jié)構(gòu)認(rèn)識(shí)C語言C語言程序以函數(shù)形式組織程序結(jié)構(gòu),C程序中的函數(shù)與其他語言中所描述的“子程序”或“過程”的概念是一樣的。C程序基本結(jié)構(gòu)8認(rèn)識(shí)C語言□一個(gè)C語言源程序是由一個(gè)或若干個(gè)函數(shù)組成,每一個(gè)函數(shù)完成相對獨(dú)立的功能。每個(gè)C程序都必須有(且僅有)一個(gè)主函數(shù)

main(),程序的執(zhí)行總是從主函數(shù)開始,調(diào)用其他函數(shù)后返回主函數(shù)main(),不管函數(shù)的排列順序如何,最后在主函數(shù)中結(jié)束整個(gè)程序?!魿語言程序中可以有預(yù)處理命令,預(yù)處理命令通常放在源程序的最前面?!魿語言程序使用“;”作為語句的結(jié)束符,一條語句可以多行書寫,也可以一行書寫多條語句。9認(rèn)識(shí)C語言□結(jié)構(gòu)化語言□豐富的數(shù)據(jù)類型□便于維護(hù)管理□與匯編語言相比,C語言的優(yōu)點(diǎn)如下:不要求編程者詳細(xì)了解單片機(jī)的指令系統(tǒng),但需了解單片機(jī)的存儲(chǔ)器結(jié)構(gòu);寄存器分配、不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;結(jié)構(gòu)清晰,程序可讀性強(qiáng);編譯器提供了很多標(biāo)準(zhǔn)庫函數(shù),具有較強(qiáng)的數(shù)據(jù)處理能力。10C語言的基本語句□

C語言程序的執(zhí)行部分由語句組成。C語言提供了豐富的程序控制語句,按照結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),組成各種復(fù)雜程序。這些語句主要包括表達(dá)式語句、復(fù)合語句、選擇語句和循環(huán)語句等。11表達(dá)式語句和復(fù)合語句□表達(dá)式語句是最基本的C語言語句。表達(dá)式語句由表達(dá)式加上分號(hào)“;”組成,其一般形式如下:表達(dá)式;執(zhí)行表達(dá)式語句就是計(jì)算表達(dá)式的值?!踉贑語言中有一個(gè)特殊的表達(dá)式語句,稱為空語句。空語句中只有一個(gè)分號(hào)“;”,程序執(zhí)行空語句時(shí)需要占用一條指令的執(zhí)行時(shí)間,但是什么也不做。在C51程序中

常常把空語句作為循環(huán)體,用于消耗CPU時(shí)間等待事件發(fā)生的場合。12表達(dá)式語句和復(fù)合語句□把多個(gè)語句用大括號(hào){}括起來,組合在一起形成具有一定功能的模塊,這種由若干條語句組合而成的語句塊

稱為復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是單條語句,而不是多條語句?!鯊?fù)合語句在程序運(yùn)行時(shí),{}中的各行單語句是依次順序執(zhí)行的。在C語言的函數(shù)中,函數(shù)體就是一個(gè)復(fù)合語句。13C語言基礎(chǔ)14選擇語句

:if

,switch

,break

,continue.循環(huán)語句:for

,

while

,

do

…while。賦值運(yùn)算符算術(shù)運(yùn)算符和算術(shù)表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式分隔符為分號(hào)C語言數(shù)據(jù)與運(yùn)算1.賦值運(yùn)算符2.算術(shù)運(yùn)算符和算術(shù)表達(dá)式153.關(guān)系運(yùn)算符和關(guān)系表達(dá)4.邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符及其優(yōu)先級優(yōu)先級邏輯運(yùn)算符!

(邏輯非)&&(邏輯與)||

(邏輯或)注意:邏輯運(yùn)算符與位操作運(yùn)算符的區(qū)別。16位運(yùn)算與操作17□按位與操作符:&□格式:x&y□規(guī)則:對應(yīng)位均為1時(shí)才為1,否則為0例如,i=i&0x0f;

等同于

i&=0x0f;□主要用途:取(或保留)1個(gè)數(shù)的某(些)位,其余各位置0。位運(yùn)算或操作18□按位或操作符:|□格式:x|y□規(guī)則:對應(yīng)位均為0時(shí)才為0,否則為1例如,i=i|0x0f;

等同于

i|=0x0f;□主要用途:將1個(gè)數(shù)的某(些)位置1,其余各位不變位運(yùn)算異或操作19□按位異或操作符:^□格式:x^y□規(guī)則:對應(yīng)位相同時(shí)為0,不同時(shí)為1例如,i=i^0x0f;

等同于

i^=0x0f;□主要用途:使1個(gè)數(shù)的某(些)位翻轉(zhuǎn)(即原來為1的位變?yōu)?,為0的變?yōu)?),其余各位不變。位運(yùn)算按位取反操作20□按位取反操作符:~□格式:~x□規(guī)則:各位翻轉(zhuǎn),即原來為1的位變成0,原來為0的位變成1例如,

i=~i;□主要用途:間接地構(gòu)造一個(gè)數(shù),以增強(qiáng)程序的可移植性。

左移運(yùn)算符“<<”的功能,是把“<<”左邊的操作數(shù)的各二進(jìn)制位全部左移若干位,移動(dòng)的位數(shù)由“<<”右邊的常數(shù)指定,高位丟棄,低位補(bǔ)0。例如:“a<<4”是指把a(bǔ)的各二進(jìn)制位向左移動(dòng)4位。如a=00000011B(十進(jìn)制數(shù)3),左移4位后為00110000B(十進(jìn)制數(shù)48)。

右移運(yùn)算符“>>”的功能,是把“>>”左邊的操作數(shù)的各二進(jìn)制位全部右移若干位,移動(dòng)的位數(shù)由“>>”右邊的常數(shù)指定。進(jìn)行右移運(yùn)算時(shí),如果是無符號(hào)數(shù),則總是在其左端補(bǔ)

“0”21位運(yùn)算數(shù)組的概念22數(shù)組屬于常用的數(shù)據(jù)類型,數(shù)組中的元素有固定數(shù)目和相同類型,數(shù)組元素的數(shù)據(jù)類型就是該數(shù)組的基本類型。數(shù)組:是有序數(shù)據(jù)的集合;數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型,用一個(gè)分統(tǒng)隔符一的數(shù)組為分號(hào)名和下標(biāo)來唯一地確定數(shù)組中的元素。應(yīng)用場合:需要處理的數(shù)據(jù)為數(shù)量已知的若干相同類型的數(shù)據(jù)時(shí)。注意:先定義,后使用。開始P0.0=0,點(diǎn)亮信號(hào)燈延時(shí)P0.0=1,熄滅信號(hào)燈延時(shí)結(jié)束23流水燈實(shí)驗(yàn)★

流程圖:常用延時(shí)辦法24非精確延時(shí)1、for(i=0;i<100;i++);2、i=100;while(i--);精確延時(shí)辦法1、利用庫函數(shù)_nop_()(一個(gè)機(jī)器周期);(需要include<intrins.h>)2、利用定時(shí)器進(jìn)行定時(shí)(后邊的課程進(jìn)行介紹)動(dòng)態(tài)掃描原理:25LED的閃爍間隔說明:50MS以上可識(shí)別亮滅,10MS以下就只能看到常亮了!變量類型關(guān)鍵字所占字節(jié)取值范圍unsigned

char10~255“00000000”到”11111111”unsigned

int20~65535“00000000

00000000”到“11111111

11111111”依照國際慣例,我們可以用uint8 uint16等縮寫來替代,只需要用typedef語句可以完成:uint8;uint16;P70表3.6typedef

unsigned

chartypedef

unsigned

int26流水燈實(shí)驗(yàn)278個(gè)LED發(fā)光二極管,分別對應(yīng)單片機(jī)IO口的P0.0到P0.7口,8個(gè)單片機(jī)IO口組成一個(gè)字節(jié),在程序編寫過程中,可以直接用P0來進(jìn)行操作。C語言的8位二進(jìn)制數(shù)代表了8個(gè)IO口P0

=

0xfe;P0.7

P0.6

P0.5

P0.4

P0.3

P0.2

P0.1

P0.01

1

1

1

1

1

1

0C語言運(yùn)算符28左移<<X<<2右移>>

X>>2左移,最低位填0補(bǔ)充;右移,最高位填0補(bǔ)充0xf0按位取反符號(hào)~取反后1變成0,0變成10x0F取反后成為0xF0,即00001111->11110000數(shù)碼管29數(shù)碼管真值表30根據(jù)單片機(jī)連接電路,可以計(jì)算出數(shù)碼管的真值表:P0.7

P0.6

P0.5

P0.4

P0.3

P0.2

P0.1P0.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

提交評論