精华内容
下载资源
问答
  • 实验使用使用c语言在Keil uVision 4软件编程,使用Proteus软件模拟单片机运行,掌握单片机使用定时器计数器和外部中断的方法。51单片机设置晶振频率为11.0592MHz。将keil生成的.hex程序导入到Proteus的单片机中...


    本实验使用使用c语言在Keil uVision 4软件编程,使用Proteus软件模拟单片机运行,掌握单片机使用定时器、计数器和外部中断的方法。51单片机设置晶振频率为11.0592MHz。将keil生成的.hex程序导入到Proteus的单片机中便可以仿真运行。

    实验目的

    掌握8051单片机内部定时器/计数器、外部中断的使用方法。

    实验内容

    1、定时器

    任务
    按电路原理图接线,P1.1接一个LED灯(输出0时灯亮,输出1时灯灭),用51单片机内部定时器T0定时,使LED灯亮1秒钟,灭1秒钟,重复循环;
    定时实验原理图
    在Proteus软件中进行连接。
    在这里插入图片描述

    编写程序如下

    #include<reg51.h>
    char i=100;
    sbit a=P1^1; //以a替代P1.1口
    
    void main()
    {
    	TMOD=0x01;  //设置工作方式,开启定时器
    	TH0=0xdc; 
    	TL0=0x00; //TH0和TL0用于确定时长,此处设置为10ms
    	a=0;     
    	EA=1; //允许中断
    	ET0=1;//T0中断
    	TR0=1;//启动T0
    	while(1);
    }
    
    void timer0() interrupt 1  //中断函数,定时器运行到TH0时中断,开始运行此部分程序
    {
    	TH0=0xdc;//初始化定时器
    	TL0=0x00;
    	i--;//10毫秒重复100次为1秒。
    	if(i<=0)   //重复100次后,改变灯状态,重置i,继续计时
    	{
    		a=~a; 
    		i=100;
    	}
    }
    

    该程序最终不会准确的为1秒。因为程序运行的时间会使计时有误差。

    2、计数器

    任务
    按电路原理图接线,设置8051单片机内部计数器1工作于计数模式,按方式2工作,对T1引脚手动输入的单脉冲进行计数,并将计数值从P1口输出在LED灯上显示出来。要求计数器初值为0,即TL1=0x00。
    原理图2在Proteus软件中绘制如图所示
    在这里插入图片描述

    问题
    方式二计数中断必须在计满后才能中断,因此TL需为0xff。实验要求无法满足。
    因此我使用了两种不同的方法完成该实验,都使用了计数器,但不都使用中断方法。两种方法分别满足使用中断和TL1=0x00的要求。

    方法1

    方法使用了中断的方法,但是以方式二计数中断必须在计满后才能中断,因此TL需为0xff。
    程序如下

    #include<reg51.h>
    unsigned char A;
    void main()
    {
    	TMOD=0x60;   //开启计数器,设置T1方式2
    	TH1=0xff;
    	TL1=0xff;//按下即可中断
    	EA=1;//允许中断
    	ET1=1;//T1中断
    	TR1=1;//T1启动
        P1=0x00;
    	A=0x00;
    	while(1);
    } 
    
    void T1_int(void) interrupt 3
    {
    	A=A++; //A用于计数
    	P1=~A;
    }
    

    方法2

    #include<reg51.h>
    
    void main()
    {
    	TMOD=0x60;   //T1方式2
    	TH1=0x00;
    	TL1=0x00;
    	TR1=1;
        P1=0x00;
    	while(1)
    	{
    		P1=~TL1;//输出与计数器计数一致
    	};
    }
    

    外部中断

    任务
    按电路原理图接线,通过手动向8051单片机的管脚输入单脉冲,
    申请中断。每中断一次,P1口依次输出0x55、0xaa、0x55、0xaa……,P1口接8个LED灯,显示结果;
    在这里插入图片描述
    绘制模拟电路图如下
    在这里插入图片描述
    程序如下

    #include<reg51.h>
    
    void main()
    {
    	EA=1;//开启中断
    	EX0=1;//开启外部中断
    	IT0=1;//启动外部中断
    	P1=0x55;//设置输出
    	while(1);
    }		   
    void int0() interrupt 0 using 0
    {
    	EX0=0;
    	P1=~P1; 
    	EX0=1;
    }
    

    这就是本实验的全部内容了
    完整代码和仿真程序可点击此处获取.
    如果对你有帮助的话,一键三连支持下。

    展开全文
  • 定时器中断实验

    2021-05-21 23:09:29
    定时器中断实验 定时器中断实验 一:51单片机定时器原理 (1)51单片机定时/计数器结构 T0,T1引脚对应单片机的...GATE是门控位,GATE=0时控制定时器的启动是否受外部中断源信号影响,只需用软件使TCON中的TR0或者TR1为1

    定时器中断实验

    定时器中断实验

    一:51单片机定时器原理

    (1)51单片机定时/计数器结构

    T0,T1引脚对应单片机的P34,P35管脚
    51单片机定时/计数器工作由两个特殊功能寄存器控制。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0,T1的启动和停止及设置溢出标志。

    TMOD:工作方式寄存器,用于设置工作方式,低四位用于T0,高四位用于T1

    在这里插入图片描述

    GATE是门控位,GATE=0时控制定时器的启动是否受外部中断源信号影响,只需用软件使TCON中的TR0或者TR1为1,即可启动定时器/计数器工作。GATE=1时,使用软件使TR0或者tr1为1,同时外部中断管脚INT0/1=1时才能启动工作。
    C/T:定时/计数模式选择位。C/T=0为定时模式;C/T=1为计数模式
    M1M0:工作方式设置位。定时/计数器有四种工作方式。
    在这里插入图片描述

    TCON:低四位控制外部中断,高四位控制定时器/计数器的启动和中断申请。

    在这里插入图片描述

    TF1(TCON.7):T1溢出中断请求标志位。T1溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。TF1也可以用软件置1或者清0,同硬件置1或者清0效果一样。
    TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或者置0,所有软件可控制定时/计数器的启动与停止。
    TF0(TCON.5):T0溢出中断请求标志位,其他与TF1相同。
    TR0(TCON.4):T0运行控制位,其功能与TR1相似。
    (2)定时/计数器的工作方式
    方式0:
    方式0为13位计数,由TL0低五位(高三位不用)和TH0的8位组成。TL0的低五位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
    计数初值和计数个数的关系为X=2^13-N
    方式1:
    方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位,组成16位加1计数器。
    方式2:
    方式2为自动重装初值的8位计数方式。工作方式2适合用于较精确的脉冲信号发生器。
    方式3不做赘述,用的不多。
    方式1通常用于定时器,串口通信通常使用方式2

    二:定时器配置

    1:对TMOD赋值,以确定T0,T1工作方式,如果使用定时器0即对T0配置,如果使用定时器0即对T0配置,如果使用定时器T1即对T1配置。
    2:根据所要时间计算初值,并将其写入TH0,TL0或者TH1,TL1
    3:如果使用中断,则对EA赋值,开放定时器中断
    4:使用TR0或者TR1置位,启动定时器/计数器计时

    三:通过定时器0中断控制D1指示灯间隔闪烁

    //定时器中断,通过定时器0中断控制D1指示灯间隔1秒闪烁
    #include "reg52.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    sbit led=P2^0;//定义P2^0接口是led
    void Timer0Init()//定时器0初始化函数
    {
    	TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动
    	TH0=0XFC;//给定时器赋值,定时1ms
    	TL0=0X18;
    	ET0=1;//打开定时器0中断允许
    	EA=1;//打开总中断
    	TR0=1;//打开定时器
    }
    void main()
    {
    	Timer0Init();//定时器0初始化
    	while(1);
    }
    void Timer0() interrupt 1
    {
    	static u16 i;//定义全局变量i,用来累计定时1ms的次数,当i=1000时,恰好达到1s
    	TH0=0XFC;//给定时器赋初值,定时1ms
    	TL0=0X18;
    	i++;
    	if(i==1000)
    		{
    			i=0;//当时间达到1s时,状态清0,led状态翻转
    			led=~led;
    		}
    }
    
    
    
    
    展开全文
  • 定时器中断实验操作

    2020-05-24 16:10:41
    定时器中断实验 1、先了解定时器的工作过程 2、计数器时钟可以由下列时钟源提供: 内部时钟(CK_INT) 外部时钟模式1:外部输入脚(TIx) 外部时钟模式2:外部触发输入(ETR) 内部触发输入(ITRx):使用一个定时器作为另一...

    定时器中断实验

    1、先了解定时器的工作过程
    2、计数器时钟可以由下列时钟源提供:
    内部时钟(CK_INT)
    外部时钟模式1:外部输入脚(TIx)
    外部时钟模式2:外部触发输入(ETR)
    内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。
    3、定时器中断实验相关寄存器
    (1)计数器当前值寄存器CNT
    在这里插入图片描述
    (2)预分频寄存器TIMx_PSC

    在这里插入图片描述(3)自动重装载寄存器(TIMx_ARR)
    在这里插入图片描述4、通用定时器常用寄存器和库函数
    (1)控制寄存器1(TIMx_CR1)
    在这里插入图片描述(2)DMA中断使能寄存器(TIMx_DIER)
    在这里插入图片描述5、对于常用的库函数
    (1)定时器参数初始化:
    void TIM_TimeBaseInit(TIM_TypeDef* TIMx,
    TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
    (2)定时器使能函数:
    void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
    (3)定时器中断使能函数:
    void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
    (4)状态标志位获取和清除
    6、对于定时器中断实现的步骤
    (1)能定时器时钟。
    RCC_APB1PeriphClockCmd();
    (2)初始化定时器,配置ARR,PSC。
    TIM_TimeBaseInit();
    (3)开启定时器中断,配置NVIC。
    void TIM_ITConfig();
    NVIC_Init();
    (4) 使能定时器。
    TIM_Cmd();
    (5) 编写中断服务函数。
    TIMx_IRQHandler();

    展开全文
  • 2、掌握80C51单片机定时器/计数器的程序控制方法。 实验原理简介 中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。引起...

    一、实验目的和任务

    1、掌握80C51单片机外部中断的初始化及中断服务子程序设计方法。

    2、掌握80C51单片机定时器/计数器的程序控制方法。

    二、实验原理简介

    中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。80C51单片机至少包括5个中断源:

    INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。(本实验用)

    INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。

    T0:定时器/计数器0中断,由T0计满回零引起。(本实验用)

    T1:定时器/计数器l中断,由T1计满回零引起。

    TI/RI:串口中断,串口完成一帧字符发送/接收后引起。

    本实验对应的硬件电路与实验三相同(见图3.6.1)。P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。P3口的4根口线连接独立按键KX0~KX3,其中KX0对应外部中断0,进行KX0按键动作的时候可以触发外部中断。

    注意:在做本实验时,须将拨码开关JUMP2置为接通状态(向左)。

     

    三、实验内容和步骤

    1、编写一段程序,用P0口作为控制端口,使实验箱上的LED轮流点亮(走马灯)。用外部中断0/KX0控制走马灯的暂停/继续。

       

    		ORG   0000H
    		LJMP  MAIN
    		ORG   0003H
    		LJMP  ZEX0
    		ORG   0100H
    MAIN:  MOV   SP,#60H
    		SETB  IT0
    		SETB  EX0
    		SETB  EA
    		MOV   A,#0FEH
    		 MOV   R5,#00H
    NEXT:   CJNE  R5,#00H,NEXT
    		 MOV   P0,A
    		 ACALL DELAY
    		 RL    A
    		 SJMP  NEXT
    ;延时子程序
    DELAY:  MOV   R2,#3
    DELAY2: MOV   R3,#200
    DELAY3: MOV   R4,#200		
    		 DJNZ  R4,$
    		 DJNZ  R3,DELAY3
    		 DJNZ  R2,DELAY2
    		 RET
    ;外部中断0服务子程序
    ZEX0:	 PUSH  ACC
    		 SETB  RS0
    		 MOV   R2,#2
    		 ACALL DELAY2
    		 CLR   RS0
    		 JB    P3.2,EXIT
    		 MOV   A,R5
    		 XRL   A,#0FFH
    		 MOV   R5,A
    EXIT:   POP   ACC
    		 CLR   IE0
    		 RETI
    
    • 观察实验结果,解释如何实现走马灯的暂停和继续。
    • 比较电平触发和边沿触发时走马灯控制的难易程度。

     

    答:  走马灯的暂停和继续是通过外部按下按键而使单片机触发外部中断0,此时会进入外部中断0服务子程序,然后通过异或操作指令来修改工作寄存器R5的值为FFH,使其在跳出外部中断0服务子程序之后在NEXT: CJNE  R5,#00H,NEXT这条程序中进入死循环,而无法执行程序下面的位左移操作。在控制走马灯时经过验证电平触发相比边沿触发要困难。

     

    2、编写一段程序,用P0口作为控制端口,使实验箱的LED轮流点亮(走马灯)。用定时/计数器0控制走马灯切换速度。

      

    	  ORG   0000H
       	  LJMP  MAIN
    	  ORG   000BH
    	  LJMP  ZIT0
    	  ORG   0100H
    MAIN: MOV   SP,#60H
    	  MOV   TMOD,#01H
    	  MOV   TH0,#3CH
    	  MOV   TL0,#0B0H
    	  MOV   R6,#1
    	  MOV   R7,#0FEH
    	  SETB  ET0
    	  SETB  EA
    	  SETB  TR0
    	  SJMP  $
    ;定时中断0服务子程序
    ZIT0: DJNZ  R6,ZRET
    	  MOV   A,R7
    	  MOV   P0,A
    	  RL    A
    	  MOV   R7,A
    	  MOV   R6,#1
    ZRET: MOV   TH0,#3CH
    	  MOV   TL0,#0B0H
    	  RETI
    	  END
    
    • 修改R6=0或1时,观察走马灯的速度快慢。
    • ZRET处没有重置初值时的走马灯的速度与 ZRET处有重置初值时的走马灯的速度的比较。
    • R6=50时,改变T0的初值,设为最大、最小时,比较走马灯的速度。
    • 去掉R6的软件辅助延时,是否可以?速度怎样?

     

    答:经过验证,R6=0时走马灯的速度慢,R6=1时走马灯的速度快,原因是在DJNZ  R6,ZRET这条程序中,R6=0时DJNZ的减一操作进行了255次,也就是装载了255次TH0和HL0的值,而R6=1时只执行了1次。ZRET处没有重置初值时的走马灯的速度相比有重置初值时要慢,原因是没有重置初值,那么初值为0。当R6=50时,T0的初值设为最大时走马灯的速度要比T0的初值设为最小时要快。不可以去掉R6的软件辅助延时,此时走马灯的速度快到人眼无法识别。

     

    展开全文
  • 1-计数器16bit,只能向上计数,只有TIM6TIM7 2-没有外部的GPIO,是内部资源,只能用来定时 3-时钟来自PCLK1,为72M,可实现1~65536分频 时钟源来自RCC的TIMx_CLK(属于内部的CK_INT):72MHz 1-16位的预分频器PSC对...
  • 外部中断0:INT0 定时/计数器0:TF0 外部中断1:INT1 定时/计数器1:TF1 串口中断:RI/TI 图片来源于21ic电子网@ohy3686 ——————————————————————————————————————...
  • 上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作...这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。通过该讲,读者可以掌握定时器的工作原理单片机的中断系统。
  • 外部中断和时钟输出控制寄存器INTCLKO21.3.定时器/计数器中断控制寄存器TCON2.外部中断0实验(下降沿中断方式)2.1.工程需要用到的c文件2.2.头文件引用和路径设置2.3.编写代码2.4.硬件连接3.外部中断0实验(上升
  • 上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作原理与开发流程。这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。通过该讲,读者可以掌握定时器的工作原理...
  • 上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作原理与开发流程。这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。通过该讲,读者可以掌握定时器的工作原理...
  • 上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作原理与开发流程。这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。通过该讲,读者可以掌握定时器的工作原理...
  • 目录 C语言知识点: 51单片机简单实验 51单片机引脚图 ...7、外部中断 8、定时器和计数器中断 8.1、CPU时序的有关知识 8.2、51单片机定时器/计数器 8.3、定时/计数器的工作方式 9、串口通信 ...
  • GPT定时器是32位向上计数器,可以通过提供的两个外部引脚来捕获外部信号。还有三路比较输出和中断功能。GPT定时器有一个12位的分频器,时钟源可以选择, 我们使用ipg_clk = 66MHz。 GPT定时器有两种工作模式,...
  • C51之定时器

    2018-02-25 19:16:24
    这个实验定时器中断实验。对于定时器中断,这是属于中断的一种。使用它也需要配置先前所属的相关寄存器。不同的是,关于定时器中断,还需要配置一些其他与定时器相关的寄存器,如定时器方式寄存器(TMOD)、计数器...
  • 实验1 外部外部中断----脉冲计数实验 3、 单片机的定时器/计数器 实验1 计数器实验 实验2 秒时钟发生器实验 4、 单片机的串口特点编程 实验1 PC机串口通讯实验 实验2 RS485通讯实验 5、 存储器 实验1 RAM存储器...
  • 上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作...这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。通过该讲,读者可以掌握定时器的工作原理单片机的中断系统。
  • //将CBIF位置0,PWM计数器归零中断标志位,需软件清零 P_SW2 |= 0x80; //将EAXSFR位置1,以访问PWM在扩展RAM区的特殊功能寄存器 //对PWM2的初始化部分 PWM2CR |= 0x08; //将PWM2_PS位置1,选择PWM2的...
  • T598_51实验指导书

    2011-11-28 13:32:53
    实验五 外部中断实验(急救车与交通灯) 10 实验六 定时器实验 12 实验七 计数器实验 14 实验八 8255输入、输出实验 16 实验九 8255扫描键盘、显示实验 18 实验十 8279显示实验 20 实验十一 8279显示电子钟实验 22 ...
  • nec单片机实验指导

    2010-05-21 14:30:09
    实验4 外部中断使用 98 实验5 时钟输出/蜂鸣器输出控制器实验 101 实验6 看门狗定时器实验 104 实验7 红外扩展 106 实验8 音乐(喇叭)应用 108 实验9 7段码显示 111 实验10 钟表定时器实验 114 实验11 步进电机...
  • 题目三:急救车与交通灯(外部中断实验) 要求:完成交通灯基本功能基础上,当有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。本...
  • 在城市十字路口,交通信号灯的控制可以用MCS - 51 系列的单片机来实现....器,假设南北东西的通车时间都为10 s ,外部中断的延时也为10 s ,要求对通行时间进行倒计时,从P1 口输 出在L ED 上显示(以二进制形式递减) .
  • 第一章介绍伟福硬件仿真器及其仿真...六、外部中断的设计 七、按键的编程使用 八、LED 接口的编程 九、串口通讯 十、用单片机演奏音乐 十一、AT24C02 读写编程 十二、红外遥控解码 十三、综合设计 第四章附录部分 附录
  • 编写程序,要求每次主机响应外部中断IRQ3时,显示字符串“THIS IS A 8259A INTERRUPT!”(或其它串),中断十次后,程序退出。 data segment io8253a equ 280h io8253b equ 281h io8253c equ 283h mess db 'THIS IS A...
  • 单片机c语言应用100例

    2016-06-08 11:13:38
    6.3.10实例54:用外中断INT0中断测量外部负脉冲宽度 习题与实验 第7章串行通信技术 7.1串行通信的基本概念 7.2串行通信口的结构 7.3串行通信口的控制 7.3.1串行控制寄存器SCON 7.3.2电源控制寄存器PCON 7.3.3四种...
  • 4.6.2 16位定时器/计数器13 4.6.3 看门狗定时器 4.7 ATmega64/128的通用串行接口 4.7.1 TWI(I2C)接口 4.7.2 USART串行接口 第5章 MSP430系列单片机应用基础 5.1 MSP430单片机的结构寄存器资源 5.2 MSP430的...
  • 15.3 按键计数器实验 229 第十六章 交通灯 241 16.1 交通灯简介 241 16.2 交通灯实验 241 第十七章 频率计 257 17.1 频率计简介 257 17.2 频率计实验 257 高级通信接口开发篇 268 第十八章 USB通信 269 18.1 USB简介...
  • 本书主要内容包括:单片机的C语言概述,51单片机硬件与C51编程基础,P0~P3口、中断系统、定时器/计数器、并行扩展、外部串行扩展的C51编程,Keil与Proteus使用基础等。本书提供大量实例及详细说明与注释,均可在Keil...
  • 51单片机自学笔记

    2016-07-27 22:24:19
    第13章 51单片机内部资源的应用267, 13.1 I/O口应用简介267, 13.1.1 古老神灯再现267, 13.1.2 数码管显示我的生日270, 13.1.3 活学活用独立按键272, 13.2 定时器计数器280, 13.2.1 定时器控制小灯的闪烁280, 13.2.2...
  • 实例72:定时器中断控制的独立式键盘扫描实验 实例73:独立式键盘控制的4级变速流水灯 实例74:独立式键盘的按键功能扩展:"以一当四" 实例75:独立式键盘调时的数码时钟实验 实例76:独立式键盘控制步进电机实验...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

外部中断和定时器计数器实验