1、從外部RAM20H單元開始,有30個帶符號數(shù),試編一個程序,把其中正數(shù)、負(fù)數(shù)分別送到片內(nèi)RAM的51H和71H開始的存儲單元,并分別記下其中正數(shù)和負(fù)數(shù)的個數(shù)送到片內(nèi)RAMD的50H和70H單元。(畫出程序流程圖亦可得5分)
2、根據(jù)流程圖編程,將片內(nèi)RAM40H~4FH單元的內(nèi)容傳送至片外RAM3000H~300FH對應(yīng)的單元中。
3、試編制一個循環(huán)閃爍燈程序。有8個發(fā)光二極管,其中一個閃爍點亮8次后轉(zhuǎn)移到下一個閃爍8次,循環(huán)不止。(設(shè)8個發(fā)光二極管接在P1口)
4、試編寫一個延時80ms的延時子程序(已知晶振頻率12MHz)。(10分)
5試編寫程序:用單片機控制P1口外部連接的8個LED按下列要求動作:先點亮P1.0至P1.3四個LED,同時P1.4至P1.7熄滅;然后點亮P1.4至P1.7四個LED, 同時P1.0至P1.3熄滅。最后循環(huán)前面兩種狀態(tài)。(假設(shè)高電平點亮)(14分)
6、編制一個循環(huán)閃爍燈程序。有8個發(fā)光二極管,依次點亮8個發(fā)光二極管,每次點亮的時間保持一段時間。(設(shè)8個發(fā)光二極管接在P1口)(10分)
7、P3.2和P3.3兩個引腳控制P1口的LED,當(dāng)P3.2接低電平時,8個LED全點亮,當(dāng)P3.3接低電平的時候,8個LED全部熄滅。(10分)
8、設(shè)MCS-51單片機系統(tǒng)晶振頻率為12MHz,請采用中斷方式編出利用定時/計數(shù)器T0在P2.0引腳上產(chǎn)生周期為1s的方波信號的程序。(提示:15536=3CB0H)(11分)
9、將外部RAM的100H單元中內(nèi)容送入外部RAM的200H單元中。(8分)10、設(shè)1067H存在于R1R0中,30A0H存在于R3R2中,計算R1R0+R3R2,結(jié)果存于R5R4中。(14分)
11、編寫一個跑馬燈的程序,P0口接8個發(fā)光二極管的的陰極(18分)。1
2、設(shè)置IP寄存器的初始值,使得MCS-51的片內(nèi)中斷為低優(yōu)先級,片外中斷為高優(yōu)先級。(8分)
13、設(shè)有16位二進制數(shù)存放在內(nèi)部RAM的50H及51H單元中,要求將其算術(shù)左移一位(即原數(shù)各位均向左移1位,最低位移入0)后仍存放在原單元。試編制相應(yīng)的程序。(14分)
14、P3.2和P3.3口各接有一只按鍵,要求它們分別按下時(P3.2=0或P3.3=0),分別使P1口為0或FFH(18分)15、若允許片內(nèi)2個定時/計數(shù)器中斷,禁止其它中斷源的中斷請求,試編寫出設(shè)置IE的相應(yīng)程序。(8分)
16、將A累加器的低四位取反四次、高四位不變。每變換一次,從P1輸出(14分)。
17、設(shè)8031單片機使用12MHz晶振(機器周期T為lμs),試設(shè)計延遲100ms的延時程序。(18分)
1、從外部RAM20H單元開始,有30個帶符號數(shù),試編一個程序,把其中正數(shù)、負(fù)數(shù)分別送到片內(nèi)RAM的51H和71H開始的存儲單元,并分別記下其中正數(shù)和負(fù)數(shù)的個數(shù)送到片內(nèi)RAMD的50H和70H單元。
程序如下:
ZHENG DATA 50H
FU DATA 70H
ORG 0000H
LJMP MAIN
ORG 0050H
MAIN:MOV ZHENG,#00H ;計數(shù)初始為零
MOV FU,#00H ;計數(shù)初始為零
MOV R7,#30 ;30個數(shù)
MOV R0,#1FH ;第一個數(shù)的前一個地址
MOV R1,#51H ;整數(shù)存的首地址
MOV SP,#70H ;負(fù)數(shù)的首地址
LOOP:INC R0 ;指向第一個數(shù)
MOV A,@R0 ;給a
MOV C,ACC.7 ;符號位給c
JC NEXT ;勢負(fù)數(shù)則next
MOV @R1,A
INC R1 ;正數(shù)就保存在正的
INC ZHENG ;計數(shù)加一
NEXT:PUSH FU ;負(fù)數(shù)存
INC FU ;計數(shù)加一
DJNZ R7,LOOP ;未到30就繼續(xù)判斷
END ;結(jié)束
第一題
第一題:
MOV R0 , #51H
MOV R1 , #71H
MOV R5 , #0 ;正數(shù)的個數(shù)
MOV R6 , #0 ;負(fù)數(shù)的個數(shù)
MOV R7 , 30 ;循環(huán)的次數(shù)
MOV DPTR , #20H ;取片外20H的內(nèi)容
MOV A , @DPTR
LOOP : JB ACC.7 , LOOP1 ;判斷正負(fù)號,負(fù)數(shù)跳轉(zhuǎn)LOOP1
MOV @R0 , A
INC R0
INC R5 ;正數(shù)個數(shù)加1
AJMP LOOP2
LOOP1 : MOV @R1 , A
INC R1
INC R6 ;負(fù)數(shù)個數(shù)加1
LOOP2 : INC DPTR
DJNZ R7 , LOOP ;判斷循環(huán)次數(shù)
MOV 50H , R5
MOV 70H , R6
END
不知道有錯沒
RG 0000HAJMP MAINORG 0030HMAIN: MOV R0,#40H MOV DPTR #3000H MOV R2,#10 P: MOV A, @R0 MOV @DPTR ,A INC R0 INC DPTR DJNZ R2,P RET END2、根據(jù)流程圖編程,將片內(nèi)RAM40H~4FH單元的內(nèi)容傳送至片外RAM3000H~300FH對應(yīng)的單元中。
程序如下:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV R0,#40H
MOV DPTR #3000H
MOV R2,#10
P: MOV A, @R0
MOV @DPTR ,A
INC R0
INC DPTR
DJNZ R2,P
RET
END