1.1 什么叫單片機(jī)? 1.2 單片機(jī)主要應(yīng)用于哪些領(lǐng)域? 1.3 單片機(jī)由哪些基本部件組成? 1.4 一個(gè)字節(jié)的十六進(jìn)制數(shù)最大值相當(dāng)于多大的十進(jìn)制數(shù),兩個(gè)字節(jié)的十六進(jìn)制數(shù)最大值相當(dāng)于多大的十進(jìn)制數(shù)。 1.5 存儲(chǔ)器的容量如下所示,若它的首地址為 0000H,寫出它的末地址。 存儲(chǔ)器容量 首地址 末地址 1KB 0000H 2KB 0000H 4KB 0000H
標(biāo)簽: 單片機(jī)教材
上傳時(shí)間: 2013-11-23
上傳用戶:894448095
前言智能儀表課采用了《單片機(jī)原理與接口技術(shù)》作為教材,這是一門實(shí)踐性極強(qiáng)的課程,理論和實(shí)驗(yàn)教學(xué)的有機(jī)結(jié)合,是提高教學(xué)質(zhì)量的唯一途徑。為密切配合理論教學(xué),針對(duì)SICElab賽思開(kāi)放式綜合實(shí)驗(yàn)/仿真系統(tǒng),我們編寫了配套的實(shí)驗(yàn)教材。SICElab賽思開(kāi)放式綜合實(shí)驗(yàn)/仿真系統(tǒng)采用了符合單片機(jī)開(kāi)發(fā)過(guò)程的“仿真式”組合設(shè)計(jì)思想,使得所有的實(shí)驗(yàn)?zāi)K及CPU資源均全力對(duì)用戶開(kāi)放,從而充分滿足“驗(yàn)證式”→“模仿式”→“探索式”→“開(kāi)發(fā)式”的由淺入深的各種實(shí)驗(yàn)要求。賽思開(kāi)放式綜合實(shí)驗(yàn)/仿真系統(tǒng)采用偉福G6W仿真器,為用戶提供了一個(gè)大集成軟件環(huán)境,統(tǒng)一的界面,包含一個(gè)項(xiàng)目管理器,一個(gè)功能強(qiáng)大的編輯器,匯編Make、build和調(diào)試工具并提供一個(gè)與第三方編譯器的接口,具有DOS/WINDOWS雙平臺(tái),仿真器與實(shí)驗(yàn)平臺(tái)分離,采用“仿真”方式進(jìn)行實(shí)驗(yàn),同時(shí),允許進(jìn)行脫機(jī)運(yùn)行工作,所以,實(shí)驗(yàn)過(guò)程是與實(shí)際開(kāi)發(fā)過(guò)程完全一致的。仿真器使用的是雙“CPU”架構(gòu)方式,100%資源出讓,100%實(shí)時(shí),100%無(wú)條件硬件斷點(diǎn),可滿足學(xué)生實(shí)驗(yàn),畢業(yè)設(shè)計(jì),參加電子競(jìng)爭(zhēng),教師科研所需。第一章簡(jiǎn)單介紹了賽思開(kāi)放式綜合實(shí)驗(yàn)/仿真系統(tǒng)的組成(包括實(shí)驗(yàn)平臺(tái)、仿真器、軟件支持、開(kāi)關(guān)電源),實(shí)驗(yàn)內(nèi)容,實(shí)驗(yàn)方式,支持器件等。第二章選編了二十例驗(yàn)證式實(shí)驗(yàn),包括實(shí)驗(yàn)平臺(tái)操作,連接仿真器、PC機(jī),利用DOS和WINDOWS平臺(tái)軟硬件結(jié)合的實(shí)驗(yàn),按由淺入深原則排列。第三章選編了十六例模仿和探索開(kāi)發(fā)式實(shí)驗(yàn)。教師和學(xué)生可根據(jù)課時(shí)和具體情況選擇實(shí)驗(yàn)內(nèi)容,或自行設(shè)計(jì)新的實(shí)驗(yàn)內(nèi)容。由于課時(shí)所限,有的實(shí)驗(yàn)可讓學(xué)生在課后開(kāi)放實(shí)驗(yàn)室時(shí)完成,以提高學(xué)生動(dòng)手能力,提高教學(xué)質(zhì)量,培養(yǎng)學(xué)生創(chuàng)新精神。附錄一介紹了綜合實(shí)驗(yàn)平臺(tái)各模塊的電路圖,附錄二是實(shí)驗(yàn)平臺(tái)鍵盤操作仿真方法說(shuō)明。由于時(shí)間匆忙,加上編者水平有限,難免有錯(cuò)漏之處,請(qǐng)讀者不吝賜教。
標(biāo)簽: 單片機(jī)原理 接口技術(shù) 實(shí)驗(yàn) 教材
上傳時(shí)間: 2013-10-22
上傳用戶:sunshie
16*2點(diǎn)陣字符液晶模塊是由點(diǎn)陣字符液晶顯示器件和專用的行列驅(qū)動(dòng)器、控制器及必要的連接件、結(jié)構(gòu)件裝配而成,可以顯示數(shù)字和英文字符。這種點(diǎn)陣字符模塊本身具有字符發(fā)生器,顯示容量大.功能豐富。
標(biāo)簽: 手把手 單片機(jī) C語(yǔ)言 程序設(shè)計(jì)
上傳時(shí)間: 2014-12-27
上傳用戶:longlong12345678
單片機(jī)指令系統(tǒng)原理 51單片機(jī)的尋址方式 學(xué)習(xí)匯編程序設(shè)計(jì),要先了解CPU的各種尋址法,才能有效的掌握各個(gè)命令的用途,尋址法是命令運(yùn)算碼找操作數(shù)的方法。在我們學(xué)習(xí)的8051單片機(jī)中,有6種尋址方法,下面我們將逐一進(jìn)行分析。 立即尋址 在這種尋址方式中,指令多是雙字節(jié)的,一般第一個(gè)字節(jié)是操作碼,第二個(gè)字節(jié)是操作數(shù)。該操作數(shù)直接參與操作,所以又稱立即數(shù),有“#”號(hào)表示。立即數(shù)就是存放在程序存儲(chǔ)器中的常數(shù),換句話說(shuō)就是操作數(shù)(立即數(shù))是包含在指令字節(jié)中的。 例如:MOV A,#3AH這條指令的指令代碼為74H、3AH,是雙字節(jié)指令,這條指令的功能是把立即數(shù)3AH送入累加器A中。MOV DPTR,#8200H在前面學(xué)單片機(jī)的專用寄存器時(shí),我們已學(xué)過(guò),DPTR是一個(gè)16位的寄存器,它由DPH及DPL兩個(gè)8位的寄存器組成。這條指令的意思就是把立即數(shù)的高8位(即82H)送入DPH寄存器,把立即數(shù)的低8位(即00H)送入DPL寄存器。這里也特別說(shuō)明一下:在80C51單片機(jī)的指令系統(tǒng)中,僅有一條指令的操作數(shù)是16位的立即數(shù),其功能是向地址指針DPTR傳送16位的地址,即把立即數(shù)的高8位送入DPH,低8位送入DPL。 直接尋址 直接尋址方式是指在指令中操作數(shù)直接以單元地址的形式給出,也就是在這種尋址方式中,操作數(shù)項(xiàng)給出的是參加運(yùn)算的操作數(shù)的地址,而不是操作數(shù)。例如:MOV A,30H 這條指令中操作數(shù)就在30H單元中,也就是30H是操作數(shù)的地址,并非操作數(shù)。 在80C51單片機(jī)中,直接地址只能用來(lái)表示特殊功能寄存器、內(nèi)部數(shù)據(jù)存儲(chǔ)器以及位地址空間,具體的說(shuō)就是:1、內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM低128單元。在指令中是以直接單元地址形式給出。我們知道低128單元的地址是00H-7FH。在指令中直接以單元地址形式給出這句話的意思就是這0-127共128位的任何一位,例如0位是以00H這個(gè)單元地址形式給出、1位就是以01H單元地址給出、127位就是以7FH形式給出。2、位尋址區(qū)。20H-2FH地址單元。3、特殊功能寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號(hào)形式給出。例如下面我們分析的一條指令 MOV IE,#85H 前面的學(xué)習(xí)我們已知道,中斷允許寄存器IE的地址是80H,那么也就是這條指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。 關(guān)于數(shù)據(jù)存儲(chǔ)器RAM的內(nèi)部情況,請(qǐng)查看我們課程的第十二課。 直接尋址是唯一能訪問(wèn)特殊功能寄存器的尋址方式! 大家來(lái)分析下面幾條指令:MOV 65H,A ;將A的內(nèi)容送入內(nèi)部RAM的65H單元地址中MOV A,direct ;將直接地址單元的內(nèi)容送入A中MOV direct,direct;將直接地址單元的內(nèi)容送直接地址單元MOV IE,#85H ;將立即數(shù)85H送入中斷允許寄存器IE 前面我們已學(xué)過(guò),數(shù)據(jù)前面加了“#”的,表示后面的數(shù)是立即數(shù)(如#85H,就表示85H就是一個(gè)立即數(shù)),數(shù)據(jù)前面沒(méi)有加“#”號(hào)的,就表示后面的是一個(gè)地址地址(如,MOV 65H,A這條指令的65H就是一個(gè)單元地址)。 寄存器尋址 寄存器尋址的尋址范圍是:1、4個(gè)工作寄存器組共有32個(gè)通用寄存器,但在指令中只能使用當(dāng)前寄存器組(工作寄存器組的選擇在前面專用寄存器的學(xué)習(xí)中,我們已知道,是由程序狀態(tài)字PSW中的RS1和RS0來(lái)確定的),因此在使用前常需要通過(guò)對(duì)PSW中的RS1、RS0位的狀態(tài)設(shè)置,來(lái)進(jìn)行對(duì)當(dāng)前工作寄存器組的選擇。2、部份專用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和進(jìn)位位CY。 寄存器尋址方式是指操作數(shù)在寄存器中,因此指定了寄存器名稱就能得到操作數(shù)。例如:MOV A,R0這條指令的意思是把寄存器R0的內(nèi)容傳送到累加器A中,操作數(shù)就在R0中。INC R3這條指令的意思是把寄存器R3中的內(nèi)容加1 從前面的學(xué)習(xí)中我產(chǎn)應(yīng)可以理解到,其實(shí)寄存器尋址方式就是對(duì)由PSW程序狀態(tài)字確定的工作寄存器組的R0-R7進(jìn)行讀/寫操作。 寄存器間接尋址 寄存間接尋址方式是指寄存器中存放的是操作數(shù)的地址,即操作數(shù)是通過(guò)寄存器間接得到的,因此稱為寄存器間接尋址。 MCS-51單片機(jī)規(guī)定工作寄存器的R0、R1做為間接尋址寄存器。用于尋址內(nèi)部或外部數(shù)據(jù)存儲(chǔ)器的256個(gè)單元。為什么會(huì)是256個(gè)單元呢?我們知道,R0或者R1都是一個(gè)8位的寄存器,所以它的尋址空間就是2的八次方=256。例:MOV R0,#30H ;將值30H加載到R0中 MOV A,@R0 ;把內(nèi)部RAM地址30H內(nèi)的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H內(nèi)的值放到累加器A中 大家想想,如果用DPTR做為間址寄存器,那么它的尋址范圍是多少呢?DPTR是一個(gè)16位的寄存器,所以它的尋址范圍就是2的十六次方=65536=64K。因用DPTR做為間址寄存器的尋址空間是64K,所以訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器時(shí),我們通常就用DPTR做為間址寄存器。例:MOV DPTR,#1234H ;將DPTR值設(shè)為1234H(16位) MOVX A,@DPTR ;將外部RAM或I/O地址1234H內(nèi)的值放到累加器A中 在執(zhí)行PUSH(壓棧)和POP(出棧)指令時(shí),采用堆棧指針SP作寄存器間接尋址。例:PUSH 30H ;把內(nèi)部RAM地址30H內(nèi)的值放到堆棧區(qū)中堆棧區(qū)是由SP寄存器指定的,如果執(zhí)行上面這條命令前,SP為60H,命令執(zhí)行后會(huì)把內(nèi)部RAM地址30H內(nèi)的值放到RAM的61H內(nèi)。 那么做為寄存器間接尋址用的寄存器主要有哪些呢?我們前面提到的有四個(gè),R0、R1、DPTR、SP 寄存器間接尋址范圍總結(jié):1、內(nèi)部RAM低128單元。對(duì)內(nèi)部RAM低128單元的間接尋址,應(yīng)使用R0或R1作間址寄存器,其通用形式為@Ri(i=0或1)。 2、外部RAM 64KB。對(duì)外部RAM64KB的間接尋址,應(yīng)使用@DPTR作間址尋址寄存器,其形式為:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的單元的內(nèi)容送入累加器A中。外部RAM的低256單元是一個(gè)特殊的尋址區(qū),除可以用DPTR作間址寄存器尋址外,還可以用R0或R1作間址寄存器尋址。例如MOVX A,@R0;這條指令的意思是,把R0指定的外部RAM單元的內(nèi)容送入累加器A。 堆棧操作指令(PUSH和POP)也應(yīng)算作是寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。 寄存器間接尋址方式不可以訪問(wèn)特殊功能寄存器??! 寄存器間接尋址也須以寄存器符號(hào)的形式表示,為了區(qū)別寄存器尋址我寄存器間接尋址的區(qū)別,在寄存器間接尋址方式式中,寄存器的名稱前面加前綴標(biāo)志“@”。 基址寄存器加變址寄存器的變址尋址 這種尋址方式以程序計(jì)數(shù)器PC或DPTR為基址寄存器,累加器A為變址寄存器,變址尋址時(shí),把兩者的內(nèi)容相加,所得到的結(jié)果作為操作數(shù)的地址。這種方式常用于訪問(wèn)程序存儲(chǔ)器ROM中的數(shù)據(jù)表格,即查表操作。變址尋址只能讀出程序內(nèi)存入的值,而不能寫入,也就是說(shuō)變址尋址這種方式只能對(duì)程序存儲(chǔ)器進(jìn)行尋址,或者說(shuō)它是專門針對(duì)程序存儲(chǔ)器的尋址方式。例:MOVC A,@A+DPTR這條指令的功能是把DPTR和A的內(nèi)容相加,再把所得到的程序存儲(chǔ)器地址單元的內(nèi)容送A假若指令執(zhí)行前A=54H,DPTR=3F21H,則這條指令變址尋址形成的操作數(shù)地址就是54H+3F21H=3F75H。如果3F75H單元中的內(nèi)容是7FH,則執(zhí)行這條指令后,累加器A中的內(nèi)容就是7FH。 變址尋址的指令只有三條,分別如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC 第一條指令JMP @A+DPTR這是一條無(wú)條件轉(zhuǎn)移指令,這條指令的意思就是DPTR加上累加器A的內(nèi)容做為一個(gè)16位的地址,執(zhí)行JMP這條指令是,程序就轉(zhuǎn)移到A+DPTR指定的地址去執(zhí)行。 第二、三條指令MOVC A,@A+DPTR和MOVC A,@A+PC指令這兩條指令的通常用于查表操作,功能完全一樣,但使用起來(lái)卻有一定的差別,現(xiàn)詳細(xì)說(shuō)明如下。我們知道,PC是程序指針,是十六位的。DPTR是一個(gè)16位的數(shù)據(jù)指針寄存器,按理,它們的尋址范圍都應(yīng)是64K。我們?cè)趯W(xué)習(xí)特殊功能寄存器時(shí)已知道,程序計(jì)數(shù)器PC是始終跟蹤著程序的執(zhí)行的。也就是說(shuō),PC的值是隨程序的執(zhí)行情況自動(dòng)改變的,我們不可以隨便的給PC賦值。而DPTR是一個(gè)數(shù)據(jù)指針,我們就可以給空上數(shù)據(jù)指針DPTR進(jìn)行賦值。我們?cè)倏粗噶頜OVC A,@A+PC這條指令的意思是將PC的值與累加器A的值相加作為一個(gè)地址,而PC是固定的,累加器A是一個(gè)8位的寄存器,它的尋址范圍是256個(gè)地址單元。講到這里,大家應(yīng)可明白,MOVC A,@A+PC這條指令的尋址范圍其實(shí)就是只能在當(dāng)前指令下256個(gè)地址單元。所在,這在我們實(shí)際應(yīng)用中,可能就會(huì)有一個(gè)問(wèn)題,如果我們需要查詢的數(shù)據(jù)表在256個(gè)地址單元之內(nèi),則可以用MOVC A,@A+PC這條指令進(jìn)行查表操作,如果超過(guò)了256個(gè)單元,則不能用這條指令進(jìn)行查表操作。剛才我們已說(shuō)到,DPTR是一個(gè)數(shù)據(jù)指針,這個(gè)數(shù)據(jù)指針我們可以給它賦值操作的。通過(guò)賦值操作。我們可以使MOVC A,@A+DPTR這條指令的尋址范圍達(dá)到64K。這就是這兩條指令在實(shí)際應(yīng)用當(dāng)中要注意的問(wèn)題。 變址尋址方式是MCS-51單片機(jī)所獨(dú)有的一種尋址方式。 位尋址 80C51單片機(jī)有位處理功能,可以對(duì)數(shù)據(jù)位進(jìn)行操作,因此就有相應(yīng)的位尋址方式。所謂位尋址,就是對(duì)內(nèi)部RAM或可位尋址的特殊功能寄存器SFR內(nèi)的某個(gè)位,直接加以置位為1或復(fù)位為0。 位尋址的范圍,也就是哪些部份可以進(jìn)行位尋址: 1、我們?cè)诘谑n學(xué)習(xí)51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)時(shí),我們已知道在單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM的低128單元中有一個(gè)區(qū)域叫位尋址區(qū)。它的單元地址是20H-2FH。共有16個(gè)單元,一個(gè)單元是8位,所以位尋址區(qū)共有128位。這128位都單獨(dú)有一個(gè)位地址,其位地址的名字就是00H-7FH。這里就有一個(gè)比較麻煩的問(wèn)題需要大家理解清楚了。我們?cè)谇懊娴膶W(xué)習(xí)中00H、01H。。。。7FH等等,所表示的都是一個(gè)字節(jié)(或者叫單元地址),而在這里,這些數(shù)據(jù)都變成了位地址。我們?cè)谥噶钪?,或者在程序中如何?lái)區(qū)分它是一個(gè)單元地址還是一個(gè)位地址呢?這個(gè)問(wèn)題,也就是我們現(xiàn)在正在研究的位尋址的一個(gè)重要問(wèn)題。其實(shí),區(qū)分這些數(shù)據(jù)是位地址還是單元地址,我們都有相應(yīng)的指令形式的。這個(gè)問(wèn)題我們?cè)诤竺娴闹噶钕到y(tǒng)學(xué)習(xí)中再加以論述。 2、對(duì)專用寄存器位尋址。這里要說(shuō)明一下,不是所有的專用寄存器都可以位尋址的。具體哪些專用寄存器可以哪些專用寄存器不可以,請(qǐng)大家回頭去看看我們前面關(guān)于專用寄存器的相關(guān)文章。一般來(lái)說(shuō),地址單元可以被8整除的專用寄存器,通常都可以進(jìn)行位尋址,當(dāng)然并不是全部,大家在應(yīng)用當(dāng)中應(yīng)引起注意。 專用寄存器的位尋址表示方法: 下面我們以程序狀態(tài)字PSW來(lái)進(jìn)行說(shuō)明 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示為D5H MOV C,D5H 2、位名稱表示:表示該位的名稱,例如PSW的位5是F0,所以可以用F0表示 MOV C,F(xiàn)0 3、單元(字節(jié))地址加位表示:D0H單元位5,表示為DOH.5 MOV C,D0H.5 4、專用寄存器符號(hào)加位表示:例如PSW.5 MOV C,PSW.5 這四種方法實(shí)現(xiàn)的功能都是相同的,只是表述的方式不同而已。 例題: 1. 說(shuō)明下列指令中源操作數(shù)采用的尋址方式。 MOV R5,R7 答案:寄存器尋址方式 MOV A,55H 直接尋址方式 MOV A,#55H 立即尋址方式 JMP @A+DPTR 變址尋址方式 MOV 30H,C 位尋址方式 MOV A,@R0 間接尋址方式 MOVX A,@R0 間接尋址方式 改錯(cuò)題 請(qǐng)判斷下列的MCS-51單片機(jī)指令的書寫格式是否有錯(cuò),若有,請(qǐng)說(shuō)明錯(cuò)誤原因。 MOV R0,@R3 答案:間址寄存器不能使用R2~R7。 MOVC A,@R0+DPTR 變址尋址方式中的間址寄存器不可使用R0,只可使用A。 ADD R0,R1 運(yùn)算指令中目的操作數(shù)必須為累加器A,不可為R0。 MUL AR0 乘法指令中的乘數(shù)應(yīng)在B寄存器中,即乘法指令只可使用AB寄存器組合。
標(biāo)簽: 單片機(jī)指令 系統(tǒng)原理
上傳時(shí)間: 2013-11-11
上傳用戶:caozhizhi
入口條件:待轉(zhuǎn)換的雙字節(jié)BCD碼小數(shù)在R4、R5中。出口信息:轉(zhuǎn)換后的雙字節(jié)十六進(jìn)制小數(shù)在R2、R3中。*影響資源:PSW、A、R2~R6 堆棧需求: 2字節(jié)BHD2: MOV R6,#10H ;準(zhǔn)備計(jì)算兩個(gè)字節(jié)小數(shù)BHD3: MOV A,R5 ;按十進(jìn)制倍增
標(biāo)簽: MCS 51 單片機(jī)實(shí)用 程序庫(kù)
上傳時(shí)間: 2013-10-23
上傳用戶:zhang_yi
8051單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù):第一節(jié) 8051 單片機(jī)系統(tǒng)擴(kuò)展概述第二節(jié) 單片機(jī)外部存儲(chǔ)器擴(kuò)展第三節(jié) 單片機(jī)輸入輸出(I/O)口擴(kuò)展及應(yīng)用第四節(jié) LED顯示器接口電路及顯示程序第五節(jié) 單片機(jī)鍵盤接口技術(shù)第六節(jié) 單片機(jī)與數(shù)模(D/A)及模數(shù)(A/D)轉(zhuǎn)換1、地址總線(Address Bus,簡(jiǎn)寫為AB)地址總線可傳送單片機(jī)送出的地址信號(hào),用于訪問(wèn)外部存儲(chǔ)器單元或I/O端口。A 地址總線是單向的,地址信號(hào)只是由單片機(jī)向外發(fā)出。B 地址總線的數(shù)目決定了可直接訪問(wèn)的存儲(chǔ)器單元的數(shù)目。例如N位地址,可以產(chǎn)生2N個(gè)連續(xù)地址編碼,因此可訪問(wèn)2N個(gè)存儲(chǔ)單元,即通常所說(shuō)的尋址范圍為 2N個(gè)地址單元。MCS—51單片機(jī)有十六位地址線,因此存儲(chǔ)器展范圍可達(dá)216 = 64KB地址單元。C 掛在總線上的器件,只有地址被選中的單元才能與CPU交換數(shù)據(jù),其余的都暫時(shí)不能操作,否則會(huì)引起數(shù)據(jù)沖突。2、數(shù)據(jù)總線(Data Bus,簡(jiǎn)寫為DB)數(shù)據(jù)總線用于在單片機(jī)與存儲(chǔ)器之間或單片機(jī)與I/O端口之間傳送數(shù)據(jù)。A 單片機(jī)系統(tǒng)數(shù)據(jù)總線的位數(shù)與單片機(jī)處理數(shù)據(jù)的字長(zhǎng)一致。例如MCS—51單片機(jī)是8位字長(zhǎng),所以數(shù)據(jù)總線的位數(shù)也是8位。B 數(shù)據(jù)總線是雙向的,即可以進(jìn)行兩個(gè)方向的數(shù)據(jù)傳送。3、控制總線(Control Bus,簡(jiǎn)寫為CB)控制總線實(shí)際上就是一組控制信號(hào)線,包括單片機(jī)發(fā)出的,以及從其它部件送給單片機(jī)的各種控制或聯(lián)絡(luò)信號(hào)。對(duì)于一條控制信號(hào)線來(lái)說(shuō),其傳送方向是單向的,但是由不同方向的控制信號(hào)線組合的控制總線則表示為雙向的??偩€結(jié)構(gòu)形式大大減少了單片機(jī)系統(tǒng)中連接線的數(shù)目,提高了系統(tǒng)的可靠性,增加了系統(tǒng)的靈活性。此外,總線結(jié)構(gòu)也使擴(kuò)展易于實(shí)現(xiàn),各功能部件只要符合總線規(guī)范,就可以很方便地接入系統(tǒng),實(shí)現(xiàn)單片機(jī)擴(kuò)展。
標(biāo)簽: 8051 單片機(jī) 系統(tǒng)擴(kuò)展 接口技術(shù)
上傳時(shí)間: 2013-10-18
上傳用戶:assef
單片機(jī)音樂(lè)中音調(diào)和節(jié)拍的確定方法:調(diào)號(hào)-音樂(lè)上指用以確定樂(lè)曲主音高度的符號(hào)。很明顯一個(gè)八度就有12個(gè)半音。A、B、C、D、E、F、G。經(jīng)過(guò)聲學(xué)家的研究,全世界都用這些字母來(lái)表示固定的音高。比如,A這個(gè)音,標(biāo)準(zhǔn)的音高為每秒鐘振動(dòng)440周。 升C調(diào):1=#C,也就是降D調(diào):1=BD;277(頻率)升D調(diào):1=#D,也就是降E調(diào):1=BE;311升F調(diào):1=#F,也就是降G調(diào):1=BG;369升G調(diào):1=#G,也就是降A(chǔ)調(diào):1=BA;415升A調(diào):1=#A,也就是降B調(diào):1=BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415A 440. #A466 B 494 所謂1=A,就是說(shuō),這首歌曲的“導(dǎo)”要唱得同A一樣高,人們也把這首歌曲叫做A調(diào)歌曲,或叫“唱A調(diào)”。1=C,就是說(shuō),這首歌曲的“導(dǎo)”要唱得同C一樣高,或者說(shuō)“這歌曲唱C調(diào)”。同樣是“導(dǎo)”,不同的調(diào)唱起來(lái)的高低是不一樣的。各調(diào)的對(duì)應(yīng)的標(biāo)準(zhǔn)頻率為: 單片機(jī)演奏音樂(lè)時(shí)音調(diào)和節(jié)拍的確定方法 經(jīng)常看到一些剛學(xué)單片機(jī)的朋友對(duì)單片機(jī)演奏音樂(lè)比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識(shí)做一些簡(jiǎn)介,但愿能對(duì)單片機(jī)演奏音樂(lè)比較有興趣而又不知其解的朋友能有所啟迪。 一般說(shuō)來(lái),單片機(jī)演奏音樂(lè)基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說(shuō)不能象電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂(lè)只需弄清楚兩個(gè)概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個(gè)音符唱多高的頻率,節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。 在音樂(lè)中所謂“音調(diào)”,其實(shí)就是我們常說(shuō)的“音高”。在音樂(lè)中常把中央C上方的A音定為標(biāo)準(zhǔn)音高,其頻率f=440Hz。當(dāng)兩個(gè)聲音信號(hào)的頻率相差一倍時(shí),也即f2=2f1時(shí),則稱f2比f(wàn)1高一個(gè)倍頻程, 在音樂(lè)中1(do)與 ,2(來(lái))與 ……正好相差一個(gè)倍頻程,在音樂(lè)學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音內(nèi),有12個(gè)半音。以1—i八音區(qū)為例, 12個(gè)半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。這12個(gè)音階的分度基本上是以對(duì)數(shù)關(guān)系來(lái)劃分的。如果我們只要知道了這十二個(gè)音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。 知道了一個(gè)音符的頻率后,怎樣讓單片機(jī)發(fā)出相應(yīng)頻率的聲音呢?一般說(shuō)來(lái),常采用的方法就是通過(guò)單片機(jī)的定時(shí)器定時(shí)中斷,將單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來(lái)回取反,或者說(shuō)來(lái)回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時(shí)器予置不同的定時(shí)值就可實(shí)現(xiàn)。那么怎樣確定一個(gè)頻率所對(duì)應(yīng)的定時(shí)器的定時(shí)值呢?以標(biāo)準(zhǔn)音高A為例: A的頻率f = 440 Hz,其對(duì)應(yīng)的周期為:T = 1/ f = 1/440 =2272μs 由上圖可知,單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來(lái)回取反的時(shí)間應(yīng)為:t = T/2 = 2272/2 = 1136μs這個(gè)時(shí)間t也就是單片機(jī)上定時(shí)器應(yīng)有的中斷觸發(fā)時(shí)間。一般情況下,單片機(jī)奏樂(lè)時(shí),其定時(shí)器為工作方式1,它以振蕩器的十二分頻信號(hào)為計(jì)數(shù)脈沖。設(shè)振蕩器頻率為f0,則定時(shí)器的予置初值由下式來(lái)確定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL為定時(shí)器待確定的計(jì)數(shù)初值。因此定時(shí)器的高低計(jì)數(shù)器的初值為: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256 將t=1136μs代入上面兩式(注意:計(jì)算時(shí)應(yīng)將時(shí)間和頻率的單位換算一致),即可求出標(biāo)準(zhǔn)音高A在單片機(jī)晶振頻率f0=12Mhz,定時(shí)器在工作方式1下的定時(shí)器高低計(jì)數(shù)器的予置初值為 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根據(jù)上面的求解方法,我們就可求出其他音調(diào)相應(yīng)的計(jì)數(shù)器的予置初值。 音符的節(jié)拍我們可以舉例來(lái)說(shuō)明。在一張樂(lè)譜中,我們經(jīng)常會(huì)看到這樣的表達(dá)式,如1=C 、1=G …… 等等,這里1=C,1=G表示樂(lè)譜的曲調(diào),和我們前面所談的音調(diào)有很大的關(guān)聯(lián), 、 就是用來(lái)表示節(jié)拍的。以 為例加以說(shuō)明,它表示樂(lè)譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。比如: 其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時(shí)長(zhǎng)為四分音符的一半,即為八分音符長(zhǎng),3、4的時(shí)長(zhǎng)為八分音符的一半,即為十六分音符長(zhǎng),5的時(shí)長(zhǎng)為四分音符的一半,即為八分音符長(zhǎng),6的時(shí)長(zhǎng)為四分音符長(zhǎng)。那么一拍到底該唱多長(zhǎng)呢?一般說(shuō)來(lái),如果樂(lè)曲沒(méi)有特殊說(shuō)明,一拍的時(shí)長(zhǎng)大約為400—500ms 。我們以一拍的時(shí)長(zhǎng)為400ms為例,則當(dāng)以四分音符為節(jié)拍時(shí),四分音符的時(shí)長(zhǎng)就為400ms,八分音符的時(shí)長(zhǎng)就為200ms,十六分音符的時(shí)長(zhǎng)就為100ms??梢?jiàn),在單片機(jī)上控制一個(gè)音符唱多長(zhǎng)可采用循環(huán)延時(shí)的方法來(lái)實(shí)現(xiàn)。首先,我們確定一個(gè)基本時(shí)長(zhǎng)的延時(shí)程序,比如說(shuō)以十六分音符的時(shí)長(zhǎng)為基本延時(shí)時(shí)間,那么,對(duì)于一個(gè)音符,如果它為十六分音符,則只需調(diào)用一次延時(shí)程序,如果它為八分音符,則只需調(diào)用二次延時(shí)程序,如果它為四分音符,則只需調(diào)用四次延時(shí)程序,依次類推。通過(guò)上面關(guān)于一個(gè)音符音調(diào)和節(jié)拍的確定方法,我們就可以在單片機(jī)上實(shí)現(xiàn)演奏音樂(lè)了。具體的實(shí)現(xiàn)方法為:將樂(lè)譜中的每個(gè)音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍參數(shù),將他們做成數(shù)據(jù)表格,存放在存儲(chǔ)器中,通過(guò)程序取出一個(gè)音符的相關(guān)參數(shù),播放該音符,該音符唱完后,接著取出下一個(gè)音符的相關(guān)參數(shù)……,如此直到播放完畢最后一個(gè)音符,根據(jù)需要也可循環(huán)不停地播放整個(gè)樂(lè)曲。另外,對(duì)于樂(lè)曲中的休止符,一般將其音調(diào)參數(shù)設(shè)為FFH,F(xiàn)FH,其節(jié)拍參數(shù)與其他音符的節(jié)拍參數(shù)確定方法一致,樂(lè)曲結(jié)束用節(jié)拍參數(shù)為00H來(lái)表示。下面給出部分音符(三個(gè)八度音)的頻率以及以單片機(jī)晶振頻率f0=12Mhz,定時(shí)器在工作方式1下的定時(shí)器高低計(jì)數(shù)器的予置初值 : C調(diào)音符 頻率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC調(diào)音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7頻率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C調(diào)音符 頻率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
上傳時(shí)間: 2013-10-20
上傳用戶:哈哈haha
基于單片機(jī)的紅外門進(jìn)控制系統(tǒng)設(shè)計(jì)與制作:我們所做的創(chuàng)新實(shí)驗(yàn)項(xiàng)目“基于單片機(jī)的紅外門控系統(tǒng)”已基本完成,現(xiàn)將其工作原理簡(jiǎn)要說(shuō)明。該系統(tǒng)主要分為兩大部分:一是紅外傳感器部分。二是單片機(jī)計(jì)數(shù)顯示控制部分?;倦娐穲D如下:其中紅外傳感器部分我們采用紅外對(duì)管實(shí)現(xiàn),紅外對(duì)管平行放置,平常處于接收狀態(tài),經(jīng)比較器輸出低電平,當(dāng)有人經(jīng)過(guò)時(shí),紅外線被擋住,接收管接收不到紅外線,經(jīng)比較器輸出高電平。這樣,當(dāng)有人經(jīng)過(guò)時(shí)便會(huì)產(chǎn)生一個(gè)電平的跳變。單片機(jī)控制部分主要是通過(guò)外部?jī)蓚€(gè)中斷判斷是否有人經(jīng)過(guò),如果有人經(jīng)過(guò),由于電平跳變的產(chǎn)生,進(jìn)入中斷服務(wù)程序,這里我們采用了兩對(duì)紅外傳感器接到兩個(gè)外部中斷口,中斷0作為入口,實(shí)現(xiàn)加1操作,中斷1作為出口,實(shí)現(xiàn)減1操作。另外,我們通過(guò)P0口控制室內(nèi)燈的亮暗,當(dāng)寄存器計(jì)數(shù)值為0時(shí),熄燈,不為0時(shí),燈亮。顯示部分,采用兩位數(shù)碼管動(dòng)態(tài)顯示,如有必要,可以很方便的擴(kuò)展為四位計(jì)數(shù)。精益求精!在實(shí)驗(yàn)過(guò)程中,我們走了非常多的彎路,做出來(lái)的東西根本不是自己想要的,我們本想做成室內(nèi)只有一個(gè)門的進(jìn)出計(jì)數(shù),原理已清楚,即在門的兩邊放置兩對(duì)紅外對(duì)管,進(jìn)出時(shí),擋住兩對(duì)對(duì)管的順序不同,因此,可判斷是進(jìn)入還是出去,從而實(shí)現(xiàn)加減計(jì)數(shù),編程時(shí),可分別在兩個(gè)中斷服務(wù)程序的入口置標(biāo)志位,根據(jù)標(biāo)志位判斷進(jìn)出,詳細(xì)內(nèi)容在程序部分。理論如此,但在實(shí)際過(guò)程中,還是發(fā)現(xiàn)實(shí)現(xiàn)不了上述功能,我們初步判定認(rèn)為是程序掌握得不夠好,相信隨著自己對(duì)單片機(jī)了解的深入,應(yīng)該會(huì)做出更好的 (因?yàn)槲覀兪桥R時(shí)學(xué)的單片機(jī)),程序的具體內(nèi)容如下: $MOD52 ORG 0000H LJMP MAIN ORG 0003H LJMP 0100H ORG 0013H LJMP 0150H ORG 0050HMAIN: CLR A MOV 30H , A ;初始化緩存區(qū) MOV 31H , A MOV 32H , A MOV 33H , A MOV R6 , A MOV R7 , A SETB EA SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB PX1NEXT1: ACALL HEXTOBCDD ;調(diào)用數(shù)制轉(zhuǎn)換子程序 ACALL DISPLAY ;調(diào)用顯示子程序 LJMP NEXT1 ORG 0100H ;中斷0服務(wù)程序 LCALL DELY mov 70h,#2 djnz 70h,next JBC F0,NEXT SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 MOV A , R7 ADD A , #1 MOV R7, A MOV A , R6 ADDC A , #0 MOV R6 , A CJNE R6 , #07H , NEXT CLR A MOV R6 , A MOV R7 , ANEXT: RETI ORG 0150H ;中斷1服務(wù)程序 LCALL DELY mov 70h,#2 djnz 70h,next2 JBC F0,NEXT2 SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 CLR C MOV A , R7 SUBB A , #1 MOV R7, A MOV A , R6 SUBB A , #0 MOV R6 , A CJNE R6 , #07H , NEXT2 CLR A MOV R6 , A MOV R7 , ANEXT2: RETI ORG 0200HHEXTOBCDD:MOV A , R6 ;由十六進(jìn)制轉(zhuǎn)化為十進(jìn)制 PUSH ACC MOV A , R7 PUSH ACC MOV A , R2 PUSH ACC CLR A MOV R3 , A MOV R4 , A MOV R5 , A MOV R2 , #10HHB3: MOV A , R7 ;將十六進(jìn)制中最高位移入進(jìn)位位中 RLC A MOV R7 , A MOV A , R6 RLC A MOV R6 , A MOV A , R5 ;每位數(shù)加上本身相當(dāng)于將這個(gè)數(shù)乘以2 ADDC A , R5 DA A MOV R5 , A MOV A , R4 ADDC A , R4 DA A ;十進(jìn)制調(diào)整 MOV R4 , A MOV A , R3 ADDC A , R3 DJNZ R2 , HB3 POP ACC MOV R2 , A POP ACC MOV R7 , A POP ACC MOV R6 , A RET ORG 0250HDISPLAY: MOV R0 , #30H MOV A , R5 ANL A , #0FH MOV @R0 , A MOV A , R5 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV R0 , #30H MOV R2 , #11111110BAGAIN: MOV A , R2 MOV P2 , A MOV A , @R0 MOV DPTR , #TAB MOVC A , @A+DPTR MOV P1 , A ACALL DELAY INC R0 MOV A , R2 RL A MOV R2 , A JB ACC.4 , AGAIN RETTAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段碼表DELY: MOV R1,#80D1: MOV R2,#100 DJNZ R2,$ DJNZ R1,D1 RET DELAY: MOV TMOD , #01H ;延時(shí)子程序 MOV TL0 , #0FEH MOV TH0 , #0FEH SETB TR0WAIT: JNB TF0 , WAIT CLR TF0 CLR TR0 RETDELY0: MOV R1, #200D3: MOV R2,#250 DJNZ R2,$ DJNZ R1,D3 RET END 該系統(tǒng)實(shí)際應(yīng)用廣泛。可用在生產(chǎn)線上產(chǎn)品數(shù)量統(tǒng)計(jì)、公交車智能計(jì)數(shù)問(wèn)候(需添加語(yǔ)音芯片)、超市內(nèi)人數(shù)統(tǒng)計(jì)等公共場(chǎng)合。另外,添加串口通信部分便可實(shí)現(xiàn)與PC數(shù)據(jù)交換的功能。 由于,實(shí)驗(yàn)簡(jiǎn)化了,剩下不少零件和資金,所以我們又做了兩項(xiàng)其他的實(shí)驗(yàn)。
標(biāo)簽: 單片機(jī) 紅外 控制系統(tǒng)設(shè)計(jì) 原理圖
上傳時(shí)間: 2013-12-22
上傳用戶:tangsiyun
單片機(jī)基礎(chǔ)知識(shí)單片機(jī)的外部結(jié)構(gòu):1、 DIP40雙列直插;2、 P0,P1,P2,P3四個(gè)8位準(zhǔn)雙向I/O引腳;(作為I/O輸入時(shí),要先輸出高電平)3、 電源VCC(PIN40)和地線GND(PIN20);4、 高電平復(fù)位RESET(PIN9);(10uF電容接VCC與RESET,即可實(shí)現(xiàn)上電復(fù)位)5、 內(nèi)置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6、 程序配置EA(PIN31)接高電平VCC;(運(yùn)行單片機(jī)內(nèi)部ROM中的程序)7、 P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機(jī)內(nèi)部I/O部件:(所為學(xué)習(xí)單片機(jī),實(shí)際上就是編程控制以下I/O部件,完成指定任務(wù))1、 四個(gè)8位通用I/O端口,對(duì)應(yīng)引腳P0、P1、P2和P3;2、 兩個(gè)16位定時(shí)計(jì)數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、 一個(gè)串行通信接口;(SCON,SBUF)4、 一個(gè)中斷控制器;(IE,IP)針對(duì)AT89C52單片機(jī),頭文件AT89x52.h給出了SFR特殊功能寄存器所有端口的定義。教科書的160頁(yè)給出了針對(duì)MCS51系列單片機(jī)的C語(yǔ)言擴(kuò)展變量類型。 C語(yǔ)言編程基礎(chǔ):1、 十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010B;0x6E為01101110。2、 如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。3、 ++var表示對(duì)變量var先增一;var—表示對(duì)變量后減一。4、 x |= 0x0f;表示為 x = x | 0x0f;5、 TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。6、 While( 1 ); 表示無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,也就是{;}第一章 單片機(jī)最小應(yīng)用系統(tǒng):?jiǎn)纹瑱C(jī)最小系統(tǒng)的硬件原理接線圖:1、 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2、 接晶體:X1(PIN18)、X2(PIN19)。注意標(biāo)出晶體頻率(選用12MHz),還有輔助電容30pF3、 接復(fù)位:RES(PIN9)。接上電復(fù)位電路,以及手動(dòng)復(fù)位電路,分析復(fù)位工作原理4、 接配置:EA(PIN31)。說(shuō)明原因。第二章 基本I/O口的應(yīng)用第三章 顯示驅(qū)動(dòng)第七章 串行接口應(yīng)用
標(biāo)簽: 單片機(jī)
上傳時(shí)間: 2013-10-30
上傳用戶:athjac
C語(yǔ)言編程基礎(chǔ):1. 十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010B;0x6E為01101110。 2. 如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。 3. ++var表示對(duì)變量var先增一;var—表示對(duì)變量后減一。 4. x |= 0x0f;表示為 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。 6. While( 1 ); 表示無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,也就是{;} 在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)1. #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P1.3 2. void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口 3. { 4. P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC 5. While( 1 ); //死循環(huán),相當(dāng) LOOP: goto LOOP; 6. } 注意:P0的每個(gè)引腳要輸出高電平時(shí),必須外接上拉電阻(如4K7)至VCC電源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P2.7 2. void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口 3. { 4. P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND 5. While( 1 ); //死循環(huán),相當(dāng) LOOP: goto LOOP; 6. } 在某引腳輸出方波編程方法:(比如P3.1引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P3.1 2. void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口 3. { 4. While( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句 5. { 6. P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC 7. P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND 8. } //由于一直為真,所以不斷輸出高、低、高、低……,從而形成方波 9. } 將某引腳的輸入電平取反后,從另一個(gè)引腳輸出:( 比如 P0.4 = NOT( P1.1) )
標(biāo)簽: 51單片機(jī)C語(yǔ)言 編程實(shí)例
上傳時(shí)間: 2013-11-02
上傳用戶:zengduo
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1