單片機原理及應用- 習題及答案匯總 莊俊華 第1-8章 初識單片機- 單片機的接口技術_第1頁
單片機原理及應用- 習題及答案匯總 莊俊華 第1-8章 初識單片機- 單片機的接口技術_第2頁
單片機原理及應用- 習題及答案匯總 莊俊華 第1-8章 初識單片機- 單片機的接口技術_第3頁
單片機原理及應用- 習題及答案匯總 莊俊華 第1-8章 初識單片機- 單片機的接口技術_第4頁
單片機原理及應用- 習題及答案匯總 莊俊華 第1-8章 初識單片機- 單片機的接口技術_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

1.

LDA

2600H

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

2.

ADDA

2610H

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

3.

STA

2620H

;將累加器中的結果存儲到2620H存儲單元中

指令示例:

1.

LDAA

2600H

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

2.

ADCA

2610H

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

3.

STAA

2620H

;將累加器中的結果存儲到2620H存儲單元中

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

溫馨提示

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

評論

0/150

提交評論