資源描述:
《利用定時器2模擬pwm控制led亮度變化》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、#include"delay.h"#include"com.h"#include"key.h"#include"beep.h"sfr?T2MOD=0xC9;??//定時器2#define?WM_COUST?20????//PWM細分數(shù)volatileunsignedcharPWM_H;???//PWM占空比調(diào)節(jié)volatileunsignedcharPWM_CNT=0;??//PWM自增值/****************************************************************??????定時器
2、2中斷程序***************************************************************/voidTimer2(void)interrupt5using1{?if(PWM_CNT=PWM_COUST)?//PWM計數(shù)清零?{??WM_CNT=0;?}?else?{??WM_CNT++;??//自增值加1?}?}/**********
3、******************************************************??????定時器2初始化***************************************************************/#defineMSB_reload_value0xDB?//msbreloadvalueexemple高位重載值:延時10ms#defineLSB_reload_value0xF0?//lsbreloadvalueexemple低位重載值voidTimer2Init(void)
4、{?//T2OE=0;定時器2輸出不允許??T2MOD=0x01;?//DCEN=1;可以設(shè)置為向上/下計數(shù):此程序中為向上達到0xff時溢出?T2CON=0;??//TF2EXF2RCLKTCLKEXEN2TR2C_T2CP_RL2?//EXF2=0;?resetflag定時器2外部標志位清除?//TCLK=0;RCLK=0;?disablebaudrategenerator不用于波特率發(fā)生器?//EXEN2=0;ignoreeventsonT2EX視T2EX(P1.1)端信號無效?//C_T2=0;timermode定時模式?//
5、CP_RL2=0;?reloadmode重載模式?TH2???=MSB_reload_value;//Initmsb_value填入初始化值?TL2???=LSB_reload_value;//Initlsb_value??RCAP2H=MSB_reload_value;//reloadmsb_value重載值??RCAP2L=LSB_reload_value;//reloadlsb_value??ET2=1;?//enabletimer2interrupt允許T2中斷}/*******************************
6、*************************?????系統(tǒng)初始化********************************************************/voidInitSys(void){?DelayMs(100);??//等待系統(tǒng)穩(wěn)定??0=0xFF;???//初始化IO?1=0xFF;?2=0xFF;?3=0xFF;??InitSerial();??//串口初始化?Timer2Init();??//定時器2初始化?EA?=1;?????//開總中斷?WM_H?=5;??//初始占空比5?PWM_CN
7、T=0;??//初始化PWM自增值}/********************************************************??????主函數(shù)********************************************************/?voidmain(void){?unsignedcharucKey;?InitSys();??//初始化?TR2=1;?//啟動定時器2?while(1)?{??ucKey=KeyScan();??//讀取鍵盤值??if(ucKey!=ValNull)?/
8、/如果不為空??{???if(ucKey==ValKey16)?//如果等于key16???{????if(PWM_H<=PWM_COUST)?//如果PWM_H在PWM范圍內(nèi)????{?????PWM_H++;???/