求单片机高手解决个问题,51单片机的.

[复制链接]
查看11 | 回复4 | 2012-12-26 23:05:59 | 显示全部楼层 |阅读模式
看了一下其他几位答的,觉得回答的都不好,你这个很像是工业控制,工业控制对实时性要求非常严格,第二个知友回答的居然出现了while循环,这不符合实时性,我做的工业控制程序,一个主循环一般不会超过10ms.我来说说我的思路吧,楼主可以用个定时器,根据你的脉冲参数,定时器中断时间一定要小于7ms,取5ms比较合适,然后.....看我的伪代码: bit Old_P17 = 1; //全局变量,用于检测脉冲unsigned char Counter = 0;void 定时器中断处理函数(){
Counter ++;
if(Old_P17!= P17)
{
...
回复

使用道具 举报

千问 | 2012-12-26 23:05:59 | 显示全部楼层
51单片机有外中断可以用,外中断可以设置成下降沿触发。定义一个全局变量number,在外中断程序中自加,定时中断为2秒,判断number的值是否大于0,判断完置number为0。外中断有2个,P3.2/P3.3,P1.7是普通IO口,不好操作。...
回复

使用道具 举报

千问 | 2012-12-26 23:05:59 | 显示全部楼层
while (P1.7)//高电平{
i++ ;
if (i > 100)//这里的100不一定是2s,要调试获得准确值,
break ;} while (!P1.7)//低电平{
j++ ;
if ( j > 100)
break ;} if (...
回复

使用道具 举报

千问 | 2012-12-26 23:05:59 | 显示全部楼层
教你一个最简单的算法,单片机的频率应该能到20MHz,密集采样,然后计算2s内采样数据的比值,在一定范围内则说明没停电,超出范围则停电了。...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行