精华内容
下载资源
问答
  • 使用51单片机定时器T1在工作方式2下生成占空比40%的方波,并且在仿真软件里调试出来
  • 定时器T1查询方式控制单片机发出1KHz音频
  • 利用定时器T1工作方式1控制两个LED以不同周期闪烁,使得LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次(即周期为1s)。 2.控制分析 2.1 LED侧分析 若要使LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次...

    1.控制目标

    利用定时器T1工作方式1控制两个LED以不同周期闪烁,使得LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次(即周期为1s)。

    2.控制分析

    2.1 LED侧分析

    若要使LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次(即周期为1s),那么需要分别给P1.0和P1.2接口分别输出周期为250ms(高低电平分别125ms)和1000ms(高低电平分别500ms)的方波。

    2.2 程序分析

    因为LED1和LED2的周期刚好是倍数关系,因此可以考虑定时器设置为125ms溢出,那么每溢出一次P1.0取反一次,每溢出四次P1.1取反一次。但是T1是16位定时器,那么最大仅为65535,机器周期为1.085us,则单次最多只能计时约71.1ms,因此我们可以考虑采用62.5ms溢出,那么每溢出2次P1.0取反一次,每溢出8次P1.1取反一次。
    初值计算:单片机内部的时钟振荡器产生11.0529MHz的脉冲信号,经12分频后得到11.0529/12MHz的脉冲信号,那么经过62.5ms需要的脉冲信号为62.5ms/((12/11.0529)*10^(-3)ms)≈57567次,即T1设定初值应为57567次。

    3.程序编写

    #include<reg52.h>
    #include<intrins.h>
    sbit LED1=P1^0;
    sbit LED2=P1^1;	//LED灯位定义
    unsigned char sum1;
    unsigned char sum2;//全局变量定义,用以对溢出次数计数
    void main()
    {
    EA=1; //开总中断
    ET1=1;//允许T1中断
    TMOD=0X10;//M1=0,M0=1,即T1被设定为定时器、工作方式1
    TH1=(65536-57567)/256;	 //T1高八位设初值
    TL1=(65536-57567)%256;	 //T1低八位设初值
    TR1=1; //T1启动
    sum1=0;
    sum2=0;
    while(1)
    ;	//一直循环等待中断
    }
    void Tim1() interrupt 3//中断服务函数,T1的中断编号为3
    {
    	sum1++;
    	sum2++;//每溢出一次sum1和sum2加1
    	if(sum1==2)
    	{
    	LED1=~LED1;
    	sum1=0;
    	}
    	if(sum2==8)
    	{
    	LED2=~LED2;
    	sum2=0;
    	}
    TH1=(65536-57567)/256;	 //T1高八位设初值
    TL1=(65536-57567)%256;	 //T1低八位设初值
    //注意一定要再次对T1重新赋初值,否则溢出一次后将会从0开始计数
    }
    
    
    展开全文
  • 定时器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

    展开全文
  • CC2530的T1定时器(16位)需要配置三个寄存器T1CTL、T1STAT、IRCON

    关键就是对寄存器的配置。

    CC2530的T1定时器(16位)需要配置三个寄存器T1CTL、T1STAT、IRCON

    这里只是给出简单的介绍,要详细的可以参考CC2530的datasheet.

    T1CTL(0xE4) 作用是定时器 1 的控制和状态 
    T1CTL (Bit 3:2) 分频器划分值,如下: 
    00: 标记频率/1 
    01: 标记频率/8 
    10: 标记频率/32 
    11: 标记频率/128 
    T1CTL (Bit 1:0) 选择定时器1模式 
    00: 暂停运行。 
    01: 自由运行,从0x0000到0xFFFF反复计数。 
    10: 模,从0x0000到T1CC0反复计数。 
    11: 正计数/倒计数,从 0x0000 到 T1CC0 反复计数并且从 T1CC0 倒计数 到 0x0000。

    T1STAT(0xAF) 作用是定时器 1 状态 
    Bit5: 定时器 计数器溢出中断标志 
    Bit4: 定时器 1 通道 4 中断标志 
    Bit3: 定时器 1 通道 3 中断标志 
    Bit2: 定时器 1 通道 2 中断标志 
    Bit1: 定时器 1 通道 1 中断标志

    Bit0: 定时器 1 通道 0 中断标志 


    IRCON(0xC0) 作用是中断标志 4 
    Bit1: 定时器1中断标志。当定时器1中断发生时设为1并且当CPU向量指向 中断服务例程时清除。 
    0: 无中断未决 
    1: 中断未决


    T1 配置如下:

    T1CTL = 0x0d; //128 分频,自动重装 0x0000-0xFFFF 
    T1STAT= 0x21; //通道 0,中断有效



    /****************************************************************************
    * 描    述: 定时器T1通过查询方式控制LED1周期性闪烁
    ****************************************************************************/
    #include <ioCC2530.h>
    typedef unsigned char uchar;
    typedef unsigned int  uint;
    #define LED1 P1_0       // P1.0口控制LED1
    /****************************************************************************
    * 名    称: InitLed()
    * 功    能: 设置LED灯相应的IO口
    * 入口参数: 无
    * 出口参数: 无
    ****************************************************************************/
    void InitLed(void)
    {
        P1DIR |= 0x01;      //P1.0定义为输出
        LED1 = 1;           //使LED1灯上电默认为熄灭     
    }


    /****************************************************************************
    * 名    称: InitT1()
    * 功    能: 定时器初始化,系统不配置工作时钟时默认是2分频,即16MHz
    * 入口参数: 无
    * 出口参数: 无
    ****************************************************************************/
    void InitT1()
    {
        T1CTL = 0x0d;       //128分频,自动重装 0x0000-0xFFFF 
        T1STAT= 0x21;       //通道0,中断有效   
    }


    /****************************************************************************
    * 程序入口函数
    ****************************************************************************/
    void main(void)
    {
        uchar count=0;
        
        InitLed();     //调用初始化函数
        InitT1();
        
        while(1)
        {
            if(IRCON > 0)
            { 
                IRCON=0;
                if(count++ >= 1)    //约1s周期性闪烁,示波器测大约为1025MS  也可以用一  //个延时函数延时
                {
                  count=0;
                  LED1 = !LED1;     //LED1闪烁        
                }
            } 
        }
    }


    展开全文
  • CC2530 定时器T1的使用
  • 3)、掌握定时器 T1的配置与使用 2.实验平台 1)cc2530zigbee开发板平台 ①协议栈版本:无,初级教程为裸机编程。 ②编译软件:IAR Embedded Workbeench for 8051-V8.10.3 ③硬件平台:ACE研发工作室...

                                      定时器T1-查询方式

     

     1.实验目的

    1)、通过实验掌握 CC2530 芯片 GPIO 的配置方法

    2)、掌握 Led 驱动电路及开关 Led 的原理

    3)、掌握定时器 T1 的配置与使用

     

     

    2.实验平台

    1)cc2530zigbee开发板平台

    ①协议栈版本:无,初级教程为裸机编程。

    ②编译软件:IAR Embedded Workbeench for 8051-V8.10.3 

    ③硬件平台:ACE研发工作室配套开发板

     购买地址:ace-studio.taobao.com

    ④仿真器:smartRF04eb下载器


      版权声明

    1)作者:ACE研发工作室

    2)声明:版权所有,转载请注明出处。

    3)zigbee开发板套件购买地址:ace-studio.taobao.com

     

    3.实验相关电路图

     

     

    发光二极管是属于二极管的一种,具有二级管单向导电特性,即只有在正向电压(二极管的正极接正,负极接负)下才能导通发光。P1.0引脚接发光二极管(D1)的负极,所以P1.0引脚输出低电平

    D1亮,P1.0引脚输出高电平D1熄灭,D2,D3同理。

     

    注:D3灯的控制脚复用到了仿真器,而仿真器用到了锁存器,所以要使得D3亮,必须取下仿真器。

    4.实验相关寄存器

    CC2530的T1定时器(16位)需要配置三个寄存器T1CTL、T1STAT、IRCON。如下表所示:

    寄存器

    作用

    描述

     

     

    T1CTL(0xE4)

     

     

     

     

     

    T1CTL (Bit 3:2) 分频器划分值,如下:

    00: 标记频率/1

    01: 标记频率/8

    10: 标记频率/32

     

    T1CTL(0xE4)

    定时器 1 的控制和状态

     

     

     

     

     

     

     

     

    11: 标记频率/128

    T1CTL (Bit 1:0) 选择定时器 1 模式

    00: 暂停运行。

    01: 自由运行,从 0x0000 到 0xFFFF 反复计数。

    10: 模,从 0x0000 到 T1CC0 反复计数。

    11: 正计数/倒计数,从 0x0000 到 T1CC0 反复计数并

    且从 T1CC0 倒计数到 0x0000。

     

     

     

    T1STAT(0xAF)

     

     

     

    定时器 1 状态

    Bit5: 定时器 计数器溢出中断标志

    Bit4: 定时器 1 通道 4 中断标志

    Bit3: 定时器 1 通道 3 中断标志

    Bit2: 定时器 1 通道 2 中断标志

    Bit1: 定时器 1 通道 1 中断标志

    Bit0: 定时器 1 通道 0 中断标志

    IRCON(0xC0)

    中断标志 4

    Bit1: 定时器 1 中断标志。当定时器 1 中断发生

    时设为 1

    并且当 CPU 向量指向中断服务例程时清除。

    0: 无中断未决

    1: 中断未决

    按照表格寄存器的内容,对

    Led1

    和 T1 进行配置。

    Led1 配置如下:

    P1SEL

    &=~0x0 1; //

    P1.0 为

    通用IO 口

    P1DIR

    |= 0x01;

    //配置

    P1.0

    为输出

    T1  配

    置 如下:

    T1CTL

    = 0x0d;

    //128 分 频 , 自动重

    装0x0000

    -0xFFF F

     

     

    5.源码分析

    1)、请打开工程,初级教程\6、CC2530 查询方式使用定时器\ace-zigbee

    \ace-zigbee.eww,如果打不开,请参考\学习例程以及开发环境安装\2.开发环境搭建.pdf,安装IAR开   发环境。

     

    2)、主代码 main.c 如下:

    /**************************************/

    /*描述:通过定时器 T1 查询方式控制 LED1 周期性闪烁

    **************************************/

     

    #include <ioCC2530.h>

     

    #define uint unsigned int

    #define uchar unsigned char

     

    //定义控制 LED 灯的端口

    #define LED1 P1_0 //定义 LED1 为 P10 口控制

     

    //函数声明

    void Delayms(uint xms); //延时函数void InitLed(void); //初始化 P1 

    void InitT1(); //初始化定时器 T1

     

    /****************************

    //延时函数

    *****************************/

    void Delayms(uint xms) //i=xms 即延时 i 毫秒

    {

    uint i,j; for(i=xms;i>0;i--)

    for(j=587;j>0;j--);

    }

     

    /****************************

    //初始化程序

    *****************************/

    void InitLed(void)

    {

    P1DIR |= 0x03; //P1_0 定义为输出

    LED1 = 1; //LED1 灯初始化熄灭

     

    }

    //定时器初始化

    //定时器的时间为((1/(16000000/128)*65535)=0.52428 秒

    void InitT1() //系统不配置工作时钟时默认是 2 分频,即 16MHz

     

    {

    T1CTL = 0x0d; //128 分频,自动重装 0X0000-0XFFFF

    T1STAT= 0x21; //通道 0, 中断有效

    }

     

    /***************************

    //主函数

    ***************************/

    void main(void)

    {

    uchar count;

    InitLed(); //调用初始化函数

    InitT1(); while(1)

    {

    if(IRCON>0)//定时器时间((1/(16000000/128)*65535)=0.52428 秒

    {

    IRCON=0;

    if(++count>=1) //1s 周期性闪烁

    {

    count=0;

    LED1 = !LED1; //LED1 闪烁

    }

    }

    }

    }

     

    6.实验步骤

    1)、打开代码工程,\初级教程\6、CC2530 查询方式使用定时器\ace-zigbee\ace-zigbee.eww,如果 IAR 没有很安装,请按。\开发环境安装\开发环境搭建.pdf 去安装。

    2)、通过仿真器把开发板接到电脑上。

    3)、编绎下载。

    程序已下载完成,可以运行:

     

     

    4).现象。

    展开全文
  • CC2530 定时器T1的使用.pdf
  • Fosc为6MHz,定时器T1工作模式2,串口工作模式1,波特率为4800。 1、通过波特率计算定时器T1时间常数初值。 2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。 3、编写乙机接收程序,...
  • 1) 通过实验掌握 CC2530 芯片 GPIO 的配置方法 2) 掌握 Led 驱动电路及开关 Led 的原理 3) 掌握定时器 T1 的配置与使用 4) 握定时器 T3(8 位)通过中断方式控制 LED1 周期性闪烁
  • 51单片机定时器/计数器T0|T1的四种工作方式

    千次阅读 多人点赞 2020-06-23 15:27:14
    • 选择方式0、方式1方式2时,T0|T1工作情况相同 • 选择方式3时,T0|T1工作情况不同 方式0:13位定时器/计数器,TH0的高8位,TL0的低5位 方式1:16位定时器/计数器,TH0的高8位,TL0的低8位 方式2:自动重...
  • 4.1.3 定时器/计数器的工作方式---51系列单片机设计实例教程定时器/计数器的工作方式有以下四种:1.方式0当TMOD中的M0=0,M1=0时,为13位计数或定时方式,其中TLi使用低5位,其结构如图4.2所示。图4.2 方式0时T0、T1...
  • 定时器T1中断控制两个LED以不同周期闪烁
  • /描述:通过定时器T1查询方式控制LED1周期性闪烁 / #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //定义LED1为P1_0口控制 //函数声明 void InitLed(v
  • CC2530之定时器T1

    千次阅读 2018-02-02 17:17:16
    CC2530之定时器T1在本次学习中,主要通过定时器来控制LED的亮灭。 首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时,LED1将被点亮。 接下来,先查看与LED(P1_0)配置相关的寄存器。 端口1...
  • /描述:通过定时器T1查询方式控制LED1周期性闪烁 / #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //定义LED1为P1_0口控制 //函数声明 void InitLed(v
  • 定时器T1控制中断

    2020-07-11 21:26:08
  • 文章主要讲解CC2530两种定时器控制LED的实验 首先我们了解CC2530 LED部分电路图 一、T1查询方式 ...定时器1工作在自由方式下,定时器1开始工作后从0x0000开始加1计算,一直到0xffff。0xffff再加.
  • /**************************/ .../描述:通过定时器T1查询方式控制LED1周期性闪烁 / #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //
  • CC2530 定时器T1

    千次阅读 2013-05-11 16:20:39
    定时器 1 是一个独立的 16 位定时器,支持典型的定时 / 计数功能,比如输入捕获,输出比较和 PWM 功能 。 定时器有五个独立的捕获 / 比较通道。每个通道定时器使用一个 I/O 引脚。定时器用于范围广泛的控制和测量 ...
  • 定时器计数器T1典例

    2021-01-06 06:46:24
    (利用定时器T1方式0,方式1方式2.分别编写三个程序实现),输出的方波Proteus利用示波器观看)交作业的时候交Proteus工程文件还有源程序,截图作业本上,程序也写作业本上) 答:方式0:#include sbit P1...
  • 基于atmega16的定时器T1电子钟课实现24小时循环计数
  • /***************************...*1、时钟12MHz,使用定时器T1方式1定时20mS; *2、对20mS计数50次产生1S; *3、做一个时分秒的电子钟。 * *作者:刘子琰 *时间:2020年3月28日10:13:41 ***********************...
  • CC2530定时器T1产生PWM

    千次阅读 2015-06-27 16:58:35
    最近搞PWM波输出,参考了一下网上的代码自己总结出CC2530 PWM的配置过程:(此处以T1为例) 配置PWM模式需参考CC2530用户手册中"表7-1 外部设备I/O引脚映射"来进行配置  1、首先选择定时器1-4  2、选择好定时器后...
  • 1 理论分析 为定时器分配了一个中断向量。当下列定时器事件之一发生时,将产生一个中断请求: ...仅当设置了相应的中断屏蔽位和 IEN1.T1EN 时,才能产生一个中断请求。中断屏蔽位是 n 个通道的 T1CCTLn.I...
  • 定时器 1 是一个独立的 16 位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和 PWM 功能。定时器有五个独立的捕获/比较通道。每个通道定时器使用一个 I/O 引脚。定时器用于范围广泛的控制和测量应用,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,208
精华内容 5,683
关键字:

定时器t1工作在方式1