风扇每转发送2个周期的脉,要求速度低于1000转/分的时候会报警。你们爱怎么写就怎么写,我只是拿来参考。(要求C语言,我不懂汇编)以下是我的失败作品别模仿:#include#include#define uint unsigned int #define uchar unsigned char sbit D1=P3^1; //喇叭的端口sbit LED=P3^5; // 提示灯sbit FAN=P3^2; // 电压信号端uint num;uint bei;uint zhu;void delay2S(); //声明延时函数void delay(uint); //声明延时函数void main(){ EA=1; // 总开关 ET0=1; // TO开关 TMOD=0x05; // 模式 TR0=1; // 启动T0 TH0=0; //高8位 附0 TL0=0; //低8位 附0 FAN=1; //风扇的电压信号,条件不达成为1,不实行监控 LED=1; //监控提示灯 while(1) { if(FAN==0) //判断风扇电压是否达到(此信号由比较器提供) { LED=0; TH0=0; //附初值 TL0=0; //附初值 delay2S(); //延时2秒(为了取样) zhu=TL0; //把T0低8位的值附给 zhu bei=TH0; //把高8位附给 bei bei=(66*bei); // num=(zhu+bei); //把计数器的值附给num if(num>65) // 2000转/分钟的风扇,每转2个周期的脉冲输出,要求在某电压条件下达到1000转/分钟,2秒取样哟低于65报警 { D1=1; //喇叭不响 } else //实行报警 { uchar gld; for(gld=0;gld<6;gld++) d1="~D1;" th0="0;" tl0="0;" else="" led="1;" void="" unsigned="" char="" i="85;" j="13;" k="227;" do="" while="" uint="" uchar="" x="z;x">0;x--) for(y=20;y>0;y--); } void exter0() interrupt 1{ }
给你个我写的基于89c52的单片机测频率的程序,你参考下
#include <reg52.h>