版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一章思考題與習(xí)題1. 什么叫嵌入式系統(tǒng)?與單片機(jī)的關(guān)系如何?以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,針對(duì)具體應(yīng)用系統(tǒng),對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)被稱為嵌入式系統(tǒng)。單片機(jī)又稱嵌入式微控制器,是嵌入式系統(tǒng)應(yīng)用的主流。2. 單片機(jī)主要應(yīng)用在哪些方面? 單片機(jī)主要應(yīng)用在工業(yè)、智能儀表、軍事導(dǎo)航、電信、日常生活、辦公自動(dòng)化、汽車電子、消費(fèi)電子等方面。3. 單片機(jī)系統(tǒng)的開發(fā)過程分幾步進(jìn)行?單片機(jī)的應(yīng)用開發(fā)可分為五個(gè)過程,總體方案設(shè)計(jì)、硬件單元電路設(shè)計(jì)與制作、應(yīng)用程序的設(shè)計(jì)與調(diào)試、系統(tǒng)聯(lián)調(diào)、固化(燒寫)與脫機(jī)運(yùn)行。4. 下表每一行給出了一種數(shù)制的無符號(hào)數(shù),試將它轉(zhuǎn)換為
2、其他兩種數(shù)制,并填入表中。二進(jìn)制十進(jìn)制十六進(jìn)制010110011b1790b3h110010010b402192h11110101b2450f5h01101100b1086ch11111111b2550ffh01110110b11876h5. 試寫出下列真值所對(duì)應(yīng)的機(jī)器數(shù)。(1)+1010011 (2)-1011010(3)+0101110(4)-0111111以8位二進(jìn)制補(bǔ)碼表示為:(1)11010011(2)10100110(3)10101110(4)110000016. 試寫出下列機(jī)器數(shù)所對(duì)應(yīng)的真值。(1)11000000(2)01111111(3)01011011(4)11111111
3、(1)-64(2)+127(3)+91(4)-17. 下表每一行給出原碼、反碼或補(bǔ)碼中的一個(gè)值,試求出其它兩個(gè)碼,并填入下表中。原碼反碼補(bǔ)碼01111111b01111111b01111111b10000000b11111111b00000000b10001111b11110000b11110001b01010101b01010101b01010101b10000010b11111101b0feh00000011b00000011b03h8. 將下列有符號(hào)數(shù)的二進(jìn)制補(bǔ)碼轉(zhuǎn)換為十進(jìn)制數(shù),并注明它的正負(fù)。(1)11111111b(2)01111111b(3)10000011b(4)11111100
4、b(5)00000011b(6)01111100b(1)-1(2)+127(3)-125(4)-4(5)+3(6)+1249. 一個(gè)字節(jié)的十六進(jìn)制數(shù)最大值相當(dāng)于多大的十進(jìn)制數(shù),兩個(gè)字節(jié)的十六進(jìn)制數(shù)最大值相當(dāng)于多大的十進(jìn)制數(shù)?一個(gè)字節(jié)十六進(jìn)制數(shù)最大值為0ffh,相當(dāng)于十進(jìn)制數(shù)255,兩個(gè)字節(jié)的十六進(jìn)制數(shù)最大值為0ffffh,相當(dāng)于十進(jìn)制數(shù)65535。第二章思考題與習(xí)題1. 微型計(jì)算機(jī)由哪幾個(gè)功能部件組成?各功能部件的作用如何?微型計(jì)算機(jī)由cpu、三總線、存儲(chǔ)器、i/o接口電路及外圍設(shè)備組成。cpu作為系統(tǒng)的運(yùn)算中心和控制中心;三總線用于完成微處理器、內(nèi)存儲(chǔ)器和i/o接口電路之間信息的相互交換;存
5、儲(chǔ)器用于程序與數(shù)據(jù)的存儲(chǔ);i/o接口電路作為cpu與外部設(shè)備的聯(lián)接橋梁,用于信號(hào)的標(biāo)準(zhǔn)化;外圍設(shè)備可實(shí)現(xiàn)顯示、輸入、打印、通信等功能。2. 三總線是指什么?它們的主要功能是什么?三總線是指數(shù)據(jù)總線(data bus)、地址總線(address bus)和控制總線(control bus)。數(shù)據(jù)總線(db)的功能是完成微處理器與內(nèi)存、i/o接口電路之間的數(shù)據(jù)傳送;地址總線(ab)是微處理器向內(nèi)存和i/o接口電路傳送地址信息的通路;控制總線(cb)是微處理器向內(nèi)存和i/o接口電路發(fā)出的命令信息或由外界向微處理器傳送狀態(tài)的信息通路。3. 微型計(jì)算機(jī)存儲(chǔ)器的地址線與存儲(chǔ)容量有什么關(guān)系?如果存儲(chǔ)器的地址
6、線有13根,則存儲(chǔ)容量為多大?地址線的多少與存儲(chǔ)容量的關(guān)系滿足:存儲(chǔ)容量=2n(n為地址線的數(shù)量),如果存儲(chǔ)器的地址線有13根,則存儲(chǔ)容量為8kb。4. 89s51單片機(jī)的存儲(chǔ)器從物理結(jié)構(gòu)上分別可劃分為幾個(gè)空間?89s51單片機(jī)的存儲(chǔ)器在物理結(jié)構(gòu)上有4個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器、片外數(shù)據(jù)存儲(chǔ)器。5. 89s51單片機(jī)采用何種方式區(qū)分內(nèi)外程序存儲(chǔ)器及內(nèi)外數(shù)據(jù)存儲(chǔ)器?單片機(jī)的程序存儲(chǔ)器是在片內(nèi)存儲(chǔ)器還是片外存儲(chǔ)器,取決于單片機(jī)外圍引腳的狀態(tài)。片內(nèi)和片外數(shù)據(jù)存儲(chǔ)器采用不同的指令加以區(qū)別,在訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器時(shí),可使用mov指令;要訪問片外數(shù)據(jù)存儲(chǔ)器可使用movx指令。
7、6. 89s51單片機(jī)內(nèi)部數(shù)據(jù)存儲(chǔ)器分為幾個(gè)空間?每個(gè)空間有何特點(diǎn)?89s51單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器分為007fh及80hffh兩塊空間。片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)地址為007fh空間劃分為工作寄存器區(qū)、位尋址區(qū)及用戶ram區(qū)三個(gè)空間;80hffh地址空間中只有26個(gè)存儲(chǔ)空間被特殊功能寄存器(sfr)占用。工作寄存器區(qū)共32個(gè)存儲(chǔ)單元,分為4組,每組由8個(gè)地址單元組成通用寄存器r0r7,每組寄存器均可作為cpu當(dāng)前的工作寄存器。位尋址區(qū)共16個(gè)字節(jié),每個(gè)字節(jié)8位,共128位,這128位用位地址編號(hào),范圍為00h7fh,位尋址區(qū)既可采用位尋址方式訪問,也可以采用字節(jié)尋址方式訪問。用戶ram區(qū)共80個(gè)單元,可
8、作為堆?;驍?shù)據(jù)緩沖使用。特殊功能寄存器sfr專門用來設(shè)置單片機(jī)內(nèi)部的各種資源,記錄電路的運(yùn)行狀態(tài),參與各種運(yùn)算及輸入/輸出操作。7. 程序狀態(tài)字psw的作用是什么?常用狀態(tài)位是哪些?作用是什么?程序狀態(tài)字psw用來存放與當(dāng)前指令執(zhí)行結(jié)果相關(guān)的狀態(tài)。常用的狀態(tài)位有cy、ac、ov、p、rs1、rs0等。cy用于標(biāo)志運(yùn)算過程中是否有進(jìn)位或借位;ac用于標(biāo)志累加器中d3位向d4位是否存在進(jìn)位或借位;ov用于標(biāo)志有符號(hào)數(shù)運(yùn)算過程中是否存在超出范圍的情況;p用于指示累加器a中操作結(jié)果的“1”的個(gè)數(shù)的奇偶性,在串行通信中做數(shù)據(jù)校驗(yàn);rs1、rs0用于選擇工作寄存器組別。8. 89s51單片機(jī)內(nèi)部有幾個(gè)特殊
9、功能存儲(chǔ)單元?分別有何用途?89s51單片機(jī)內(nèi)部有26個(gè)特殊功能存儲(chǔ)單元,各自用途請(qǐng)參見表2-3。9. 89s51單片機(jī)復(fù)位后,cpu使用的是哪一組工作寄存器?它們的字節(jié)地址分別是什么?cpu如何確定和改變當(dāng)前工作寄存器組?89s51單片機(jī)復(fù)位后,cpu使用的是第0組工作寄存器,它們的字節(jié)地址為00h07h。cpu通過標(biāo)志寄存器中的rs1、rs0兩位狀態(tài)確定和改變當(dāng)前工作寄存器組。10. 89s51單片機(jī)的4個(gè)i/o端口p0p3在結(jié)構(gòu)上有何異同?使用時(shí)應(yīng)注意什么?89s51各端口中p0口既可作地址/數(shù)據(jù)總線口,又可作通用i/o口。在作地址/數(shù)據(jù)總線口時(shí),它是真正的雙向口,可以直接驅(qū)動(dòng)mos輸入
10、,不需要加上拉電阻。當(dāng)它作通用i/o口時(shí),應(yīng)注意必須外接上拉電阻才能驅(qū)動(dòng)mos輸入。對(duì)p1、p2、p3口而言,內(nèi)部已接有上拉電阻,因此不必外接任何電阻就可驅(qū)動(dòng)mos輸入。p0口和p1、p2、p3口作通用i/o口時(shí)一樣,在輸入時(shí)分為“讀鎖存器”和“讀引腳”兩種操作,這兩種操作是用不同的指令區(qū)分的。11. 簡述89s51中下列各引腳信號(hào)的作用:、ale:讀信號(hào) :寫信號(hào) :讀片外部程序存儲(chǔ)器選通信號(hào) :片外程序存儲(chǔ)器選擇信號(hào) ale:地址鎖存允許信號(hào)12. 什么是時(shí)鐘周期、機(jī)器周期、指令周期?它們之間有何關(guān)系?時(shí)鐘電路產(chǎn)生的最小時(shí)序單位稱為時(shí)鐘周期;單片機(jī)執(zhí)行一次基本操作所需要的時(shí)間單位為一個(gè)機(jī)器
11、周期;單片機(jī)執(zhí)行一條指令所需要的時(shí)間稱為指令周期。1個(gè)機(jī)器周期=12個(gè)時(shí)鐘周期,1個(gè)指令周期,通常由14個(gè)機(jī)器周期組成。13. “復(fù)位”的含義是什么?89s51單片機(jī)常用的復(fù)位電路有哪些?復(fù)位后各內(nèi)部存儲(chǔ)器的值分別為多少?復(fù)位就是對(duì)單片機(jī)進(jìn)行初始化操作,使單片機(jī)內(nèi)部各寄存器處于一個(gè)確定的初始狀態(tài)。89s51單片機(jī)常用的復(fù)位電路有上電復(fù)位和按鈕復(fù)位兩種。復(fù)位后sp為07h,p0p3為0ffh,sbuf不定,除sp、p0p3及sbuf外,其余各寄存器值均為0。第三章思考題與習(xí)題1. mcs-51單片機(jī)指令格式是怎樣的?各有何含義?匯編語言表示的指令格式為:標(biāo)號(hào):操作碼助記符操作數(shù)1,操作數(shù)2, 操
12、作數(shù)3 ;注釋 標(biāo)號(hào):表示該指令所在的地址。操作碼:表示該語句要執(zhí)行的操作內(nèi)容。操作數(shù):表示操作碼的操作對(duì)象。注釋:為閱讀程序方便而加的解釋說明。2. mcs-51單片機(jī)有幾種尋址方式?描述這些尋址方式的執(zhí)行過程?mcs-5l系列單片機(jī)共有7種尋址方式,立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、相對(duì)尋址、變址尋址、位尋址。立即尋址:操作數(shù)直接由指令給出,尋址時(shí)直接到程序存儲(chǔ)器中查找操作數(shù)。直接尋址:操作數(shù)在指令給出的地址單元中,尋址時(shí)直接到數(shù)據(jù)存儲(chǔ)器中查找操作數(shù)。寄存器尋址:所需查找的操作數(shù)在寄存器中。寄存器間接尋址:所要查找的操作數(shù)位于以寄存器的內(nèi)容為地址的單元中。尋址時(shí)從寄存器中查找
13、的值做為地址再次查找操作數(shù)。相對(duì)尋址:不是尋找操作數(shù)的地址,而是要得到程序跳轉(zhuǎn)位置對(duì)應(yīng)的目標(biāo)地址。變址尋址:以16位寄存器(數(shù)據(jù)指針dptr或程序計(jì)數(shù)器指針pc)作為基址寄存器,以累加器a作為變址寄存器,并以兩者內(nèi)容相加形成新的16位地址作為操作數(shù)所在的地址,查找操作數(shù)。位尋址:將位地址中的內(nèi)容做為操作數(shù)。3. 指出在下列各條指令中,30h分別代表什么含義?mova, #30h;為立即數(shù)mova, 30h;為直接地址mov30h, #30h;30h為直接地址,#30h為立即數(shù)mov30h, 28h;30h為直接地址movc, 30h;為位地址4. 設(shè)(a)=0fh,(r0)=30h,內(nèi)部ram
14、的(30h)=12h,(31h)=0bh,(32h)=0ch, 請(qǐng)指出每條指令中源操作數(shù)的尋址方式,并寫出執(zhí)行下列程序段后上述各單元內(nèi)容的變化結(jié)果。mov a, r0;寄存器間接尋址,(a)=12hmov r0, 32h;直接尋址,(30h)=0chmov 32h, a;寄存器尋址,(32h)=12hmov r0, #31h;立即尋址,(r0)=31hmov a, r0;寄存器間接尋址,(a)=0bh5. 用指令實(shí)現(xiàn)下列數(shù)據(jù)傳送。(1)內(nèi)部ram 20h單元內(nèi)容送內(nèi)部ram 30h單元。mov30h,20h(2)外部ram 20h單元內(nèi)容送內(nèi)部ram 30h單元。movr0,#20hmovxa
15、,r0mov30h,a(3)外部ram 1000h單元內(nèi)容送寄存器r2中。movdptr,#1000hmovxa,dptrmovr2,a(4)內(nèi)部ram 20h單元內(nèi)容送外部ram 1000h單元。mova,20hmovdptr,#1000hmovxdptr,a(5)外部ram 20h單元內(nèi)容送外部ram 1000h單元。movr0,#20hmovxa,r0movdptr,#1000hmovxdptr,a(6)rom 2000h單元內(nèi)容送內(nèi)部ram 30h單元。movdptr,#2000hclramovca,a+dptrmov30h,a(7)rom 2000h單元內(nèi)容送外部ram 20h單元。
16、movdptr,#2000hclramovca,a+dptrmovr0,#20hmovxr0,a(8)rom 2000h單元內(nèi)容送外部ram 1000h單元。movdptr,#2000hclramovca,a+dptrmovdptr,#1000hmovxdptr,a6. 設(shè)(a)= 5ah,(r0)=20h,(20h)=6bh,(b)=02h,(psw)=80h。寫出下列指令執(zhí)行后的結(jié)果及對(duì)標(biāo)志位的影響。(每條指令都以題中規(guī)定的原始數(shù)據(jù)參加操作)。(1)add a,r0;(a)=7ah,(psw)=01h(2)addca,20h;(a)=0c6h,(psw)=44h(3)subb a,#20h
17、 ;(a)=39h,(psw)=00h(4)inc a;(a)=5bh,(psw)=81h(5)mul ab ;(a)=0b4h,(b)=00h,(psw)=00h(6)divab;(a)=2dh,(b)=00h,(psw)=00h(7)anl 20h,#45h ;(20h)=41h,(psw)=80h(8)orla,#32h;(a)=7ah,(psw)=81h(9)xrl 20h,a ;(20h)=31h,(psw)=80h(10)xcha,20h;(a)=6bh,(20h)=5ah,(psw)=80h(11)swapa ;(a)=0a5h,(psw)=80h(12)cpl a;(a)=0a
18、5h,(psw)=80h(13)rr a ;(a)=2dh,(psw)=80h(14)rlc a;(a)=0b5h,(psw)=01h7. 寫出執(zhí)行下列程序段的運(yùn)行結(jié)果。 (1)mova,#20hmov dptr,#2030hmovx dptr,amov 30h,#50hmov r0,#30hmovx a,r0 外部ram(2030h)=20h,(dptr)=2030,(30h)=50h,(r0)=30h,(a)=0ffh(2)mov a,#79hmov 20h,#88hadd a,20hda aswapa內(nèi)部ram(20h)=88h,(a)=76h,(psw)=0c1h8. 試寫出達(dá)到下列要
19、求的程序。(1)將外部ram 1000h單元中的低4位清0,其余位不變,結(jié)果存回原處。dptr,#1000hmovxa,dptranla,#0f0hmovxdptr,a(2)將內(nèi)部ram 50h單元中的高3位置1,其余位不變,結(jié)果存回原處。orl50h,#0e0h(3)將內(nèi)部ram 20h單元中的高4位置1,低4位清0,結(jié)果存回原處。anl20h,#0f0horl20h,#0f0h(4)將dptr的中間8位取反,其余位不變,結(jié)果存回原處。xrldpl,#0f0hxrldph,#0fh9. 用三種方法實(shí)現(xiàn)累加器a中的無符號(hào)數(shù)乘2運(yùn)算。(1)movr0,aadda,r0(2)movb,#02hmu
20、lab(3)clrcrla10. 編程實(shí)現(xiàn)兩個(gè)16位二進(jìn)制數(shù)8e52h、47a4h相減的運(yùn)算,結(jié)果放在內(nèi)部ram的20h與21h單元中,前者放低8位,后者放高8位。clrcmova,#52hsubba,#0a4hmov20h,amova,#8ehsubba,#47hmov21h,a11. sjmp 指令和ajmp指令都是兩字節(jié)轉(zhuǎn)移指令,它們有什么區(qū)別?各自的轉(zhuǎn)移范圍是多少?能否用ajmp代替sjmp?為什么?兩條指令區(qū)別在于轉(zhuǎn)移范圍不同,sjmp轉(zhuǎn)移范圍256b,ajmp轉(zhuǎn)換范圍2k,通??梢杂胊jmp代替sjmp,ajmp的轉(zhuǎn)移范圍比sjmp轉(zhuǎn)換范圍大,但必須保證地址前5位不變。12. 已知
21、(sp)=35h,(34h)=12h,(35h)=34h,(36h)=56h。問此時(shí)執(zhí)行“ret”指令后,(sp)=? (pc)=?(sp)=33h,(pc)=1234h13. 若(sp)=35h,(pc)=2345h,標(biāo)號(hào)loop所在的地址為3456h。執(zhí)行長調(diào)用指令“l(fā)call loop”后,堆棧指針和堆棧的內(nèi)容發(fā)生什么變化?pc的值為多少?若將上述指令改為“acall loop”是否可以?為什么?(sp)=37h,(36h)=48h,(37h)=23h,(pc)=3456h若將上述指令改為“acall loop”是不行的,因?yàn)椤癮call”指令只能在2k范圍內(nèi)調(diào)用。 14. 試編寫程序完
22、成將內(nèi)部ram 30h為首地址的20個(gè)數(shù)據(jù)傳送至外部ram以1000h為首地址的區(qū)域中。movr0,#30hmovdptr,#1000hmovr7,#20loop:mova,r0movxdptr,aincr0incdptrdjnzr7,loopret15. 試編程實(shí)現(xiàn):若累加器a的內(nèi)容為正數(shù),則將內(nèi)部ram 20h單元內(nèi)容清零,否則置ffh。mov20h,#00hjnbacc.7,loopmov20h,#0ffhloop:ret16. 試編程實(shí)現(xiàn):查找內(nèi)部ram的20h50h單元中出現(xiàn)00h的次數(shù),并將查找結(jié)果存入r1單元。movr0,#20hmovr7,#31hmovr1,#00hloop:
23、mova,r0jnznzeroincr1nzero:incr0djnzr7,loopret第四章思考題與習(xí)題1. 匯編語言程序設(shè)計(jì)分哪幾個(gè)步驟?匯編語言程序設(shè)計(jì)一般有以下幾步:(1)分析問題,明確任務(wù);(2)確定算法;(3)制訂程序流程圖;(4)編寫源程序;(5)匯編與調(diào)試。2. 什么叫“偽指令”?偽指令與指令有什么區(qū)別?它們的用途是什么?偽指令是指在單片機(jī)的指令系統(tǒng)中為匯編程序提供相關(guān)信息的特定指令。與指令不同之處在于,偽指令在匯編時(shí)不產(chǎn)生目標(biāo)代碼,不影響程序執(zhí)行。它們主要用于為匯編程序提供匯編的信息,例如為程序指定起始點(diǎn)和結(jié)束點(diǎn)等。3. 基本程序結(jié)構(gòu)有哪幾種?各有什么特點(diǎn)?基本程序結(jié)構(gòu)主要
24、有順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種。順序結(jié)構(gòu)是從第一條指令開始依次執(zhí)行每一條指令,直到執(zhí)行完畢。分支結(jié)構(gòu)是通過對(duì)條件是否滿足的判斷,產(chǎn)生一個(gè)或多個(gè)分支以決定程序的流向。循環(huán)結(jié)構(gòu)是可對(duì)同一組操作重復(fù)執(zhí)行多次的程序結(jié)構(gòu)。4. 試對(duì)下列程序進(jìn)行匯編,并用流程圖說明程序的功能。org 0100hmov a,30hjnb acc.7,zhengcpl aadd a,#01horla,#80hzheng:mov 32h,asjmp $end該程序的功能:對(duì)30h中的數(shù)據(jù)進(jìn)行求補(bǔ)運(yùn)算,并將結(jié)果存入32h單元。5. 子程序調(diào)用時(shí),參數(shù)的傳遞方法有哪幾種?子程序調(diào)用時(shí),參數(shù)傳遞方法有三種:(1)通過工作寄存器或
25、累加器傳遞參數(shù);(2)通過指針寄存器傳遞參數(shù);(3)通過堆棧傳遞參數(shù)。6. 設(shè)內(nèi)部ram 50h和51h單元中存放有二個(gè)8位有符號(hào)數(shù),試編程找出其中的大數(shù),將其存入60h單元中。org0100hmova,50hxrla,51hjbacc.7,loopmova,50hclrcsubba,51hjcloop1mov60h,50hsjmperetloop1:mov60h,51hsjmperetloop:mova,50hjbacc.7,loop1mov60h,50heret:sjmp$end7. 編程將外部ram 2000h202fh單元中的內(nèi)容,移入內(nèi)部ram 20h4fh單元中,并將原數(shù)據(jù)塊區(qū)域全
26、部清0。org0100hmovdptr,#2000hmovr0,#20hmovr7,#30hchuan:movxa,dptrmovr0,aclramovxdptr,aincr0incdptrdjnzr7,chuansjmp$end8. 編程計(jì)算內(nèi)部ram 50h57h連續(xù)8個(gè)單元中所有數(shù)的算術(shù)平均值,將結(jié)果存放在5ah中。假設(shè)所有數(shù)據(jù)和不超過255。org0100hmovr0,#50hmovr1,#8clrasum:adda,r0incr0djnzr1,summovb,#8divabmov5ah,asjmp$end9. 設(shè)有100個(gè)有符號(hào)數(shù),連續(xù)存放在以2000h為首地址的存儲(chǔ)區(qū)中,試編程統(tǒng)計(jì)
27、其中正數(shù)、負(fù)數(shù)、零的個(gè)數(shù),并將其分別存入40h、41h和42h單元中。org0100hmovdptr,#2000hmovr7,#100pd:movxa,dptrjzzerojnbacc.7,zhenginc41hloop:incdptrdjnzr7,pdsjmp$zero:inc42hsjmploopzheng:inc40hsjmploopend10. 編程設(shè)計(jì)發(fā)光二極管的閃爍程序。要求8只發(fā)光二極管每隔兩只點(diǎn)亮一只,反復(fù)循環(huán)不止,變換時(shí)間為100ms,已知時(shí)鐘頻率為6mhz。若時(shí)鐘頻率為6mhz,則機(jī)器周期為2s,100ms延時(shí)子程序delay如下:delay:movr6,#100del:m
28、ovr7,#250djnzr7,$djnzr6,delret發(fā)光二極管閃爍程序如下(設(shè)發(fā)光二極管為共陽極,低電平驅(qū)動(dòng),接p1口):org0100hmova,#0fehloop:movp1,aacalldelayrlarlasjmploopdelay:(略)end11. 編程將外部ram data1單元開始的50個(gè)字節(jié)數(shù)據(jù)逐一移至data2單元為起始地址的存儲(chǔ)區(qū)中。org0100hmovdptr,#data1movr0,#dtepmovr7,#50loop:movxa,dptrmovr0,aincdptrincr0djnzr7,loopmovdptr,#data2movr0,#dtepmovr7
29、,#50loop1:mova,r0movxdptr,aincdptr incr0djnzr7,loop1sjmp$end12. 分別用數(shù)據(jù)傳送指令和位操作指令編寫程序,將內(nèi)部ram位尋址區(qū)128個(gè)位全部清零。(1)用數(shù)據(jù)傳送指令movr0,#20hmovr7,#10hclraloop:movr0,aincr0djnzr7,loopsjmp$(2)用位操作指令clr00hclr01hclr7fh13. 把長度為10h的字符串從內(nèi)部ram的輸入緩沖區(qū)inbuf向位于外部ram的輸出緩沖區(qū)outbuf進(jìn)行傳送,當(dāng)遇到字符“cr”或整個(gè)字符串傳送完畢后停止傳送。org0100hmovr7,#10hmo
30、vr0,#inbufmovdptr,#outbufloop:mova,r0cjnza,#0d,jx;0dh為“cr”的ascii碼sjmplendjx:movxdptr,aincr0incdptrdjnzr7,looplend:sjmp$end14. 編寫一個(gè)采用查表法求120的平方數(shù)子程序。要求:x在累加器中,1x20,平方數(shù)高位存放在r6,低位在r7中。org0100hmovdptr,#tabmovr0,aadda,r0movr7,amovca,a+dptrmovr6,amova,r7incdptrmovca,a+dptrmovr7,asjmp$tab:dw0,1,4,9,16,25,36
31、,49,64,81,100,121,144,169,225dw256,289,324,361,400end15. 從內(nèi)部ram 30h單元開始,連續(xù)存有200字節(jié)的補(bǔ)碼數(shù),編寫程序?qū)⑺鼈兏淖優(yōu)楦髯缘慕^對(duì)值。org0100hmovr0,#30hmovr7,#200loop:mova,r0jnbacc.7,zhgsubba,#01hcplazhg:movr0,aincr0djnzr7,loopsjmp$end16. 若單片機(jī)的晶振頻率為6mhz,試編寫一段延時(shí)子程序,其延時(shí)時(shí)間為500ms。若時(shí)鐘頻率為6mhz,則機(jī)器周期為2s,500ms延時(shí)子程序delay如下:delay:movr6,#250
32、del:movr7,#250del1:nopnopdjnzr7,del1djnzr6,delret17. 在內(nèi)部ram string單元開始有一個(gè)字符串(字符串以00h結(jié)尾)。試編寫一段程序,統(tǒng)計(jì)字符“$”的個(gè)數(shù),并將結(jié)果存入num單元。org0100hmovr0,#stringmovnum,#00hloop:mova,r0cjnea,#24h,neq;24h為“$”的ascii碼incnumneq:incr0cjnea,#00h,loopsjmp$end第五章思考題與習(xí)題1. 名詞解釋:(1)中斷 (2)中斷源(3)中斷系統(tǒng)(4)中斷優(yōu)先權(quán)(5)中斷嵌套(6)中斷屏蔽(1)中斷是指在計(jì)算機(jī)執(zhí)
33、行程序過程中,由服務(wù)對(duì)象向cpu發(fā)出請(qǐng)求信號(hào),要求cpu暫停當(dāng)前程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,當(dāng)待處理程序執(zhí)行完后,再返回繼續(xù)執(zhí)行原來被中斷程序的過程。(2)中斷源是指引起中斷的原因或觸發(fā)中斷請(qǐng)求的來源。(3)中斷系統(tǒng)是指為實(shí)現(xiàn)中斷而設(shè)置的各種硬件和軟件。(4)中斷優(yōu)先權(quán)是指兩個(gè)或兩個(gè)以上中斷源同時(shí)申請(qǐng)中斷時(shí),哪一個(gè)中斷源被cpu優(yōu)先響應(yīng)的權(quán)力。(5)中斷嵌套是指在一個(gè)中斷處理還未完成時(shí),優(yōu)先級(jí)更高的中斷打斷了這個(gè)中斷的執(zhí)行過程,即一個(gè)中斷程序中又有另一個(gè)中斷在執(zhí)行的情況。(6)中斷屏蔽是指某中斷被cpu禁止響應(yīng)的情況。2. 89s51單片機(jī)中各中斷源的中斷處理程序的入口地址可否自行設(shè)
34、定?當(dāng)中斷處理程序的長度大于8個(gè)字節(jié)時(shí)如何處理?89s51單片機(jī)中各中斷源的中斷處理程序的入口地址不能自行設(shè)定,當(dāng)中斷處理程序的長度大于8個(gè)字節(jié)時(shí),應(yīng)設(shè)置一條無條件跳轉(zhuǎn)指令,將中斷處理程序?qū)懭肫渌鎯?chǔ)區(qū)。3. 89s51單片機(jī)的中斷系統(tǒng)由哪些部件構(gòu)成?分別有何用處?89s51單片機(jī)的中斷系統(tǒng)由中斷源、中斷標(biāo)志位、中斷允許控制寄存器、中斷優(yōu)先級(jí)控制寄存器及中斷入口地址組成。中斷源用于產(chǎn)生中斷請(qǐng)求信號(hào);中斷標(biāo)志位用于將中斷源產(chǎn)生的中斷請(qǐng)求做上標(biāo)記,以便于cpu能及時(shí)查詢到中斷的請(qǐng)求;中斷允許控制寄存器用于設(shè)置哪些中斷源可以被cpu響應(yīng),哪些被禁止;中斷優(yōu)先級(jí)控制寄存器的作用是設(shè)置各種中斷源的優(yōu)先順
35、序;中斷入口地址用于將中斷處理程序的首地址存入pc指針以控制中斷服務(wù)程序的執(zhí)行。4. 89s51單片機(jī)中斷系統(tǒng)有幾個(gè)中斷源?各中斷標(biāo)志如何產(chǎn)生?如何清除?cpu響應(yīng)中斷時(shí),它們的中斷入口地址分別是多少?89s51單片機(jī)中斷系統(tǒng)有五個(gè)中斷源,是通過tcon、scon中的ie0、ie1、tf0、tf1、ti、ri六個(gè)標(biāo)志位產(chǎn)生的。其中,ie0、ie1、tf0、tf1由硬件清零,ti、ri由軟件清零。它們的中斷入口地址分別是0003h(外部中斷0)、0013h(外部中斷1)、000bh(定時(shí)器0)、001bh(定時(shí)器1)、0023h(串行口)。5. 89s51內(nèi)部設(shè)有幾個(gè)定時(shí)器/計(jì)數(shù)器?它們是由哪些
36、特殊功能寄存器組成的?89s51內(nèi)部設(shè)有2個(gè)定時(shí)器/計(jì)數(shù)器,它們是由tcon、tmod、th1、th0、tl1、tl0組成。6. 89s51單片機(jī)定時(shí)/計(jì)數(shù)器t0、t1有哪幾種操作模式?它們有什么區(qū)別?89s51單片機(jī)定時(shí)/計(jì)數(shù)器t0、t1有4種操作模式。方式0為13位定時(shí)/計(jì)數(shù)器,方式1為16位定時(shí)/計(jì)數(shù)器,方式2為自動(dòng)重裝初值的8位定時(shí)/計(jì)數(shù)器,方式3為t0被拆成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器。7. 89s51單片機(jī)定時(shí)/計(jì)數(shù)器在定時(shí)或計(jì)數(shù)工作方式下,其計(jì)數(shù)脈沖分別由誰提供?定時(shí)時(shí)間與哪些因素有關(guān)?做計(jì)數(shù)時(shí),對(duì)外界計(jì)數(shù)脈沖頻率有何限制?89s51單片機(jī)定時(shí)/計(jì)數(shù)器在定時(shí)工作方式下,其計(jì)數(shù)脈沖由
37、內(nèi)部機(jī)器周期提供;89s51單片機(jī)定時(shí)/計(jì)數(shù)器在計(jì)數(shù)工作方式下,其計(jì)數(shù)脈沖由外部引腳t0(p3.4)、t1(p3.5)提供。定時(shí)時(shí)間與定時(shí)器工作方式及單片機(jī)時(shí)鐘有關(guān)。做計(jì)數(shù)時(shí),對(duì)外界計(jì)數(shù)脈沖頻率必需小于時(shí)鐘頻率的1/24,且高低電平持續(xù)時(shí)間不得小于一個(gè)機(jī)器周期。8. 設(shè)單片機(jī)的fosc=12mhz,若內(nèi)部ram的30h單元的內(nèi)容為55h,則定時(shí)器的定時(shí)時(shí)間為30ms;否則定時(shí)時(shí)間為15ms。試對(duì)定時(shí)/計(jì)數(shù)器進(jìn)行初始化編程。movtmod,#01hmovth0,#0c5hmovtl0,#68hmova,30hcjnea,#55h,stmovth0,#8ahmovtl0,#0cfhst:9. 已知
38、89s51的fosc=6mhz,利用定時(shí)/計(jì)數(shù)器t0編程實(shí)現(xiàn)p1.0端口輸出矩形波。要求:矩形波高電平寬度為50s,低電平寬度為300s。將t0作為定時(shí)器,工作在方式2,定時(shí)時(shí)間為25s,則初值為256-25=231=e7h,tmod=00000010b=02h。org0000hljmpstartorg000bhljmpintt0org0050hstart:clrp1.0movtmod,#02hmovth0,#0e7hmovtl0,#0e7hsetbpt0movie,#10000010bsetbtr0setbp1.0setbf0movr7,#6ljmp$org0100hintt0:jbf0,g
39、aodjnzr7,iedmovr7,#6gao:cplp1.0cplf0ied:retiend10. 已知 89s51的fosc=12mhz,用定時(shí)/計(jì)數(shù)器t1編程實(shí)現(xiàn)p1.0和 p1.1引腳上分別輸出周期為2ms和500s的方波。將t1作為定時(shí)器,工作在方式2,定時(shí)時(shí)間為250s,則初值為256-250=6=06h,tmod=00100000b=20h。org0000hljmpstartorg001bhljmpintt1org0050hstart:clrp1.0clrp1.1movtmod,#20hmovth1,#06hmovtl1,#06hsetbpt1movie,#10001000bse
40、tbtr1movr7,#4ljmp$org0100hintt1:cplp1.1djnzr7,iedmovr7,#4cplp1.0ied:retiend11. 什么是串行異步通信?它有哪些特點(diǎn)?串行異步通信是指數(shù)據(jù)傳送時(shí)各位分時(shí)傳送,只需要一根數(shù)據(jù)線。在傳送過程中數(shù)據(jù)以字符為單位傳送,每個(gè)字符數(shù)據(jù)都要加進(jìn)一些識(shí)別信息位和校驗(yàn)位,數(shù)據(jù)發(fā)送和接收端的時(shí)鐘可以不同步。它的特點(diǎn)是節(jié)省傳輸線路,可實(shí)現(xiàn)遠(yuǎn)距離通信,傳輸速度相對(duì)同步通信慢,異步通信不需要發(fā)送端和接收端的時(shí)鐘嚴(yán)格同步。12. 89s51單片機(jī)的串行口由哪些功能部件組成?各有何作用?89s51單片機(jī)的串行口由scon、sbuf及若干門電路構(gòu)成。s
41、con用于設(shè)置串行口的工作方式,sbuf用于存儲(chǔ)串行通信時(shí)要發(fā)送的數(shù)據(jù)或已接收到的數(shù)據(jù)。13. 89s51的串行數(shù)據(jù)緩沖器只有一個(gè)地址,如何判斷是發(fā)送還是接收信號(hào)?通過不同的傳送指令進(jìn)行區(qū)分,如果發(fā)送數(shù)據(jù)則使用“movsbuf,a”,如果接收數(shù)據(jù)則使用“mova,sbuf”14. 89s51的串行口有幾種工作方式?各種方式下的數(shù)據(jù)格式及波特率有何區(qū)別?89s51的串行口有4種工作方式。方式0為同步移位寄存器方式,波特率為fosc/12;方式1為10位異步通信方式,波特率可調(diào);方式2為11位異步通信方式,波特率為fosc/32或fosc/64;方式3為11位異步通信方式,波特率可調(diào)。15. 試用
42、查詢方式編寫一數(shù)據(jù)塊發(fā)送程序。數(shù)據(jù)塊首址為內(nèi)部ram的30h單元,其長度為20個(gè)字節(jié),設(shè)串行口工作于方式1,傳送的波特率為9600bps(fosc=6mhz),不進(jìn)行奇偶校驗(yàn)處理。設(shè)波特率=9600bps。由t1工作于方式2,fosc=6mhz,smod=1,求得th1=tl1=0fdh。org0100hfirst:movtmod,#20hmovth1,#0fdhmovtl1,#0fdhmovscon,#40hmovpcon,#80hsetbtr1movr0,#30hmovr1,#20f:mova,r0movsbuf,ajf:jbcti,ggsjmpjfgg:incr0 djnzr1,fsjm
43、p$end16. 試用中斷方式編寫一數(shù)據(jù)塊接收程序。接收緩沖區(qū)首址為內(nèi)部ram的20h單元,接收的數(shù)據(jù)為ascii碼,設(shè)串行口工作于方式1,波特率設(shè)定為1200bps(fosc=11.0592mhz),接收時(shí)進(jìn)行奇偶校驗(yàn),若出錯(cuò)則刪除接收的數(shù)據(jù)。設(shè)波特率=1200bps。由t1工作于方式2,fosc=11.0592mhz,smod=0,求得th1=tl1=0e8h。org 0000h ljmp mainr;轉(zhuǎn)接收主程序 org 0023h ljmp intse2;轉(zhuǎn)中斷服務(wù)程序 mainr:mov sp,#60h;主程序movtmod,#20hmovth1,#0e8hmovtl1,#0e8hm
44、ov scon,#50h;串行口初始化,允許接收mov pcon,#00h setb ea;開中斷 setb essetbtr1 mov r1,#20h;置接收緩沖區(qū)首址 sjmp $ intse2:clr ri;清中斷標(biāo)志mov a,sbuf;接收數(shù)據(jù)jnbpsw.0,rx1;p=0,轉(zhuǎn)rx1jnbrb8,rerr;p=1,rb8=0,轉(zhuǎn)出錯(cuò)處理sjmprx2rx1:jbrb8,rerr;p=0,rb8=1,轉(zhuǎn)出錯(cuò)處理rx2:movr1,a ;保存數(shù)據(jù)incr1retirerr:clrasjmprx2end第六章思考題與習(xí)題1. 在89s51擴(kuò)展系統(tǒng)中,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共用了16位地址
45、線和8位數(shù)據(jù)線,為什么兩個(gè)存儲(chǔ)空間不會(huì)發(fā)生沖突?兩個(gè)存儲(chǔ)器讀寫方式不同,讀信號(hào)接線方式也不同,因此不會(huì)發(fā)生沖突。2. 為什么當(dāng)p2作為擴(kuò)展存儲(chǔ)器的高8位地址后,不再適用作i/o口?因?yàn)閜2被用作高8位地址輸出時(shí),若再作i/o口會(huì)使數(shù)據(jù)被修改,則使輸出的地址也被修改,此時(shí)單片機(jī)外部所接存儲(chǔ)器地址也會(huì)被修改,導(dǎo)致讀寫數(shù)據(jù)錯(cuò)誤。3. 請(qǐng)用譯碼器74ls138設(shè)計(jì)一個(gè)譯碼電路,分別選中4片2864,且列出各芯片所占的地址空間范圍。2864的存儲(chǔ)容量為8k,每片芯片地址范圍0000h1fffh,使用74ls138擴(kuò)展圖如下。則四片2864的地址范圍依次是(1)0000h1fffh,(2)2000h3ff
46、fh,(3)4000h5fffh,(4)6000h7fffh。4. 試說明8155的內(nèi)部結(jié)構(gòu)特點(diǎn),其定時(shí)/計(jì)數(shù)器與89s51內(nèi)部的定時(shí)/計(jì)數(shù)器有何異同?8155芯片內(nèi)部包含2個(gè)8位i/o并行接口和1個(gè)6位i/o并行接口,一個(gè)14位的減1定時(shí)/計(jì)數(shù)器及256字節(jié)片內(nèi)ram。其定時(shí)/計(jì)數(shù)器是14位減計(jì)數(shù),而89s51內(nèi)部的定時(shí)/計(jì)數(shù)器是16位加計(jì)數(shù)。5. 說明8155工作方式控制字的作用及各位的功能。d7d6d5d4d3d2d1d0tm2tm1iebieapc2pc1pbpapb、pa:控制端口b與a的數(shù)據(jù)傳送方式。pc2、pc1:控制端口工作方式。tm2、tm1:控制定時(shí)/計(jì)數(shù)器工作方式。ieb
47、、iea:控制端口b與a的中斷。6. 試對(duì)8155進(jìn)行初始化編程,使其a口作輸出口,b口作輸入口,并啟動(dòng)定時(shí)/計(jì)數(shù)器,輸出連續(xù)方波,定時(shí)時(shí)間為10毫秒,輸入時(shí)鐘頻率為500khz。計(jì)數(shù)初值=5000=1388horg0100h start:mov dptr,#7f00h;dptr指向命令寄存器地址mov a,#01h ;命令字00000001bmovxdptr,a ;初始化8155movdptr,#7f04h;送低8位計(jì)數(shù)值mova,#88hmovxdptr,a inc dptr ;送高6位計(jì)數(shù)值 mova,#53h ;設(shè)置m2m1=01,輸出脈沖為連續(xù)方波 movxdptr,a mov dp
48、tr,#7f00h;啟動(dòng)計(jì)數(shù)器工作mov a,#0c0h;設(shè)置工作方式控制字 movxdptr,a7. 用串行口擴(kuò)展4個(gè)led數(shù)碼管顯示電路,編程使數(shù)碼管輪流顯示“abcd”,“efgh”,每秒鐘變換一次。org0100hstart:movdptr,#tabmovr0,#50hmovr7,#4abcd:clramovca,a+dptr;查顯示碼movr0,aincdptrincr0djnzr7,abcdacalldispacalldelaymovr0,#50h movr7,#4efgh:clramovca,a+dptr;查顯示碼movr0,aincdptrincr0djnzr7,efghaca
49、lldispacalldelayljmpstartdisp:clrp1.4;顯示器熄滅setbp1.3;打開移位脈沖輸入setbp1.4;打開74ls164movscon,#00h;設(shè)置串口工作在方式0movr0,#50h;設(shè)置顯示緩沖區(qū)首址movr2,#04h;設(shè)置循環(huán)次數(shù)loop: mova,r0movsbuf,a;送顯示wait:jnbti,wait;發(fā)送是否完成clrti;清發(fā)送完成標(biāo)志incr0djnzr2,loop;未發(fā)送完繼續(xù)clrp1.3retdelay:movr6,#10dly1:movr5,#200dly2:movr4,#250dly3:djnzr4,dly3djnzr5,
50、dly2djnzr6,dly1rettab:db88h,83h,0a7h,0a1h,84h,8eh,90h,89hend8. 試說明鍵盤的工作原理,并說明鍵盤消抖的作用。如圖6-10所示,鍵盤的工作原理簡單的說就是當(dāng)任意一個(gè)按鍵被按下,都會(huì)使相應(yīng)的端子出現(xiàn)低電平。若沒有按鍵按下,則為高電平。通過單片機(jī)檢測輸入端子的狀態(tài)就可以判斷鍵盤的按鍵是否按下。鍵盤消抖的作用為了保證按鍵識(shí)別的準(zhǔn)確性。9. 在一個(gè)晶振為12mhz的89s51應(yīng)用系統(tǒng)中,接有一片dac0832,它的地址為7fffh,輸出電壓為05v。試編寫一個(gè)程序,使dac0832輸出一個(gè)矩形波,波形占空比為1:4。高電平時(shí)電壓為2.5v,低電平時(shí)電壓為1.25v。org0100hstart:movdptr,#7fffh;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《TPS豐田生產(chǎn)方式》課件
- 決定銷售業(yè)績的重要心態(tài)(課件)
- LNG氣化站應(yīng)急備用氣源自用建設(shè)項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 一年級(jí)語文上冊(cè)拼音aoe
- 2024年江蘇省招聘社區(qū)工作者題庫及參考答案
- 單位管理制度收錄大合集【人員管理篇】十篇
- 單位管理制度品讀選集【職員管理】十篇
- 樓梯 欄桿 欄板(一)22J403-1
- 果凍袋行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報(bào)告
- 中國返利網(wǎng)站行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 低溫雨雪冰凍災(zāi)害應(yīng)急救援準(zhǔn)備
- 幼兒園背景研究分析報(bào)告
- 圍墻維修 施工方案
- 創(chuàng)傷關(guān)節(jié)骨科年度總結(jié)
- 2022-2023學(xué)年江蘇省鹽城第一學(xué)期高一期末考試數(shù)學(xué)試卷及答案解析-普通用卷
- 醫(yī)師病理知識(shí)定期考核試題與答案
- 礦井提升容器課件
- 醫(yī)用冰箱溫度登記表
- 《潔凈工程項(xiàng)目定額》(征求意見稿)
- 城鎮(zhèn)燃?xì)庠O(shè)計(jì)規(guī)范
- 年零售藥店操作規(guī)程版
評(píng)論
0/150
提交評(píng)論