欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 關(guān)于STC15W408AS單片機(jī)中的PWM引腳使用方法問題求教 [打印本頁]

作者: JF.y    時(shí)間: 2020-4-26 22:46
標(biāo)題: 關(guān)于STC15W408AS單片機(jī)中的PWM引腳使用方法問題求教
STC15W408AS這款單片機(jī),我看了一下他們的資料,
看到這款單片機(jī)引腳有些是自帶PWM脈沖功能的。
這種有PWM的引腳,是不是可以直接就能輸出脈沖。
比如,我想做PWM無極調(diào)光呼吸燈,亮起來,滅下去。

我以前用89C52做呼吸燈程序時(shí)個(gè),是用定時(shí)0的中斷來實(shí)現(xiàn)的。感覺有時(shí)會影響到其他程序的運(yùn)行,補(bǔ)其他外部中斷0,中斷時(shí)候,會明顯抖一下。

現(xiàn)在我的問題是:這款15W408AS自帶PWM引腳,應(yīng)該怎么使用。是不是不會占用我其他程序的執(zhí)行時(shí)間?
有沒相關(guān)的例程,請分享一下,我想學(xué)習(xí)研究。謝謝各位。

作者: xqleft    時(shí)間: 2020-4-27 00:35
呼吸燈的程序直接軟件模擬就可以了。沒有必要pwm 。
作者: wulin    時(shí)間: 2020-4-27 06:22
STC15W408AS內(nèi)置硬件PWM,正常運(yùn)行不占用CPU資源,控制CCAP0H寄存器預(yù)裝值0x00~0xff就能控制占空比。呼吸燈示例程序
  1. #include <STC15F2K60S2.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //sbit key1=P4^2;       
  5. //sbit key2=P4^4;       
  6. //sbit LED=P1^0;
  7. uchar num=0x00; //占空比變量
  8. bit a=0;                //呼吸位變量
  9. uint b;                        //延時(shí)計(jì)數(shù)變量

  10. void PWM_Init()
  11. {
  12.     CCON = 0;                       //初始化PCA控制寄存器
  13.                                     //PCA定時(shí)器停止
  14.                                     //清除CF標(biāo)志
  15.                                     //清除模塊中斷標(biāo)志
  16.     CL = 0;                         //復(fù)位PCA寄存器
  17.     CH = 0;
  18.         CMOD = 0x02;                    //設(shè)置PCA時(shí)鐘源,PWM頻率=12MHZ/2/256=23.4375KHZ
  19.                                                     //PWM頻率=11.0592MHZ/2/256=21.600KHZ
  20.     PCA_PWM0 = 0x00;                //PCA模塊0工作于8位PWM
  21.     CCAP0H = CCAP0L = 0xff;         //PWM0的占空比為0%(0x00=100%)
  22.     CCAPM0 = 0x42;                  //PCA模塊0為8位PWM模式
  23.     CR = 1;                         //PCA定時(shí)器開始工作
  24. }

  25. void scan()
  26. {
  27.         static uint count1=0,count2=0;       
  28.         if(a==0)
  29.         {
  30.                 count1++;
  31.                 if(count1>=2000)
  32.                 {                       
  33.                         count1=0;
  34.                         if(num<0xff)
  35.                         {
  36.                                 num++;
  37.                                 if(num==0xff)
  38.                                 {
  39.                                         a=1;
  40.                                         b=5000;
  41.                                         while(b--);
  42.                                 }
  43.                         }
  44.                 }
  45.         }
  46.         else
  47.         {
  48.                 count2++;
  49.                 if(count2>=2000)
  50.                 {                       
  51.                         count2=0;
  52.                         if(num>0)
  53.                         {
  54.                                 num--;
  55.                                 if(num==0)
  56.                                 {
  57.                                         a=0;
  58.                                         b=5000;
  59.                                         while(b--);
  60.                                 }
  61.                         }
  62.                 }
  63.         }
  64. }

  65. void main()
  66. {
  67.         P1M0 = 0x01;                        //P1.0端口推挽輸出模式
  68.         P1M1 = 0x00;
  69.         PWM_Init();                                //初始化PWM
  70.         while(1)
  71.         {
  72.                 scan();                                //呼吸掃描
  73.                 CCAP0H=num;                        //P1.0輸出PWM
  74.         }
  75. }
復(fù)制代碼





作者: 余生不負(fù)    時(shí)間: 2020-4-27 11:12
如果你是從89C52過度到STC15W408AS,怎么也要學(xué)習(xí)1個(gè)月以上才能掌握。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1