实验三 定时器中断实验
一、实验目的
1、掌握51单片机定时器基本知识;
2、掌握定时器的基本编程方法;
3、学会使用定时器中断。
二、实验内容
1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。
三、实验设备
PC 机一台、单片机实验箱
主要器件:AT89C52、7SEG-BCD、
四、实验步骤
1、使用Proteus设计仿真原理图;
2、使用Keil设计程序;
3、联合调试仿真。
五、实验流程图
六、实验程序与结果
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit F=P2^1;
void timer1_init()
{
TMOD=0x10;//将定时器1设置为工作方式1
TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500
//(1/500)s/(1/3000000)s=6000
TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000
EA=1;
ET1=1;
TR1=1;
}
void main()
{
timer1_init();
while(1);
}
void timer1() interrupt 3
{
TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256;
F=~F;//每次进入中断P1.1口取反
}
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit F=P2^1;
void timer0_init()
{TMOD=0x01;//将定时器0设置为工作方式1
TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us
//500us/6us=83.3333
TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83
EA=1;
ET0=1;
TR0=1;
}void main()
{
timer0_init();
while(1);
}
void timer0() interrupt 1
{
TH0=(65536-83)/256;//每次进入中断,重装初值
TL0=(65536-83)%256;
F=~F;//每次进入中断P1.1口取反,表示定时时间到
}
#include<reg51.h> // 包含51单片机寄存器定义的头文件
#define seg_data P1
#define seg_data2 P3
#define uint unsigned int
sbit D1=P2^0; //将D1位定义为P2.0引脚
uint counter=0;
unsigned int unit=0,decade=0,avs=0;//time=0;
/**************************************************************
函数功能:主函数
**************************************************************/
void main(void)
{
uint time,time1,temp1,temp2,temp3;
seg_data=0;
seg_data2=0;
TMOD=0x11; //使用定时器T0的模式2
TH0=0xFC; //定时器T0的高8位赋初值 1000-500
TL0=0x18; //定时器T0的低8位赋初值
TH1=(65536-50000)/256; //定时器T1的高8位赋初值
TL1=(65536-50000)%256; //定时器T1的低8位赋初值
EA=1; //开总中断
ET0=1; //定时器T0中断允许
ET1=1;
TR0=1; //启动定时器T0
TR1=1;
while(1)//无限循环等待中断
{
temp1=(decade&0x0F)<<4;
temp2=unit&0x0F;
time=temp2|temp1;
seg_data=time;
temp3=avs&0x0F;
time1=temp3;
seg_data2=time1;
}
}
{
D1=~D1; //按位取反操作,将P2.0引脚输出电平取反
TH0=0xFF; //定时器T0的高8位赋初值 1000-500
TL0=0x06; //定时器T0的低8位赋初值
}
void Time1(void) interrupt 3
{
counter++;
if(counter>19)
{
unit++;
counter=0;
}
if(unit>9)
{decade++;
unit=0;
}
if(decade>5)
{
avs++;
decade=0;
}
if(avs>9)
{
avs=0;
}
TH1=(65536-50000)/256; //定时器T1的高8位赋初值
TL1=(65536-50000)%256; //定时器T1的低8位赋初值
TF1=0;
}
七、实验心得
通过本次课程设计使我感受到它是一门综合性、实践性较强的课程,使我体会到要想综合运用所学的理论知识,提高我的设计能力,必须增加实际操作的环节。这次课程设计不仅培养了我们的实际动手能力,更检验了我们对本门课学习的情况,培养我们严肃认真的学习态度。真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,并能用设计报告表达设计思想和结果的能力正是我这次课程的目的。
单片机实验报告(二)
实验名称:
定时器及外部中断
南京理工大学紫金学院电光系
一、 实验目的
1、学习定时/计数器的应用;
2、学习外部中断技术的基本使用方法;
3、学习中断处理程序的编程方法。
二、 实验原理
(1)以P1口作为输出口,定时器实现1s定时,实现显示数的1s加1,外部中断0键盘外接BUTTON,实现对显示数快速加1的控制。
(2)系统板上硬件连线
把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。
把“单片机系统”A2区的INT0端口用导线连接到D1区的KEY1端口上;
三、 实验内容
利用定时器中断控制1s的输出,使用外部中断0使得显示的数加1.
程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay()
{uint x,y;
for(x=100;x>0;x--)
for(y=110;y>0;y--);
}
uchar m,flag;
void main()
{
uchar a,b;
TMOD=0x01;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EX0=1; EX1=1; PX1=1; ET0=1; EA=1; 中断开启
TR0=1;
m=0; P1=0;
while(1)
{
while(flag==0); flag=0;
if(m==100) m=0;
m++;
a=m/10;
b=m+a*6;
P1=b;
}
}
void timer0() interrupt 1 using 0
{
uchar t;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(t<20) t++;
else { flag=1; t=0; }
}
void exter0() interrupt 0 using 1
{
if(INT0==0) delay();
if(INT0==0) flag=1;
}
void exter1() interrupt 2 using 2
{
if(INT1==0) delay();
if(INT1==0) m=0;
}
将编译好的程序下载到仿真电路中
四、 小结与体会
通过本次定时器中断实验,我对定时器的工作原理有了更加深入的理解,这也是建立在向同学请教的基础上。对于目前的我来说,学习不论过程,只看结果。当然,这次的实验也给了我很多启发,集思广益才是最好的。
实验三定时器中断实验一实验目的1掌握51单片机定时器基本知识2掌握定时器的基本编程方法3学会使用定时器中断二实验内容1利用定时器设…
实验三外部中断实验报告班级学号姓名教师一实验目的1掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部…
报告成绩辅导员签字一实验目的1学习外部中断指令的基本使用方法2学习外部中断处理程序的编程方法二实验内容1在试验一的内容的基础上增加…
51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右…
通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
单片机实验报告(二)实验名称:定时器及外部中断南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技…
实验三外部中断实验报告班级学号姓名教师一实验目的1掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部…
实验名称中断技术基本时钟和定时功能实验45姓名学号实验班号21机器号一实验目的1了解中断原理包括对中断源中断向量中断类型号中断程序…
51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右…
实验报告一中断处理姓名xxxx学号xxxx班级xxxxx一实习内容运用某种高级语言如C或C模拟时钟中断的产生及设计一个对时钟中断事…