置断点观察每次排序结果
NOP
排序子程序
DATEQU60H排序数据首地址
NEQU10排序个数SELSORTMOVR0DAT
MOVR2N1
LOOPMOVBR0
MOVAR0
MOVR3A
INCA
MOVR1A
MOVAR2
MOVR4A
LOOP1MOVAR1
CLRC
SUBBAB
JCLOOP2改为JNC即可逆序排列
MOVBR1
MOVAR1
MOVR3A
LOOP2INCR1
DJNZR4LOOP1
MOVAR3
MOVR1A
MOVAR1
XCHAR0
XCHAR1
INCR0
DJNZR2LOOP
RET
END
题目2
ORG0000H
LJMPmai
ORG0100H
mai
MOVR020H
MOVR00FFH
INCR0
MOVR00FFH
INCR0
MOVR00FFH
MOVR030H
MOVR022H
INCR0
MOVR022H
INCR0
MOVR022H
ACALLMULTADD调用多字节加法子程序
HEREAJMPHERE可在此处设置断点观察结果
NOPN字节无符号数加法子程序
R0R1R0
入口R0R1R2
占用资源ACCB
堆栈需求2字节
出口R0存放结果高地址MULTADDMOVR020H地址1
MOVR130H地址2
MOVR203H加法字节数NSUBCLRC
NSUB1MOVAR0
ADDCAR1
MOVR0A
INCR0
INCR1
DJNZR2NSUB1
CLRA
ADDCA00H把进位位C加到高8位去
MOVR0A
RET
END
五、附加题
1画出题目1的程序流程图。
可编辑文本
f
2
ORG0000H
LJMPmai
ORG0100H
MAIN将10个随机数送入LOOP2MOVAR0
MOV50HR1
CJNEA50HBIG做减法。
BIGJNCLESS是0则跳转
LJMPLOOP3
LESSXCHAR1
交换60与61中的内
容
XCHAR0
LOOP3INCR1
CJNER16AHLOOP2
INCR0MOV51HR0MOVR151HINCR1
CJNER069HLOOP2
以此类推直到剩最后两个数比较完。SJMP
END
3画出题目2的程序流程图。
f4
ORG0000H
LJMPmai
ORG0100H
mai
MOVR020H
MOVR00FFH
INCR0
MOVR00FFH
INCR0
MOVR00FFH
MOVR030H
MOVR022H
INCR0
MOVR022H
INCR0
MOVR022H
ACALLMULTADD
法子程序
HEREAJMPHERE
点观察结果
NOP
地址1
地址2
加法字节数
C
把进位
A
f实验三定时计数器实验
一、实验目的
1、掌握MCS51单片机内部定时计数器的功能与特点工作方式选择和编程方法中断功能的使用和中断服务程序的设计
2、了解和熟悉MCS51单片机实验板的功能。
二、实验内容及步骤完成分值60分单个程序
本实验需要用到单片机最小应用系统F1区和十六位逻辑电平显示模块I4区。用P1口做输出口接十六位逻辑电平显示程序功能使发光二极管从右到左轮流循环点亮。
三、参考流程图、电路图、参考程序
100
f程序
Tickequ5000100us记数次数5000x100us05s十六进制1388H
T100usequ156100us时间常数12MHz
C100usequ5h100us记数单元05H、06H
org0000H
ljmpStart
org000BH
LJMPT0I
t
ORG0100H
Start
movTMOD02h方式2定时器
movTH0T100us100us时间常数12MHz
movTL0T100us100us时间常数12MHz
movIE10000010bEA1IT01
setbTR0开始定时
movp10FEH由于电路原因输出高电平为灭灯。
movC100usHIGHTick05H13H初r