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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2025|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)高效PWM方案程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:612853 發(fā)表于 2019-9-18 00:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一種用51單片機(jī)實(shí)現(xiàn)的高效PWM方案,只需要兩次中斷即可實(shí)現(xiàn)可調(diào)的PWM,絕對(duì)原創(chuàng),盜版必究!


/********************************************************************************************************/
/*在現(xiàn)在我已知的用51單片機(jī)產(chǎn)生PWM的方法中,基本都是通過定時(shí)器中斷來實(shí)現(xiàn)的,這樣一個(gè)PWM周期就包含了很多
小中斷,浪費(fèi)了大量時(shí)間,尤其是當(dāng)程序較復(fù)雜時(shí),往往就會(huì)出問題!而本設(shè)計(jì)則克服了這個(gè)缺點(diǎn)!一個(gè)周期只需要兩
次中斷!絕對(duì)的好方法!
為了讓大家都能夠?qū)W到這個(gè)好方法,我特整理了這個(gè)程序,希望能對(duì)大家有所幫助!      */
//作者:嘻嘻嘻      2012年4月
/********************************************************************************************************/



#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

sbit OUT=P1^0;    //定義PWM端口
unsigned int PWM;
unsigned int PWM_0;
unsigned int PWM_H,PWM_L;
bit sign=0;


/*------------------------------------------------
                    定時(shí)器2初始化子程序
------------------------------------------------*/
void Init_Timer2(void)
{
T2CON=0X00;                     //使用16位自動(dòng)重裝        
RCAP2H=0XFE;                        
RCAP2L=0XE0;                           //給定初值,0.8MS
TH2=0XFE;
TL2=0XE0;
EXEN2=1;
OUT=1;
ET2=1;           //定時(shí)器中斷打開
EA=1;            //總中斷打開
TR2=1;           //定時(shí)器開關(guān)打開
sign=0;
}
/*------------------------------------------------
                    主程序
------------------------------------------------*/
void delay()
{
        unsigned char i=60;
        for(;i>0;i--);
}
main()
{
Init_Timer2();
PWM_0=12000;                                               //初始化PWM
//RCAP2H=(unsigned char)((65536-PWM)>>8);
//RCAP2L=(unsigned char)((65536-PWM)&0x00ff);                //重新賦值,200US
while(1)
{         
for(;PWM_0>2;PWM_0--) delay();
for(;PWM_0<9999;PWM_0++) delay();
        }
}

/*------------------------------------------------
                 定時(shí)器中斷子程序
------------------------------------------------*/
void Timer2_isr(void) interrupt 5
{
if(sign==1)
  {
          TR2=0;         
    PWM=PWM_0;
         RCAP2H=(unsigned char)((65536-PWM)>>8);
    RCAP2L=(unsigned char)((65536-PWM)&0x00ff);                        
    sign=0;
        OUT=0;
        TF2=0;
        TR2=1;
  }
else
  if(sign==0)
  {
   TR2=0;  
   //PWM=660-PWM_0;                                                                          //1000HZ
   //PWM=3000-PWM_0;                                          //300HZ
   PWM=19550-PWM_0;                                                                  //50HZ
   RCAP2H=(unsigned char)((65536-PWM)>>8);
   RCAP2L=(unsigned char)((65536-PWM)&0x00ff);                    
   sign=1;
   OUT=1;
   TF2=0;
   TR2=1;
  }

}


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:156220 發(fā)表于 2019-9-18 09:02 | 只看該作者
學(xué)習(xí)好方法,謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表