单片机8051c语言 中断控制???

来源:百度知道 编辑:UC知道 时间:2024/05/31 14:05:49
控制铃声1ms响一次,看看那里错了 ,谢谢 急用!!
#include <reg51.h>
sbit bell=P2^7;

void main()
{

TMOD = 0x02;
TH0 = 0x9C ;
EA = 1;
ET0 = 1;
TR0 = 1;

while(1)
{

bell=~bell;

}
}

void timer0 interrupt 1
{ bell=~bell;
}
谢谢各位哦,@~@

一楼说的不错,基本上把问题指出来了。
方式2不用重新赋值的。在中断函数里加几句,使它定时1MS。

#include <reg51.h>
sbit bell=P2^7;
unsigned int mycount;

void main()
{

TMOD = 0x02;
TH0 = 0x9C ;
EA = 1;
ET0 = 1;
TR0 = 1;
mycount=0;

while(1)
{
if(mycount==1000)
{mycount=0;

bell=~bell;}

}
}

void timer0() interrupt 1
{ mycount++;
}

1.方式2 不能定时到1000us
2.中断里做操作 while里就不要再做了 不然没意义了
3.1ms响一次也就是1KHZ的信号~ 音频单音~你能听出的也是一直在响~~

进入死循环了
你要知道中断是在一定的时间里面才要发生的,你的一进去就不出来了

进入中断要重新赋值

你好,我不知道你的蜂鸣器的引脚是哪个,我现在编写一个程序,这个程序的功能是第一个LED每隔1ms亮一次。
注意,一定要在学习板上面运行。

#include<reg51.h>
#define uint unsigned int
sbit P1_0=P1^0;
uint a;
void main()
{
TMOD=0x01; //只能用定时器0的工作方式1,不能用方式2
TH0=(65536-1000)/256;
TL0=(65536-1000)%256; //初始化计数初值,使得每1ms中断一次
EA=