久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

讓沒有PWM功能的單片機實現PWM功能

作者:huqin   來源:本站原創   點擊數:  更新時間:2013年11月15日   【字體:

        AT89S51本身沒有PWM接口,程序采用軟件模擬PWM,P1口控制LED亮度,模擬PWM輸出控制燈的10個亮度級。

#include <reg51.h>
#define uInt unsigned int
#define uchar unsigned char
uchar PWM_T = 0;   //占空比控制變量 
//////////////////主程序入口//////////////////////
void main(void)      

      bit flag = 1; //控制燈漸亮漸熄方式
      uInt n;
      TMOD=0x02;   //定時器0,工作模式2,8位定時模式 
      TH0=241;     //寫入預置初值241到定時器0,使15微秒溢出一次(11.0592MHz) 
      TL0=241;     //寫入預置值 
      TR0=1;       //啟動定時器 
      ET0=1;       //允許定時器0中斷   
      EA=1;        //允許總中斷
      P1=0xff; //初始化P1 
      while(1)     
      {      
             for(n=0;n<300;n++);  //延時,將響應定時器中斷,燈會自動加/減一個檔次的亮度 
             if(flag==1)       //燈漸亮
             PWM_T++;
             else          //燈漸熄
             PWM_T--;
             if(PWM_T>=10) //設置燈亮度級別為10
             flag=0;
             if(PWM_T==0)   //限定最低亮度級別為0
             flag = 1;
      }         

///////////////////定時器0中斷模擬PWM////////////////////
timer0() interrupt 1 using 2  

      static  uchar   t ;   //t用來保存當前時間在一秒中的比例位置 
       t++;    //每15微秒增加1 
       if(t==10)   //1.5毫秒的時鐘周期 
      { 
             t=0;  //使t=0,開始新的PWM周期 
             P1=0x00;  //使LED燈亮              
      }
     if(PWM_T==t)  //按照當前占空比切換輸出為高電平 
     P1=0xff;        //使LED燈滅         
}

關閉窗口

相關文章

主站蜘蛛池模板: 国产精品美女久久久久aⅴ国产馆 | 中文字幕一区二区三区精彩视频 | 亚洲欧美日韩久久 | 欧美国产日韩一区二区三区 | 蜜臀网| 亚洲综合字幕 | 自拍偷拍亚洲一区 | 欧美一区二区三区国产精品 | 国产在线看片 | 视频在线观看一区 | 999免费视频 | 成人在线观看欧美 | 亚洲高清视频在线观看 | 中文字幕在线观看视频网站 | 欧美成人在线影院 | 久久在线| 国产精品久久久久不卡 | 国产视频中文字幕 | 欧美精品综合在线 | 国产精品国色综合久久 | 在线观看成人免费视频 | 亚洲国产18| 成人在线视频一区 | 成人免费共享视频 | 国产成人99久久亚洲综合精品 | m豆传媒在线链接观看 | 国产精品久久久久久福利一牛影视 | 欧美一区精品 | 成人午夜网站 | 在线一区二区三区 | 黄色av网站在线免费观看 | 日韩av黄色 | 福利国产| 精品一区久久 | 在线天堂免费中文字幕视频 | 亚洲一二三区在线观看 | 免费亚洲一区二区 | 欧美精品欧美精品系列 | 成人在线免费 | 久久青视频 | 午夜免费福利影院 |