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

单片机比较程序

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

阅读全文

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

热点内容
谷歌在英国伦敦的程序员的工资 浏览:688
windows系统的云服务器 浏览:374
foxitpdfeditor水印 浏览:502
phpsocket邮件 浏览:261
jsp小区物业管理系统源码 浏览:478
打印机怎么扫描pdf 浏览:278
电子表格如何加密解密 浏览:662
我的世界国际服怎么创服务器低延迟 浏览:630
建设银行app怎么知道自己是几类卡 浏览:307
安卓手机怎么设置到时间睡觉提醒 浏览:538
如何加密一个人微信聊天 浏览:177
374的源码 浏览:360
量价平台源码 浏览:811
微光怎么投屏到其它app 浏览:744
应用加密里面为什么没有微信加密 浏览:64
招聘网站源码论坛 浏览:650
进工厂模式时出现没有命令 浏览:749
ssa算法 浏览:55
程序员的五笔编码 浏览:973
javaget请求乱码 浏览:97