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)
2017-8-25 09:25 上傳
點擊文件名下載附件
cc2530 下載積分: 黑幣 -5
|