找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5537|回复: 4
打印 上一主题 下一主题
收起左侧

zigbee cc2530 time1,time3 16khz PWM占空比变化输出 可调LED七彩灯

[复制链接]
跳转到指定楼层
楼主
ID:229131 发表于 2017-8-25 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
zigbee cc2530 time1,time3 16khz PWM占空比变化输出
可调LED七彩灯

单片机源程序如下:
  1. /**************************************/
  2. /*           WeBee团队                */
  3. /*         Zigbee学习例程             */
  4. /*例程名称:点亮LED                  */
  5. /*建立时间:04/18               */
  6. /*描述:点亮LED1
  7. **************************************/

  8. #include <ioCC2530.h>

  9. typedef unsigned int uint;
  10. typedef unsigned char uchar;



  11. uchar h=0x00;
  12.   uchar js=0;
  13.   uchar a=1;
  14. void DelayMs(uint msec)
  15. {
  16.   uint i,j;
  17.   for(i=0;i<msec;i++)
  18.     for(j=0;j<535;j++);
  19. }

  20. void T1Init()
  21. {
  22.     CLKCONCMD &= ~0x40;         //设置系统时钟源为32MHZ的晶振
  23.     while(CLKCONSTA & 0x40);    //等待晶振稳定为32MHZ
  24.     CLKCONCMD &= ~0x07;         //设置系统主时钟频率为32MHZ
  25.     CLKCONCMD |= 0x18;          //定时器标记输出为250KHZ   
  26.    
  27.     PERCFG |= 0x23; // Timer 3 Alternate location 2 ,Timer 1 Alternate location 1
  28.     P2SEL |= 0x20;  //timer3 priority to usart
  29.    
  30.     P0SEL |= 0x7C;  // Set P0_2-P0_5 to peripheral
  31.     P0DIR |= 0x7C;

  32.     P1SEL |= 0xC0; // Peripheral function on P1_6 P1_7
  33.     P1DIR |= 0xC0; // P1_7 = output

  34.     P2SEL &= ~0x10;             //相对于Timer4,定时器1优先
  35.     P2DIR |= 0xC0;              //定时器通道2-3具有第一优先级
  36.       
  37.     T3CC0 = 0x64;     // PWM duty cycle, Channel 0 (P1_6)
  38.     T3CCTL0 = 0x2C;
  39.    
  40.     T3CC1 = 0x64;     // PWM duty cycle, Channel 1 (P1_7)
  41.     T3CCTL1 = 0x2C;
  42.     T3CTL |= 0x1c; //start timer3
  43.    
  44.     //定时器模式设置
  45.     T1CTL = 0x02;               //250KHZ不分频,模模式
  46.    
  47.     //装定时器通道0初值
  48.     T1CC0H = 0x00;
  49.     T1CC0L = 0xFF;              //PWM信号周期为1ms,频率为1KHZ
  50.    
  51.     T1CC1L = 0x64;  // PWM duty cycle, Channel 1 (P0_3)
  52.     T1CC1H = 0x00;
  53.     T1CCTL1 = 0x1c; // Channel 1 in compare mode, Set output on compare-up, clear on compare-down   
  54.      
  55.     //装定时器通道2比较值
  56.     T1CC2H = 0x00;    //// PWM duty cycle, Channel 2 (P0_4)
  57.     //T1CC2L = 0xF7; //1%的正占空比
  58.     //T1CC2L = 0xE1; //10%的正占空比
  59.     //T1CC2L = 0xC8; //20%的正占空比
  60.     //T1CC2L = 0xAF; //30%的正占空比
  61.     //T1CC2L = 0x96; //40%的正占空比
  62.     T1CC2L = 0x7D; //50%的正占空比
  63.     //T1CC2L = 0x64; //60%的正占空比
  64.     //T1CC2L = 0x4B; //70%的正占空比
  65.     //T1CC2L = 0x32; //80%的正占空比
  66.     //T1CC2L = 0x19; //90%的正占空比
  67.     //T1CC2L = 0x0A; //99%的正占空比
  68.     //T1CC2L = 0x01; //设置通道2比较寄存器初值
  69.     T1CCTL2 = 0x1C;             //比较相等置1,计数器回0则清零
  70.       
  71.     T1CC3L = 0x4B;  // PWM duty cycle, Channel 3 (P0_5)
  72.     T1CC3H = 0x00;
  73.     T1CCTL3 = 0x1c; // Channel 3 in compare mode, Set output on compare-up, clear on compare-down

  74.     T1CC4L = 0x32;  // PWM duty cycle, Channel 4 (P0_6)
  75.     T1CC4H = 0x00;
  76.     T1CCTL4 = 0x1c; // Channel 4 in compare mode, Set output on compare-up, clear on compare-down

  77. }


  78.    
  79. void main()
  80. {
  81.     uint i;
  82.     uint rate[11]={0xF7,0xE1,0xC8,0xAF,0x96,0x7D,0x64,0x4B,0x32,0x19};
  83.     T1Init();
  84. while(1)
  85.     {
  86. //          for(i=0;i<11;i++)
  87. //        {
  88. //          T1CC4H = 0x00;
  89. //          T1CC4L = rate[i];
  90. //          T1CC3H  = 0x00;
  91. //          T1CC3L = rate[i];
  92. //          DelayMs(500);
  93. //        }
  94.       
  95. //         for(i=0;i<240;i++)
  96. //        {
  97. //          T1CC4H = 0x00;
  98. //          T1CC4L = i;
  99. //          T1CC3H  = 0x00;
  100. //          T1CC3L = rate[i];
  101. //          DelayMs(25);
  102. //        }
  103. //        
  104. //        for(i=240;i>0;i--)
  105. //        {
  106. //          T1CC4H = 0x00;
  107. //          T1CC4L = i;
  108. //          T1CC3H  = 0x00;
  109. //          T1CC3L = rate[i];
  110. //          DelayMs(25);
  111. //        }
  112.       
  113.        if ((T1STAT&0x04)>0)
  114.       {
  115.         // T1STAT=T1STAT&0xfb;
  116.          T1STAT=T1STAT&0x0b;
  117.          
  118.          js++;
  119.          if(js>=1)
  120.          {
  121.            js=0;
  122.            if(a == 1)
  123.            {
  124.             h=h+1;
  125.             DelayMs(10);
  126.            }
  127.             else
  128.             {
  129.             h=h-1;
  130.            DelayMs(10);
  131.             }
  132.             
  133. ……………………

  134. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
time1和time3 16khz_pwm占空比变化.rar (67 KB, 下载次数: 44)


评分

参与人数 1黑币 +2 收起 理由
Ritayang + 2 正需要这个!!!非常有用很好的帮到了忙

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:261759 发表于 2017-12-15 21:36 | 只看该作者
不错,好东西,我喜欢!
回复

使用道具 举报

板凳
ID:598449 发表于 2019-8-27 14:22 | 只看该作者
兄弟,你这代码什么都没有啊。。。。。。
回复

使用道具 举报

地板
ID:616445 发表于 2019-9-25 22:49 | 只看该作者
不错,谢谢!
回复

使用道具 举报

5#
ID:624381 发表于 2020-4-30 22:47 | 只看该作者
不错,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表