資源簡介
stc12c5a60s2單片機輸出兩路pwm走了很多彎路,發(fā)現(xiàn)一個很簡單的程序,直接可以用的。

代碼片段和文件信息
#include?
#define?uchar?unsigned?char
#define?uint?unsigned?int
/*********************************************************************************************
函數(shù)名:PWM初始化函數(shù)
調(diào)??用:PWM_init();
參??數(shù):無
返回值:無
結(jié)??果:將PCA初始化為PWM模式,初始占空比為0
備??注:需要更多路PWM輸出直接插入CCAPnH和CCAPnL即可
/**********************************************************************************************/
void?PWM_init?(void)
{
CMOD=0x02;?//設(shè)置PCA定時器
??CL=0x00;?
??CH=0x00;
?CCAPM0=0x42;?//PWM0設(shè)置PCA工作方式為PWM方式(0100?0010)
??CCAP0L=0x00;?//設(shè)置PWM0初始值與CCAP0H相同
??CCAP0H=0x00;?//?PWM0初始時為0
?CCAPM1=0x42;?//PWM1設(shè)置PCA工作方式為PWM方式(使用時刪除//)
?CCAP1L=0x00;?//設(shè)置PWM1初始值與CCAP0H相同
??CCAP1H=0x00;?//?PWM1初始時為0
?//CCAPM2=0x42;?//PWM2設(shè)置PCA工作方式為PWM方式
?//CCAP2L=0x00;?//設(shè)置PWM2初始值與CCAP0H相同
??//CCAP2H=0x00;?//?PWM2初始時為0
?//CCAPM3=0x42;?//PWM3設(shè)置PCA工作方式為PWM方式
?//CCAP3L=0x00;?//設(shè)置PWM3初始值與CCAP0H相同
??//CCAP3H=0x00;?//?PWM3初始時為0
??CR=1;?//啟動PCA定時器
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:PWM0占空比設(shè)置函數(shù)
調(diào)??用:PWM0_set();
參??數(shù):0x00~0xFF(亦可用0~255)
返回值:無
結(jié)??果:設(shè)置PWM模式占空比,為0時全部高電平,為1時全部低電平
備??注:如果需要PWM1的設(shè)置函數(shù),只要把CCAP0L和CCAP0H中的0改為1即可
/**********************************************************************************************/
void?PWM0_set?(unsigned?char?a){
?CCAP0L=?a;?//設(shè)置值直接寫入CCAP0L
??CCAP0H=?a;?//設(shè)置值直接寫入CCAP0H
}
/**********************************************************************************************/
void?PWM1_set?(unsigned?char?a)
{
?CCAP1L=?a;?//設(shè)置值直接寫入CCAP1L
??CCAP1H=?a;?//設(shè)置值直接寫入CCAP1H
}
/*********************************************************************************************
函數(shù)名:主函數(shù)
調(diào)??用:無
參??數(shù):無
返回值:無
結(jié)??果:程序開始處,無限循環(huán)
備??注:
/**********************************************************************************************/
void?delay_1ms(unsigned?int?i);
void?main?(void)
{
while(1)
{
? PWM_init();?//PWM初始化
? while(1)
? {
? PWM0_set(0x7f);
PWM1_set(0xff);//1
delay_1ms(10000);
?
PWM0_set(0x33);?//設(shè)置PWM占空比總共255除以2轉(zhuǎn)換成十六進制得7F
PWM1_set(0x7f); //%50
delay_1ms(100);
PWM0_set(0x00);
PWM1_set(0x00); //%0
delay_1ms(10000);
? }?????????????????????????
???}
}
/**********************************************************************************************/
/**********************************************************************************************/
/*void?delay_20us()
?{??uchar?bt?;
????for(bt=0;bt<60;bt++);
?}*/
/**********************************************************************************************/
void?delay_1ms(unsigned?int?i)
{
unsigned?char?j;
?while(i--)
?{
?for(j=0;j<115;j++) ??//1ms基準延時程序
?{
?? ;
?}?
?}
??
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3224??2017-07-08?18:15??pwm燈\111
?????文件???????3162??2017-07-08?18:13??pwm燈\111.c
?????文件????????420??2017-07-08?18:15??pwm燈\111.hex
?????文件?????????38??2017-07-08?18:15??pwm燈\111.lnp
?????文件???????6084??2017-07-08?18:15??pwm燈\111.LST
?????文件???????5405??2017-07-08?18:15??pwm燈\111.M51
?????文件???????3563??2017-07-08?18:15??pwm燈\111.OBJ
?????文件????????194??2017-07-08?18:18??pwm燈\111.plg
????.......?????56160??2017-07-08?18:18??pwm燈\111.uvopt
????.......?????13223??2017-07-08?16:01??pwm燈\111.uvproj
????.......?????56168??2017-07-08?18:17??pwm燈\111_uvopt.bak
????.......?????????0??2017-07-08?15:52??pwm燈\111_uvproj.bak
?????文件??????17735??2017-07-08?16:01??pwm燈\stc12c5a60s2.h
?????目錄??????????0??2017-07-08?18:18??pwm燈
-----------?---------??----------?-----??----
???????????????165376????????????????????14
評論
共有 條評論