單片機(jī)原理及應(yīng)用- 習(xí)題及答案匯總 莊俊華 第1-8章 初識(shí)單片機(jī)- 單片機(jī)的接口技術(shù)_第1頁(yè)
單片機(jī)原理及應(yīng)用- 習(xí)題及答案匯總 莊俊華 第1-8章 初識(shí)單片機(jī)- 單片機(jī)的接口技術(shù)_第2頁(yè)
單片機(jī)原理及應(yīng)用- 習(xí)題及答案匯總 莊俊華 第1-8章 初識(shí)單片機(jī)- 單片機(jī)的接口技術(shù)_第3頁(yè)
單片機(jī)原理及應(yīng)用- 習(xí)題及答案匯總 莊俊華 第1-8章 初識(shí)單片機(jī)- 單片機(jī)的接口技術(shù)_第4頁(yè)
單片機(jī)原理及應(yīng)用- 習(xí)題及答案匯總 莊俊華 第1-8章 初識(shí)單片機(jī)- 單片機(jī)的接口技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩42頁(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章初識(shí)單片機(jī)6.微機(jī)某內(nèi)存單元中的內(nèi)容為C5H,若C5H表示的是一個(gè)無(wú)符號(hào)數(shù),寫(xiě)出該數(shù)在下列各數(shù)制中的表達(dá)式。(1)二進(jìn)制(2)八進(jìn)制(3)BCD(壓縮及非壓縮)(4)十進(jìn)制(1)11000010110001(2)30261(3)略。(4)12465-59第2章單片機(jī)的基本結(jié)構(gòu)1.MCS-51單片機(jī)的存儲(chǔ)器從物理結(jié)構(gòu)上和邏輯上分別可劃分幾個(gè)空間?物理結(jié)構(gòu):片內(nèi)數(shù)據(jù)存儲(chǔ)器,片外數(shù)據(jù)存儲(chǔ)器,片內(nèi)程序存儲(chǔ)器,片外程序存儲(chǔ)器邏輯:程序存儲(chǔ)器,片內(nèi)數(shù)據(jù)存儲(chǔ)器,片外數(shù)據(jù)存儲(chǔ)器2.程序存儲(chǔ)器中有幾個(gè)特殊功能單元?它們的作用是什么?0003H外部中斷0中斷服務(wù)程序入口地址000BH定時(shí)器/計(jì)數(shù)器0溢出中斷入口地址0013H外部中斷1入口地址001BH定時(shí)器/計(jì)數(shù)器1溢出中斷入口地址0023H串行口中斷入口地址3.在單片機(jī)開(kāi)機(jī)復(fù)位后,CPU使用的是哪個(gè)工作寄存器組?它們的地址是什么?CPU如何確定和改變當(dāng)前工作寄存器組?51單片機(jī)共有4組工作寄存器,地址范圍:00H~1FH。復(fù)位后,CPU使用第0組。地址為0001020304050607。改變PSW中的兩個(gè)位:RS1和RS0,可以改變當(dāng)前工作寄存器。如執(zhí)行:SETBRS1SETBRS0兩條指令之后,將使用第3組,R0~R7的地址將為:18H~1FH?!笆褂肦0~R7”進(jìn)行的操作,和“使用地址”進(jìn)行的操作,速度是相同的。4.為什么MCS-51單片機(jī)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共處同一個(gè)地址空間而不會(huì)發(fā)生總線沖突?編寫(xiě)代碼后,不管是匯編還是C代碼都會(huì)被編譯器,編譯為機(jī)器代碼,機(jī)器代碼中包括操作碼和操作數(shù)。而在讀取程序存儲(chǔ)器和讀寫(xiě)數(shù)據(jù)存儲(chǔ)器的內(nèi)容可以簡(jiǎn)單的說(shuō)成是操作數(shù).如果在操作程序存儲(chǔ)器和讀寫(xiě)數(shù)據(jù)存儲(chǔ)器的操作數(shù)相同.而操作碼不相同。這樣就不會(huì)發(fā)生總線沖突了.5.程序狀態(tài)字(PSW)的作用是什么?其常用狀態(tài)有哪些位?這些位的作用是什么?PSW是一個(gè)8位寄存器,用來(lái)存放指令執(zhí)行的有關(guān)狀態(tài)信息。PSW中各位的狀態(tài)信息一般是在指令執(zhí)行過(guò)程中形成的,也可以根據(jù)需要由用戶采用傳送指令加以改變。a。P(PSW.0):奇偶標(biāo)志位,用于表示累加器A中二進(jìn)制數(shù)值為1奇偶性。b。F1、F0(PSW.1、PSW.5):用戶標(biāo)志位,作為用戶自行定義的一個(gè)狀態(tài)標(biāo)志c。OV(PSW.2)溢出標(biāo)志位,用于指示算數(shù)運(yùn)算中是否有溢出d。RS1、RS0(PSW.4、PSW.3):工作寄存器選擇控制位,用戶通過(guò)軟件選擇CPU當(dāng)前工作的寄存器組。e。AC(PSW.6):輔助進(jìn)位標(biāo)志位,當(dāng)進(jìn)行加法或減法運(yùn)算并產(chǎn)生由第四位向高四位進(jìn)位或借位時(shí),AC被硬件置1,否則清零f。CY(PSW.7):進(jìn)位標(biāo)志位,用于表示加法或減法運(yùn)算時(shí)最高位是否有進(jìn)位或借位,如有則被置1。在進(jìn)行位操作時(shí),CY還可作為位累加器使用,相當(dāng)于累加器A。6.說(shuō)出8051單片機(jī)中下列引腳的功能:EA、PSEN、ALE、RD、WR。RD:讀外部數(shù)據(jù)信號(hào)WR:寫(xiě)外部存儲(chǔ)器信號(hào)PSEN:外部程序存儲(chǔ)器選通信號(hào)EA:內(nèi)外程序選擇信號(hào)ALE:址鎖存信號(hào)7.對(duì)于8031單片機(jī)而言,當(dāng)系統(tǒng)振蕩頻率為12MHz時(shí),一個(gè)機(jī)器周期為多長(zhǎng)時(shí)間?時(shí)鐘周期為時(shí)鐘脈沖的倒數(shù)=1/12us完成一個(gè)基本操作所需要的時(shí)間稱為機(jī)器周期。一個(gè)機(jī)器周期由若干個(gè)S周期(狀態(tài)周期)組成。自己去查8031單片機(jī)的機(jī)器周期由幾個(gè)狀態(tài)周期組成8.MCS-51單片機(jī)指令周期包含幾個(gè)機(jī)器周期?一個(gè)機(jī)器周期分成幾個(gè)狀態(tài)、幾個(gè)振蕩周期?若系統(tǒng)振蕩頻率為6MHz,執(zhí)行一條單機(jī)器周期指令需要多長(zhǎng)時(shí)間?若系統(tǒng)振蕩頻率為8MHz,執(zhí)行一條雙機(jī)器周期指令需要多長(zhǎng)時(shí)間?1)MCS-51單片機(jī)的時(shí)鐘周期:振蕩源信號(hào)經(jīng)二分頻后形成時(shí)鐘脈沖信號(hào),一個(gè)時(shí)鐘周期是振蕩周期的2倍MCS-51單片機(jī)的機(jī)器周期:完成一個(gè)基本操作所需的時(shí)間。MCS-51一個(gè)機(jī)器周期含6個(gè)時(shí)鐘周期MCS-51單片機(jī)的指令周期:是指CPU執(zhí)行一條指令所需要的時(shí)間。一個(gè)指令周期通常含有1or2or4個(gè)機(jī)器周期2)當(dāng)振蕩頻率為6MHZ時(shí),機(jī)器周期={(1/6)*12}us=2us;執(zhí)行一條最長(zhǎng)的指令的指令周期=4*機(jī)器周期=8us9.決定程序執(zhí)行順序的寄存器是哪個(gè)?它的作用是什么?它是幾位寄存器?它是不是特殊功能寄存器?決定程序執(zhí)行順序的寄存器是程序計(jì)數(shù)器PC;它是16位寄存器;不是特殊功能寄存器。第3章單片機(jī)的指令系統(tǒng)1.在程序狀態(tài)字PSW中,有哪幾個(gè)狀態(tài)位?有哪幾個(gè)控制位?程序狀態(tài)字PSW是8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息,PSW中各位狀態(tài)通常是在指令執(zhí)行的過(guò)程中自動(dòng)形成的,但也可以由用戶根據(jù)需要采用傳送指令加以改變。各個(gè)標(biāo)志位的意義如下:PSW.7(Cy):進(jìn)位標(biāo)志位。PSW.6(AC):輔助進(jìn)位標(biāo)志位,又稱為半進(jìn)位標(biāo)志位。PSW.5(F0):用戶標(biāo)志位。PSW.4、PSW.3(RS1和RS0):寄存器組選擇位。PSW.2(OV):溢出標(biāo)志位。PSW.1(空缺位):此位未定義。PSW.0(P):奇偶校驗(yàn)位應(yīng)該都是狀態(tài)位p3和p4可以控制寄存器選擇2.分別指出下列指令中的目的操作數(shù)的尋址方式。(1)寄存器尋址(2)立即數(shù)尋址(3)直接尋址(4)寄存器間接尋址(5)寄存器間接尋址(6)基址加變址寄存器間接尋址(7)相對(duì)尋址(8)位尋址3.試述指令“MOVA,#50H”與“MOVA,50H”的區(qū)別。區(qū)別有三條:(1) MOVAX,2000H對(duì)源操作數(shù)是立即尋址,而MOVAX.[2000H]對(duì)源操作數(shù)是直接尋址;(2) 前者功能是把立即數(shù)2000H送入AX中,而后者是把內(nèi)存2000H單元與2001H單元的內(nèi)容取出送入AX中;(3) 兩者的機(jī)器代碼不同,執(zhí)行速度也不同,前者執(zhí)行時(shí)間快,后者執(zhí)行時(shí)間慢。4.若堆棧指針的初始值為60H,DPTR=2000H,試問(wèn):(1)在“PUSHDPH”和“PUSHDPL”后的SP值是什么?(2)在“POPACC”又“POPACC”后的ACC值是什么?1.在執(zhí)行\(zhòng)USHDPH\和\USHDPL\指令后,SP(堆棧指針)的值會(huì)減2。因此,如果初始SP的值為60H,那么執(zhí)行這兩條指令后,SP的值將(1)在執(zhí)行\(zhòng)PUSHDPH\和\PUSHDPL\后,棧指針SP的值將減2,因?yàn)槊總€(gè)PUSH操作會(huì)將兩個(gè)字節(jié)的數(shù)據(jù)(DPH和DPL)壓棧。因此,SP的值將變?yōu)?EH。(2)在執(zhí)行\(zhòng)POP變?yōu)?EH。2.在執(zhí)行\(zhòng)POPACC\和\POPACC\指令后,ACC(累加器)的值將從堆棧中被彈出。根據(jù)提供的信息,這兩條指令會(huì)從堆棧中彈出兩個(gè)字節(jié),分別存儲(chǔ)在DPTR和ACC中。由于DP(1)在執(zhí)行\(zhòng)PUSHDPH\后,SP值會(huì)減小1,而DPH的值為高字節(jié)部分,即20H,因此SP值為5FH。在執(zhí)行\(zhòng)PUSHDPL\后,SP值再次減小1,并將DPL的值壓入堆ACC\和\POPACC\之后,ACC寄存器的值將依次恢復(fù)為彈出的兩個(gè)字節(jié)數(shù)據(jù)。具體的值取決于棧中存儲(chǔ)的數(shù)據(jù),無(wú)法得知具體的數(shù)值。TR的初始值為2000H,兩個(gè)字節(jié)的數(shù)據(jù)將從這個(gè)地址開(kāi)始被彈出,并存儲(chǔ)在ACC中。因此,如果DPTR的初始值為2000H,并且堆棧中存有兩個(gè)字節(jié)的數(shù)據(jù),那么執(zhí)行這兩條指令后,ACC的值將被更新為堆棧中存儲(chǔ)的兩字節(jié)數(shù)據(jù)的值。棧,即將低字節(jié)部分的值00H壓入堆棧。因此,最終的SP值為5EH。(2)在執(zhí)行\(zhòng)POPACC\后,SP值會(huì)增加1,將堆棧中的值彈出給ACC寄存器。由于之前將DPL的值壓入堆棧,所以ACC的值將變?yōu)?0H。然后執(zhí)行\(zhòng)POPACC\再次彈出堆棧中的值給ACC寄存器。由于之前將DPH的值壓入堆棧,所以ACC的值將變?yōu)?0H。5.已知:(20H)=25H,(25H)=10H,(P1)=0F0H,在執(zhí)行下列指令后,(A),(30H),(R1),(R0),(B),(P3)的內(nèi)容是什么?略。6.寫(xiě)出完成下列要求的指令。(1)將地址為4000H的片外數(shù)據(jù)存儲(chǔ)單元內(nèi)容送入地址為30H的片內(nèi)數(shù)據(jù)存儲(chǔ)單元中。(2)將地址為4000H的片外數(shù)據(jù)存儲(chǔ)單元內(nèi)容送入地址為3000H的片外數(shù)據(jù)存儲(chǔ)單元中。(3)將地址為0800H的程序存儲(chǔ)單元內(nèi)容送入地址為30H的片內(nèi)數(shù)據(jù)存儲(chǔ)單元中。(4)將片內(nèi)數(shù)據(jù)存儲(chǔ)器中地址為30H與40H的單元內(nèi)容交換。(5)將片內(nèi)數(shù)據(jù)存儲(chǔ)器中地址為30H單元的低4位與高4位交換。(1)ORG0000HMOVDPTR,#4000HMOVXA,@DPTRMOV30H,AEND(2)ORG0000HMOVDPTR,#4000HMOVXA,@DPTRMOVDPTR,#3000HMOVX@DPTR,AEND(3)ORG0000HMOVDPTR,#0800HMOVA,#00HMOVCA,@A+DPTRMOV30H,AEND(4)ORG0000HMOVA,30HXCHA,40HMOV30H,AEND(5)ORG0000HMOVA,30HSWAPAMOV30H,AEND7.將30H,31H存儲(chǔ)單元中的十進(jìn)制數(shù)與38H,39H存儲(chǔ)單元中的十進(jìn)制數(shù)進(jìn)行十進(jìn)制加法運(yùn)算,其和送入40H,41H存儲(chǔ)單元中。#include<REG52.>//片內(nèi)寄存器定義#include<absacc.>/***********mainC**************/voidmain(void){unsignedintsum;sum=DBYTE[0x30]+DBYTE[0x38];if((sum0x000f)>0x9)sum+=0x06;//個(gè)位十進(jìn)制調(diào)整if(sum>0x99)sum+=0x60;//十位十進(jìn)制調(diào)整DBYTE[0x40]=sum;//和低位字節(jié)DBYTE[0x41]=(sum>>8)+DBYTE[0x31]+DBYTE[0x39];//和高位字節(jié)if(DBYTE[0x41]>0x09)DBYTE[0x41]+=0x06;//百位十進(jìn)制調(diào)整while(1);/*程序在此死循環(huán)*/}8.將片外數(shù)據(jù)存儲(chǔ)器的2600H存儲(chǔ)單元與2610H存儲(chǔ)單元中的數(shù)據(jù)分別進(jìn)行十六進(jìn)制加法、十進(jìn)制加法運(yùn)算,其和送入2620H單元中,請(qǐng)寫(xiě)出完成上述要求的指令。偽指令:

1.

LDA

2600H

將2600H存儲(chǔ)單元的數(shù)據(jù)加載到累加器

2.

ADDA

2610H

;將2610H存儲(chǔ)單元的數(shù)據(jù)加到累加器上

3.

STA

2620H

;將累加器中的結(jié)果存儲(chǔ)到2620H存儲(chǔ)單元中

指令示例:

1.

LDAA

2600H

;將2600H存儲(chǔ)單元的數(shù)據(jù)加載到累加器

2.

ADCA

2610H

;將2610H存儲(chǔ)單元的數(shù)據(jù)加到累加器上

3.

STAA

2620H

;將累加器中的結(jié)果存儲(chǔ)到2620H存儲(chǔ)單元中

9.已知:(30H)=55H,(31H)=0AAH,分別寫(xiě)出完成下列要求的指令,并寫(xiě)出32H存儲(chǔ)單元的內(nèi)容。(1)(30H)^(31H)→(32H)。(2)(30H)V(31H)→(32H)。(3)(30H)+(31H)→(32H)。(1)(30H)&(31H)→(32H);DBYTE[0x32]=DBYTE[0x30]&DBYTE[0x31];0x00(2)(30H)|(31H)→(32H);DBYTE[0x32]=DBYTE[0x30]|DBYTE[0x31];0xff(3)(30H)^(31H)→(32H);DBYTE[0x32]=DBYTE[0x30]^DBYTE[0x31];0xff10.什么指令可以改變程序計(jì)數(shù)器PC的值?1.分支指令:分支指令可以根據(jù)條件改變PC的值,使程序跳轉(zhuǎn)到不同的代碼塊。常見(jiàn)的分支指令有條件跳轉(zhuǎn)指令(如if語(yǔ)句)和無(wú)條件跳轉(zhuǎn)指令(如goto語(yǔ)句)。2.跳轉(zhuǎn)指令:跳轉(zhuǎn)指令可以直接修改PC的值,使程序無(wú)條件地跳轉(zhuǎn)到指定的地址。3.子程序調(diào)用指令:子程序調(diào)用指令將當(dāng)前PC的值保存在棧中,然后將PC設(shè)置為子程序的起始地址。當(dāng)子程序執(zhí)行完畢后,PC會(huì)被還原為之前保存的值,使程序繼續(xù)執(zhí)行。4.中斷指令:中斷指令可以改變PC的值,使程序跳轉(zhuǎn)到斷處理程序。中斷指令通常由外部事件觸發(fā),例如硬件設(shè)備的狀態(tài)改變或者系統(tǒng)調(diào)用。11.當(dāng)8051單片機(jī)沒(méi)有外擴(kuò)RAM時(shí),將永遠(yuǎn)不會(huì)用到什么指令?為什么?當(dāng)8051單片機(jī)沒(méi)有外擴(kuò)RAM時(shí),將永遠(yuǎn)不會(huì)用到訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器(DSEG)的指令。這是因?yàn)?051單片機(jī)的內(nèi)部RAM被劃分為兩個(gè)部分:數(shù)據(jù)存儲(chǔ)器(DSEG)和片內(nèi)數(shù)據(jù)存儲(chǔ)器(ISEG)。數(shù)據(jù)存儲(chǔ)器(DSEG)用于存儲(chǔ)外設(shè)的數(shù)據(jù)和程序中的可變數(shù)據(jù),而片內(nèi)數(shù)據(jù)存儲(chǔ)器(ISEG)用于存儲(chǔ)程序的指令和只讀數(shù)據(jù)。外擴(kuò)RAM是用于擴(kuò)展數(shù)據(jù)存儲(chǔ)器(DSEG)的一種方式。當(dāng)8051單片機(jī)沒(méi)有外擴(kuò)RAM時(shí),沒(méi)有可用的外部數(shù)據(jù)存儲(chǔ)器(DSEG),因此無(wú)法訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器。因此,涉及外部數(shù)據(jù)存儲(chǔ)器(DSEG)的指令將永遠(yuǎn)不會(huì)被使用。這些指令包括MOVX指令用于讀寫(xiě)外擴(kuò)RAM中的數(shù)據(jù)和相關(guān)的地址尋址指令。12.在MCS-51單片機(jī)指令系統(tǒng)中,沒(méi)有不帶借位標(biāo)志的減法指令,那么如何實(shí)現(xiàn)不帶借位的減法指令呢?在MCS-51單片機(jī)指令系統(tǒng)中,確實(shí)沒(méi)有專門的不帶借位標(biāo)志的減法指令。但是,你仍然可以通過(guò)其他方式實(shí)現(xiàn)不帶借位的減法操作。一種常見(jiàn)的做法是使用補(bǔ)碼來(lái)實(shí)現(xiàn)減法。下面是一個(gè)基本的步驟:1.將被減數(shù)和減數(shù)轉(zhuǎn)換為補(bǔ)碼形式。-被減數(shù)的補(bǔ)碼表示可以通過(guò)直接將其二進(jìn)制表示取反,然后加1來(lái)得到。-減數(shù)的補(bǔ)碼表示是它的負(fù)數(shù)的二進(jìn)制表示。2.將兩補(bǔ)碼相加(使用加法指令)。3.忽略最高位的進(jìn)位。-如果最高位的進(jìn)位為1,表示結(jié)果為負(fù)數(shù);否則為正數(shù)。4.將得到的和的補(bǔ)碼形式轉(zhuǎn)換為原碼,即得到減法的結(jié)果。需要注意的是,雖然這種方法可以實(shí)現(xiàn)不帶借位的減法操作,但在實(shí)際的程序設(shè)計(jì)中,我們通常會(huì)使用其他更高級(jí)的編程語(yǔ)言和算法來(lái)處理減法運(yùn)算,以提高效率和代碼可讀性。第4章匯編語(yǔ)言程序設(shè)計(jì)1.簡(jiǎn)述MCS-51單片機(jī)指令的基本格式。M.CS-51單片機(jī)的匯編指令格式如下:標(biāo)號(hào)、操作碼、目的操作數(shù)、源操作數(shù)、注釋、操作碼表示該指令所實(shí)現(xiàn)的操作功能,一般由2~5個(gè)英文字母表示。例如ORL,ADD,LCALI等。操作數(shù)表示參與操作的數(shù)據(jù)來(lái)源和目的單元。操作數(shù)可以是一個(gè)立即數(shù),也可以是一個(gè)內(nèi)存單元或者是一個(gè)寄存器單元。操作碼和第一個(gè)操作數(shù)之間一般用一個(gè)或幾個(gè)空格隔開(kāi),而操作數(shù)與操作數(shù)之間用逗號(hào)隔開(kāi)。操作數(shù)可以有1個(gè),2個(gè),3個(gè)或沒(méi)有。如果需要對(duì)指令進(jìn)行注釋說(shuō)明的話,在最后一個(gè)操作數(shù)后加一個(gè)分號(hào),分號(hào)后面是注釋。2.說(shuō)明下列符號(hào)的意義,并指出它們之間的區(qū)別。(1)R0與@R0(2)A←R1與A←(R1)(3)DPTR與@DPTR(4)30H與#30H答:(1)RO是工作寄存器。當(dāng)RS1RSO(在PSW中)=0時(shí)R0的直接地址是00H;當(dāng)工作寄存器區(qū)為1區(qū)時(shí)RO的直接地址是08H;工作寄存器區(qū)為2區(qū)時(shí)RO的直接地址是10H;工作寄存器區(qū)為3區(qū)時(shí)RO的直接地址是18H;@R0表示間接尋址,即以RO中內(nèi)容為地址的存儲(chǔ)單元中的數(shù)據(jù)。@RO的尋址范圍是內(nèi)RAM00H~FFH和外RAM00H~FFH;(2)A←-R1表示將R1中的內(nèi)容傳送至A。A←(R1)表示將以R1中內(nèi)容為地址的存儲(chǔ)單元中的數(shù)據(jù)傳送至A。(3)DPTR是16位數(shù)據(jù)指針,是特殊功能寄存器。@DPTR是用DPTR間接尋址,尋址范圍是外RAM0000H~FFFFH。3.什么是尋址方式?80C51單片機(jī)指令系統(tǒng)有幾種尋址方式?試述各種尋址方式所能訪問(wèn)的存儲(chǔ)空間。80C51單片機(jī)的尋址方式有七種。即:寄存器尋址直接尋址、寄存器間接尋址、立即尋址、基址寄存器加變址寄存器變址尋址、相對(duì)尋址和位尋址。這些尋址方式所對(duì)應(yīng)的寄存器和存儲(chǔ)空間如下表所示。4.若RO=11H,(11H)=22H,(33H)=44H,寫(xiě)出執(zhí)行下列指令后的結(jié)果。(1)MOVA,RO(2)MOVA,@R0(3)MOVA,33H(4)MOVA,#33H5.若A=78H,R0=34H,(34H)=DCH,(56H)=ABH,求分別執(zhí)行下列指令后A和C中的數(shù)據(jù)。(1)ADDA,R0(2)ADDCA,@R0(3)ADDA,56H(4)ADDA,#56H(1)A=ACH,Cy=0(2)A=54H,Cy=1(3)A=23,Cy=1(4)A=CE,Cy=06.被減數(shù)保存在31H和30H中(高位在前),減數(shù)保存在33H和32H中,試編寫(xiě)其減法程序,差值存入31H和30H中,借位存入32H中。7.若A=B7H=10110111B,R0=5EH=0101110B,(5EH)=D9H=11011001B,(D6H)=ABH=10101011B,分別寫(xiě)出執(zhí)行下列各條指令后的結(jié)果。(1)ANLA,R0(2)ANLA,@R0(3)ANLA,#D6H(4)ANLA,D6H(5)ANLD6H,A(6)ANLD6H,#D6H[解析]anl屬51系列單片機(jī)的系統(tǒng)指令,進(jìn)行“邏輯與"運(yùn)算,anlA,RO將0101110B與10110111B逐位取與,并將其結(jié)果送至寄存器A中.至于結(jié)果,可通過(guò)相關(guān)軟件編譯連接運(yùn)行得到,手工計(jì)算亦可!8.若A=01111001B,C=0,分別寫(xiě)出執(zhí)行下列各條指令后的結(jié)果。(1)RLA(2)RCLA(3)RRA(4)RRCARLA;A=11110010B,Cy=0(不變)RLCA;A=11110010B,Cy0(刷新)RRAA=10111100B,Cy=0(不變)RRCAA=00111100B,Cy=1(刷新)9.編寫(xiě)程序,將位存儲(chǔ)單元33H與44H中的內(nèi)容互換。10.試編寫(xiě)程序,將片外數(shù)據(jù)存儲(chǔ)區(qū)的2000H~20FFH數(shù)據(jù)塊傳送到3000H~30FFH區(qū)域。11.使用循環(huán)轉(zhuǎn)移指令編寫(xiě)延時(shí)30ms的延時(shí)子程序(設(shè)單片機(jī)的晶振頻率為12MHz)。12.試編寫(xiě)延時(shí)1min子程序(設(shè)fse=6MHz)。13.從片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)的30H存儲(chǔ)單元開(kāi)始存放著一組無(wú)符號(hào)數(shù),這組無(wú)符號(hào)數(shù)的個(gè)數(shù)存放在31H中。試編寫(xiě)程序,找出其中最小的數(shù),并將其存入30H中。14.計(jì)算片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)的50H~57H單元中數(shù)的算術(shù)平均值,結(jié)果存放在5AH中。15.已知累加器A中的2位十六進(jìn)制數(shù),試編寫(xiě)程序?qū)⑵滢D(zhuǎn)換為ASCII,并存入21H和20H中。16.試編寫(xiě)程序,根據(jù)R2(不大于85)中的數(shù)值實(shí)現(xiàn)以下散轉(zhuǎn)功能:第5章單片機(jī)的C語(yǔ)言程序設(shè)計(jì)1.哪些變量類型是51系列單片機(jī)直接支持的?C51編譯器支持的數(shù)據(jù)類型有:位型(bit)無(wú)符號(hào)字符型(unsignedchar)、有符號(hào)字符型(signedchar)、無(wú)符號(hào)整型(unsignedint)、有符號(hào)整型(signedint)、無(wú)符號(hào)長(zhǎng)整型(unsignedlong)、有符號(hào)長(zhǎng)整型(signedlong)、浮點(diǎn)型(float)和指針型等。2.簡(jiǎn)述C51語(yǔ)言的數(shù)據(jù)存儲(chǔ)類型。8051單片機(jī)存儲(chǔ)區(qū)可分為內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)、外部數(shù)據(jù)存儲(chǔ)區(qū)以及程序存儲(chǔ)區(qū)。8051單片機(jī)內(nèi)部的數(shù)據(jù)存儲(chǔ)區(qū)是可讀寫(xiě)的,8051派生系列最多可有256字節(jié)的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū),其中低128字節(jié)可直接尋址[1]高128字節(jié)(從080到0xFF)只能間接尋址[2]從20H開(kāi)始的16字節(jié)可位尋址。內(nèi)部數(shù)據(jù)區(qū)可分為3個(gè)不同的存儲(chǔ)類型:data、idata和bdata。外部數(shù)據(jù)區(qū)也是可讀寫(xiě)的,訪問(wèn)外部數(shù)據(jù)區(qū)比訪問(wèn)內(nèi)部數(shù)據(jù)區(qū)慢,因?yàn)橥獠繑?shù)據(jù)區(qū)是通過(guò)數(shù)據(jù)指針加載地址來(lái)間接訪問(wèn)的。C51提供兩種不同的存儲(chǔ)類型xdata和pdata訪問(wèn)外部數(shù)據(jù)。code存儲(chǔ)類型訪問(wèn)程序存儲(chǔ)區(qū)。程序存儲(chǔ)區(qū)是只能讀不能寫(xiě)。程序存儲(chǔ)區(qū)可能在8051單片機(jī)內(nèi)部或者在外部或者內(nèi)外都有,這由8051單片機(jī)的硬件決定。C51提供了code存儲(chǔ)類型來(lái)訪問(wèn)程序存儲(chǔ)區(qū)。每個(gè)變量可以明確地分配到指定的存儲(chǔ)空間,對(duì)內(nèi)部數(shù)據(jù)存儲(chǔ)器的訪問(wèn)比對(duì)外部數(shù)據(jù)存儲(chǔ)器的訪問(wèn)快許多,因此應(yīng)當(dāng)將頻繁使用的變量放在內(nèi)部存儲(chǔ)器[3]中,而把較少使用的變量放在外部存儲(chǔ)器中。3.簡(jiǎn)述C51語(yǔ)言對(duì)51系列單片機(jī)特殊功能寄存器的定義方法。特殊功能寄存器型是C51擴(kuò)展的數(shù)據(jù)類型,用于訪問(wèn)MCS-51單片機(jī)中的特殊功能寄存器數(shù)據(jù)。它分為sfr和sfr16兩種類型。sfr為字節(jié)型特殊功能寄存器類型,占一個(gè)字節(jié)單元,利用它可訪問(wèn)單片機(jī)內(nèi)部的所有特殊功能寄存器,sfr16為雙字節(jié)型特殊功能寄存器類型,占兩個(gè)字節(jié)單元,利用它可訪問(wèn)單片機(jī)內(nèi)部占用兩個(gè)字節(jié)的特殊功能寄存器,如定時(shí)器TO和T1。C51中特殊功能寄存器的訪問(wèn)必須先用sfr和sfr16進(jìn)行聲例如:sfrPI=0x90,即:約定P1為P1端明??谠谄瑑?nèi)的寄存器,在后面的語(yǔ)句編程中可通過(guò)對(duì)P1賦值,實(shí)現(xiàn)對(duì)P1端口的賦值。如用P1=255對(duì)P1端口的所有引腳置ldquo;1rdquo。4.簡(jiǎn)述C51語(yǔ)言對(duì)51系列單片機(jī)片內(nèi)I/O接口和片外擴(kuò)展的I/O接口的定義方法。C51對(duì)51單片機(jī)片內(nèi)I/0口的定義方法是將片內(nèi)I/口看成SFR。C51對(duì)51單片機(jī)片外I/0的訪問(wèn)有兩種比較常用的訪問(wèn)方法:(1)絕對(duì)宏C51編譯器提供了一組宏定義來(lái)對(duì)51系列單片機(jī)的code、data、pdata和adata空間進(jìn)行絕對(duì)尋址112)_at_關(guān)鍵字可以使用關(guān)鍵字_at_對(duì)指定的存儲(chǔ)器空間的絕對(duì)地址進(jìn)行訪問(wèn),一般格式如下:[存儲(chǔ)器類型]數(shù)據(jù)類型說(shuō)明符變量名_at_地址常數(shù)5.簡(jiǎn)述C51語(yǔ)言對(duì)51系列單片機(jī)位變量的定義方法。答:除了通常的C數(shù)據(jù)類型外,C51編譯器支持bit數(shù)據(jù)類型。采用關(guān)鍵字“bit”進(jìn)行定義。如:bitdirection_bit;/*將direction_bit定義為位變量*/bitlock_pointer;/*將lock_pointer定義為位變量*/bitdisplay_invers;/*將display_invers定義為位變量*/6.C51語(yǔ)言和TurboC語(yǔ)言的數(shù)據(jù)類型和存儲(chǔ)類型有哪些異同?答:C51增加了位變量,取消了布爾變量。7.C51語(yǔ)言的data、bdata、idata有什么區(qū)別?data:直接尋址111片內(nèi)數(shù)據(jù)區(qū)的低128字節(jié)bdata:片內(nèi)數(shù)據(jù)區(qū)的位尋址區(qū)0x20~02f,16字節(jié),也可字節(jié)訪問(wèn)。idata:間接尋址[2]片內(nèi)數(shù)據(jù)區(qū)的256字節(jié)。8.C51語(yǔ)言中的中斷函數(shù)和一般的函數(shù)有什么不同?答:C51編譯器允許用C51創(chuàng)建中斷服務(wù)函數(shù)中斷函數(shù)是由中斷系統(tǒng)自動(dòng)調(diào)用的。中斷函數(shù)的定義格式為函數(shù)類型函數(shù)名interruptnusingn其中interrupt和using為關(guān)鍵字interrupt后面的n為中斷源的編號(hào)即中斷號(hào)using后面的n所選擇的寄存器組取值范圍為0~3定義中斷函數(shù)時(shí),using是一個(gè)選項(xiàng)可以省略不用。如果不用using選項(xiàng),則由編譯器選擇一個(gè)寄存器組作為絕對(duì)寄存器組8051的中斷過(guò)程通過(guò)使用interrupt關(guān)鍵字和中斷號(hào)(0~31)來(lái)實(shí)現(xiàn),中斷號(hào)告訴編譯器中斷函數(shù)的入口地址。9.C51語(yǔ)言采用什么形式對(duì)絕對(duì)地址進(jìn)行訪問(wèn)?答:絕對(duì)地址的訪問(wèn)包括片內(nèi)RAM、片外RAM及I/O的訪問(wèn)。C51提供了兩種比較常用的訪問(wèn)絕對(duì)地址的方法。(1)絕對(duì)宏C51編譯器提供了一組宏定義來(lái)對(duì)51系列單片機(jī)的code、data、pdata和xdata空間進(jìn)行絕對(duì)尋址。在程序中,用“#include<absacc.h>”即可使用其中聲明的宏來(lái)訪問(wèn)絕對(duì)地址,包括CBYTEXBYTE、PWORD、DBYTE、CWORDXWORD、PBYTE、DWORD具體使用方法參考absacc.h頭文件。其中CBYTE以字節(jié)形式對(duì)code區(qū)尋址;CWORD以字形式對(duì)code區(qū)尋址;DBYTE以字節(jié)形式對(duì)data區(qū)尋址;DWORD以字形式對(duì)data區(qū)尋址;XBYTE以字節(jié)形式對(duì)data區(qū)尋址;XWORD以字形式對(duì)adata區(qū)尋址PBYTE以字節(jié)形式對(duì)pdata區(qū)尋址;PWORD以字形式對(duì)pdata區(qū)尋址;(2)_at_關(guān)鍵字可以使用關(guān)鍵字_at對(duì)指定的存儲(chǔ)器空間的絕對(duì)地址進(jìn)行訪問(wèn),一般格式如下[存儲(chǔ)器類型]數(shù)據(jù)類型說(shuō)明符變量名_a_地址常數(shù);其中,存儲(chǔ)器類型為C51能識(shí)別的數(shù)據(jù)類型,如省略則按存儲(chǔ)器模式規(guī)定的默認(rèn)存儲(chǔ)器類型確定變量的存儲(chǔ)器區(qū)域;數(shù)據(jù)類型為C51支持的數(shù)據(jù)類型;地址常數(shù)用于指定變量的絕對(duì)地址,必須位于有效的存儲(chǔ)器空間之內(nèi);使用_at_定義的變量必須為全局變量。10.按照給定的數(shù)據(jù)類型和存儲(chǔ)類型,寫(xiě)出下列變量的說(shuō)明形式。(1)在data區(qū)定義字符變量val1。(2)在idata區(qū)定義整型變量val2。(3)在xdata區(qū)定義無(wú)符號(hào)字符型數(shù)組val3。(4)在xdata區(qū)定義一個(gè)指向char類型的指針px。(5)定義可位尋址變量flag。(6)定義特殊功能寄存器變量P3。(1)chardatavall;(2)intidataval2;(3)unsignedcharxdataval3;(4)char*xdatapx;(5)bitflag;(6)sfrP3=0xB011.簡(jiǎn)述C51語(yǔ)言的基本運(yùn)算、數(shù)組、指針、函數(shù)、流程控制語(yǔ)句。C51語(yǔ)言是一種嵌入式C語(yǔ)言,常用于單片機(jī)開(kāi)發(fā)中。下面我簡(jiǎn)要介紹C51語(yǔ)言的基本運(yùn)算、數(shù)組、指針、函數(shù)和流程控制語(yǔ)句。1.基本運(yùn)算:C51語(yǔ)言支持常見(jiàn)的基本運(yùn)算,包括加法、減法、乘法、除法等。它還支持邏輯運(yùn)算符(與、或、非)和比較運(yùn)算符(等于、大于、小于等)。2.數(shù)組:在C51中,數(shù)組是一組相同類型的元素的集合??梢酝ㄟ^(guò)下標(biāo)訪問(wèn)數(shù)組元素,數(shù)組下標(biāo)從0開(kāi)始。例如,intarr[5];定義了一個(gè)包含5個(gè)整數(shù)的數(shù)組。3.指針:指針是存儲(chǔ)內(nèi)存地址的變量。使用指針可以直接對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行讀寫(xiě)操作。在C51中,可以使用指針來(lái)訪問(wèn)數(shù)組元素,動(dòng)態(tài)分配內(nèi)存等。4.函數(shù):在C51中,函數(shù)是一段可重復(fù)使用的代碼塊,用于執(zhí)行特定的任務(wù)??梢酝ㄟ^(guò)函數(shù)來(lái)組織和管理代碼。函數(shù)可以有參數(shù)和返回值,使用關(guān)鍵字\void\表示無(wú)返回值的函數(shù)。5.流程控制語(yǔ)句:C51支持常見(jiàn)的流程控制語(yǔ)句,包括條件語(yǔ)句(if-else語(yǔ)句)、循環(huán)語(yǔ)句(for、while、do-while語(yǔ)句)和選擇語(yǔ)句(switch語(yǔ)句)。這些語(yǔ)句可以根據(jù)條件執(zhí)行不同的代碼塊,實(shí)現(xiàn)程序的控制流程??偨Y(jié)起來(lái),C51語(yǔ)言的基本運(yùn)算包括常見(jiàn)的數(shù)學(xué)運(yùn)算和邏輯運(yùn)算;數(shù)組是一組相同類型的元素的集合;指針用于訪問(wèn)內(nèi)存中的數(shù)據(jù);函數(shù)用于組織和管理代碼;流程控制語(yǔ)句可以根據(jù)條件執(zhí)行不同的代碼塊。以上是對(duì)C51語(yǔ)言基本特性的簡(jiǎn)要介紹。第6章單片機(jī)的功能部件1.什么是中斷?什么是中斷源?(1)中斷是指CPU在正常執(zhí)行序時(shí),由于內(nèi)外部時(shí)間或程序預(yù)先安排引起CPU暫時(shí)終止執(zhí)行現(xiàn)行程序,轉(zhuǎn)而去執(zhí)行中斷服務(wù)子程序,執(zhí)行完畢能自動(dòng)返回到被中斷的程序繼續(xù)執(zhí)行。(2)中斷源是能引起中斷的外部設(shè)備或內(nèi)部原因2.什么是中斷優(yōu)先級(jí)?什么是中斷嵌套?中斷響應(yīng)的優(yōu)先次序是中斷優(yōu)先級(jí)。當(dāng)一個(gè)中斷處理的過(guò)程中又響應(yīng)了更高優(yōu)先級(jí)的中斷是中斷嵌套。處理中斷優(yōu)先級(jí)的原則是先高級(jí)中斷,后低級(jí)中斷。同級(jí)的按自然優(yōu)先級(jí)排序。3.單片機(jī)引用中斷技術(shù)后,有些什么優(yōu)點(diǎn)?中斷系統(tǒng)是指為實(shí)現(xiàn)中斷而設(shè)置的各種硬件與軟件,包括中斷控制邏輯及相應(yīng)管理中斷的指令。中斷系統(tǒng)具有下列功能。(1)能響應(yīng)中斷、處理中斷與從中斷返回。(2)能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)。(3)高級(jí)中斷源能中斷低級(jí)的中斷處理。中斷技術(shù)除了能解決快速CPU與中、慢速外設(shè)速度不匹配的矛盾以提高主機(jī)的工作效率之外,在實(shí)現(xiàn)分時(shí)操作、實(shí)時(shí)處理、故障處理、多機(jī)連接以及人機(jī)聯(lián)系等方面均有廣泛的應(yīng)用。4.簡(jiǎn)述中斷處理流程。(1)中斷請(qǐng)求。當(dāng)中斷源需要CPU對(duì)它進(jìn)行服務(wù)時(shí),就會(huì)產(chǎn)生一個(gè)中斷請(qǐng)求信號(hào)。對(duì)外部中斷源,這個(gè)信號(hào)加至CPU的中斷請(qǐng)求輸入引腳,形成對(duì)CPU的中斷請(qǐng)求;對(duì)內(nèi)部中斷源,則將CPU內(nèi)部特定事件的發(fā)生或特定指令的執(zhí)行作為對(duì)CPU的中斷請(qǐng)求。(2)中斷響應(yīng)。CPU接受中斷請(qǐng)求就稱為中斷響應(yīng)。當(dāng)CPU執(zhí)行到每條指令的最后一個(gè)時(shí)鐘周期時(shí),就去檢測(cè)是否有中斷請(qǐng)求。如果有中斷請(qǐng)求,對(duì)內(nèi)部中斷源,CPU會(huì)無(wú)條件響應(yīng);對(duì)外部中斷源,只有在滿足響應(yīng)條件時(shí),CPU才會(huì)響應(yīng)其中斷請(qǐng)求。(3)斷點(diǎn)保護(hù)。當(dāng)CPU響應(yīng)某個(gè)中斷時(shí),就會(huì)轉(zhuǎn)到相應(yīng)中斷源的服務(wù)程序上。為了使CPU在完成中斷服務(wù)后能返回原程序繼續(xù)執(zhí)行,需要將原程序被中斷處的相關(guān)信息保存到堆棧中。對(duì)8086(88)CPU,斷點(diǎn)處的IP、CS和標(biāo)志寄存器內(nèi)容由硬件進(jìn)行自動(dòng)保護(hù),其他信息的保護(hù)則由中斷服務(wù)程序來(lái)完成。(4)中斷源識(shí)別。在計(jì)算機(jī)系統(tǒng)中,往往有多個(gè)中斷源,當(dāng)有中斷請(qǐng)求時(shí),CPU就需要確定具體的中斷源,以便對(duì)其進(jìn)行相應(yīng)的服務(wù)。在8086(88)中斷系統(tǒng)中,由中斷源自身提供其編碼,供CPU進(jìn)行識(shí)別。(5)中斷服務(wù)。一般地,每一個(gè)中斷源都有其相應(yīng)的服務(wù)程序,即中斷程序。當(dāng)CPU識(shí)別中斷源后,就會(huì)取得其中斷程序的入口地址,并轉(zhuǎn)入該中斷程序,進(jìn)行相應(yīng)的中斷服務(wù)。中斷服務(wù)是整個(gè)中斷處理的核心。(6)斷點(diǎn)恢復(fù)。當(dāng)CPU完成相應(yīng)的中斷服務(wù)后,利用中斷服務(wù)程序,將原來(lái)在中斷程序中用軟件保存的斷點(diǎn)信息從堆棧彈出,恢復(fù)為中斷前的內(nèi)容。(7)中斷返回。在中斷程序的最后,通過(guò)執(zhí)行一條中斷返回指令,將IP、CS及標(biāo)志寄存器的內(nèi)容從堆棧中彈出,使CPU返回到中斷前的程序,并從斷點(diǎn)處繼續(xù)執(zhí)行。5.MCS-5單片機(jī)允許有哪幾個(gè)中斷源?各中斷源的中斷程序入口地址分別是什么?答:8051單片機(jī)一共有5個(gè)中斷源。外部中斷兩個(gè)INT0和INT,當(dāng)其為低電平時(shí)向CPU提出中斷請(qǐng)求,有兩種觸發(fā)方式:電平觸發(fā)和邊沿觸發(fā)[2]。兩個(gè)定時(shí)/計(jì)數(shù)器[3]T0和T1,當(dāng)計(jì)數(shù)滿或定時(shí)時(shí)間到了可向CPU提出中斷請(qǐng)求,由軟件設(shè)置開(kāi)啟和關(guān)閉這兩個(gè)中斷。串行口的發(fā)送/接收時(shí)數(shù)據(jù)完成后,〔置位TI/RI〕,向CPU提出中斷請(qǐng)求。各中斷程序的入口地址是:MCS-51系列單片機(jī)共有5個(gè)中斷源及入口地址表:外部中斷0定時(shí)計(jì)數(shù)器中斷0外部中斷1定時(shí)計(jì)數(shù)器中斷1串行口中斷0003H000BH0013H001BH0023H。6.MCS-51單片機(jī)有幾個(gè)優(yōu)先級(jí)?如何設(shè)置優(yōu)先級(jí)?MCS-51系列單片機(jī)有5個(gè)中斷源,分別是外部中斷0、定時(shí)器0、外部中斷1、定時(shí)器1、串行口。它們的優(yōu)先級(jí)別通過(guò)寄存器IP實(shí)現(xiàn)。7.若采用INT1,下降沿觸發(fā),中斷優(yōu)先級(jí)為最高級(jí),試寫(xiě)出相關(guān)程序。以下是一個(gè)采用INT1中斷,下降沿觸發(fā)的程序,其中中斷優(yōu)先級(jí)設(shè)置為最高級(jí):```C#include<stdio.h>#include<reg51.h>//定義中斷優(yōu)先級(jí)#defineINT1_PRIORITY0voidINT1_ISR()__interrupt(INT1_VECTOR)__using(0){//在這里處理INT1中斷//...}voidmain(){//設(shè)置INT1中斷為下降沿觸發(fā)方式IT1=0;//INT1的類型控制位,設(shè)為0表示下降沿觸發(fā)EX1=1;//使能INT1中斷//設(shè)置中斷優(yōu)先級(jí)IP=(IP&~0x02)|(INT1_PRIORITY<<1);//中斷優(yōu)先級(jí)最高為0,次高為1EA=1;//全局中斷使能while(1){//主程序的其他操作//...}}```注意,以上程序是用C語(yǔ)言寫(xiě)的,假設(shè)你的目標(biāo)平臺(tái)是基于8051單片機(jī)的。具體的硬件連接和功能實(shí)現(xiàn)可能因平臺(tái)而異,請(qǐng)根據(jù)實(shí)際情況進(jìn)行調(diào)整和修改。8.在晶振頻率為12MHz,采用12分頻方式,LED每隔1s閃爍4次,試寫(xiě)出相關(guān)程序,使用中斷技術(shù),TO定時(shí),在方式1下實(shí)現(xiàn)。以下是一種在方式1下使用中斷技術(shù)實(shí)現(xiàn)LED每隔1秒閃爍4次的程序示例:```c#include<reg51.h>//定義晶振頻率#defineFREQ12000000UL//定義分頻系數(shù)#defineDIV_FACTOR12//定義計(jì)數(shù)器初值#defineINIT_VALUE(65536-(FREQ/DIV_FACTOR/12))//定義閃爍次數(shù)和閃爍間隔#defineBLINK_TIMES4#defineBLINK_INTERVAL1000//以毫秒為單位//定義中斷計(jì)數(shù)器volatileunsignedintinterrupt_counter=0;中斷服務(wù)函數(shù)voidtimer0_interrupt()interrupt1using1{TH0=INIT_VALUE>>8;//重新加載初值的高8位TL0=INIT_VALUE&0xFF;//重新加載初值的低8位interrupt_counter++;//計(jì)數(shù)器遞增if(interrupt_counter==BLINK_TIMES*2){interrupt_counter=0;//復(fù)位計(jì)數(shù)器//控制LED狀態(tài),每隔1秒閃爍4次if(P1&0x01){P1&=0xFE;//將P1.0引腳置低}else{P1|=0x01;//將P1.0引腳置高}}}voidmain(){//初始化定時(shí)器0TMOD=0x01;//設(shè)置定時(shí)器0為方式1TH0=INIT_VALUE>>8;//設(shè)置初值的高8位TL0=INIT_VALUE&0xFF;//設(shè)置初值的低8位TR0=1;//啟動(dòng)定時(shí)器0ET0=1;//允許定時(shí)器0中斷EA=1;//打開(kāi)總中斷開(kāi)關(guān)while(1){//主循環(huán)中可以進(jìn)行其他操作}}```請(qǐng)注意,以上代碼是基于8051系列單片機(jī)的,使用的是C語(yǔ)言進(jìn)行編程。程序中使用了定時(shí)器0的方式1來(lái)產(chǎn)生中斷,并通過(guò)中斷計(jì)數(shù)器來(lái)控制LED的閃爍次數(shù)和閃爍間隔。具體實(shí)現(xiàn)中涉及的端口和引腳可根據(jù)實(shí)際硬件進(jìn)行修改。9.使用中斷的方法,設(shè)計(jì)1個(gè)秒脈沖發(fā)生器。10.MCS-51單片機(jī)內(nèi)部有哪幾個(gè)定時(shí)/計(jì)數(shù)器?89C51內(nèi)部有2個(gè)定時(shí)器/計(jì)數(shù)器,定時(shí)器0有4種工作方式,定時(shí)器1有3種工作方式。11.單片機(jī)定時(shí)/計(jì)數(shù)器有哪兩種功能?當(dāng)其作為計(jì)數(shù)器使用時(shí),對(duì)外部計(jì)數(shù)脈沖有何要求?定時(shí)時(shí)間和晶振頻率和定時(shí)常數(shù)TH和TL有關(guān)。外部計(jì)數(shù)脈沖的最高頻率為晶振的1/24。12.TMOD的各位控制功能是什么?略。13.TCON的高4位控制功能是什么?TCON(TimingController)是用于液晶顯示器的一種芯片,它主要負(fù)責(zé)控制像素點(diǎn)的刷新和顯示時(shí)間序列。關(guān)于\高4位控制功能\這一術(shù)語(yǔ),可能根據(jù)具體的背景和上下文有不同的含義。但是一般來(lái)說(shuō),TCON芯片的高4位控制功能通常指的是其在控制顯示器時(shí)所具備的4個(gè)高位控制信號(hào)。這些高位控制信號(hào)的功能可以根據(jù)具體的設(shè)計(jì)和需求而不同,常見(jiàn)的功能包括:1.亮度調(diào)節(jié):通過(guò)調(diào)節(jié)高4位控制信號(hào),控制顯示器的整體亮度,以達(dá)到合適的顯示效果。2.對(duì)比度控制:高4位控制信號(hào)中的某幾位可能用于控制顯示器的對(duì)比度,以調(diào)整圖像的清晰度和色彩飽和度。3.色溫調(diào)節(jié):通過(guò)高4位控制信號(hào)的不同組合,可以調(diào)節(jié)顯示器的色溫,使得顯示的圖像具有合適的色彩效果。4.背光控制:高4位控制信號(hào)有時(shí)也用于控制顯示器背光燈的亮度和開(kāi)關(guān),以實(shí)現(xiàn)節(jié)能和調(diào)節(jié)顯示器整體亮度的目的。需要注意的是,具體的高4位控制功能會(huì)因不同型號(hào)和設(shè)計(jì)而有所不同。因此,在使用任何特定的TCON芯片時(shí),請(qǐng)參考相關(guān)文檔和規(guī)格說(shuō)明,以了解具體的高4位控制功能及其應(yīng)用方式。14.在晶振頻率為12MHz時(shí),采用12分頻,要求在P1.0引腳輸出周期為150μs的方波;P1.1引腳輸出周期為1ms的方波,其占空比為1:2(高電平時(shí)間短,低電平時(shí)間長(zhǎng)),試用定時(shí)器的方式0、方式1編程。15.在晶振頻率為12MHz,采用12分頻方式,要求定時(shí)1min,試編寫(xiě)將TO和T1合用實(shí)現(xiàn)定時(shí)1min的程序。以下是使用T0和T1合用實(shí)現(xiàn)定時(shí)1分鐘的程序代碼:```#include<8051.h>voidmain(){TMOD=0x05;//設(shè)置T0為模式1,T1為模式0TH0=0x0B;//設(shè)置T0計(jì)數(shù)初值TL0=0xDC;//設(shè)置T0計(jì)數(shù)初值,定時(shí)1msTH1=0x3C;//設(shè)置T1計(jì)數(shù)初值TL1=0xB0;//設(shè)置T1計(jì)數(shù)初值,定時(shí)1sTR0=1;//啟動(dòng)T0TR1=1;//啟動(dòng)T1while(1){while(TF0!=1){}//等待T0定時(shí)完成TF0=0;//清除T0溢出標(biāo)志TH0=0x0B;//重新加載T0計(jì)數(shù)初值TL0=0xDC;//重新加載T0計(jì)數(shù)初值,定時(shí)1mswhile(TF1!=1){}//等待T1定時(shí)完成TF1=0;//清除T1溢出標(biāo)志TH1=0x3C;//重新加載T1計(jì)數(shù)初值TL1=0xB0;//重新加載T1計(jì)數(shù)初值,定時(shí)1s//在這里執(zhí)行定時(shí)1分鐘后要執(zhí)行的操作}}```這段代碼使用了8051單片機(jī)的T0和T1計(jì)時(shí)器來(lái)實(shí)現(xiàn)定時(shí)1分鐘的功能。T0采用12分頻方式來(lái)進(jìn)行計(jì)時(shí),每個(gè)循環(huán)定時(shí)1ms。T1則在T0計(jì)時(shí)器循環(huán)10次后才溢出,實(shí)現(xiàn)1s的定時(shí)。通過(guò)在主循環(huán)中不斷檢測(cè)T0和T1的溢出標(biāo)志來(lái)實(shí)現(xiàn)定時(shí)1分鐘的功能。16.串行通信有什么特點(diǎn)?它是在一根線上以數(shù)據(jù)位(bit)為單位與I/0設(shè)備或通信設(shè)備之間傳送信息,在這根傳輸線上既傳輸數(shù)據(jù)信息,又傳輸聯(lián)絡(luò)控制信息,數(shù)據(jù)都占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度通信雙方要約定相同的波特率才能實(shí)現(xiàn)通信,由于受波特率上限的約束,串行通信的速度是有限度的。串行通信具有通信電路簡(jiǎn)單,成本低,適用于遠(yuǎn)距離通信。17.異步通信與同步通信的主要區(qū)別是什么?同步通信和異步通信的主要區(qū)別是前者有公共時(shí)鐘,總線上的所有設(shè)備按統(tǒng)一的時(shí)序,統(tǒng)一的傳輸周期進(jìn)行信息傳輸,通信雙方按約定好的時(shí)序聯(lián)絡(luò)。后者沒(méi)有公共時(shí)鐘,沒(méi)有固定的傳輸周期,采用應(yīng)答方式通信,具體的聯(lián)絡(luò)方式有不互鎖、半互鎖和全互鎖三種。不互鎖方式通信雙方?jīng)]有相互制約關(guān)系:半互鎖方式通信雙方有簡(jiǎn)單的制約關(guān)系:全互鎖方式通信雙方有完全的制約關(guān)系。其中全互鎖通信可靠性最高。18.何謂單工、半雙工、全雙工?根據(jù)通信雙方的分工和信號(hào)傳輸方向可將通信分為三種方式:單工、半雙工與全雙工在計(jì)算機(jī)網(wǎng)絡(luò)11]中主要采用雙工方式,其中:局域網(wǎng)12]采用半雙工方式,城域網(wǎng)3]和廣域網(wǎng)4采用全雙年方式。1.單工(Simplex)方式:通信雙方設(shè)備中發(fā)送器與接收器分工明確,只能在由發(fā)送器向接收器的單一固定方向上傳送數(shù)據(jù)采用單工通信的典型發(fā)送設(shè)備如早期計(jì)算機(jī)的讀卡器,典型的接收設(shè)備如打印機(jī)。2.半雙工(HalfDuplex)方式:通信雙方設(shè)備既是發(fā)送器,也是接收器,兩臺(tái)設(shè)備可以相互傳送數(shù)據(jù),但某一時(shí)刻則只能向一個(gè)方向傳送數(shù)據(jù)。例如,步話機(jī)是半雙工設(shè)備,因?yàn)樵谝粋€(gè)時(shí)刻只能有一方說(shuō)話。3全雙工(FullDuplex)方式:通信雙方設(shè)備既是發(fā)送器,也是接收器,兩臺(tái)設(shè)備可以同時(shí)在兩個(gè)方向上傳送數(shù)據(jù)。例如,電話是全雙工設(shè)備,因?yàn)殡p方可同時(shí)說(shuō)話。19.MCS-51單片機(jī)的串行接口內(nèi)部結(jié)構(gòu)是怎樣的?MCS-51單片機(jī)的存儲(chǔ)器組織采用哈佛結(jié)構(gòu),即分為相互獨(dú)立的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩大空間結(jié)構(gòu)。程序存儲(chǔ)器空間由內(nèi)部ROM存儲(chǔ)器和外部ROM存儲(chǔ)器組成。數(shù)據(jù)存儲(chǔ)器也分為內(nèi)部RAM存儲(chǔ)器和外部RAM存儲(chǔ)器。內(nèi)部RAM存儲(chǔ)器又可劃分為工作寄存器區(qū)、位尋址區(qū)和一般數(shù)據(jù)RAM區(qū),MCS-51單片機(jī)的特殊功能寄存器也實(shí)現(xiàn)在內(nèi)部RAM區(qū)。20.串行通信主要由哪幾個(gè)功能寄存器控制?串行通信通常需要使用幾個(gè)功能寄存器來(lái)進(jìn)行控制。常見(jiàn)的功能寄存器包括:1.數(shù)據(jù)寄存器(DataRegister):用于存儲(chǔ)要發(fā)送或接收的數(shù)據(jù)。2.狀態(tài)寄存器(StatusRegister):用于記錄通信狀態(tài)信息,如傳輸完成標(biāo)志、錯(cuò)誤標(biāo)志等。3.控制寄存器(ControlRegister):用于設(shè)置和控制通信參數(shù),例如波特率、數(shù)據(jù)位數(shù)、校驗(yàn)位等。4.時(shí)鐘寄存器(ClockRegister):用于存儲(chǔ)通信時(shí)鐘頻率,以確保通信的數(shù)據(jù)傳輸速度。這些功能寄存器在串行通信中起到了重要的作用,通過(guò)對(duì)這些寄存器的設(shè)置和讀取,可以實(shí)現(xiàn)數(shù)據(jù)的傳輸和控制。21.MCS-51單片機(jī)串行接口有哪幾種工作方式?對(duì)應(yīng)的幀格式是怎樣的?答:有4種工作方式。工作方式0為同步移位寄存器[2]方式該方式以8位數(shù)據(jù)為一幀,沒(méi)有起始位和停止位,先發(fā)送或接收最低位。工作方式1為8位異步通信[3]方式適合于點(diǎn)對(duì)點(diǎn)的異步通信。這種方式規(guī)定發(fā)送或接收一幀信息為10位,即1個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1個(gè)停止位(1),先發(fā)送或接收最低位。數(shù)據(jù)傳輸率[4]可以改變工作方式2和3為9位異步通信方式。每幀數(shù)據(jù)均為11位1位起始位08位數(shù)據(jù)位(先低位)1位可程控的第9位數(shù)據(jù)和1位停止位。22.MCS-51單片機(jī)串行接口在不同的工作方式下,如何確定波特率?23.簡(jiǎn)述串行接口在方式0和方式1下的發(fā)送與接收工作過(guò)程。在串行接口中,方式0是指同步串行通信,而方式1是指異步串行通信。在方式0下的發(fā)送工作過(guò)程如下:1.發(fā)送數(shù)據(jù):發(fā)送方將數(shù)據(jù)按照一定的順序拆分成一系列位,然后將這些位逐個(gè)發(fā)送出去。2.定時(shí)接收:接收方按照發(fā)送方約定的時(shí)鐘信號(hào)來(lái)接收和解碼數(shù)據(jù)。接收方每次在時(shí)鐘的上升或下降沿采樣接收到的數(shù)據(jù)位,以恢復(fù)原始數(shù)據(jù)。3.檢驗(yàn)數(shù)據(jù):接收方使用一些校驗(yàn)算法來(lái)驗(yàn)證數(shù)據(jù)的準(zhǔn)確性。常見(jiàn)的校驗(yàn)方式包括奇偶校驗(yàn)、循環(huán)冗余校驗(yàn)(CRC)等。4.如果數(shù)據(jù)通過(guò)了檢驗(yàn),接收方完成了數(shù)據(jù)接收過(guò)程。否則,接收方可以要求發(fā)送方重新發(fā)送數(shù)據(jù)。在方式1下的發(fā)送工作過(guò)程如下:1.發(fā)送方準(zhǔn)備數(shù)據(jù):發(fā)送方將要發(fā)送的數(shù)據(jù)組織成幀,并添加一些同步和控制信息。2.幀同步:發(fā)送方發(fā)送幀同步信號(hào),以告知接收方即將傳輸一幀數(shù)據(jù)。3.傳輸數(shù)據(jù):發(fā)送方逐位或逐字節(jié)地發(fā)送數(shù)據(jù)幀。接收方根據(jù)發(fā)送方發(fā)送的位或字節(jié)的順序來(lái)接收數(shù)據(jù)。4.幀結(jié)束:發(fā)送方發(fā)送幀結(jié)束信號(hào),以告知接收方數(shù)據(jù)幀的結(jié)束。5.檢驗(yàn)數(shù)據(jù):接收方可以使用校驗(yàn)算法來(lái)驗(yàn)證數(shù)據(jù)的準(zhǔn)確性。6.如果數(shù)據(jù)通過(guò)了檢驗(yàn),接收方完成了數(shù)據(jù)接收過(guò)程。否則,接收方可以要求發(fā)送方重新發(fā)送數(shù)據(jù)幀。需要注意的是,串行接口的工作過(guò)程可能會(huì)根據(jù)具體的協(xié)議和設(shè)備的要求有所不同。上述描述只是一般情況下的工作過(guò)程,具體實(shí)現(xiàn)可能存在差異。24.簡(jiǎn)述多機(jī)系統(tǒng)通信的工作原理。答案:當(dāng)主機(jī)選中與其通信的從機(jī)后,只有該從機(jī)能夠與主機(jī)通信,其他從機(jī)不能與主機(jī)進(jìn)行數(shù)據(jù)交換,而只能準(zhǔn)備接收主機(jī)發(fā)來(lái)的地址幀。上述要求是通過(guò)SCON寄存器1]中的SM2和TB8來(lái)實(shí)現(xiàn)的。當(dāng)主機(jī)發(fā)送地址幀時(shí)使TB8=1,發(fā)送數(shù)據(jù)幀時(shí)使TB8=0,TB8是發(fā)送的一幀數(shù)據(jù)的第9位,從機(jī)接收后將第9位數(shù)據(jù)作為RB8,這樣就知道主機(jī)發(fā)來(lái)的這一幀數(shù)據(jù)是地址還是數(shù)據(jù)。另外,當(dāng)一臺(tái)從機(jī)的SM2=0時(shí),可以接收地址或數(shù)據(jù),而當(dāng)SM2時(shí)只能接收地址,這就能實(shí)現(xiàn)主機(jī)與所選從機(jī)之間的單獨(dú)通信。第7章單片機(jī)的系統(tǒng)擴(kuò)展1.什么是單片機(jī)的最小系統(tǒng)?單片機(jī)的最小系統(tǒng)就是使單片機(jī)能夠?qū)崿F(xiàn)簡(jiǎn)單運(yùn)行的最少的原件的組合晶振,至于大小由你單片機(jī)時(shí)鐘周期1]要求而決定(用于計(jì)時(shí),與兩個(gè)電容并聯(lián)使用,電容大小復(fù)位電路[2]由你的晶振決定,一般用22pF)。(用于復(fù)位)。電源(用于供電,一般用電腦的USB口供電)。燒制程序的口(可用串口配合MAX232配合使用,也可以做個(gè)并口輸入,這個(gè)要根據(jù)你使用單片機(jī)的種類決定,比如ATC可用并口,STC一般只用串口輸入等等)。單片機(jī)(Microcontrollers)是一種集成電路4]芯片,是采用超大規(guī)模集成電路[5]技術(shù)把具有數(shù)據(jù)處理同能力的中央處理器I7CPU、隨機(jī)存儲(chǔ)器[8IRAM、只讀存儲(chǔ)器9ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器[10等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時(shí)的4位、8位單片機(jī),發(fā)展到現(xiàn)在的300M的高速單片機(jī)。有人它天情九則任門花,務(wù)達(dá)研究委酸歷價(jià)。2.簡(jiǎn)述存儲(chǔ)器擴(kuò)展的一般方法。答:存儲(chǔ)器芯片與單片機(jī)擴(kuò)展連接具有共同的規(guī)律。即不論何種存儲(chǔ)器芯片,其引腳都呈三總線結(jié)構(gòu),與單片機(jī)連接都是三總線對(duì)接。另外,電源線接電源線,地線接地線。3.什么是部分譯碼?什么是全譯碼?它們各有什么特點(diǎn)?用于形成什么信號(hào)?答:部分譯碼就是存儲(chǔ)器芯片的地址線與單片機(jī)系統(tǒng)的地址線順次相接后,剩余的高位地址線僅用一部分參加譯碼。部分譯碼使存儲(chǔ)器芯片的地址空間有重疊,造成系統(tǒng)存儲(chǔ)器空間的浪費(fèi)。全譯碼就是存儲(chǔ)器芯片的地址線與單片機(jī)系統(tǒng)的地址線順次相接后,剩余的高位地址線全部參加譯碼。這種譯碼方法中存儲(chǔ)器芯片的地址空間是唯一確定的,但譯碼電路要相對(duì)復(fù)雜。譯碼形成存儲(chǔ)器芯片的片選信號(hào)線CE。4.采用部分譯碼為什么會(huì)出現(xiàn)地址重疊情況?它對(duì)存儲(chǔ)器容量有何影響?答:部分譯碼就是存儲(chǔ)器芯片的地址線與2單片機(jī)系統(tǒng)的地址線順次相接后,剩余的高位地址線僅用一部分參加譯碼。參加譯碼的地址線對(duì)于選中某一存儲(chǔ)器芯片有一個(gè)確定的狀態(tài),而與不參加譯碼的地址線無(wú)關(guān)。也可以說(shuō),只要參加譯碼的地址線處于對(duì)某一存儲(chǔ)器芯片的選中狀態(tài),不參加譯碼的地址線的任意狀態(tài)都可以選中該芯片。正因?yàn)槿绱?部分譯碼使存儲(chǔ)器芯片的地址空間有重疊,造成系統(tǒng)存儲(chǔ)器空間減少。5.存儲(chǔ)器芯片的引腳與容量有什么關(guān)系?容量(Q)與地址線數(shù)目(N)滿足關(guān)系式:=2N。6.MCS-51單片機(jī)的外圍設(shè)備是通過(guò)什么方式被訪問(wèn)的?MCS-51單片機(jī)擴(kuò)展的外部設(shè)備與片外數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址,即外部設(shè)備占用片外數(shù)據(jù)存儲(chǔ)器的地址空間。按片外數(shù)據(jù)存儲(chǔ)器的訪問(wèn)方式訪問(wèn)。7.使用2764(8KB×8位)芯片通過(guò)部分譯碼擴(kuò)展24KB程序存儲(chǔ)器,畫(huà)出硬件連接圖,指明各芯片的地址空間范圍。8.使用6264(8KB×8位)芯片通過(guò)全譯碼擴(kuò)展24KB數(shù)據(jù)存儲(chǔ)器,畫(huà)出硬件連接圖,指明各芯片的地址空間范圍。9.試用一片74LS373芯片擴(kuò)展一個(gè)并行輸入接口,畫(huà)出硬件連接圖,指出相應(yīng)的控制命令。10.用8255A芯片擴(kuò)展并行I/O接口,實(shí)現(xiàn)把8個(gè)開(kāi)關(guān)的狀態(tài)通過(guò)8個(gè)發(fā)光二極管顯示出來(lái),畫(huà)出硬件連接圖,用匯編語(yǔ)言和C語(yǔ)言分別編寫(xiě)相應(yīng)的程序。11.畫(huà)出8155芯片與8051單片機(jī)的連接圖,要求8155芯片的命令/狀態(tài)寄存器、PA接口寄存器、PB接口寄存器、PC接口寄存器、定時(shí)/計(jì)數(shù)器低8位寄存器、定時(shí)/計(jì)數(shù)器高6位加2位輸出方式寄存器的地址為B000H~B005H;其內(nèi)部RAM的地址為A000H~A0FFH;用74LS138譯碼器產(chǎn)生8155芯片的片選信號(hào)。略。第8章單片機(jī)的接口技術(shù)1.鍵盤按結(jié)構(gòu)形式分為哪兩種?鍵盤的結(jié)構(gòu)形式一般有兩種:獨(dú)立式鍵盤與矩陣式鍵盤。2.對(duì)鍵盤操作時(shí),如何去除抖動(dòng)信號(hào)?消除抖動(dòng)信號(hào)通常有兩種方法:硬件消抖和軟件消抖。硬件消抖是通過(guò)在按鍵開(kāi)關(guān)電路中加入硬件消抖電路來(lái)消除抖動(dòng)信號(hào)的。硬件消抖電路一般采用R-S觸發(fā)器或單穩(wěn)態(tài)電路,如圖8-2所示。在圖8-2中,經(jīng)過(guò)R-S觸發(fā)器消抖后,按鍵開(kāi)關(guān)電路的輸出信號(hào)就為標(biāo)準(zhǔn)的矩形波。軟件消抖是利用延時(shí)來(lái)跳過(guò)抖動(dòng)過(guò)程的。單片機(jī)判斷有按鍵開(kāi)關(guān)被按下后,先執(zhí)行一段大于10ms的延時(shí)程序,再去判斷按下的按鍵開(kāi)關(guān)是哪一個(gè),從而消除前沿抖動(dòng)信號(hào)的影響。對(duì)于后沿抖動(dòng)信號(hào),單片機(jī)只要在接收一個(gè)按鍵開(kāi)關(guān)被按下的信號(hào)后,經(jīng)過(guò)一定時(shí)間再去檢測(cè)有無(wú)按鍵開(kāi)關(guān)被按下的信號(hào),這樣就自然跳過(guò)后沿抖動(dòng)信號(hào)了。抖動(dòng)信號(hào)的消除往往采用軟件消抖的方式。3.共陰極和共陽(yáng)極LED有何區(qū)別?LED有哪兩種顯示方式?發(fā)光上沒(méi)有任何區(qū)別.唯一區(qū)別的是使用的方法共陰極的所有顯示段的陰極都是連在一起的,接地,用陽(yáng)極來(lái)驅(qū)動(dòng)共陽(yáng)極的正好相反,所有顯示段的陽(yáng)極都是連在一起的,接VCC用陰極來(lái)驅(qū)動(dòng)。4.試用DAC0832芯片,編程產(chǎn)生1個(gè)周期為100ms方波輸出信號(hào)。使用DAC0832芯片產(chǎn)生一個(gè)周期為100ms的方波輸出信號(hào),需要進(jìn)行以下步驟:1.確保DAC0832芯片連接到正確的引腳和電路。一般來(lái)說(shuō),該芯片包含8位數(shù)模轉(zhuǎn)換器,需要與微控制器或其他輸出設(shè)備連接。2.配置你的微控制器或其他控制設(shè)備的GPIO引腳作為DAC0832的數(shù)據(jù)線(通常為8位),并將其連接到DAC0832的引腳。3.使用你所使用的編程語(yǔ)言和開(kāi)發(fā)環(huán)境,編寫(xiě)代碼來(lái)控制DAC0832片。4.首先,設(shè)置DAC0832的寄存器以選擇通道和電壓范圍。你可以通過(guò)寫(xiě)入合適的數(shù)值(0-255)到DAC0832的控制寄存器來(lái)實(shí)現(xiàn)。5.然后,創(chuàng)建一個(gè)循環(huán),在循環(huán)中以適當(dāng)?shù)念l率切換DAC0832的數(shù)值,以產(chǎn)生一個(gè)周期為100ms(即10Hz)的方波。下面是一個(gè)基于Arduino開(kāi)發(fā)板的示例代碼片段,用于控制DAC0832芯片生成方波輸出信號(hào):```c#defineDAC0832_CS_PIN10//連接到DAC0832的CS引腳#defineDAC0832_DATA_PIN11//連接到DAC0832的數(shù)據(jù)引腳voidsetup(){pinMode(DAC0832_CS_PIN,OUTPUT);pinMode(DAC0832_DATA_PIN,OUTPUT);}voidloop(){//設(shè)置通道和電壓范圍digitalWrite(DAC0832_CS_PIN,LOW);//選擇DAC0832芯片shiftOut(DAC0832_DATA_PIN,DAC0832_CS_PIN,MSBFIRST,0b00000000);digitalWrite(DAC0832_CS_PIN,HIGH);//取消選擇DAC0832芯片//產(chǎn)生方波輸出信號(hào)digitalWrite(DAC0832_CS_PIN,LOW);//選擇DAC0832芯片shiftOut(DAC0832_DATA_PIN,DAC0832_CS_PIN,MSBFIRST,0b11111111);//設(shè)置最大輸出digitalWrite(DAC0832_CS_PIN,HIGH);//取消選擇DAC0832芯片delay(50);//保持高電平狀態(tài),用50ms延遲時(shí)間控制小步進(jìn)digitalWrite(DAC0832_CS_PIN,LOW);//選擇DAC0832芯片shiftOut(DAC0832_DATA_PIN,DAC0832_CS_PIN,MSBFIRST,0b00000000);//設(shè)置最小輸出digitalWrite(DAC0832_CS_PIN,HIGH);//取消選擇DAC0832芯片delay(50);//保持低電平狀態(tài),用50ms延遲時(shí)間控制小步進(jìn)}```5.I2c總線器件地址與器件內(nèi)單元地址的含義是什么?I2C(Inter-IntegratedCircuit)總線器件地址和器件內(nèi)單元地址是用來(lái)識(shí)別和尋址I2C總線上連接的器件和器件內(nèi)部單元的信息。I2C總線是一種多主設(shè)備和多從設(shè)備共享的串行通信總線。每個(gè)連接到I2C總線上的器件都需要一個(gè)唯一的地址來(lái)進(jìn)行通信。這個(gè)地址是由一些特定的位(通常是7位或10位)組成的。在I2C總線上,通常會(huì)有多個(gè)器件共享同一個(gè)地址,但通過(guò)器件內(nèi)部的多個(gè)單元地址來(lái)區(qū)分不同的器件內(nèi)部單元。器件地址是用來(lái)唯一標(biāo)識(shí)連接到I2C總線上的每個(gè)器件的。在7位地址模式下,總線上可以有最多128個(gè)不同的器件地址(0x00至0x7F)。在10位地址模式下,總線上可以有最多1024個(gè)不同的器件地址。當(dāng)主設(shè)備向器件發(fā)送讀寫(xiě)命令時(shí),起始傳輸字節(jié)包含要訪問(wèn)的目標(biāo)器件地址。器件內(nèi)單元地址用于區(qū)分一個(gè)器件內(nèi)部的不同單元。同一個(gè)器件內(nèi)部的不同功能單元,例如存儲(chǔ)器、控制器、傳感器等,可以通過(guò)不同的器件內(nèi)單元地址進(jìn)行選擇和訪問(wèn)。這些地址通常由器件內(nèi)部的寄存器或配置位來(lái)進(jìn)行設(shè)置??傊琁2C總線器件地址用于在總線上唯一標(biāo)識(shí)連接的器件,而器件內(nèi)單元地址用于在器件內(nèi)選擇和訪問(wèn)不同的單元。利用這些地址,主設(shè)備可以向目標(biāo)器件發(fā)出讀寫(xiě)命令,并與其進(jìn)行通信。6.在一對(duì)I2C總線上可否掛接多個(gè)I2C總線器件?為什么?是的,可以在一條I2C總線上連接多個(gè)I2C器件。這是因?yàn)镮2C總線使用了多主機(jī)的架構(gòu),其中一個(gè)設(shè)備充當(dāng)主機(jī)(通常是微控制器或處理器),而其他設(shè)備則作為從屬設(shè)備連接到總線上。I2C總線使用兩根信號(hào)線:時(shí)鐘線(SCL)和數(shù)據(jù)線(SDA)。每個(gè)I2C器件都有一個(gè)唯一的地址,通過(guò)這個(gè)地址能夠與主機(jī)通信。當(dāng)主機(jī)要與某個(gè)從屬設(shè)備進(jìn)行通信時(shí),它會(huì)向總線上發(fā)送所需設(shè)備的地址,并在下一個(gè)時(shí)鐘脈沖上發(fā)送數(shù)據(jù)。從屬設(shè)備在收到其地址后會(huì)響應(yīng)主機(jī),并進(jìn)行數(shù)據(jù)交換。這種方式使得多個(gè)I2C設(shè)備可以在同一總線上共享。當(dāng)連接多個(gè)I2C設(shè)備時(shí),需要確保每個(gè)設(shè)備都有獨(dú)一無(wú)二的地址,以便主機(jī)能夠正確地與每個(gè)設(shè)備通信。一些常見(jiàn)的I2C器件(如傳感器、存儲(chǔ)器、顯示器等)通常會(huì)提供選擇引腳,用于配置其地址。需要注意的是,在連接多個(gè)I2C設(shè)備時(shí),總線上的電容負(fù)載也會(huì)增加。在設(shè)計(jì)電路時(shí),需要考慮總線負(fù)載的限制,以確保數(shù)據(jù)傳輸?shù)目煽啃???梢酝ㄟ^(guò)適當(dāng)布線和使用合適的電平轉(zhuǎn)換器來(lái)解決負(fù)載

溫馨提示

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