单片机中断实验报告

时间:2024.5.15

实验三 定时器中断实验

一、实验目的

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掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部中断时中断方式的选择方法二实验内容如下图所示P32设为输入P2设为输出位连有8个...

单片机中断实验中断报告

报告成绩辅导员签字一实验目的1学习外部中断指令的基本使用方法2学习外部中断处理程序的编程方法二实验内容1在试验一的内容的基础上增加允许急救车优先通过的要求2急救车到达时产生外部中断交通信号为全红以便让急救车通过...

51单片机外部中断实验报告

51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右依次点亮有外部中断请求时4位数码管从0000开始加1显示加到9999后复位为00...

单片机实验报告

通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日1实验一单片机汇编语言程序设计一实验目的1学习MedWin或Keilc51仿真软...

单片机中断技术实验报告

实验名称中断技术基本时钟和定时功能实验45姓名学号实验班号21机器号一实验目的1了解中断原理包括对中断源中断向量中断类型号中断程序以及中断响应过程的理解2掌握单片机C语言中断程序设计方法3了解MSP430G25...

单片机实验报告

目录一实验一1二实验二7三实验三11四实验四15实验一定时计数器验证实验一实验目的熟悉定时计数器T0的特点学会合理选择定时方式并能根据具体情况结合软件的方式定时二实验设备及器件IBMPC机一台PROTEUS硬件...

单片机汇编中断系统实验

单片机原理及应用实验报告实验三中断系统实验专业班级20xx级信息工程姓名高祥学号119xx11009一实验目的1学习掌握51单片机中断系统结构中断控制2学习掌握中断控制初始化和中断服务程序设计调试二实验说明实验...

单片机实验报告

单片机实验报告第一次实验编程与环境学习实验目的1熟悉nSPIDE环境及在该环境下用汇编语言或C语言编写应用程序2熟悉简单的nSP汇编语言指令实验设备装有WINDOWS系统和nSPIDE仿真环境的PC机一台实验内...

dd中南大学单片机实验报告..

中南大学信息科学与工程学院微控制器技术实验报告微控制器技术实验报告专业班级学号0909091123姓名何久帅指导老师1中南大学信息科学与工程学院微控制器技术实验报告目录一实验目的及要求1二实验基本内容1三实验设...

定时器及外部中断实验,南京理工大学紫金学院单片机实验报告

单片机实验报告实验名称定时器及外部中断实验姓名学号班级时间通信20xx11南京理工大学紫金学院电光系一实验目的1理解定时计数器的工作原理2掌握外部中断的基本处理方法3学习中断处理程序的编程方法二实验原理1P1口...

单片机 实验 三 MCS-51单片机中断系统及外部中断INT0实验

大连理工大学实验报告实验时间20xx年7月1日星期二时间13101500实验室房间号综420实验台号码班级姓名指导教师签字成绩实验三MCS51单片机中断系统及外部中断INT0实验一实验目的和要求学习掌握单片机的...

单片机课程设计实验报告_LCD电子时钟

单片机原理与应用课程名称单片机原理与应用设计题目电子钟院系电子信息工程学院班级自动化设计者全宏宇指导教师一设计目标LCD显示电子钟的基本功能1实现时钟功能2实现闹铃功能3实现秒表功能4具有一定的计时精度LCD显...

单片机中断实验报告(32篇)