導航:首頁 > 操作系統 > 查找比較程序編程題單片機

查找比較程序編程題單片機

發布時間:2022-11-28 21:33:25

① 有關單片機編程的2道題目。希望各位大神可以為我解答,在每一步後標上解釋,謝謝!

;啟動入口========================
ORG 0000H ;復位啟動
AJMP START ;
;主程序========================
START: MOV A,#BLOCK ;數據開始地址
MOV R0,A
ADD A,#4 ;存放結果單元低位元組
MOV R1,A
;
MOV A,@R0 ;第一個數低位元組
INC R0
MOV B,@R0 ;第一個數高位元組
INC R0 ;指向第二個數低位元組
;
ADD A,@R0 ;加第二個數低位元組
MOV @R1,A ;存結果單元第一位元組
INC R0 ;指向第二個數高位元組
INC R1 ;指向結果單元第二位元組
MOV A,B ;第一個數高位元組
ADDC A,@R0 ;加第二個數高位元組
MOV @R1,A ;存結果單元第二位元組
INC R1 ;指向結果單元第三位元組
ADDC A,#0 ;存結果單元第三位元組
MOV @R1,A ;存入指定單元
END ;結束

;啟動入口========================
ORG 0000H ;復位啟動
AJMP START ;
;主控程序========================
START: MOV R0,#BLOCK ;數據開始地址
DEC R0 ;BLOCK-1
MOV B,@R0 ;得到數據個數
;
MOV R0,#BLOCK ;數據開始地址
MOV R1,#STOCK ;用來存放結果的地址
;
LOOP: MOV A,@R0 ;取得一個數據
CLR C ;准備比較
SUBB A,#101 ;比較
JC NOS ;不大於100
;
MOVX @R1,A ;存結果
INC R1 ;指向下一單元
;
NOS: INC R0 ;指向下一個數據
DJNZ B,LOOP ;搜索完所有數據
END ;結束

② 單片機程序分析試題

第一題:
(20H)=20H,(21H)=91H,(22H)=A0H,(23H)=01H
Cy=0, A=0A0H, R0=23H, R1=28H
至於第二題嗎,你們老師可真變態,好好的SUBB不讓用,要用CJNE
程序如下:
;BLOCK為地址起始位
;LEN為數據數量位
;MINI為最小數據

整個編程的思路是這樣的:
先設一個基準數,從最大的0FF設起,再把這些數據與基準數比較是否一致,如果一致,則先把這個數(也就是基準數)存起來,這一行就不用再往下比較了。然後把基準數減一,再執行上面的程序,如果亦有相同的,則把現在的基準數存起來,覆蓋原來存的數據。就這樣一直減,減到0後,停止,存起來的最後一個基準數就是最小值。

MOV R0, #BLOCK ;將地址起始位置存入R0中
MOV R1, #MINI ;將最後結果存儲地址存入R1中
MOV R2, LEN ;數據數量
MOV R3, #0FFH ;比較的基準數

LOOP:
MOV A, @R0 ;讀入數據
CJNE A, 03H, NEXTLOOP ;和基準數相比較,不等於則轉移
MOV A, @R0 ;等於基準數了,先存起來,如果將基準數減小後,再沒有和基準數相等的了,那麼這個數就是最小的。
MOV @R1, A
CLR C
MOV A, R3 ;如果基準數已經減到00H了,那麼,就不用再減一比較了,因為已經從0FF開始至00結束,全比較過了
JZ WAIT
SUBB A, #01H ;基準數減1
MOV R3, A
MOV R0, #BLOCK
MOV R1, #MINI
MOV R2, LEN
LJMP LOOP
NEXTLOOP:
INC R0
DJNZ R2, LOOP

WAIT:
LJMP $

按你的修改,再修改結果
(20H)=20H,(21H)=91H,(22H)=0D0H,(23H)=00H
Cy=0, A=0D0H, R0=22H, R1=28H

③ 三道單片機編程題目

編寫航行標燈控製程序,系統晶振頻率單位為6MHz,要求航標燈在白天熄滅,在夜晚斷續點亮,時間間隔2秒,即亮2秒,暗2秒,周期循環進行。

--第一、需要先設計出來時鍾。

--第二、時間不清,白天,還是晚上,這說法不準確。

下圖為某AT89C51應用系統的三位led8段共陽極靜態顯示器的介面電路,
(1)該靜態顯示器電路與動態掃描的的顯示器電路相比有哪些優缺點?
--看書吧。

(2)寫出顯示字元「x」,「y」,「z」的段碼,
注意,段碼的最低位為「a」段,段碼的最高位為「dp」段
--y:91H。
--x、z:無法顯示。

已知8255A的PA口,PB口,和PC口的地址分別為FF7CH,FF7DH,FF7EH,
且這三個埠均已被編寫完畢的初始化程序初始化為方式0輸出,
請編寫出使三位LED共陽極顯示器從左至右顯示3.85的程序段。

--那一位顯示器安裝在左邊?
--這題目,也太含糊了。

--假設左邊是PA口,右邊是PC口。

MOV DPTR, #0FF7CH
MOV A, #30H ;3. 的段碼
MOVX @DPTR, A
INC DPTR
MOV A, #80H ;8 的段碼
MOVX @DPTR, A
INC DPTR
MOV A, #92H ;5 的段碼
MOVX @DPTR, A

END

④ 單片機編程題,請給出正確的編程語言,謝謝

ORG 0000H
AJMP START
ORG 000BH
AJMP INT0
START: MOV TMOD,#10H
SETB EA
SETB ET0
MOV TH0,#B1H
MOV TL0,#E0H ;40MS延時初始值
MOV R0,#01H ;R0用來標志中斷里定時器應該賦誰(高低電平)的初值的值
SETB P1.7 ;起始輸出高電平
SETB TR0
HERE: SJPM HERE ;等待中斷
INT0: MOV A,R0
JNZ GAO
SETB P1.7
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
INC R0
SJMP NEXT
GAO: CLR P1.7
MOV TH0,#0B9H
MOV TL0,#B0H ;36MS延時初值
SETB TR0
INC R0
CJNE R0,#11,NEXT ;十次36MS延時之後清R0
CLR R0
NEXT: RETI
自己看看對不對吧
用兩個定時器的話(一個定時高電平一個定時周期或者一個定時高電平一個定時低電平),可以省掉R0的,程序會比較簡單

⑤ 單片機編程題目

這要是用C語言寫,沒多大問題,分鍾都能幫你,但是用匯編……真要人老命啊!話說大學那會老師也是用匯編語言教學,真是誤人子弟加坑爹。單片機那麼簡單有趣的東西,在keil C平台下如此簡單,這幫大爺就這么不顧實際的教,坑了多少學生。幫不了你,畢業多年,想起當年的興趣,發泄下,祝順利……

⑥ 單片機編程80c51有關查找程序的題目

內部RAM的最大地址我記得是OFFH,也有可能是我錯了。
題目是不是查找外部RAM的4000H~40FFH?
是外部的話程序如下:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:MOV DPTR,#4000H
MOVX A,@DPTR
MOV DPTR,#4001H
MOV R7,#0FFH
MOV DATA,#00H
LOOP: CJNE A,DATA,AAA ;不相等跳AAA
MOV DATA,#01H
LJMP BBB
AAA:INC DPTR
MOVX A,@DPTR
DJNZ R7,LOOP
BBB:SJMP $
END

如果是訪問尋找ROM中的數據表格用下面指令:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:MOV A,#00H
MOV DPTR,#4000H
MOVC A,@A+DPTR
MOV DPTR,#4001H
MOV R7,#0FFH
MOV DATA,#00H
LOOP: CJNE A,DATA,AAA ;不相等跳AAA
MOV DATA,#01H
LJMP BBB
AAA:INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
DJNZ R7,LOOP
BBB:SJMP $
END
我也是剛開始學,如果錯了請告知我下,一起進步哈。

⑦ 幾道單片機編程題目,匯編語言

好吧,給你寫幾個,一次問題的太多了。
1:
PRG1:
MOV DPTR,#2000H
MOV R2,#32
MOV B,#0
LP:
MOVX A,@DPTR
CJNE A,B,LP1
LP1:
JC,LP2
MOV B,A
LP2:
INC DPTR
DJNZ R2,LP
MOV 68H,A
RET
2:
PRG2:
MOV DPTR,#2000H
MOV R2,#0
MOV 6FH,#0
LP:
MOVX A,@DPTR
CJNE A,#41H,LP1 ;'A'=41H
INC 6FH
LP1:
INC DPTR
DJNZ R2,LP
RET
3:;這題不好理解,短整數應該是16位,但按你的描述,是存不下的,所以按有符號字元型數處理
PRG3:
MOV DPTR,#1000H
MOV R2,#30
MOV R0,#30H
MOV R1,#40H
LP:
MOVX A,@DPTR
JB ACC.7,LPF
MOV @R1,A
INC R1
INC DPTR
SJMP LP1
LPF:
MOV @R0,A
INC R0
INC DPTR
LP1:
DJNZ R2,LP
RET
;就寫這幾個吧,後面的程序,程序量太大,就不寫了。

⑧ 一道單片機的編程題

現假定左邊是地址,右邊的是內容
1.它的功能是以50H為首地址,個數為0AH個的RAM全部清零

2.機器碼
7A 0A··········MOV R2,#0AH
mov rn的機器碼是01111xxx,其中xxx由Rn的地址來決定,相應地,R0~R7二進制地址為000~111
那麼R2就是010,後面的數據就跟著mov rn的機器碼後面

7850··········MOV R0,#50H
E4 ···········CLR A;
機器碼固定
F6 ·········LOOP:MOV @R0,A

mov @rn,a機器碼為1111011n
n就是Rn的n
所以間接寄存器定址只能是R1或R0

08 ············INC R0
inc rn機器碼為00001xxx
xxx同理為Rn的物理地址

DA__ ···········DJNZ R2,LOOP
djnz rn機器碼11011xxx
xxx同理為RN的物理地址
loop為8位地址標號
機器碼是以loop為首的第一個指令離loop的單元數
所以djnz r2,loop的loop不能放在此後超過255位元組的程序空間單元
題中loop:後面跟有MOV @R0,A佔1個內部ram單元,INC R0佔1個內部ram單元,DJNZ R2佔1個內部ram單元(由機器碼可得),所以255-3=252=FCH
即機器碼為DAFC

···········DONE:

3.對於第三個問題,樓上的方法有誤
,R0和R2有可能在00H~A0H
而且你只是把0~10放入50H~5AH單元
所以可以這樣
SETB RS1
SETB RS0;R0工作在18H單元
MOV A,#50H
MOV R2,#10
MOV R0,#0
LOOP:
MOV @R0,A
INC A
INC R0
DJNZ R2,LOOP

經模擬無誤

⑨ 【高分,在線等】單片機C51程序編程,初學的簡單題目

#include<reg51.h>
void main(void)
{
unsigned char shuzhu[5]={1,2,1,3,5}; //隨便設的數
unsigned char i,j,t;
for(j=0;j<4;j++)
for(i=0;i<=4-j;i++)
if(shuzhu[i]>shuzhu[i+1])
{
t=shuzhu[i];shuzhu[i]=shuzhu[i+1];shuzhu[i+1]=t;
}
}
用冒泡法就行了

⑩ 51單片機編程題,幫我編個程序。

;採用中斷比較好
ORG 0000H
LJMP MAIN
ORG 001BH ;定時器1中斷矢量地址
LJMP T1_ISR ;轉到中斷子程序處執行

ORG 0030H
MAIN: MOV TMOD,#20H ;採用定時器方式2,8位自動重載
MOV TH1,#6 ;由於周期500u,故高低電平均持續250u
MOV TL1,#6 ;計算得定時初值,定時250u
MOV R0,#4 ;置循環次數,4x250u=1m
SETB EA ;開總中斷
SETB ET1 ;開定時器1中斷
SETB TR1 ;啟動T1
SJMP $ ;空循環
;中斷子程序
T1_ISR: CPL P1.1 ;P1.1取反
DJNZ R0,OUT ;檢測是否計數四次,不夠則退出
MOV R0,#4 ;四次已到,給R0重新賦值
CPL P1.0 ;P1.0取反
OUT: RETI ;返回主程序

END
proteus 模擬通過

閱讀全文

與查找比較程序編程題單片機相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163