|
发表于 2012-12-28 09:17:39
|
显示全部楼层
本帖最后由 lmt50211 于 2012-12-28 09:24 编辑
给一个简单的程序,你参考一下。没有试过,不知道程序有没有错误,大概思路应该没错,现在是在中断中检测,当然也可以在主循环中检测。
sbit input=P1^1;//输入引脚
sbit output=P1^2;//输出引脚
bit bit_1ms;//1ms标志
unsigned char highcnt;//高电平记数
void main()
{
init();//初始化
while(1)
{
if(bit_1ms)//1ms执行一次其它任务
{
bit_1ms=0;
}
}
}
void t1ms(void) interrput 1 using 0//1ms中断一次
{
bit_1ms=1;
if(input)//在中断中检测,具有很很好的实时
{
if(++highcnt>=50) //检测高电平1ms*50=50ms
{
highcnt=0;
output=!output;//输出提示
}
}
else//出现低电平则清高电平记数
{
highcnt=0;
}
} |
|