实验时间:2010.05.12
实验名称:定时器/计数器应用
实验目的:1. 学习51单片机内部计数器的使用和编程方法。
2. 进一步掌握中断处理程序的编程方法。
实验要求:
1. 用单片机内部定时器中断方式计时,实现每1秒钟输出状态发生一次反转
2. P1.0 ●-----------------------●LED0
实验过程:
org 0
ajmp start
org 000bh
ajmp timer0_isr
org 0100h
start:
mov sp,#70h
mov A,#00000001
mov r7,#16
setb et0
setb ea
setb pt0
mov tmod,#01h
mov tl0,#00h
mov th0,#00h
setb tr0
sjmp $
timer0_isr:
djnz r7,exit
mov r7,#16
cpl A
mov p1,A
exit:reti
end
1.在KEIL软件内新建工程,输入如下程序:
2. 保存文件后缀名为ASM
3. 鼠标右键点source group,点add files to group ‘source group’
4. 点rebuild all target files运行,看是否有语法错误,并修改语法错误,生成后缀名为HEX的文件。
5. 连接单片机开发板与电脑。打开烧录软件,装载HEX文件。
6. 将刚才生成的HEX文件烧入单片机学习开发板中,待完成后观察实验结果。
实验结果:
P1.0口所对应的LED灯,亮一秒,暗一秒。符合实验要求。
实验三 数据排序、拼拆、转换练习
实验时间:2010.05.18
实验名称: 数据排序、拼拆、转换练习
实验目的: 1、熟悉掌握比较和控制转移指令的功能及编程;
2、掌握排序的算法
实验内容: 给出一组随机数,将此组数据排序,使之成为有序数列。
实验过程:
在keil软件录入以下程序,冒泡排序,升序:
实验结果:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0,#04H
LOOP1: MOV R1,#20H
MOV A,R0
MOV R2,A
LOOP2: MOV A,@R1
MOV R3,A
INC R1
SUBB A,@R1
JC LOOP3
MOV A,R3
XCH A,@R1
DEC R1
MOV @R1,A
INC R1
LOOP3: DJNZ R2,LOOP2
DJNZ R0,LOOP1
SJMP $
END
小数排前,大数排后。