//--定义使用的IO口--//
sbit PWM=P2^1;
bit DIR;
//--定义一个全局变量--//
unsigned int count,value,timer1;
void Time1Config();
void main(void)
{
Time1Config();
while(1)
{
if(count>100)
{
count=0;
if(DIR==1) //DIR控制增加或减小
{
value++;
}
if(DIR==0)
{
value--;
}
}
if(value==1000)
{
DIR=0;
}
if(value==0)
{
DIR=1;
}
if(timer1>1000) //PWM周期为100*1us
{
timer1=0;
}
if(timer1
PWM=1;
}
else
{
PWM=0;
}
}
}
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时1us--//
TH1 = 0xFF;
TL1 = 0xff;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
void Time1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFF; //重新赋初值
TL1 = 0xFf;
timer1++;
count++;
}
两个地方不懂,DIR控制增减是什么意思?怎么控制的?PWM周期100us是怎么知道的?为什么
timer1
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-01-27 12:54
PWM周期100us是怎么知道的?
--这程序,做不到这么小的周期。
--这程序,做不到这么小的周期。
全部回答
- 1楼网友:人间朝暮
- 2021-01-27 13:36
所谓pwm芯片,你要0到24v是需要运放
选da的话再给op07 tl072即可,要么找贵一点的轨到轨运放tlc2252 2262。
如果不用da,可以直接用单片机的定时器输出方波,使用占空比调压。
精度不高,8位。
da和单片机一般是spi接口4线。
51核心的带pwm输出的,15元档次,开发系统比片子贵的多。
可以学stc89c54 带da的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯