精华内容
下载资源
问答
  • 为什么,波特率=2^smod*T1定时器溢出率/32 为什么要除以32?
  • 定时器T1

    2018-09-27 13:58:00
    1 //定时器T1查询 2 3 #include <iocc2540.h> 4 5 #define uchar unsigned char 6 #define unit unsigned int 7 8 #define led4 P1_3 9 #define key4 P0_5 10 11 12...

     

     

     

    查询方式

     1 //定时器T1查询
     2 
     3 #include <iocc2540.h>
     4 
     5 #define uchar unsigned char
     6 #define unit unsigned int
     7 
     8 #define led4 P1_3
     9 #define key4 P0_5
    10 
    11 
    12 
    13 void IO_Init()
    14 {
    15     P0DIR |= 0xFF;              //io默认为高电平,P0设置为输入
    16     P0SEL &= 0X00;              //IO默认高电平,P0设置为普通io
    17     
    18     P1DIR |= 0X0F;              //P1设置为输出
    19     P1SEL &= 0X00;              //P1设置为普通io
    20 }
    21 
    22 //查询方式
    23 void T1_Init()
    24 {
    25     T1CTL = 0x0d;               //设置128分频,自由运行从0x0000到0xffff反复计数
    26     T1STAT = 0X21;              //通道0,定时器计数器溢出中断标志
    27     
    28 }
    29 
    30 void T3_Init()
    31 {       
    32     T3IE = 1;                   //中断使能
    33     T3CCTL0 = 0XCA;             //上升沿捕获
    34     T3CTL |= 0XF8;              //自动重装,128分频
    35     EA = 1;                     //总中断开
    36 }
    37 
    38 uchar count = 0;
    39 #pragma vector = T3_VECTOR 
    40 __interrupt void T3_ISR(void)
    41 {
    42     IRCON = 0X00;               //清除中断标志
    43     count++;
    44     if(count>240)
    45     {
    46         count = 0;              //计数清零
    47         led4 = ~led4;
    48     }
    49 }
    50 
    51 void main(void)
    52 {
    53     T1_Init();
    54     IO_Init();
    55     
    56     //uchar flag = 0;
    57     while(1)
    58     {
    59       //查询方式
    60       /*
    61         if(IRCON > 0)
    62         {
    63             IRCON = 0;
    64             if(flag++>2)
    65             {
    66                 flag = 0;
    67                 led4 = ~led4;
    68             }
    69         }*/
    70      }
    71 }
    72 
    73 //使用串口功能之前,P0.7,P0.6或P0.2,P1.6置1
    74 //或操作  |  ,同为0才为0.
    75 //与操作 & ,同1为1

     

    转载于:https://www.cnblogs.com/Blue-Moniter4/p/9712690.html

    展开全文
  • 内容:定时器溢出中断的使用  数码管显示温度  子函数的调用 总结:编程中遇到  a = number/10;   b = number%10;  show(a,b);  这两行编译不过去但是当吧number用具体的数据如12,64替换时

    /**************
    实现功能:在数码管1,2上显示定时器以秒为单位的累加值
    内容:定时器的溢出中断的使用
          数码管显示温度
          子函数的调用
    总结:编程中遇到
          a = number/10; 
          b = number%10;
          show(a,b);
       这两行编译不过去但是当吧number用具体的数据如12,64替换时
       数码管又能正常显示  但是用变量number时数码管不能显示
       很气愤   n久 后,重新编译  居然成功了 不明白怎么回事


    ************/
    #include <iom128v.h>
    #include <macros.h>
    unsigned char i,j,k,a=0,b=0;
    unsigned char  number=0;
     
    #pragma interrupt_handler miao:15
    #pragma data:code 
    const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
                 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    //#pragma data:data 
     
    void miao()
    {   
       if(number==60)
       number=0;
       number++;
       TCNT1H=0X85;
       TCNT1L=0XED;
    }

    void show(unsigned char j,unsigned char k)
    {  
       unsigned int i;
       //PORTC=0XFF;
       //PORTA=0XFF; 
       PORTA=~table[j];
       PORTC=~BIT(5);   //控制数码管显示  低电平有效
       
       i=6000;
       while(i--);
       
       //PORTC=0XFF;
       
       //PORTA=0XFF;
       PORTA=~table[k]; 
       PORTC=~BIT(4);   //控制数码管显示  低电平有效
       
       i=6000;
       while(i--);
       //PORTC=0XFF;
    }
     


    void main()
    {  DDRA=0XFF;
       DDRB|=BIT(7);   //定义控制蜂鸣器的PB7口  为输出模式
       DDRC=BIT(4)|BIT(5);   //定义PC4和PC5口为输出模式  此两口控制数码管1#2#的PNP型三极管
       PORTC=0XFF;
       
       // CLI();
      
       TCCR1B=0X00;  //stop
       TCNT1H=0X85;
       TCNT1L=0XED;
       
       TIMSK|=BIT(2);    //启动定时器1的溢出中断功能 
       TCCR1B=0X04;  //对time1施行256分频 
       SREG|=BIT(7);  //启用全局中断功能
      // SEI();
       
       while(1)
       {  
          //unsigned char  d ;
       //d=64;
       a = number/10; 
       b = number%10;
       show(a,b); //数码管显示a,b的值
        }    
      

    展开全文
  • CC2530之定时器T1

    千次阅读 2018-02-02 17:17:16
    CC2530之定时器T1在本次学习中,主要通过定时器来控制LED的亮灭。 首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时,LED1将被点亮。 接下来,先查看与LED(P1_0)配置相关的寄存器。 端口1...

    CC2530之定时器T1

    在本次学习中,主要通过定时器来控制LED的亮灭。
    首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时,LED1将被点亮。
    LED

    接下来,先查看与LED(P1_0)配置相关的寄存器。

    1. 端口1功能选择寄存器(P1SEL)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为普通的I/O口,若设置为1,则将相关引脚设为外设I/O,默认值都为0。
      P1SEL

    2. 端口1方向选择寄存器(P1DIR)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为输入引脚,若设置为1,则将相关引脚设为输出引脚,默认值都为0。
      P1DIR

    3. 端口1输入模式寄存器(P1INP)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为上拉/下拉模式,若设置为1,则将相关引脚设为三态模式,其中P1_0和P1_1没有上拉/下拉功能,可以不用配置,默认值都为0。
      P1INP

    再来看看与定时器相关的寄存器
    1. 定时器1的控制寄存器(T1CTL)_。
    该寄存器的bit3和bit2位用来设置分频值
    - 00:分频值为1
    - 01:分频值为8
    - 10:分频值为32
    - 11:分频值为128
    bit1和bit0位用来设置计数模式
    - 00:暂停计数
    - 01:自由计数,从0x0000计数到0xFFFF,不断重复计数。
    - 10:模计数,从0x0000计数到T1CC0,不断重复计数。
    - 11:向上/向下计数,从0x0000计数到T1CC0再从T1CC0计数到0x0000,不断重复。
    T1CTL

    1. 定时器1状态标志寄存器(T1STAT)。

      • bit5:定时器1的溢出中断标志
      • bit4:定时器1通道4的中断标志
      • bit3: 定时器1通道3的中断标志
      • bit2:定时器1通道2的中断标志
      • bit1:定时器1通道1的中断标志
      • bit0:定时器1通道0的中断标志
        T1STAT
    2. 中断标志4寄存器(IRCON)。

      • bit1:定时器1中断标志,当中断发生时置为1,当CPU向量指向中断服务例程时置为0
        IRCON
    /*设置定时器,当发生溢出中断时,LED进行一次翻转*/
    #include <ioCC2530.h>
    
    typedef unsigned char uchar;
    typedef unsigned int uint;
    
    #define LED1 P1_0
    
    void LEDInit(void)
    {
      P1SEL &= ~0x01;
      P1DIR |= 0x01;
    }
    
    void TIM1Init(void)
    {
      T1CTL |= 0x0d;//128分频,自由计数模式
    }
    
    void main(void)
    {
      LEDInit();
      TIM1Init();
      while(1)
      {
        if(IRCON>0)   //是否发生中断
        {
          LED1 = !LED1;
          IRCON = 0;
        }      
      }
    }
    展开全文
  • T1STAI:定时器1的状态寄存器,D4 ~ D0为通道4 ~ 0的中断标志,D5为溢出标志位,当计数到最终计数值是自动置1 IRCON:中断标志4,0为无中断请求,1为有中断请求 定时器1的工作原理: 定时器1工作在自由方式下,...

    文章主要讲解CC2530两种定时器控制LED的实验

    首先我们了解CC2530 LED部分电路图

    在这里插入图片描述
    T1查询方式
    T1CTL:定时器1的控制,D1D0控制运行模式,D3D2设置分频划分值
    在这里插入图片描述
    T1STAI:定时器1的状态寄存器,D4 ~ D0为通道4 ~ 0的中断标志,D5为溢出标志位,当计数到最终计数值是自动置1
    在这里插入图片描述
    IRCON:中断标志4,0为无中断请求,1为有中断请求
    在这里插入图片描述
    定时器1的工作原理:
    定时器1工作在自由方式下,定时器1开始工作后从0x0000开始加1计算,一直到0xffff。0xffff再加1则溢出,发生溢出中断。此时定时器将发出一个溢出中断请求并将IRCON的D1置为1。此后定时器自动重新计数,再次从0x0000计数到0xffff。

    T1定时器控制LED程序如下:

    /*设置定时器,当发生溢出中断时,LED进行一次翻转*/
    #include <ioCC2530.h>
    
    typedef unsigned char uchar;
    typedef unsigned int uint;
    
    #define LED1 P1_0
    
    void LEDInit(void)
    {
      P1DIR |= 0x01;  //设置P1_0为输出
      LED1 = 1;  //LED1初始熄灭
    }
    
    void TIM1Init(void)
    {
      T1CTL |= 0x0d;//128分频,自由计数模式
      T1STAT = 0x21;//通道0,中断有效
    }
    void main(void)
    {
      uchar count = 0;
      LEDInit();
      TIM1Init();
      while(1)
      {
        if(IRCON > 0)   //是否发生中断
        {
          IRCON = 0;
          if(count++ >= 0)
          {
            count =0;
            LED1 = !LED1;
          }
        }      
      }
    }
    

    二、T3中断方式
    T3CTL:控制寄存器
    在这里插入图片描述
    T3中断方式程序如下:

    /*程序描述:利用定时器 3 T3  中断方式控制*/
    // 定时器初始化
    
    void InitT3()
    {
    T3CTL |= 0x08 ; // 开溢出中断
    T3IE = 1; // 开总中断和 3 T3  中断
    T3CTL|=0XE0; //128  分频 ,128/16000000*N=0.5S,N=62500
    T3CTL &= ~0X03; // 自动重装 0x00 -0xff  65200/256=254( 次) 
    T3CTL |=0X10; // 启动
    EA = 1; // 开总中断
    } 
    void main(void)
    {
      InitLed(); // 调用初始化函数
      InitT3();
      while(1)
      { 
        ;
      } 
    } 
    #pragma vector = T3_VECTOR // 定时器  T3
    __interrupt void T3_ISR(void)
    {
      IRCON = 0x00; // 清中断标志 ,  也可由硬件自动完成
      if(++count > 254) //254  次中断后 LED  取反,闪烁一轮(约为  0.5  秒时间)
      {
        count = 0; // 计数清零
        LED1 = ~LED1;
      }
    }
    
    展开全文
  • CC2530 定时器T1

    千次阅读 2013-05-11 16:20:39
    定时器 1 是一个独立的 16 位定时器,支持典型的定时 / 计数功能,比如输入捕获,输出比较和 PWM 功能 。 定时器有五个独立的捕获 / 比较通道。每个通道定时器使用一个 I/O 引脚。定时器用于范围广泛的控制和测量 ...
  • CC2530的T1定时器(16位)需要配置三个寄存器T1CTL、T1STAT、IRCON
  • 3)掌握定时器 T1 的配置与使用 2、实验设备 硬件:1、PC机一台;2、ZigBee(CC2530)(底板、核心板、仿真器、USB 线)开发板一套 软件:Windows 10系统,IAR for 8051 集成开发环境 3、实验相关电路图   发光...
  • 3)、掌握定时器 T1的配置与使用 2.实验平台 1)cc2530zigbee开发板平台 ①协议栈版本:无,初级教程为裸机编程。 ②编译软件:IAR Embedded Workbeench for 8051-V8.10.3 ③硬件平台:ACE研发工作室...
  • 1.实现功能 使LED1与LED2交替闪烁周期为1s ...T1CNTL:定时器1计数器低位字节 T1CNTH:定时器1计数器高位字节 T1CTL:定时器1控制器 T1STAT:定时器1状态标志位 T1CTL:定时器1控制器 端口 B...
  • 软件编程2.1 框架式编程结构搭建2.2 初始化函数2.2.1 初始化函数框架2.2.2 定时器参数设置2.3 定时器1中断服务函数2.3.1 测试1:产生中断,P30翻转2.4 超声波服务函数 1. 测量原理 中断计数即检测距离 检测高电平...
  • atmega8 例程:定时器T1 普通模式

    千次阅读 2011-08-13 09:57:56
    /***************************************************************** * 函数库说明:ATMEGA8 定时器T1 普通模式 * 版本: v1.00 * 修改: 庞辉 芜湖联大飞思
  • /描述:通过定时器T1查询方式控制LED1周期性闪烁 / #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //定义LED1为P1_0口控制 //函数声明 void InitLed(v
  •  计数器达到最终计数值(溢出或回到零)  输入捕获事件  输出比较事件 寄存器状态寄存器 T1STAT 包括最终计数值事件和五个通道比较/捕获事件的中断标志。仅当设置了相应的中断屏蔽位和 IEN1.T1EN 时,...
  • /描述:通过定时器T1查询方式控制LED1周期性闪烁 / #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //定义LED1为P1_0口控制 //函数声明 void InitLed(v
  • 定时器 1 是一个独立的 16 位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和 PWM 功能。定时器有五个独立的捕获/比较通道。每个通道定时器使用一个 I/O 引脚。定时器用于范围广泛的控制和测量应用,...
  • 利用定时器T1工作方式1控制两个LED以不同周期闪烁,使得LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次(即周期为1s)。 2.控制分析 2.1 LED侧分析 若要使LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次...
  • /**************************/ .../描述:通过定时器T1查询方式控制LED1周期性闪烁 / #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //
  • 51单片机定时器和波特

    千次阅读 2017-12-10 10:22:17
    其中,方式0和方式2的波特率时固定的,而方式1和方式3的波特率是可变的,由定时器T1溢出率决定。 串行口的四种工作方式对应这三种波特率,由于输入的移位时钟的来源不同,所以各种方式的波特率的计算公式也不同。...
  • CC2430 定时器溢出中断 详解

    千次阅读 2012-03-05 19:38:11
    定时器1使用总结——溢出中断 1 目的说明  实现定时器最简单的溢出中断,结合我手头的开发板,使得位于P10的LED灯,以2HZ的速度不断闪烁。这样的实验还是非常亲切的,让我想起了第一次在51上实现了这样的代码,自己...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,449
精华内容 1,379
关键字:

定时器t1的溢出率