*****数学计算机科学系实验报告
专业: 计算机科学与技术 班级: 实验课程: 单片机原理与应用技术
姓名: 学号: 实验室: 硬件实验室
同组同学:
实验时间: 20##年3月20日 指导教师签字: 成绩:
实验项目:定时器
一 实验目的和要求
定时器0实现1s定时,流水灯显示上的数据每秒加1。
二 实验环境
PC机一台,实验仪器一套
三 实验步骤及实验记录
1.在pc机上,打开Keil C。
2.在Keil C中,新建一个工程文件,点击“Project->New Project…”菜单。
3. 选择工程文件要存放的路径 ,输入工程文件名 M, 最后单击保存。
4. 在弹出的对话框中选择 CPU 厂商及型号。
5. 选择好 Atmel 公司的 89c51 后 , 单击确定。
6. 在接着出现的对话框中选择“是”。
7. 新建一个 C51 文件 , 点击file菜单下的NEW,或单击左上角的 New File快捷键。
8. 保存新建的文件,单击SAVE。
9. 在出现的对话框中输入保存文件名MAIN.C,再单击“保存”。
10. 保存好后把此文件加入到工程中方法如下 : 用鼠标在 Source Group1 上单击右键 , 然后再单击 Add Files to Group ‘Source Group 1'。
11. 选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close。
12. 在编辑框里输入代码如下:
#include "reg51.h" //包含头文件
sbit LE1=P2^0; //位选573锁存器使能
sbit LE2=P2^1; //段选573锁存器使能
#define uchar unsigned char
#define uint unsigned int
uchar temp,num; //定义变量
t0() interrupt 1 using 1
{
TH0=0x3c; //重置定时器初值
TL0=0xb0;
if(temp>=19) //满20次,即20次*50ms=1s
{
temp=0x00; //重置temp为0
num++; //显示变化一次
P1=~num; //将变化次数放在P1控制的LED上显示
}
else
{
temp++; //每进一次中断,temp加1
}
}
main()
{
TMOD=0x01; //0b00000001 用的是定时器0,工作在方式1(16位寄存器)
//要实现定时50ms,(65536-T0)x12/12000000=0.05s得T0=15536即0x3cb0
TH0=0x3c; //装定时器初值高8位
TL0=0xb0; //装定时器初值低8位
TR0=1; //启动定时器0
ET0=1; //开定时器0中断
EA=1; //开总中断
while(1); //死循环,等待定时器中断
}
13.单击 快捷键或单击Project/Rebuild all the files, 如果在错误与警告处看到 0 Error(s) 表示编译通过 。
14. 单击Options for Target, 单击 Output, 选中 Create HEX Fi。再单击“确定”,再次编译产生HEX文件。
15.STC-ISP 软件烧写程序,步骤如下:
步骤1、选择单片机型号STC12C5A60S2。
步骤2、打开程序文件(后缀为.HEX 的文件)。 在相应工程下找到待下载的HEX文件,点击打开即可。
步骤3、选择串行口COM3。
步骤4、用USB线连接电脑和主板,将主板和核心板上的电源都关闭,点击“Download下载”,打开核心板上的电源开关(注意不是主板上的电源开关),等待完成下载。
16.在单片机上, 用8位排线将J8与J13连接。
17.打开单片机电源开关,观察现象。
四 实验结果与分析
定时器0实现1s定时,LED显示的数据每秒加1
第二篇:单片机原理与应用实验报告1
大连理工大学软件学院
《单片机原理与应用》实验报告
姓 名: 学号: 班级:
姓 名: 学号: 班级:
组 号: 实验箱编号:
实验时间: 年月日实验室:嵌入式实验室 实验台: Embest Edukit-III平台_
指导教师: 侯刚老师 成绩:
实验1:实验名称存储器块清零
一、实验目的和要求
实验目的:掌握存储器读写方法,了解存储器的块操作方法
实验要求:
1、将4000h为首地址的内存块0FFH位内容置零
2、将4000h为首地址的连续0FFH个内存块填入1~FF
3、将寄存器30h和31h的内容送到地址为4000h和4001h的寄存器中
二、实验原理和内容
1、当对外存进行操作时,可使用16位的DPTR寄存器间接寻址,同时对实现循环0FFH次进行了深刻的理解
2、熟悉了使用进位寄存器、DPTR寄存器A寄存器、条件跳转语句的使用方法,掌握了各种取址方式的异同,并能较好应用
3、用dptr寄存器和累加器A实现数据的转移,用movx命令访问外部存储器
三、主要仪器设备及软件编程环境
uVsition 2编译器
四、实验步骤与编程
1、 ORG 0000H
START:
mov dptr,#4000h ;设置起始地址
mov r3,#0ffh ;设置块儿的长度
mov a,#0ffh ;全部置成0ffh
LOOP: movx @dptr,a ;全部置00h
inc dptr ; 地址加1
djnz r3,LOOP ;循环条件
END
2、 ORG 0000H
START:
mov dptr,#4000h ;设置起始地址
mov r3,#00h ;设置块儿的长度
mov a,#00h ;从00h递增
LOOP: movx @dptr,a ;全部置00h
inc a ; 要转移的的值加1
inc dptr ;地址加1
djnz r3,LOOP ;循环条件
END
3、 ORG 0000H
START:
mov 30h,#03h ;为30h置初值
mov 31h,#04h ;
mov a,30h ;将值转移到累加器a
mov dptr,#4000h ;用dptr存储4000h
movx @dptr,a ;将a中的值传到外部存储器中
inc dptr
mov a,31h
movx @dptr,a ;循环条件
END
五、实验数据与结果分析
实验一:(为方便观看,将要求的0改为了FF)
实验二:
实验三:(30、31分别储存01、02)
六、讨论、建议
这次试验比较简单,属于入门级的但是我们认真对待并且很快完成了,也对嵌入式有了充分的兴趣。