实验四 80c51综合软件设计。
一、 实验目的:
熟练掌握80c51的指令系统和编写程序的方法。
二、 实验内容:
1) 将ram50h~59h中的数据从小到大顺序排列。
2) 借助51单片机开发系统及参考程序,编程求出10个正整数的最大值、最小值、和、平均数。
三、程序。org 0000h
reaet:ajmp main
org 0100h
main: mov sp,#60hmain函数)
mov r0,#50h将十个数存入cpu内部存储器,起始地址为50h)
mov @r0,#6fh
inc r0
mov @r0,#6eh
inc r0
mov @r0,#6ah
inc r0
mov @r0,#6ch
inc r0
mov @r0,#6dh
inc r0
mov @r0,#6bh
inc r0
mov @r0,#67h
inc r0
mov @r0,#69h
inc r0
mov @r0,#68h
inc r0
mov @r0,#64h
inc r0
acall qmm调用求平均值、最大值、最小值函数)
acall sum调用求和函数)
acall **arage调用求平均值函数)
sjmp $
qmm: clr 00h求平均值、最大值、最小值函数)
mov r7,#09h每个循环进行9次两两比较)
mov r0,#50h
mov a,@r0将第一个数的值送到累加器a)
l2: inc r0
mov b,@r0将后面一个数的值送到b)
clr c符号位清零)
cjne a,b,l3前后两个数进行比较,若前后两数不相等则跳到l3)
l3: jc l1若符号位为1,即前面的数小于后面的数则程序跳到l1)
setb 00h若符号位为1,即前面的数小于后面的数,则程序继续向下执行,00h单元置为1)
xch a,@r0后面单元中的数与累加器a中的数进行交换)
dec r0
xch a,@r0前面单元中的数与累加器a中的数进行交换)
inc r0
l1: mov a,@r0
djnz r7,l2若未进行完9次比较则程序跳回l2继续执行)
jb 00h,qmm进行完9次比较若仍有交换存在,则程序跳回qmm继续循环,直到10个单元中的数不再进行交换,即完成从小到大排序)
mov a,59h将最大值送到30h单元)
mov 30h,a
mov a,50h将最小值送到20h单元)
mov 20h,a
retsum: clr c求和函数)
mov r0,#50h
mov r1,#
mov a,r1
mov r7,a10个数相加循环10次)
mov r2,#00hr2中存放累加值)
mov r3,#00hr3中存放进位的累加值)
lp0: mov a,r2
add a,@r0
mov r2,a
mov a,r3
addc a,#00h
mov r3,a
inc r0
djnz r7,lp0
mov 5ah,r2将和的低八位存放在5a单元中)
mov 5bh,r3将和的高八位存放在5b单元中)
ret**arage求平均值)
mov 5ah,r2
mov 5bh,r3
inc r3
mov r4,#00hr4中存放减10的次数)
mov a,r2
q1: clr c
mov r5,#0ah
q2: dec a减10次1)
djnz r5,q2
cjne a,0ah,q3
q3: inc r4每减一个10,r4加1)
jnc q1循环减10,直到低位小于0)
djnz r3,q1低位减完向高位借位,直到高位小于0)
dec r4
mov 5ch,r4将商送到5ch单元)
mov r5,0ah
q4: inc a
djnz r5,q4
mov 5dh,a将余数送到5dh单元)ret
单片机作业之编程题
综合编程题。1 如图,在p1.0 p1.7分别接8个led,编写一完整程序,用定时器t0实现1秒钟延时,定时器t0用中断方式。使8个led分别点亮1秒钟,点亮顺序为 led1 led8,led8 led1,led1 led2 led7led8 俩俩点亮,fosc 6mhz 142 根据电路图,设计一...
单片机,编程参考题目
参考题目。题目1 交通灯控制系统。一 设计题目交通灯控制系统。二 设计目的。1 掌握51系列单片机的基本硬件结构及工作原理 2 掌握51系列单片机的汇编语言及基本程序设计方法 3 学习并掌握使用51系列单片机开发控制系统的基本步骤及方法。三 设计要求。交通灯用于控制行人和车辆依次通过十字路口。其设计...
单片机作业
单片机测试一。第一部分选择题。一 单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其 填写在题前的括号内。错选 多选或未选均无分。1.下列关于单片机说法错误的是。单片机的cpu能处理8位二进制数据或 以及布尔运算。b.8051总共有256个ram单元,内部数据存储器为前128单元。...