51单片机普通IO口怎么实现多路PWM,实现循环右移流水灯,求程序. 10
3个回答
展开全部
51单片机普通IO口怎么实现多路PWM?
Atmel 51单片机不带PWM功能,只有自己用定时器做;
STC 51的有带PWM功能。
实现循环右移流水灯?
左移
for (i = 0; i < 8; i++)
{
P1 = ~(1 << i);
Delay(1000);
}
右移
for (i = 8; i > 0; i--)
{
P1 = ~(1 << i);
Delay(1000);
}
追问
对啊,就是用定时器
追答
volatile char i,j;
void Init_Timer0(void)
{
.....;
}
void main(void)
{
Init_Timer0();
while (1)
{
if (j < 100)
{
P1 &= ~(1 << 0 );
}
else
{
P1 = 0XFF;
}
}
void IRQ_Timer0(void) interrupt 1
{
TH0 = ...;
TL0 += ...;
i++;
if (i > 500)
{
i = 0;
j++;
}
if (j > 500)
{
j = 0;
}
}
这是一个最简单的PWM,你试试。
如有错误,请指正。
展开全部
通过一个定时器就可以用IO口模拟PWM了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询