湖南工业大学单片机实验报告文档格式.docx
《湖南工业大学单片机实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《湖南工业大学单片机实验报告文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
START:
MOVR1,10H;
一共16个数据
MOVR0,#70H;
原数据首地址
MOVDPTR,#2000H;
片外存储单元首地址
MOV70H,#00H;
送入原始数据,把70H-71H中分别送入00H-0FH
MOV71H,#01H
MOV72H,#02H
MOV73H,#03H
MOV74H,#04H
MOV75H,#05H
MOV76H,#06H
MOV77H,#07H;
MOV78H,#08H
MOV79H,#09H
MOV7AH,#0AH
MOV7BH,#0BH
MOV7CH,#0CH
MOV7DH,#0DH
MOV7EH,#0EH
MOV7FH,#0FH
LOOP:
MOVA,@R0;
循环送入2000H-200FH
MOVX@DPTR,A;
执行片外将累加器A中的数据送到数据指针DPTR
INCR0;
R0中的数据自加一
INCDPTR;
DPTR中的数据自加一
DJNZR1,LOOP;
R1=1,程序继续执行,R1不等于0,程序转移到LOOP
END;
程序结束
MOVR1,#10H;
将立即数10H送到间接锁存器R1
MOVR0,#70H;
将立即数70H送到间接锁存器R0
将立即数2000H送到数据锁存器DPTR
三、上机运行结果
软件实验二数据排序实验
一、实验目的
熟悉单片机汇编指令系统,掌握汇编程序设计方法。
二、实验内容
编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。
三、实验程序框图
ORG09B0H;
伪指令,设置程序入口
QUE:
MOVR3,#50H;
将立即数50H送入当前工作寄存器R3
QUE1:
MOVA,R3;
指针送R0
MOVR0,A;
将累加器A中的数据送到R0
MOVR7,#0AH;
长度送R7
CLR00H;
标志位为0
MOVA,@R0;
保存数据
QL2:
INCR0;
指向下一个地址
MOVR2,A将累加器A中的数据送到当前工作寄存器R2
CLRC;
给cy清零
MOV22H,@R0保存数据
CJNEA,22H,QL3;
相等吗?
SETBC;
给cy置一
QL3:
MOVA,R2;
将R2中的数据送到累加器A
JCQL1;
大于交换位置
SETB00H给00H单元置一
XCHA,@R0字节交换
DECR0;
R0自减一
INCR0;
QL1:
MOVA,@R0将间接寄存器中的数据送到累加器A
DJNZR7,QL2判断R7是否为零确定继续执行或转移
JB00H,QUE1;
一次循环中有交换继
SJMPLOOP;
无交换退出
上机运行结果:
六、思考题:
修改程序把50H~5AH中内容按从大到小排列。
答:
程序清单如下
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVA,50H
SUBA,51H
JCBIANHUAN
JINC NEXT
BIANHUAN
MOV50H,51H
MOV51H,A
RETI
仿真实验一I/O端口操作
1、掌握I/O端口读写等基本汇编指令;
2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。
二、实验仪器设备
1、PC机,1台
2、WAVE软件开发系统
3、仿真软件PROTEUS
三、实验内容:
编写一段汇编程序,使与单片机P0.3口相连的发光二极管循环点亮,亮灭时间必须大于0.5秒(肉眼能清晰分辨二极管的亮灭变化)。
要求用PROTEUS软件完成仿真电路设计,并进行功能验证。
ORG0000H;
SJMPSTART转移并执行START
ORG0030H设置START入口
MOVP0,#0FFH;
先初始化,暗灯
LOOP1:
CPLP0.3;
点亮led
ACALLDELAY;
调用延时子程序,延时0.5秒
SJMPLOOP1;
循环点亮
DELAY:
MOVR5,#50
L2:
MOVR6,#100
L1:
MOVR7,#100
DJNZR7,$
DJNZR6,L1
DJNZR5,L2
RET;
返回
END;
结束
四、实验步骤:
用PROTEUS完成单片机硬件电路设计
2、用WAVE软件完成发光二级管亮灭程序,用延时子程序设计一段时间延时,编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。
单片机晶振设为12MHZ,试计算自己编写的延时子程序的精确延时时间?
当晶振为12MHz时机器周期为1uS(微秒)标准51的DJNZ指命用时为二个机器周期,由于大循环R2中的数是50,小循环每次被重置#100,故就应该是1(MOVR1,#50用)+2*50*100(循环所用)+50(MOVR2,#100用的)+2(RET用的)这个50是第一条MOVR2,#100每跳出循环重置R2时就要多用的一个机器周期)再在运行中没有其它中断来干扰时就该是每从调用进这个子程序开始到完成RET出来就要用10,053uS
仿真实验二定时中断
1、熟悉单片机定时器工作原理;
2、掌握定时器定时控制的编程方法。
二、实验基本原理
1、定时/计数器工作原理
图2.11定时/计数器原理图
(1)定时时间的求取。
例:
设单片机晶振频率为12MHZ,定时时间为1ms,求时间常数?
定时器计数周期=12/fosc=1us,1ms/1us=1000,
因此,计数初值=65535+1-1000=64536=FC18H
(2)定时/计数器初始化
MOVTMOD,#10H
SETBTR1
编写一段汇编程序,使单片机P1.0口输出一段时钟周期为2ms的方波。
要求采用T1中断方式,工作方式1。
用PROTEUS软件完成仿真电路设计,并用软件中自带的示波器观察输出结果。
伪指令设置程序入口
AJMPSTART;
绝对转移指令,转移并还行START
ORG001BH;
设置START入口地址
AJMPT1INT;
T1口执行指令
ORG0030H;
自行设置地址,可去
MOVSP,#30H
MOVTMOD,#10H;
执行方式2
MOVTH1,#0FCH
MOVTL1,#018H
SETBTR1
SETBET1
SETBEA
AJMPMAIN
T1INT:
CPLP1.0
MOVTL1,#18H
RETI
四、实验操作步骤:
1、硬件电路设计
2、单片机晶振频率为12MHZ,用KEIL软件编写P1.0引脚上输出周期为2ms的方波程序。
编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。
3、PROTEUS仿真验证。
仿真实验三十字路口交通灯
1、掌握ISP在线调试的方法;
2、掌握硬件实验箱的使用方法;
3、熟悉汇编程序基本格式与编程方法。
二、实验仪器设备:
1、PC机
2、PROTEUS仿真环境。
编写十字路口交通灯控制程序,控制红、黄、绿交通指示灯的亮灭,模拟十字路口交通灯控制。
参考程序如下:
MOVP0,#01111011B;
P0.7=P0.2=0,红灯亮.
CALLDL3S
MOVP0,#11011011B;
P0.5=P0.2=0,东西红南北绿.
CALLDL15S
MOVP0,#10011011B;
P0.6=P0.1=0,黄灯亮.
MOVP0,#01111110B;
P0.7=P0.0=0,南北红东西绿.
MOVP0,#01111100B;
SJMPLOOP
DL15S:
MOVR4,#5
DL2:
DJNZR4,DL2
RET
DL3S:
;
延时3s,实测3.03s
MOVR5,#23
DL3:
MOVR6,#0
DL4:
MOVR7,#0
DL5:
DJNZR7,DL5
DJNZR6,DL4
DJNZR5,DL3
END
用KEIL软件编写交通灯控制程序。