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

單片機比較程序

發布時間:2022-05-23 04:40:32

A. 單片機 三個數比較大小並從大到小排序

ORG
0000H
MOV
40H,
#8AH
MOV
41H,
#3BH
MOV
42H,
#0B9H
CALL
SORT6
;調用排序子程序
NOP
NOP
SJMP
$
;-------------------------------------
SORT6:
;排序子程序
MOV
R6,
#2
;數據量減一
S1:
MOV
B,
R6
MOV
R7,
B
MOV
R0,
#40H
;起始地址
S2:
MOV
B,
@R0
INC
R0
MOV
A,
@R0
CJNE
A,
B,
S3
S3:
JC
N_JH
MOV
@R0,
B
DEC
R0
MOV
@R0,
A
INC
R0
N_JH:
DJNZ
R7,
S2
DJNZ
R6,
S1
RET
;-------------------------------------
END
程序可對任意多內存數據進行從大到小排序,這里是將40h-42h的數據進行從大到小排序
程序復制自網路,略作修改

B. 以ADC作CMP+的STC15單片機的比較器程序怎樣寫

我看了一下STC15系列的手冊,的確這里語焉不詳,說是PIS=1時就可以用ADCIS[2:0]所選中的通道作為比較器同相輸入端了,然而查遍手冊並無這個位域的相關定義。
就我個人來說,認為這個ADCIS[2:0]有可能指的就是ADC_CONTR寄存器的CHS[2:0]位域。你可以做一下試驗:
① 在ADC_POWER=0的情況下,切換CHS[2:0]的值,看看對應的ADC通道有沒有作為比較器的同相輸入端作用;(理論上我們並不需要ADC模塊真的供電工作,只是借用一下其模塊前端的多路開關而已)
② 如果不行,就將ADC_POWER=1,看看此時的情況如何。
如果都不行,那就只能咨詢STC的技術服務了。

C. 請教單片機C51程序主要是「2個數的比較」

兩個數由P1和P2兩個I/O口的按鍵提供,比較2個數的大小,若P1大,則P0,P3口發光2極管構成跑馬燈左活動;反之則右活動;若相等則閃爍。

D. 比較r3r2大小的單片機程序

cmp:
mov a,r3

clr c

subb a,r2

jc cmp1

mov a,r3 ;r3大

ret

cmp1:
mov a,r2 ;r2大

ret

E. 單片機問題:編寫程序:兩個無符號數比較,內部RAM的20H單元和30H單元各存放了一個8位無符號數


ORG0000H
LJMPMAIN

ORG0030H
MAIN:


MOVA,20H
CJNEA,30H,BU_DENG

//相等
LJMPdayu
BU_DENG:
JNCdayu

xiaoyu: //小於
CLRP1.1
LJMPL_end
dayu: //大於
CLRP1.0
LJMPL_end
L_end:
SJMP$
END

F. 51單片機中怎樣比較兩個數的大小

jc是判斷借位標志CY的跳轉指令,程序應該有做減法的指令,當A<B且做A-B運算後,發生借位,此時硬體置CY為1

G. 單片機匯編語言中比較指令

剛好也有這么個困惑,已經解決了,拿出來分享下
比較轉移指令
CJNZ
CJNE
A,#data,rel
CJNE
A,direct,rel
CJNE
Rn,#data,rel
CJNE
@Ri,#data,rel
第一條指令的功能是將A中的值和立即數data比較,如果兩者相等,就次序執行(執行本
指令的下一條指令),如果不相等,就轉移,同樣地,我們能將rel理解成標號,即:CJNEA,
#data,標號。這樣利用這條指令,我們就能判斷兩數是否相等,這在很多場合是非常有用的。
但有時還想得知兩數比較之後哪個大,哪個小,本條指令也具有這樣的功能,如果兩數不相等,則CPU還會反映出哪個數大,哪個數小,這是用CY(進位位)來實現的。如果前面的
數(A中的)大,則CY=0,不然CY=1,因此在程序轉移後再次利用CY就可判斷出A中的數
比data大還是小了。
例:
MOV
A,R0
CJNE
A,#10H,L1
MOV
R1,#0FFH
AJMP
L3
L1:
JC
L2
MOV
R1,#0AAH
AJMP
L3
L2:
MOV
R1,#0FFH
L3:
SJMP
L3
JC是判CY是0,還是1進行轉移,如果CY=1,則轉移到JC後面的標號處
執行,如果CY=0則次序執行(執行它的下面一條指令)。
分析一下上面的程序,如果(A)=10H,則次序執行,即R1=0。如果(A)不等於10H,則轉
到L1處繼續執行,在L1處,再次進行判斷,如果(A)>10H,則CY=1,將次序執行,即執
行MOV
R1,#0AAH指令,而如果(A)<10H,則將轉移到L2處指行,即執行MOV
R1,#0FFH
指令。因此最終結果是:本程序執行前,如果(R0)=10H,則(R1)=00H,如果(R0)>10H,
則(R1)=0AAH,如果(R0)<10H,則(R1)=0FFH。
弄懂了這條指令,其它的幾條就類似了,第二條是把A當中的值和直接地址中的值比較,第
三條則是將直接地址中的值和立即數比較,第四條是將間址定址得到的數和立即數比較,這
里就不詳談了,下面給出幾個對應的常式。
CJNE
A,10H
;把A中的值和10H中的值比較(注意和上題的區別)
CJNE
10H,#35H
;把10H中的值和35H中的值比較
CJNE
@R0,#35H
;把R0中的值作為地址,從此地址中取數並和35H比較

H. 單片機c51:比較兩個無符號數大小的子程序

MOV A.MAXSUBB A,MINJC CHANGEBACK:RETCHANGE:MOV A,MAXMOV R1,MINMOV MIN,AMOV A.R1MOV MIN,AJMP BACK

I. 單片機 匯編語言 兩數比較大小

單片機有比較指令CMP的嗎,請回答者再看看書吧。可以用CJNE指令,它有比較功能,如CJNE A,#DATA,LABEL 當A<#data時,進位位置一,就可以判斷了。程序如下:
CLR C ;先把進位位清零,以防誤判
CJNE A,#data,no_equ ;不等則轉到no_equ,相等則直接順序執行
....... ;執行相等時的程序
no_equ:
JC lower ;繼續判斷,小於則跳轉到 lower,大於則順序執行
.......
lower:
......
END

J. 用單片機匯編比較兩個ASCII字元串是否相等的程序

問題不明確,所以........下次問問題描述清楚點.C語言:unsigned
char
a,b;
//即兩上ASCII碼if(a!=b){
...}else{
...}
匯編:(以51單片機為例)a
equ
x;
a為ASCII碼,xRAM地址,下同b
equ
y;
cmp
x,ydjnz
loop1;
不相等跳到loop1.......
;相等處理retloop1:......
;不相等處理

閱讀全文

與單片機比較程序相關的資料

熱點內容
c語言不能直接編譯出復雜功能 瀏覽:220
如何把pdf格式轉換成jpg 瀏覽:748
小學各種率的演算法 瀏覽:657
螺桿式空氣壓縮機管件 瀏覽:131
怎麼不讓圖片掃描文件夾 瀏覽:391
pdflib源碼編譯 瀏覽:906
蘋果app怎麼扣款扣多少 瀏覽:658
pdftoxls 瀏覽:449
心動app怎麼一直給我發驗證碼 瀏覽:77
個人納稅app如何增加受雇單位 瀏覽:994
中值濾波演算法c語言 瀏覽:347
PDF里說 瀏覽:99
rfid定位演算法實現 瀏覽:597
中國程序員夫妻 瀏覽:855
qd123y壓縮機啟動器 瀏覽:895
a文件夾目錄 瀏覽:729
程序員業余時間 瀏覽:299
車耗油最簡單的演算法 瀏覽:771
浙江直播系統源碼 瀏覽:575
西門子編程論壇 瀏覽:712