精华内容
下载资源
问答
  • 单片机,用t0方式1定时50ms,t1用方式1门控计数20次,达到1s延迟,点亮一排灯的c语言代码
  • 编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。 程序: #include<reg51.h> sbit fm=P2^3; unsigned char cnt; int main(void) { TMOD=0x01; TH0=(65536-46083)/256; TL0=(65536-46083)%256;...

    编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。

    在这里插入图片描述

    程序:
    #include<reg51.h>
    sbit fm=P2^3;
    unsigned char cnt;
    int main(void)
    {
    TMOD=0x01;
    TH0=(65536-46083)/256;
    TL0=(65536-46083)%256;
    cnt=0;
    TR0=1;
    EA=1;
    ET0=1;
    while(1);
    }
    void int0_timer (void) interrupt 1
    {
    cnt++;
    if(cnt1)
    {
    fm=0;
    }
    if(cnt
    2)
    {
    fm=1;
    cnt=0;
    }
    TH0=(65536-46083)/256;
    TL0=(65536-46083)%256;
    }

    展开全文
  • 定时50ms,定时器T0,因为不能定时1秒,必须定时50ms,计算20次,就得到50ms*20=1000ms=1秒。 用ISP下载软件生成初值50ms的代码。 void Timer0Init(void) //50毫秒@11.0592MHz { AUXR &= 0x7F; //定时器时钟12T...

    一、实验目的

    1、熟悉定时器T0的使用;
    2、按下按键KEY1,开始计时间,在OLED显示时间;
    3、熟悉中断的作用;

    二、实验设备

    stc8a开发板;
    OLED屏幕,4脚OLED;
    下载器;

    三、实验原理

    1、中断的概念;

    在主程序中,正在运行一段程序,突然有个信号过来,告诉主程序,你先来执行我的程序,主程序就执行中断程序,执行完之后,继续允许主程序。

    我正在吃饭,然后突然有个电话过来,听完电话,之后,我们继续吃饭。

    类似这样。所以这个中断信号会打断我们正在执行的任务。
    那么那些可以是中断信号呢?

    定时器中断,定时时间到,就执行他的程序,然后继续主程序;
    外部中断,外面有个按钮,别人一按按钮,就先停止你的,执行他们的;

    PWM中断;
    ADC中断;
    串口中断;
    等等。
    这里有个内容,就是

    中断的优先级

    ,如果外面一队中断信号,先执行那个呢?有个优先级,如果不设置,就是默认的顺序。
    怎么设置优先级呢?这个后面有需要我们再设置看手册就好了。
    在这里插入图片描述
    在这里插入图片描述

    2、定时器的概念;
    有时候需要单片机定时到一段时间之后,再执行它的函数。处理完,再回到主程序。就需要定时器。
    stc8a8k有几个定时器,比较多。我们举例定时器T0的使用。T1和T0差不多。我们循迹小车中,使用T0作为计算小车运行的时间,使用T1作为蓝牙模块的波特率发生器。
    首先,我们找手册,定时器0的用法,看看有什么内部资源;一般我们是要设置几个内容:
    (1)定时的模式,
    有些是16位有些13位,我们要设置一下,一般都是设置16位自动重载的模式;什么是16位自动重载呢,定时计数器,就是从0—1–2-3–2^16—0–1--2,计算到2的16次方,就会反过来0–1。。这里会自动重新计算。最大是2的16次方。这就有个概念就是定时的间隔,因为这里我们设置时12T的模式计算,那么计算一次,就是1us。
    (2)定时初值赋值;我们这里定时50ms。
    (3)定时器中断打开;?
    (4)定时器开关TR0打开?
    (5)总中断打开?
    当我们需要打开定时器的时候,就打开就行了,不需要,记得关闭。
    在这里插入图片描述


    在这里插入图片描述

    3、定时器T0的使用和相关寄存器;
    在这里插入图片描述

    #include "reg51.h"
    #include "intrins.h"
    
    //测试工作频率为11.0592MHz
    
    sbit    P10         =   P1^0;
    
    void TM0_Isr() interrupt 1 using 1
    {
        P10 = !P10;                             //测试端口
    }
    
    void main()
    {
        TMOD = 0x00;
        TL0 = 0x66;                                 //65536-11.0592M/12/1000
        TH0 = 0xfc;
        TR0 = 1;                                    //启动定时器
        ET0 = 1;                                    //使能定时器中断
        EA = 1;
    
        while (1);
    }
    
    
    

    学习案例:
    1、TMOD=0x00;==0000 0000
    TMOD寄存器干什么的?
    是一个模式控制的寄存器,就是让定时器按照这个模式运行。
    D7----D6–D5–D4控制的是定时器T1的;
    GATE=0----------------用TR1控制开关
    C、T=0-------------定时模式
    M1=0
    M0=0----------0 0 ----------16位自动重载模式

    D3----D2–D1–D0控制的是定时器T0的;
    GATE=0----------------用TR0控制开关
    C、T=0-------------定时模式
    M1=0
    M0=0----------0 0 ----------16位自动重载模式

    在这里插入图片描述

    2- 定时初值的低八位和高8位。这个怎么计算呢?我们先不自己计算,用STC自动计算。
    TL0 = 0x66; //65536-11.0592M/12/1000
    TH0 = 0xfc;
    在这里插入图片描述
    选择相应模式,然后自动生成代码,包括工作模式,定时器初值等,都生成了,多快。当然我们要自己掌握,比如我们一开始不打开,就TR0=0就好了。把开关关了。

    ET0 = 1; /使能定时器中断
    ,那么ET0=0,就是关闭定时器T0的中断了。
    EA = 1;打开总的开关。我们的总开关要开着,不要太自私,其他中断也是用这个总开关的。

    4、定时中断的使用(注意全局变量,局部变量的定义,看书本哦)
    注意这个端口号和终端号,是对的,不能随便改哦。
    void TM0_Isr() interrupt 1 using 1
    {
    P10 = !P10; //测试端口
    }

    5、编程思路。
    定时50ms,定时器T0,因为不能定时1秒,必须定时50ms,计算20次,就得到50ms*20=1000ms=1秒。
    用ISP下载软件生成初值50ms的代码。
    在这里插入图片描述

    void Timer0Init(void)		//50毫秒@11.0592MHz
    {
    	AUXR &= 0x7F;		//定时器时钟12T模式
    	TMOD &= 0xF0;		//设置定时器模式
    	TL0 = 0x00;		//设置定时初值
    	TH0 = 0x4C;		//设置定时初值
    	TF0 = 0;		//清除TF0标志
    	TR0 = 1;		//定时器0开始计时
    }
    
    

    **
    用STC软件案例代码修改:
    在这里插入图片描述

    案例:一定请琢磨透彻。

    //******************************************************************************/
    #include "stc8a8k.h"
    #include "oled.h"
    #include "stdio.h"//显示浮点数的sprintf函数,需要
    sbit key0=P3^4;
    void delay_tms(unsigned int ms)
    {
    	unsigned int i,j;
    	for(i=ms;i>0;i--)
    		for(j=0;j<1100;j++);
    }
    
    unsigned int count=0;//全局变量
    unsigned int sec=0;//全局变量秒
    //定时器0中断函数,不需要声明,直接就能用。
    void TM0_Isr() interrupt 1 using 1
    {
    	count++;
    	if(count==20) //到20次,就是1秒
    	{
    		sec++;
    		count=0;
    	}
    	
    }
    
    void main()
    {
        AUXR &= 0x7F;		//定时器时钟12T模式
        TMOD &= 0xF0;		//设置定时器模式
    	TL0 = 0x00;		//设置定时初值50ms
    	TH0 = 0x4C;		//设置定时初值50ms
    	TF0 = 0;		//清除TF0标志
        //TR0 = 1;           //启动定时器
        ET0 = 1;         //使能定时器中断
        EA = 1;
        OLED_Init();			//初始化OLED 
    	OLED_Clear() ; 
        while (1)
    		{
    			//按下开关,开启定时器T0
    				if(key0==0)
    				{
    					delay_tms(15);
    					if(key0==0)
    					{
    						TR0=1;//开启定时器T0
    					}
    				}
    				
    				OLED_ShowNum(5*8,2,sec,5,16);
    				//	显示定时时间,1秒1秒加起来	
    		}
    }
    

    **

    展开全文
  • 定时计数器作业10T1每记数100换定时10ms
  • 单片机定时1ms

    2013-05-31 09:13:36
    程序员对单片机不 太理解的 的看看啊
  • 555定时器_2秒定时.ms14

    2019-12-13 15:52:03
    简单的定时电路Multisim仿真,基于555定时器的2秒定时,调节电阻和电容可修改定时时间,可作为电路仿真学习参考。
  • NE555可调定时.ms12

    2020-02-03 16:16:31
    基于NE555芯片的可调其占空比电路,经模拟测试运行正常,可直接使用。经模拟测试运行正常,可直接使用。
  • STM32 Cubemx 配置定时器定时1mS

    千次阅读 2018-11-02 17:37:00
    以建立一个定时1mS定时器为例:  1、先打开定时器    2、配置好时钟    3、配置定时器设置      重点来了,以前在这里我一直以为这里配置的就是时间,然后在调频率的时候,一直不对劲,知道查阅了硬...

      最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记。

    以建立一个定时1mS定时器为例:

      1、先打开定时器

      

      2、配置好时钟

      

      3、配置定时器设置

      

        

        重点来了,以前在这里我一直以为这里配置的就是时间,然后在调频率的时候,一直不对劲,知道查阅了硬石的资料才发现,这里配置的是进入定时器中断的频率,然后要定的时间要跟据这个频率来定时的。

      

      由这个图可见,这里配置的是定时器产生中断的频率,然后再跟据频率与时间的关系推出定时的时间。

      所以定时器频率为 f = 72M / Prescaler / Period = 72000 000 / 72 /1000 = 1000Hz;

      定时时间T = 1 / f 则: 1s / 1000Hz = 1000 000us / 1000Hz = 1000us =1ms。

      这样就可以定时1ms了啦,如果要做PWM频率调频,就直接改 pre 与 per 算出 f 就可以了。

    具体公式如下图(上面的计算我是为了方便理解把公式逆运算了一次):

      

       最后使用定时器中断跟关闭定时器中断以及回调函数即可, 使用中断的时候注意要先开启中断

    HAL_TIM_Base_Start_IT(&htim1); //使用定时器的时候调用这个函数启动

    HAL_TIM_Base_Stop_IT(&htim1); //停止定时器的时候调用这个函数关闭

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
      if(htim->Instance == TIM1)
      {
        //编写回调逻辑,即定时器1定时1MS后的逻辑
      }
    }

     

    转载于:https://www.cnblogs.com/xingboy/p/9897500.html

    展开全文
  • 利用T0定时器定时100ms,每当定时时间到就使 P1.7 求反。也就是使二极管亮100ms,灭100ms,周而复始。请帮忙把程序写出来,谢谢了!!! 悬赏分:20 - 解决时间:2009-12-4 17:41 ;--------------------------------...

    一个简单的单片机的问题

    8031 的 P1.7 接一个发光二极管;利用T0定时器定时100ms,每当定时时间到就使 P1.7 求反。
    也就是使二极管亮100ms,灭100ms,周而复始。
    请帮忙把程序写出来,谢谢了!!!

    悬赏分:20 - 解决时间:2009-12-4 17:41
    ;------------------------------------------
    最佳答案:

    使用定时器,程序如下:

        ORG  0000H
        SJMP START
        ORG  000BH
        LJMP INT_T0
    START:
        MOV  TMOD, #0x01     ;定时器0方式1
        MOV  TH0, #0x3C
        MOV  TL0, #0xB0      ;12M晶振,50ms中断一次
        MOV  IE,  #82H
        SETB TR0             ;开启T0
        MOV  R7, #2
        SJMP $
    INT_T0:
        MOV  TH0, #0x3C
        MOV  TL0, #0xB0      ;12M晶振,50ms中断一次
        DJNZ R7, INT_END
        MOV  R7, #2
        CPL  P1.7
    INT_END:
        RETI

    ;完

    ;------------------------------------------
    这个小问题,不用定时器,使用延时子程序也可,代码如下:

        ORG   0000H
        CPL   P1.7
        LCALL DL50MS
        LCALL DL50MS
        SJMP 0000H

    DL50MS:
        MOV  R6, #100
        MOV  R7, #250
        DJNZ R7, $
        DJNZ R6, $ - 4
        RET

    ;完

    ;------------------------------------------
    回答者: 做而论道 - 十一级   2009-12-4 13:21
    原文网址:http://zhidao.baidu.com/question/127949227.html
    ;------------------------------------------

    展开全文
  • stm3216-TIM3定时ms

    2014-04-17 08:26:13
    本人精心整理的STM32文档,值得收藏,免积分,欢迎下载我的其他资源
  • pit定时控制10ms和5ms

    2011-11-26 11:04:39
    飞思卡尔S12 单片机 上pit定时控制10ms和5ms
  • PC用cserialport类setTimer定时200ms发送数据给MCU,有时定时混乱,不是200ms而是420ms,下一个数据又间隔十几毫秒发送,导致数据接收出现乱码,选用多媒体定时器一样出现此问题。求解
  • 1hz一秒定时电路.ms14

    2021-03-15 20:02:20
    1hz电路
  • VC实现1ms定时

    2012-10-23 08:47:36
    VC++实现1ms定时,两种方法实现。一种基于消息传递,另一种常规方法。不用MFC也能实现定时器的作用
  • /***************************...*1、时钟12MHz,使用定时器T1的方式1定时20mS; *2、对20mS计数50次产生1S; *3、做一个时分秒的电子钟。 * *作者:刘子琰 *时间:2020年3月28日10:13:41 ***********************...
  • 单片机定时问题:亮100ms、灭300ms

    千次阅读 2016-01-25 11:34:25
    6MHz晶振,用定时计数器1,采用中断方式,通过P1.0让一个发光二极管亮100ms、灭300ms,周而复始。汇编编程实现。悬赏分:20 - 解决时间:2010-1-10 13:14 ;----------------------------------最佳答案:;下列程序,...
  • 文档中描述了stm321xx系列的关于系统时钟的配置,定时器的时钟配置等说明,给出了定时器定时时间的计算方法,并且附带配置代码。
  • 1、定时中断 arduino定时器(MsTimer2)学习 通过一段代码讲解来学习吧 #include<MsTimer2.h> //MsTimer2库 int a; //定义一个全局变量,将在被调用的中断函数中使用 void fals(){ //中断函数 static int i=0...
  • 首先来看一下STM32L151的...定时1ms的计算 = ((1+TIM_prescaler)/16MHz ) * (1+ TIM_Period)  = (1+(1600-1)) /16000000 * (1+(10-1))  = 1600/16000000 * 10  =1/1000 s 也就是1ms  
  • 10ms定时中断的目的是执行线程切换,操作过程是:保存旧线程的状态,恢复新线程的状态。至于是否将这些状态保存到旧线程的栈上,则视情况而定。现在我们来分析,在可能出现中断嵌套的情况下,10ms定时中断如何完成...
  • 8051内部集成了2个16bits的计数器, 可以根据需要将其作为定时器使用.... 如果定时器的定时周期设定为50ms, 则需要50000个脉冲. 由于单片机定时器为加1计数器, 所以, 计数器初始值应设为65536 - 50000 = 15536 = 3C...
  • STM32 Systick实现us和ms定时的两种方式

    千次阅读 2020-07-12 19:59:35
    LOAD=(u32)nms*fac_ms,应该再减1,作者本人应该也不知道,如果我有错误,大佬们请告知,谢谢。 systick.h文件: #ifndef __SYSTICK_H #define __SYSTICK_H #include "stm32f10x.h" #include "core_cm3.h" //24...
  • 8051系统中,已知振荡频率为12MHz...当系统时钟为12MHZ,定时/计数器T0工作于方式1时,最大的定时时间为65.536ms,满足1ms定时要求,方式控制字应设定为00000001B(01H)。定时1ms,计数值N为1000,初值X=65536-1...
  • /******************************************************************* * 函数库说明:ATMEGA8 T1定时器 CTC模式 10ms定时器 1s连续定时 * 版本: v1.00
  • 1.了解8253芯片的工作原理; 2.要求设计一个秒表,可以显示1~60秒; 3.了解PC机系统中的8253定时器的工作原理以及BIOS调用。
  • 8051单片机系统中,已知振荡频率为12MHz,用定时/计数器T1,实现从P1.1产生周期为2s的方波。C语言进行编程。从P1.1输出周期为2s的方波,只须P1.1每1s取反一次则可。...定时50ms,计数值N为50000,初值X=65536-5...
  • 利用单片机的定时方式0,实现外部脉冲宽度(在5到250ms)的测量。要求画出电路图。在线等 ;问题补充:写出程序,测量结果存储在R0中。;=================================================;做而论道对此题给出了答案:...
  • 1s定时定时器

    2018-05-21 18:43:14
    1ms定时中断
  • 已知89C51单片机的晶振频率为12MHz,要求用T1定时,在P1.0和P1.1 引脚分别输出周期为2ms和500微秒的方波。悬赏分:0 - 解决时间:2010-6-22 13:47最佳答案:;================================================汇编...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,091
精华内容 26,836
关键字:

定时50ms