单片机89s52用计数器写一个输入n个脉冲信号,输出一个脉冲信号 比如n为6,就是说输入6个脉冲 输出一个脉冲
发布网友
发布时间:2022-04-29 21:45
我来回答
共3个回答
热心网友
时间:2023-10-09 11:10
/* 利用计数器0检测到脉冲 */
/*然后用定时器2定时输出脉冲宽度*/
/******************************************/
#include<reg52.h>
#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;
}
希望楼主采纳!
热心网友
时间:2023-10-09 11:10
给你个思路,
也可以用中断做,来个脉冲,
i=0;
来个脉冲中断一下,i=i+1;
当 i==6的时候,输出一个脉冲追问谢谢;能帮我写一下吗?
热心网友
时间:2023-10-09 11:11
减一。为0就停