下面这些代码我大概知道是干什么的,但是不知道是怎么实现的,每一步是什么意思,求详细的注释!!!跪求大神们!!!!
PWM编程改变输出频率:
rTFG0=0xff;
rTCFG1=0x1;
for(freq=4000;freq<14000;freq=freq+1000)
{
div=(PCLK/256/4)/freq;
rTCON=0x0;
rTCNTB0=div;
rTCMPB=(2*div)/3;
rTCON=0xa;
rTCON=0x9;
for(index=0;index<1000;index++);
rTCON=0x0;
}
编程改变输出占空比:
div=(PCLK/256/4)/8000;
for(rate=1;rate<100;rate++)
{
rTCNTB0=div;
rTCMPB0=(rate*div)/100;
rTCON=0xa;
rTCON=0x9;
for(index=0;index<10000;index++)
rTCON=0x0;
}
rTFG0=0xff;//-给寄存器附值为0xff,具体含义你书上应该有
rTCFG1=0x1;//-给寄存器附值0x01,,具体含义你书上应该有
//-频率freq从4000,每循环一次+1000,循环14次(freq<14000),即增加频率值
for(freq=4000;freq<14000;freq=freq+1000)
{
div=(PCLK/256/4)/freq;//-分频率值计算
rTCON=0x0;//-控制寄存器付值0x0
rTCNTB0=div;//-设置累加计数值,周期
rTCMPB=(2*div)/3;//-设置比较计数值,和rTCNTB0值得到PWM占空比为2/3,占空比
rTCON=0xa;//-控制寄存器付值为0xa,
rTCON=0x9;//-控制寄存器付值为0x9,
for(index=0;index<1000;index++);//-延时
rTCON=0x0;//-控制寄存器付值0x0
}
编程改变输出占空比:
div=(PCLK/256/4)/8000;//-得到周期
//-占空比值rate从1以1为单位增加,循环100次,即占空比增加
for(rate=1;rate<100;rate++)
{
rTCNTB0=div;//-周期值,
rTCMPB0=(rate*div)/100;//-占空比计算,周期div一定,rate增加,占空比增加
rTCON=0xa;//-控制寄存器付值为0xa,
rTCON=0x9;//-控制寄存器付值为0x9,
for(index=0;index<10000;index++)//-延时
rTCON=0x0;//-控制寄存器付值为0x0
}
//-具体在寄存器付值含义,你应该可以在书中找到……。
如果用的是s3c2440,那么可以看看这个
http://blog.csdn.net/passerby_unnamed/article/details/51212637