CLR A
MOV R7,A
MOV R6,A
MOV R5,A
LOOP1:
MOV A,#20H
ADD A,R5
MOV R0,A
MOV A,@R0
ADD A,R7
MOV R7,A
CLR A
ADDC A,R6
MOV R6,A
INC R5
CJNE R5,#010H,LOOP1
MOV A,R6
SWAP A
MOV R0,A
ANL A,#0F0H
XCH A,R0
MOV A,R7
SWAP A
ANL A,#0FH
ORL A,R0
MOV 30H,A
SJMP $
END
这8个无符号数存放在内部RAM以20H开始的8个单元中,结果保存在R2中
程序如下:
MOV R0, #20H
MOV R1, #8
MOV R2, #0
MOV R3, #0
LOOP:
MOV A, @R0
ADD A, R3
MOV R3, A
JNC QQQ
INC R2
QQQ:
DJNZ R1, LOOP
;
ANL A, #0F8H
ADD A, R2
RL A
SWAP A
MOV R2, A
;
SJMP $
END
----------------------
在内部RAM的LIST单元开始存有一组单字节不带符号数,数据长度为30,要求找出最大数存入BIG单元。
程序如下:
MOV BIG, #0
MOV R0, #LIST
MOV R2, #30
CHA:
MOV A, @R0
CJNE A, BIG, QQQ
QQQ:
JC WWW
MOV BIG, A
WWW:
INC R0
DJNZ R2, CHA
SJMP $
END
;完
;启动入口========================
ORG 0000H ;复位启动
AJMP START ;
;主程序==========================
START: MOV R0,#20H ;数据开始地址
MOV R2,#0 ;清零结果低字节
MOV R3,#0 ;清零结果高字节
MOV B,#8 ;数据个数
;
LOOP1: MOV A,@R0 ;取得一个数据
ADD A,R2 ;相加
MOV R2,A ;存回
;
MOV A,R3 ;高位和
ADDC A,#0 ;
MOV R3,A ;存回
INC R0 ;指向下一单元
DJNZ B,LOOP1 ;加完所有数据
;
MOV B,#3 ;准备除8
LOOP2: MOV A,R3 ;高位和
CLR C ;
RRC A ;CY→D7→...→D0→CY
MOV R3,A ;存回
MOV A,R2 ;低位和
RRC A ;CY→D7→...→D0→CY
MOV R2,A ;存回
DJNZ B,LOOP2 ;右移3次,平均值结果在R2中
END ;结束
单片机求无符号数的平均值的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:单片机求无符号数的平均值