zigbee cc2530 time1,time3 16khz PWM占空比变化输出
可调LED七彩灯
单片机源程序如下:
- /**************************************/
- /* WeBee团队 */
- /* Zigbee学习例程 */
- /*例程名称:点亮LED */
- /*建立时间:04/18 */
- /*描述:点亮LED1
- **************************************/
- #include <ioCC2530.h>
- typedef unsigned int uint;
- typedef unsigned char uchar;
- uchar h=0x00;
- uchar js=0;
- uchar a=1;
- void DelayMs(uint msec)
- {
- uint i,j;
- for(i=0;i<msec;i++)
- for(j=0;j<535;j++);
- }
- void T1Init()
- {
- CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ的晶振
- while(CLKCONSTA & 0x40); //等待晶振稳定为32MHZ
- CLKCONCMD &= ~0x07; //设置系统主时钟频率为32MHZ
- CLKCONCMD |= 0x18; //定时器标记输出为250KHZ
-
- PERCFG |= 0x23; // Timer 3 Alternate location 2 ,Timer 1 Alternate location 1
- P2SEL |= 0x20; //timer3 priority to usart
-
- P0SEL |= 0x7C; // Set P0_2-P0_5 to peripheral
- P0DIR |= 0x7C;
-
- P1SEL |= 0xC0; // Peripheral function on P1_6 P1_7
- P1DIR |= 0xC0; // P1_7 = output
-
- P2SEL &= ~0x10; //相对于Timer4,定时器1优先
- P2DIR |= 0xC0; //定时器通道2-3具有第一优先级
-
- T3CC0 = 0x64; // PWM duty cycle, Channel 0 (P1_6)
- T3CCTL0 = 0x2C;
-
- T3CC1 = 0x64; // PWM duty cycle, Channel 1 (P1_7)
- T3CCTL1 = 0x2C;
- T3CTL |= 0x1c; //start timer3
-
- //定时器模式设置
- T1CTL = 0x02; //250KHZ不分频,模模式
-
- //装定时器通道0初值
- T1CC0H = 0x00;
- T1CC0L = 0xFF; //PWM信号周期为1ms,频率为1KHZ
-
- T1CC1L = 0x64; // PWM duty cycle, Channel 1 (P0_3)
- T1CC1H = 0x00;
- T1CCTL1 = 0x1c; // Channel 1 in compare mode, Set output on compare-up, clear on compare-down
-
- //装定时器通道2比较值
- T1CC2H = 0x00; //// PWM duty cycle, Channel 2 (P0_4)
- //T1CC2L = 0xF7; //1%的正占空比
- //T1CC2L = 0xE1; //10%的正占空比
- //T1CC2L = 0xC8; //20%的正占空比
- //T1CC2L = 0xAF; //30%的正占空比
- //T1CC2L = 0x96; //40%的正占空比
- T1CC2L = 0x7D; //50%的正占空比
- //T1CC2L = 0x64; //60%的正占空比
- //T1CC2L = 0x4B; //70%的正占空比
- //T1CC2L = 0x32; //80%的正占空比
- //T1CC2L = 0x19; //90%的正占空比
- //T1CC2L = 0x0A; //99%的正占空比
- //T1CC2L = 0x01; //设置通道2比较寄存器初值
- T1CCTL2 = 0x1C; //比较相等置1,计数器回0则清零
-
- T1CC3L = 0x4B; // PWM duty cycle, Channel 3 (P0_5)
- T1CC3H = 0x00;
- T1CCTL3 = 0x1c; // Channel 3 in compare mode, Set output on compare-up, clear on compare-down
- T1CC4L = 0x32; // PWM duty cycle, Channel 4 (P0_6)
- T1CC4H = 0x00;
- T1CCTL4 = 0x1c; // Channel 4 in compare mode, Set output on compare-up, clear on compare-down
- }
-
- void main()
- {
- uint i;
- uint rate[11]={0xF7,0xE1,0xC8,0xAF,0x96,0x7D,0x64,0x4B,0x32,0x19};
- T1Init();
- while(1)
- {
- // for(i=0;i<11;i++)
- // {
- // T1CC4H = 0x00;
- // T1CC4L = rate[i];
- // T1CC3H = 0x00;
- // T1CC3L = rate[i];
- // DelayMs(500);
- // }
-
- // for(i=0;i<240;i++)
- // {
- // T1CC4H = 0x00;
- // T1CC4L = i;
- // T1CC3H = 0x00;
- // T1CC3L = rate[i];
- // DelayMs(25);
- // }
- //
- // for(i=240;i>0;i--)
- // {
- // T1CC4H = 0x00;
- // T1CC4L = i;
- // T1CC3H = 0x00;
- // T1CC3L = rate[i];
- // DelayMs(25);
- // }
-
- if ((T1STAT&0x04)>0)
- {
- // T1STAT=T1STAT&0xfb;
- T1STAT=T1STAT&0x0b;
-
- js++;
- if(js>=1)
- {
- js=0;
- if(a == 1)
- {
- h=h+1;
- DelayMs(10);
- }
- else
- {
- h=h-1;
- DelayMs(10);
- }
-
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
time1和time3 16khz_pwm占空比变化.rar
(67 KB, 下载次数: 44)
|