#include<reg52.h> #define uchar unsigned char #define uint unsigned int void init(); void delay(uchar z); uchar a; sbit beef=P1^0; void main() { init(); while(1) { delay(5);//延时5毫秒 a++; //改变定时器所装的初值 } } void init()//初始化定时器 { a=0; TMOD=0x01; EA=1; ET0=1; TR0=1; } void delay(uchar z)//用于延时 { uchar x,y; for(x=z;x>0;x--) { for(y=110;y>0;y--); } } void timer0() interrupt 1 //定时器0中断在此的作用不是延时,而是慢慢的改变喇叭发声的频率。 { TH0=0xfe; TL0=a; //第八位装的初值是不断,一次比一次大,意味着定时器定时所需要的时间越来越短,从而喇叭发声的频率也来越大, //当a加到0xff+1之后,因为a为字符型的数,所以此时溢出a值重新返0。 beef=!beef;//给方波 }