导航:首页 > 操作系统 > 单片机比较程序

单片机比较程序

发布时间: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:......
;不相等处理

阅读全文

与单片机比较程序相关的资料

热点内容
app保存草稿怎么用 浏览:806
安卓如何进入proumb 浏览:141
主机虚拟云服务器 浏览:617
删除分区加密的空间会不会恢复 浏览:703
京东app客户上门怎么看搜索量 浏览:739
怎么在农行app购买黄金 浏览:45
c型开发板和单片机 浏览:146
虚拟机建立用户的模板文件夹 浏览:904
无锡代码编程培训班 浏览:631
eps图形数据加密 浏览:933
没有滴滴app怎么打车 浏览:101
大数乘法java 浏览:1001
如何登录服务器看源码 浏览:526
如何做服务器端 浏览:157
注册服务器地址指什么 浏览:434
文本命令行 浏览:98
扑克牌睡眠解压 浏览:197
rc4算法流程图 浏览:162
胡萝卜解压方法 浏览:39
扫描pdf格式软件 浏览:880