一个51单片机发射高频波的编程问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 03:05:37
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
sbit out=P1^0;

unsigned int l,n;

void Delay(unsigned int n)
{

while(n>0)
{
n--;
}
}
void chipintial (void)
{
TMOD=0x12;
TL0=0xf4;
TH0=0xf4;
EA=1; //开中断
PT0=1; //to溢出中断为最高优先级
ET0=1; //开to溢出中断
out=0;
l=0;
TR0=1; //to开始工作

}

void t0(void) interrupt 1 using 0 //中断发射40KHZ方波

{
out=!out;

if(l>=3)
{
ET0=0;
Delay(1);

chipintial();
}

l++; //记录反向次数,达到要求后进行延时

}

//主程序**********************//
void main(void)
{

chipintial();
while(1)
{}
}

单片机的T0计时器应该在12个计数周期后溢出中断,但是不管怎么改变TH0的初值,都是32个计数周期 程序中有个BUG但是找不出来了, 请高手赐教一下, 帮忙调试一下,郁闷死了···
是发射40KHZ 的方波 周期性的 有

你的程序好奇怪哦,开的定时器中断,然后又在中断程序里调用定时器程序,什么意思??相信你自己也觉得有点怪怪的吧,可能就是这儿出了问题!如果是想一直调用定时器程序,那你把它放到main中的while里不就很好嘛!!改下试试,然后把结果告诉我一下~~共同学习!