單片機教材習題解答_第1頁
單片機教材習題解答_第2頁
單片機教材習題解答_第3頁
單片機教材習題解答_第4頁
單片機教材習題解答_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及接口技術教材習題全部解答第 1 章 緒論1-1 解答:第一臺計算機的研制目的是為了計算復雜的數學難題。它的特點是:計算機字長為12 位,運算速度為 5 000 次/s ,使用 18 800 個電子管, 1 500 個繼電器,占地面積為150 m2,重達 30 t ,其造價為100 多萬美元。它的誕生,標志著人類文明進入了一個新的歷史階段。1-2 解答:單片微型計算機簡稱單片機。一個完整的單片機芯片至少有中央處理器( cpu ) 、隨機存儲器 (ram ) 、只讀存儲器(rom ) 、定時 / 計數器及i/o 接口等部件。1-3 解答:單片機的發(fā)展大致經歷了四個階段:第一階段( 19

2、701974 年) ,為 4 位單片機階段;第二階段( 19741978 年) ,為低中檔8 位單片機階段;第三階段( 19781983 年) ,為高檔8 位單片機階段;第四階段( 1983 年至今),為 8 位單片機鞏固發(fā)展階段及16 位單片機、 32 位單片機推出階段。1-4 解答:intel公司的 mcs-48系列、 mcs-51系列、 mcs-96系列產品;motorola公司的 6801、6802、6803、6805、 68hc11系列產品;zilog公司的 z8、super8 系列產品;atmel 公司的 at89系列產品;fairchild公司的 f8 和 3870 系列產品;t

3、i 公司的 tms7000系列產品;ns公司的 ns8070系列產品;nec公司的 com87 ( pd7800 )系列產品;national公司的 mn6800系列產品;hitachi公司的 hd6301 、hd63l05 、hd6305 。1-5 解答:(1)8031/8051/8751三種型號, 稱為 8051 子系列。 8031 片內沒有rom ,使用時需在片外接eprom。8051 片內含有 4kb的掩模 rom , 其中的程序是生產廠家制作芯片時燒制的。8751 片內含有 4kb的 eprom,用戶可以先用紫外線擦除器擦除,然后再利用開發(fā)機或編程器寫入新的程序。(2)8032a/8

4、052a/8752a 是 8031/8051/8751的增強型,稱為8052 子系列。其中片內rom和 ram的容量比8051 子系列各增加一倍,另外,增加了一個定時/ 計數器和一個中斷源。(3)80c31/80c51/87c51bh 是 8051 子系列的chmos 工藝芯片, 80c32/80c52/87c52 是 8052 子系列的 chmos 工藝芯片,兩者芯片內的配置和功能兼容。1-6 解答:8052 子系列片內rom 和 ram 的容量比8051 子系列各增加一倍,另外,增加了一個定時/ 計數器和一個中斷源。1-7 解答:at89 系列單片機是美國atmel 公司的 8 位 fla

5、sh 單片機產品。它的最大特點是在片內含有flash存儲器, 在系統(tǒng)的開發(fā)過程中可以十分容易地進行程序的修改,使開發(fā)調試更為方便。at89 系列單片機以 8031 為內核,是與8051 系列單片機兼容的系列。1-8 解答:高檔型單片機有at89s51 、 at89s52 、 at89s53和 at89s8252等型號,其中 at89s51有 4kb可下載 flash存儲器, at89s52 、at89s8252有 8kb可下載 flash 存儲器, at89s53有 12kb可下載 flash 存儲器。第 2 章 mcs-51系列單片機的結構及原理2-1 解答:mcs-51 單片機由8 個部件

6、組成:中央處理器(cpu ) ,片內數據存儲器(ram ) ,片內程序存儲器(rom/eprom) ,輸入 / 輸出接口( i/o 口,分為 p0 口、 p1 口、 p2口和 p3口) ,可編程串行口,定時/ 計數器,中斷系統(tǒng)及特殊功能寄存器(sfr ) 。中央處理器( cpu ) :單片機的核心部分,它的作用是讀入和分析每條指令,根據每條指令的功能要求,控制各個部件執(zhí)行相應的操作。片內數據存儲器(ram ) :存放各項操作的臨時數據。片內程序存儲器(rom/eprom) :存放單片機運行所需的程序。輸入 / 輸出接口( i/o 口) :單片機與外設相互溝通的橋梁。可編程串行口:可以實現與其它

7、單片機或pc機之間的數據傳送。定時 / 計數器:具有可編程功能,可以完成對外部事件的計數,也可以完成定時功能。中斷系統(tǒng):可以實現分時操作、實時處理、故障處理等功能。特殊功能寄存器(sfr ) :反映單片機的運行狀態(tài),包含了單片機在運行中的各種狀態(tài)字和控制字,以及各種初始值。2-2 解答:ea引腳是片內外程序存儲器的選擇信號。當ea端保持高電平時,訪問內部程序存儲器,但在pc(程序計數器)值超過0fffh (對于 8051/8751/80c51 )或 1fffh (對于 8052)時,將自動轉向訪問外部程序存儲器。當ea端保持低電平時,不管是否有內部程序存儲器,則只訪問外部程序存儲器。由于 80

8、31 片內沒有程序存儲器,所以在使用8031 時,ea引腳必須接低電平。2-3 解答:在 mcs-51單片機中,除p3口具有第二功能外,還有3 條控制線具有第二功能。p3 口的第二功能:rxd :串行數據接收端txd :串行數據發(fā)送端0int:外部中斷0 申請輸入端1int:外部中斷1 申請輸入端t0:定時器 0 計數輸入端t1:定時器 1 計數輸入端wr:外部 ram 寫選通rd:外部 ram 讀選通3 條控制線的第二功能:ale prog :片內 eprom 編程脈沖。片內具有eprom 的芯片,在eprom 編程期間,此引腳輸入編程脈沖。reset vpd :備用電源。vcc掉電期間,此

9、引腳可接備用電源,以保持內部ram 數據不丟失。ea vpp :片內eprom 編程電源。在對片內具有eprom 的芯片進行編程時,此引腳用于施加21v編程電源。2-4 解答:mcs-51單片機的內部存儲空間分為數據存儲器和程序存儲器。內部數據存儲器:共256 字節(jié)單元,包括低128 個單元和高128 個單元。低128 字節(jié)又分成3 個區(qū)域:工作寄存器區(qū)(00h1fh ) ,位尋址區(qū)( 20h2fh )和用戶ram 區(qū)( 30h7fh ) 。高 128 字節(jié)是供給特殊功能寄存器使用的,因此稱之為特殊功能寄存器區(qū)。內部程序存儲器: 在 8031 片內無程序存儲器, 8051 片內具有 4kb掩模

10、 rom , 8751 片內具有 4kbeprom。2-5 解答:mcs-51單片機提供了4 組工作寄存器, 對于當前工作寄存器組的選擇,是通過psw 中的 rs1和 rs0來進行選擇。具體關系如下表:rs1rs0當前寄存器組00第 0 組工作寄存器01第 1 組工作寄存器10第 2 組工作寄存器11第 3 組工作寄存器2-6 解答:內部 ram 低 128 個單元按用途分成3 個區(qū)域:工作寄存器區(qū)(00h1fh ) ,位尋址區(qū)(20h2fh )和用戶 ram 區(qū)( 30h7fh ) 。2-7 解答:dptr是數據指針寄存器,是一個 16 位寄存器, 用來存放16 位存儲器的地址,以便對外部數

11、據存儲器 ram 中的數據進行操作。dptr由高位字節(jié)dph和低位字節(jié)dpl組成。2-8 解答:所謂堆棧,顧名思義就是一種以“堆”的方式工作的“棧”。堆棧是在內存中專門開辟出來的按照“先進后出,后進先出”的原則進行存取的ram 區(qū)域。堆棧的用途是保護現場和斷點地址。在8051 單片機復位后,堆棧指針sp總是初始化到內部ram 地址 07h。從 08h 開始就是 8051 的堆棧區(qū),這個位置與工作寄存器組1 的位置相同。因此,在實際應用中,通常要根據需要在程序初始化時對sp重新賦值,以改變堆棧的位置。2-9 解答:程序狀態(tài)字寄存器psw 是 8 位寄存器,用于存放程序運行的狀態(tài)信息。cy ()

12、:進位標志位。ac () :輔助進位標志位。f0() 、f1() :用戶標志位。rs1 () 、rs0 () :工作寄存器組選擇位。ov () :溢出標志位。p() :奇偶標志位。2-10 解答:p0 口由一個所存器、兩個三態(tài)輸入緩沖器、場效應管、控制與門、反相器和轉換開關組成;作為輸出口時,必須外接上拉電阻才能有高電平輸出,作為輸入口時,必須先向鎖存器寫“1” ;作為普通i/o口使用或低8 位地址 / 數據總線使用。p1 口內沒有轉換開關,但有上拉電阻;只用作普通i/o 口使用。p2 口比 p1口多了一個轉換控制開關;作為普通i/o 口使用或高8 位地址線使用。p3 口比 p1口增加了與非門

13、和緩沖器;具有準雙向i/o 功能和第二功能。上述 4 個端口在作為輸入口使用時,應注意必須先向端口寫“1” 。2-11 解答:指令周期:執(zhí)行一條指令所需要的時間。機器周期: cpu完成一個基本操作所需要的時間。狀態(tài):振蕩脈沖經過二分頻后,得到的單片機的時鐘信號。拍:振蕩脈沖的周期。當晶振頻率為12mhz時,一個機器周期為1s;當晶振頻率為8mhz時,一個機器周期為3s。2-12 解答:在時鐘電路工作后,只要在單片機的reset 引腳上出現24 個時鐘震蕩脈沖(兩個機器周期)以上的高電平,單片機就能實現復位。復位后, cpu和系統(tǒng)都處于一個確定的初始狀態(tài),在這種狀態(tài)下,所有的專用寄存器都被賦予默

14、認值,除 sp=07h ,p0p3口為 ffh外,其余寄存器均為0。2-13 解答:8051 單片機應用系統(tǒng)的電壓檢測電路監(jiān)測到電源下降時,觸發(fā)外部中斷, 在中斷服務子程序中將外部 ram 中的有用數據送入內部ram 保存。 (內部 ram 由備用電源供電)80c51單片機應用系統(tǒng)的電壓檢測電路監(jiān)測到電源降低時,也出發(fā)外部中斷,在中斷服務子程序中,除了要將外部ram 中有用的數據保存以外,還要將特殊功能寄存器的有用內容保護起來,然后對電源控制寄存器pcon 進行設置。2-14 解答:單片機退出空閑狀態(tài)有兩種方法:中斷退出和硬件復位退出。第 3 章 mcs-51系列單片機的指令系統(tǒng)3-1 解答:

15、指令是規(guī)定計算機進行某種操作的命令,一臺計算機所能執(zhí)行的指令集合稱為該計算機的指令系統(tǒng)。計算機內部只識別二進制數,因此,能別計算機直接識別、執(zhí)行的指令時使用二進制編碼表示的指令,這種指令別稱為機器語言指令。以助記符表示的指令就是計算機的匯編語言指令。3-2 解答: 標號: 操作數 ;注釋 3-3 解答:mcs-51系列單片機提供了7 種尋址方式:(1)立即尋址:操作數在指令中直接給出,立即數前面有“#” 。(2)直接尋址:在指令中直接給出操作數地址。對應片內低128 個字節(jié)單元和特殊功能寄存器。(3)寄存器尋址:以寄存器的內容作為操作數。對應的寄存器有:r0r7 、a、ab寄存器和數據指針 d

16、ptr 。(4)寄存器間接尋址:以寄存器的內容作為ram 地址, 該地址中的內容才是操作數。對應片內ram的低 128 個單元采用r0、r1作為間址寄存器,片外ram 低 256 個單元可用r0、r1作為間址寄存器,整個 64kb空間可用dptr作為間址寄存器。(5)變址尋址:以dptr或 pc作為基址寄存器,以累加器a作為變址寄存器,并以兩者內容相加形成的 16 位地址作為操作數地址。對應片內、片外的rom 空間。(6)相對尋址:只在相對轉移指令中使用。對應片內、片外的rom 空間。(7)位尋址: 對可尋址的位單獨進行操作。對應位尋址區(qū)20h2fh單元的 128 位和字節(jié)地址能被8整除的特殊

17、功能寄存器的相應位。3-4 解答:直接尋址方式。3-5 解答:寄存器間接尋址方式。3-6 解答:立即尋址方式,直接尋址方式,寄存器尋址方式,寄存器間接尋址方式,位尋址方式。3-7 解答:變址尋址方式3-8 解答:對于 8052 單片機內部ram 的高 128b,必須采用寄存器間接尋址方式進行訪問。3-9 解答:外部數據傳送指令有6 條:movx a,dptr movx dptr,amovx a,ri movx ri ,amovc a,a+dptr movc a,a+pc(1)movx a,r1 movx a,dptr都是訪問片外ram ,但二者尋址范圍不同。前 1 條指令是對片外ram 低 2

18、56 個單元的“讀”操作。后 1 條指令是對片外ram64kb 空間的“讀”操作。(2)movx a,dptr movx dptr,a訪問空間相同,但數據傳送方向不同。前 1 條指令是對片外ram64kb 空間的“讀”操作。后 1 條指令是對片外ram64kb 空間的“寫”操作。(3)mov r0 ,a movx r0 ,a二者訪問的空間不同。前 1 條指令是對片內ram 低 128 個單元的“寫”操作。后 1 條指令是對片外ram 低 256 個單元的“寫”操作。(4)movc a,a+dptr movx a,dptr二者訪問的空間不同,尋址方式不同。前 1 條指令是變址尋址方式,對rom

19、操作。后 1 條指令是寄存器間接尋址方式,對片外ram 操作。3-10 解答:r0 30h, (r0)=30ha( (r0) ) , (a)=40hr1 ( a) , (r1)=40hb( (r1) ) , (b)=10h(r1)( p1) , ( (r1 ) )=( 40h )=efhp2( p1) , (p2)=efh10h20h, (10h)=20h30h( 10h) , (30h)=20h結果: (r0 )=30h, (a)=40h , (r1 )=40h , (b)=10h, ( 40h )=efh , (p2)=efh , (10h)=20h , (30h)=20h3-11 解答:

20、(1)由于在工作寄存器與工作寄存器之間不能直接傳送數據,所以需要借助累加器a。mov a ,r1mov r0 ,a(2)片外 ram 向片內 ram 傳送數據, 不能直接進行, 需要借助累加器a 。由于片外ram 是 60h單元,地址小于ffh ,所以間址寄存器使用ri 即可。mov r1,#60hmovx a,r1mov r0,a(3)mov r1,#60hmovx a,r1mov 40h,a(4)片外數據不能直接送入片外單元,需要先將片外數據讀入累加器,然后再送到片外。mov dptr ,#1000hmovx a,dptrmov r1,#40hmovx r1 ,a(5)rom 中的數據需要

21、使用查表指令才能讀出來,所以此題不能使用一般的傳送指令從rom 中讀數據。mov dptr ,#2000hmov a,#00hmovc a,a+dptrmov r2,a(6)mov dptr ,#2000hmov a,#00hmovc a,a+dptrmov 40h,a(7)mov dptr ,#2000hmov a,#00hmovc a,a+dptrmov dptr ,#0200hmovx dptr,a3-12 解答:片外 ram 與片內 ram 之間的數據傳送不能直接進行,需要借助累加器a。數據交換需要使用數據交換指令 xch 。mov dptr ,#1000hmovx a,dptrxch

22、 a,60hmovx dptr,a3-13 解答:本題需要采用查表指令。org 0200hmov dptr ,#tabmov a,r7movc a,a+dptrorg 0300htab :db 0,1,4, 9,16, 25,36,49,64,813-14 解答:(1)結果:(a)( r1) , (a)=40h, (r1)=5bh , (psw ) =81h(2)結果:(a)( 40h) , (a)=c3h , (40h)=5bh , (psw )=80h(3)結果:(a)(r1 ) ) , (a) =c3h , ( (r1 ) )=(40h) =5bh , (psw )=80h(4)結果:(

23、a)03( (r1) )03, (a)=53h, ( (r1) )=(40h)=cbh , (psw )=80h(5)結果:(a)03( a)47, ( a)=b5h , (psw )=81h(6)結果: a( a)+(r1 ) , (a)=9bh , (psw )=05h(7)結果: a( a)+(40h) , (a) =1eh , ( psw )=80h(8)結果: a( a)+40h, (a)=9bh , (psw )=05h(9)結果: a( a)+(40h)+cy , (a)=1fh , (psw )=81h(10)結果: a( a)- (40h)-cy, (a)=97h, (psw

24、 )=85h(11)結果: a( a)- 40h - cy, (a)=1ah , (psw )=01h3-15 解答:(1)該組指令執(zhí)行后(a)=00h ,不影響cy位。(2)該組指令執(zhí)行后(a)=00h ,影響 cy位。說明: 單獨執(zhí)行 inc 指令, 只影響奇偶標志位p,不影響半進位標志位ac和進位位cy位。執(zhí)行 add指令后,將影響cy 、 ac和 p位。3-16 解答:本題涉及的是16 位數的減法運算,首先應讓低8 位相減,然后讓高8 位帶著借位相減。注意:應在低 8位相減前將進位位cy清空 0。clr cmov a,#56hsubb a,#78hmov r0,amov a,#23hs

25、ubb a,#45hmov r1,a3-17 解答:a( a) 23h, (a)=03h42h( 42h)( a) , (42h)=37ha( a)( (r0) ) , (a) =34ha(a) , ( a)=cbh結果: (a)=cbh3-18 解答:(1)mov dptr ,#1000hmovx a,dptrcpl amovx dptr,a(2)mov r0,#60hmovx a,r0anl a,#3fhxrl a,#03hmovx r0 ,a3-19 解答:da a 指令的作用是對a中剛進行的兩個bcd碼的加法結果進行修正,即繼續(xù)使bcd碼加法運算的結果保持為bcd碼。使用時,da a

26、指令只能使用在加法指令后,即add指令和 addc 指令。3-20 解答:mov dptr ,#1000hmovx a,dptrmov b,#10mul abmov 30h,amov 31h,bmov dptr ,#2000hmovx a,dptrmov b,#32mul abadd a,30hmov 30h,amov a,baddc a,31hmov 31h,a3-21 解答:mov r7,#10mov dptr ,#block1mov r0,#block2loop :movx a,dptrmov r0 ,ainc dptrinc r0djnz r7,loop3-22 解答:mov a,#0

27、1hloop :mov p0,arl alcall delaysjmp loopdelay :mov r7,#00hdelay1 :mov r6,#00hdjnz r6,$djnz r7,delay1ret3-23 解答:orl c,11hmov 11h,cmov c,orl c,10hanl c,11hmov ,c3-24 解答:(1)正確。(2)錯誤。原因:清零指令只能用于累加器acc和位操作,而本題中e0h只能是字節(jié)地址(位地址的范圍是00h7fh ) ,所以該條指令錯誤。(3)錯誤。原因:acc是直接字節(jié)地址,不能用于清零指令。(4)正確。是一個位,可以應用到清零指令中。(5)正確。(

28、6)錯誤。原因:取反指令只能用于累加器acc和位操作,而本題中e0h只能是字節(jié)地址(位地址的范圍是00h7fh ) ,所以該條指令錯誤。(7)錯誤。原因:acc是直接字節(jié)地址,不能用于取反指令。(8)正確。是一個位,可以應用到取反指令中。3-25 解答:anl a,borl a,cmov f,c3-26 解答:指令 ljmp addr16 是長轉移指令,指令中提供了16 位目的地址,尋址范圍是64kb。指令 ajmp addr11 是絕對轉移指令,指令中11 位目的地址,其中a7a0 在第二字節(jié), a10a8 則占據第一字節(jié)的高3 位,尋址范圍是與pc當前值(本指令所在地址+本條指令所占用的字

29、節(jié)數2)在同一個 2k的區(qū)域內。3-27 解答:(1)mov p1,#0cah ;p1cah , p1=cah=bmov a,#56h ;a56h , a=56h=01010110bjb ,l1 ;若 =1,則轉移至l1jnb ,l2 ;若 =0,則轉移至l2l1:l2:執(zhí)行完本段程序后將轉移至l2,因為 =0,=0,所以轉至l2。(2)mov a,#43h ;a43h , a=43h=01000011bjb ,l1 ;若 =1,則轉移至l1jbc ,l2 ;若 =1,則轉移至l2,同時將清零l1:l2:執(zhí)行完本段程序后將轉移至l2,因為 =0,=1,所以轉至l2,并且將清零。3-28 解答:

30、(1)mov a,p1cpl aanl a,#0f0hswap amov p1,a(2) :loop :jnb ,l1 ;jnb ,l2 ;jnb ,l3 ;jnb ,l4 ;ljmp loop ;l1:mov p1,#01h ;ljmp loop ;l2:mov p1,#02h ;ljmp loop ;l3:mov p1,#03h ;ljmp loop ;l4:mov p1,#04h ;ljmp loop ;第 4 章 匯編語言程序設計4-1 解答:org 0100hmov a,21hadd a,23hmov 25h,amov a,20haddc a,22hmov 24h,aret4-2 解

31、答:org 0200hmov a,51hmov b,#20mul abmov 53h,amov 52h,bmov a,50hmov b,#3mul abadd a,53hmov 53h,amov a,baddc a,52hmov 52h,aret4-3 解答:org 0300hmov a,datacjne a,#20,lop1lop1 :jc lop3cjne a,#50,lop2lop2 :jc lop4mov b,#1ljmp lop5lop3 :mov b,#2ljmp lop5lop4 :mov b,#5lop5 :mul abmov func ,aret4-4 解答:org 0400

32、hmov a,mun+1jnb ,loopclr cmov a,numsubb a,#01hcpl amov num ,amov a,#num+1subb a,#00hxa暫存a20a502b5b1ba b aafunc 保存結果開始返回ynyn題圖 4-1 習題 4-3 流程圖cpl amov num+1 ,aloop :ret4-5 解答:org 0500hmov dptr ,#jptabmov a,r2rl ajmp a+dptrjptab :ajmp key0ajmp key1ajmp key2ajmp key15key0 :key1 :key2 :key15 :4-6 解答:org

33、0600hmov r0,#40hmov dptr ,#2000hmov r7,#21hloop :mov a,r0movx dptr,ainc r0inc dptrdjnz r7,loopret4-7 解答:org 0700hmov dptr ,#datamov r7,#10loop :movx a,dptrorl a,#80hmovx dptr,ainc dptrdjnz r7,loopret4-8 解答:org 0800hmov dptr ,#3000hmov r0,#30hmov r7,#7loop :movx a,dptrmov r0 ,ainc dptrinc dptrinc r0d

34、jnz r7,loopret4-9 解答:org 0900hmov dptr ,#1000hmov r1,#30hmov r7,#31hloop :movx a,dptrmov r1 ,aclr amovx dptr,ainc dptrinc r1djnz r7,loopret4-10 解答:org 0a00hmov r1,#dat1mov dptr ,#dat2mov r6,#10hloop1 :mov a,r1cjne a,#0dh , loop2ljmp loop3loop2 :movx dptr,ainc r1inc dptrdjnz r6,loop1loop3 :ret4-11 解答

35、:org 0b00hmov dptr ,#3000hmov r7,#100mov one,#00hmov two,#00hmov three ,#00hlop1 :movx a,dptrjz lop2jnb ,lop3inc threeljmp lop4lop2 :inc twoljmp lop4lop3 :inc onelop4 :inc dptrdjnz r7,lop1ret4-12 解答:org 0c00hmov r0,#50hmov a,#00hmov r7,#10lop :add a,r0inc r0djnz r7,lopmov b,#10div abmov 5ah ,aret4-1

36、3 解答:org 0d00hmov r0,#40hmov a,r0mov r7,#47loop :inc r0mov 30h,r0cjne a,30h,chkchk :jc loop1mov a,r0loop1 :djnz r7,loopmov min,aret4-14 解答:org 0e00hstart :mov r0,#40hmov r7,#19clr 00hloop :mov a,r0mov 30h,ainc r0mov 31h,r0clr csubb a,r0jnc nextmov r0 ,30hdec r0mov r0 ,31hinc r0setb 00hnext :djnz r7,

37、loopjb 00h,startmov r0,#40hmov dptr ,#2000hmov r7,#20lop1 :mov a,r0movx dptr,ainc r0inc dptrdjnz r7,lop1ret4-15 解答:org 0f00hmov dptr ,#2000hmov r7,#100loop1 :movx a,dptrcjne a,#44h, loop2mov 30h,dplmov 31h,dphmov dptr ,#20a0hmov a,30hmovx dptr,ainc dptrmov a,31hmovx dptr,aljmp loop3loop2 :inc dptrdj

38、nz r7,loop1loop3 :ret4-16 解答:org 1000hmov r0,#30hmov r1,#50hmov r7,#20lop1 :mov a,r0cjne a,#0ah , lop2lop2 :jnc lop3add a,#30hljmp lop4lop3 :add a,#37hlop4 :mov r1 ,ainc r0inc r1djnz r7,lop1ret4-17 解答:org 1100hmov r0,#40hmov r1,#60hmov r7,#nlop1 :mov a,r0cjne a,#41h, lop2lop2 :jnc lop3clr csubb a,#3

39、0hljmp lop4lop3 :clr csubb a,#37hlop4 :mov r1 ,ainc r0inc r1djnz r7,lop1ret4-18 解答:org 1200hmov dptr ,#2000hmov r0,#30hmov r7,#5lop1 :movx a,dptranl a,#0fhadd a,#30hmov r0 ,ainc r0movx a,dptranl a,#0f0hswap aadd a,#30hmov r0 ,ainc r0inc dptrdjnz r7,lop1mov dptr ,#2005hmov r0,#30hmov r7,#10lop2 :mov

40、a,r0movx dptr,ainc r0inc dptrdjnz r7,lop2ret4-19 解答:org 1300hmov dptr ,#2000hmov r0,#30hmov r7,#10lop1 :movx a,dptrclr csubb a,#30hmov r0 ,ainc dptrmovx a,dptrclr csubb a,#30hswap aorl a,r0mov r0 ,ainc dptrinc r0djnz r7,lop1mov dptr ,#3000hmov r0,#30hmov r7,#10lop2 :mov a,r0movx dptr,ainc r0inc dptr

41、djnz r7,lop2ret4-20 解答:org 1400hmov a,40hmov b,amul abmov 31h,amov a,30hmov b,amul abclr csubb a,31hmov 30h,aret4-21 解答:org 1500hmov a,#80hloop :mov p1,alcall delrr asjmp loopdel :mov r7,#100del1 :mov r6,#198djnz r6,$djnz r7,del1ret4-22 解答:org 1600hmov a,#55hloop :mov p1,alcall delrl asjmp loopdel :

42、mov r7,#250del1 :mov r6,#198djnz r6,$djnz r7,del1ret第 5 章 定時/ 計數器5-1 解答:51 系列單片機的內部設有兩個定時/ 計數器。分別有兩種工作方式:定時器方式和計數器方式。由tmod (定時器模式控制寄存器)中的控制位t/c進行選擇。定時器方式的脈沖來自于內部時鐘脈沖,每個機器周期是計數器的值增1;計數器方式的脈沖來自于外部輸入引腳t0()或 t1() 。5-2 解答:51 系列單片機的定時/ 計數器有四種工作模式。分別由tmod 中的 m1和 m0進行選擇。特點如下:m1 m0特點 0 0模式 0。 tlx中低 5 位與 thx中

43、的 8 位構成 13 位計數器。計滿溢出時,13 位計數器回零。 0 1模式 1。 tlx與 thx構成 16 位計數器。計滿溢出時,16 位計數器回零。 1 0模式 2。 8 位自動重裝載的定時/ 計數器,每當計數器tlx溢出時, thx中的內容重新裝載到tlx中。 1 1模式 3。對定時器0,分成2 個 8 位計數器,對于定時器1,停止計數。5-3 解答:51 系列單片機的t0和 t1 在模式 0 中,使用了 tlx中低 5 位與 thx中的 8 位構成 13 位計數器, tlx中的高 3 位棄之未用。5-4 解答:對于 t1,設置為模式3,將使它停止計數并保持原有的計數值,其作用如同使t

44、r1=0 ,因此,沒有什么實質意義。對于 t0,設置為模式3 時, 16 位計數器被分成兩個互相獨立的8 位計數器tl0 和 th0 ,其中tl0利用了定時 / 計數器 0 本身的一些控制位:t/c、gate 、tr0、0int和 tf0。它既可以按照計數方式工作,也可以按照定時方式工作。而th0被規(guī)定只可用作定時器方式,借用了t1 的控制位 tr1和 tf1。5-5 解答:(tmod )=27h=00100111b此時, t1 工作于模式2,定時方式(即波特率發(fā)生器方式)。t1 工作于模式3,tl0 和 th0同為計數方式。5-6 解答:單片機系統(tǒng)復位后(tmod )=00h,即 t0 工作

45、在模式0,使用的是tl0 的低 5 位和 th0構成 13 位定時 /計數器,由于(th0)=06h , (tl0)=00h,所以定時的初值為:x=00000b=192假設系統(tǒng)晶振頻率為6mhz ,機器周期t=2s,則定時時間為:定時值 =(m-x)t=(213-192) 2s=16000 s=16ms5-7 解答:org 0000hljmp startorg 0200hstart :mov tmod ,#20hmov tl1,#231setb tr1loop :setb mov th1 ,#81lop1 :jbc tf1,lop2sjmp lop1lop2 :clr mov th1 ,#23

46、1lop3 :jbc tf1,loopsjmp lop3end5-8 解答:org 0000hljmp startorg 0300hstart :mov tmod ,#51hloop :clr tr0mov tl1,#18hmov th1 ,#0e0hsetb tr1lop1 :jbc tf1,lop2sjmp lop1lop2 :clr tr1mov tl0,#18hmov th0 ,#0e0hsetb tr0lop3 :jbc tf0,loopsjmp lop3end5-9 解答:tf0 為定時 / 計數器 t0的溢出標志位。tf1 為定時 / 計數器 t1的溢出標志位。tf2 為定時 /

47、 計數器 t2的溢出中斷標志位。exf2為定時 / 計數器 t2 的外部觸發(fā)中斷標志位。當定時 / 計數器 t0或 t1 溢出時 tf0 或 tf1 由硬件置1,使用查詢方式時,此位做狀態(tài)位供查詢,查詢有效后需由軟件清零;使用中斷方式時,此位做中斷申請標志位,進入中斷服務后被硬件自動清零。當定時 / 計數器 t2 計數溢出或外部觸發(fā)時,tf2或 exf2置 1,并申請中斷,但該兩位只能靠軟件清除。5-10 解答:rclk為接收時鐘選擇位,靠軟件置位或清除,用以選擇定時/ 計數器 2 或 1 做串行口接收波特率發(fā)生器。tclk為發(fā)送時鐘選擇位,靠軟件置位或清除,用以選擇定時/ 計數器 2 或 1

48、 做串行口發(fā)送波特率發(fā)生器。如果兩者都被清零,則t2工作在定時 / 計數器方式。此時當2t/c=0 時, th2和 tl2 計的是機器周期數,做定時器使用;當2t/c=1 時,計數脈沖來自t2()引腳, th2和 tl2 做外部信號脈沖計數用。5-11 解答:52 系列單片機的t0、t1 和 t2對外來脈沖進行計數時,t0的外來脈沖引入引腳為;t1 的外來脈沖引入引腳為;t2的外來脈沖引入引腳為。5-12 解答:2rl/cp為捕獲或重裝載標志,由軟件設置或清除。當2rl/cp=1 時選擇捕獲功能,這時若exen2=1 ,且 t2ex端的信號負跳變時,發(fā)生捕獲操作, 即把 th2和 tl2 的內

49、容傳遞給rcap2h 和 rcap2l ;當2rl/cp=0 時,選擇重裝載功能, 這時若定時器2 溢出,或在 exen2=1 條件下 t2ex端信號有負跳變,都會造成自動重裝載操作,即把rcap2h 和 rcap2l 的內容傳送給th2和 tl2。5-13 解答:初值 =65 536 fose/ (波特率 216) =65 536( 2 106)/ (19 200 216) =65 53618 =65518 =ffeeh即 t2 的重復裝載常數為:th2=0ffh ,tl2=0eeh第 6 章串行接口61 解答:計算機與外界信息交換的基本方式可分為并行通信與串行通信:并行通信是數據的各位同時

50、傳送,并行通信的特點是傳送速度快,但不適用長距離傳輸;串行通信是數據的各位依次逐位傳送,串行通信的特點是傳送速度較慢,但傳輸距離較長。并行通信適合近距離的cpu之間或設備之間快速進行數據交換;串行通信適合長距離的cpu之間或設備之間進行數據交換,或近距離的慢速數據交換。62 解答:異步通信依靠起始位、停止位、保持通信同步。特點是數據在線路上的傳送不連續(xù),傳送時,字符間隔不固定,各個字符可以是連續(xù)傳送,也可以間斷傳送,這完全取決于通信協(xié)議或約定。 串行異步通信的數據幀格式如圖6-1 :一位起始位“ 0”電平;其后是5位、 6位、 7 位或 8 位數據位,低位在前,高位在后;后面是一位奇偶校驗位;

51、最后是停止位“1”電平。圖 6-1 異步通信的數據幀格式63 解答:串行通信有3 種數據傳送形式單工方式:數據傳送是單向的。半雙工方式:數據傳送是雙向的,在同一時間只能做一個方向的傳送。全雙工方式:數據傳送是雙向的,即可同時發(fā)送,又可同時接收。 a b a 單工方式 a b b 半雙工方式 a b c 全雙工方式圖 6-2 串行通信數據傳送3 種形式64 解答:波特率表示每秒傳輸的二進制數據位數。fb 112502750 其波特率應為2750bps。65 解答:mcs-51單片機串行口有4 種工作模式,由串行控制寄存器scon 中的 sm0 、sm1 兩位組合來確定。模式 0 是同步位移寄存器

52、方式,用于i/o 口的串、并轉換。模式 1 是 8 位異步通信方式,楨格式10 位,波特率可變,用于雙機通信。模式 2 是 9 位異步通信方式,楨格式11 位,波特率固定,用于多機通信。模式 3 是 9 位異步通信方式,楨格式11 位,波特率可變,用于多機遠距離通信。模式 1、 2、3 的區(qū)別主要表現在楨格式和波特率兩個方面。66 解答:模式 0 的波特率固定:fosc/12模式 2 的波特率固定:fosc/n (n=64 或 32)模式 1、 3 的波特率可變:t1 溢出率 /n (n=32 或 16)67 解答:定時器 t1 模式 2 是自動裝載初值模式,波特率精度高。若已知系統(tǒng)晶振頻率、

53、通信選用的波特率,其初值波特率*384)1mod(256sfxosc起始位d0d1d2d3d4d5d6d7奇偶校驗位停止位68 解答:mcs-51單片機串行口的模式0 是同步位移寄存器方式,用于i/o 口的串、并轉換。擴展并行i/o口時,需要對串行控制寄存器scon 進行初始化設置;串行口需外接移位寄存器,串行口的txd端作為同步時鐘端,rxd作為串行數據的i/o 端。69 解答:多機通信時, 主機發(fā)送的信息可傳送到各個從機,而各從機發(fā)送的信息只能被主機接收,利用 scon中的 tb8/rb8和 sm2可實現多機通信。多機通信過程:所有從機在初始化時置sm2=1 ,都處于只能接收主機發(fā)送的地址

54、楨(rb8=1 ) 。主機發(fā)送地址楨(tb8=1) ,指出接收從機的地址。所有從機接收到主機發(fā)送的地址楨后,與自身地址相比較,相同則置sm2=0 ;相異則保持sm2=1不變。主機發(fā)送數據楨(tb8=0) ,由于指定的從機已將sm2=0 ,能接收主機發(fā)送的數據楨,而其它從機仍置 sm2=1 ,對主機發(fā)送的數據楨不予理睬。被尋址的從機與主機通信完畢,重置sm2=1 ,恢復初始狀態(tài)。610 解答:串行口工作在模式2,確定 smod1。未規(guī)定波特率,定時器初值任取,但兩機要保持一致。甲機發(fā)送子程序:txda :mov tmod , #20h ;置 t1 定時器工作方式2 mov tl1, #0fdh

55、;置初值 mov th1, #0fdh ;置初值 setb tr1 ;啟動 t1mov scon, #90h ;置串口方式2,允許接收,且sm2=0mov pcon, #80h ;置 smod=1(smod 不能位操作)clr es ;禁止串行中斷mov dptr, #2200h ;指發(fā)送數據區(qū)首地址mov r2, #51h ;指發(fā)送數據長度trsa :movx a, dptr ;讀一個數據 mov c,p mov tb8,c ;置校驗位mov sbuf, a ;發(fā)送jnb ti, $ ;等待一楨數據發(fā)送完畢clr ti ;清發(fā)送中斷標志inc dptr ;指向下一字節(jié)單元djnz r2, t

56、rsa ;判數據發(fā)完否未完繼續(xù)ret ;乙機接收子程序:rxdb :mov tmod , #20h ;置 t1 定時器工作方式2 mov tl1, #0fdh ;置初值 mov th1, #0fdh ;置初值 setb tr1 ;啟動 t1mov scon, #90h ;置串行方式2,允許接收,且sm2=0mov pcon, #80h ;置 smod=1(smod 不能位操作)clr es ;禁止串行中斷mov dptr, #1400h ;置接收數據區(qū)首地址mov r2, #51h ;置接收數據長度setb ren ;啟動接收setb f0 ;先置出錯標志f0 為 1。rdsb :jnb ri

57、, $ ;等待一楨數據接收完畢clr ri ;清接收中斷標志mov a, sbuf ;讀接收數據movx dptr , a ;存接收數據mov c,rb8anl c,pjc rdsb2 ;都是 1,則正確mov c,rb8orl c,pjnc rdsb2 ;都是 0,則正確ljmp rxdbd ;出錯rdsb2 :inc dptr ;指向下一數據存儲單元djnz r2, rdsb ;判數據接收完否未完繼續(xù)clr f0 ;正確接收,則清除出錯標志f0rxdbd :ret ;第 7 章中斷系統(tǒng)71 解答:mcs-51系統(tǒng)有0int、t0、1int、t1和串行口共五個中斷源;0int和1int 的中

58、斷標志是ie0 和 ie1 ,在電平方式下,當外部中斷輸入信號是低電平時,由硬件置 1;在邊沿方式下,當外部中斷輸入信號是下降沿時,由硬件置1;定時計數器溢出中斷t0 和 t1的中斷標志位是tf0 和 tf1,當定時 / 計數器產生溢出時,該位由硬件置1;串行口中斷標志是ti 或 ri,當單片機接收到或發(fā)送完一幀數據后,由硬件置1。外部中斷0int和1int 的電平方式,無法清除,需采取硬件和軟件相結合的方法來清除;邊沿方式,在 cpu響應中斷后自動清除;定時/ 計數器 0 和 1 的溢出中斷,在cpu響應中斷后自動清除;串行口中斷(包括串行接收中斷ri 和串行發(fā)送中斷ti ) ,由軟件清零。

59、0int、t0、1int、t1和串行口中斷5 個中斷源分別對應的中斷入口地址是:0003h、000bh 、0013h、001bh 、0023h。72 解答:mcs-51的中斷系統(tǒng)有兩個中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。中斷優(yōu)先級的控制方式是:高優(yōu)先級中斷可以中斷正在響應的低優(yōu)先級中斷,反之則不能。優(yōu)先級中斷不能互相中斷。即某個中斷(不論是高優(yōu)先級或低優(yōu)先級)一旦得到響應,與其同級的中斷就不能再中斷它。同一中斷優(yōu)先級中優(yōu)先權由高到低的次序是0int、t0、1int、t1 和串行口中斷,若有多個中斷源同時請求中斷,cpu將先響應優(yōu)先權高的中斷,后響應優(yōu)先權低的中斷。通過中斷優(yōu)先級控制寄存器ip 可以

60、選擇5 個中斷源的優(yōu)先級別73 解答:mcs-51有 ie0、tf0、ie1 、tf1、ti 和 ri 共 6 個中斷標志位。相同之處是這些中斷標志位都是由硬件自動產生的,不同之處是外部中斷和計數/ 定時器中斷標志的清零是由硬件自動完成的,而串行口中斷標志(ti 、ri)不會自動清除,必須由用戶在串行中斷服務程序中用指令對ti 或 ri 清。74 解答 :mov ie, #b ;t0、1int 、串行口允許中斷 mov ip, #00010100b ;1int 和串行口中斷為高優(yōu)先級 clr it1 ;1int 電平觸發(fā)方式75 解答:(1)置定時 / 計數器為工作模式2,且為計數方式,即8

溫馨提示

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

評論

0/150

提交評論