单片机89s52用计数器写一个输入n个脉冲信号,输出一个脉冲信号 比如n为6,就是说输入6个脉冲 输出一个脉冲

要写c语言程序 我不会汇编
2025-02-24 11:11:43
推荐回答(3个)
回答1:

/* 利用计数器0检测到脉冲 */
/*然后用定时器2定时输出脉冲宽度*/
/******************************************/
#include
#define N 6 //宏定义从P3^4口检测到脉冲个数
#define Time 5000 //宏定义从P0^6口输出脉冲宽度
sbit Output = P0^6; // 输出脉冲端口
void Init( void )
{
Output = 0;
TMOD = 0x16; //T0工作于计数器工作方式自动重装,T1工作于16位定时器。
TH0 = 256 - N;
TL0 = 256 - N;
TH1 = ( 65536 - Time ) / 256;
TL1 = ( 65536 - Time ) % 256;
EA = 1;
ET0 = 1;
ET1 = 1;
TR0 = 1;

}

void main( void )
{
Init();
while( 1 );
}

void Time0( void ) interrupt 1
{
Output = 1; //输出脉冲
TR1 = 1;
}
void Time1( void ) interrupt 3
{
TR1 = 0;
Output = 0;
TH1 = ( 65536 - Time ) / 256;
TL1 = ( 65536 - Time ) % 256;
}

希望楼主采纳!

回答2:

给你个思路,
也可以用中断做,来个脉冲,

i=0;
来个脉冲中断一下,i=i+1;
当 i==6的时候,输出一个脉冲

回答3:

减一。为0就停