这是一个控制单片机LED的程序,我想让灯闪30秒低频,30秒高频。但是无论如何都不能实现功能~求助

[复制链接]
查看11 | 回复3 | 2012-3-28 18:10:33 | 显示全部楼层 |阅读模式
你说的不能跳出循环是什么意思呢?是不能跳出哪个循环?你现在碰到的具体现象是什么呢?你的这个程序中的30秒是不是精确的30秒?如果是精确的话,建议用定时器不要用delay,还有个问题是低频30秒,高频30秒之后你要做什么?是继续低频高频的交替闪烁下去,还是不再闪烁?如果确认你的延时函数没有问题你这样试一下(低频高频一直交替闪烁30秒)void main(){int a;P0=0;while(1){for(a=0;a<150;a++){P0=0;delay(100);P0=0xff;delay(100);}for(a=0;a<150;a++){P0=0;delay(1000);P0=0xff;delay(...
回复

使用道具 举报

千问 | 2012-3-28 18:10:33 | 显示全部楼层
不要用delay,用定时器定时在定时器中断函数中计数计算时间,如你说的30S,计时到后修改PWM的参数。主程序中作PWM的事情。...
回复

使用道具 举报

千问 | 2012-3-28 18:10:33 | 显示全部楼层
你是想实现30秒亮30秒灭吧一般的main函数中会有个死循环的即main(){ //初始化 while(1)
{
//主程序
}}...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行