C51写国色天香(前几句没写完)[中断编号问题]

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit BUZZ = P2^2;
int x; 

uchar code music[]={0x42,0x61,0x41,0x92,0x71,0x61,	  //音乐编码
					0x61,0x71,0x24,0x11,0x21,
					0x42,0x31,0x41,0x61,0x72,0x41,
					0x31,0x41,0x36,0x44,0x64,
					0x71,0x91,0x61,0x71,0x94,
					0x32,0x41,0x61,0x71,0x91,0x71,0x41,0x71,
					0x68,0x61,0x62,0x41,0x92,0x91,0x71,
					0x61,0x61,0x61,0x71,0x24,0x31,0x21,
					0x31,0x41,0x71,0x61,0x72,0x68};

uchar  code frequency[]={0,272,330,370,415,440,494,554,622,660,740,830,880,988};
//频率数组

void delayms(uint z)
{
	uchar i;
	z=300 * z; //这应该是300不是3300网页问题改不了
	while(z--)
	{
		for(i = 0;i < 123; i++);
	}	
}


void main()
{
    int b;
	int i,high,low;
	BUZZ = 0;
	EA = 1;
	ET0 = 1;
 
	for(i = 0;i < 55;i++)
	{
		
	    if(music[i] == 0)
		{
			return ;
		}
		
		TMOD = 0x01;
		high = music[i]/16;
		low =  music[i]%16;
		b = frequency[high];
		x = 65536 - 500000/b;
		TH0 = x / 256;
		TL0 = x % 256;
		TR0 = 1;
		delayms(low);
		TR0 = 0;	 
	}
		
}

void int0()  interrupt 1   //采用定时器中断1 控制节拍      
{  
	TH0 = x / 256;
	TL0 = x % 256;
	BUZZ = ~BUZZ;  //输出方波蜂鸣器发声 
} 

注意:

外部中断 0 中断编号是 0;

外部中断 1 中断编号是 2;

定时器中断 0 中断编号是 1;

定时器中断 1中断编号是 3;

猜你喜欢

转载自blog.csdn.net/qq_38053395/article/details/80290645
C51