//同时利用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同一个频率持续的时间,间隔300ms依次输出1、10、
//50、100、200、400、800HZ的方波
#include #include #define uint unsigned int //宏定义 #define uchar unsigned char sbit Waveout=P1^0; uchar tt; uint fre,flag; uint Freq[]={1,10,50,100,200,400,800,1000} void main() //主函数 { fre=50000; TMOD=0x11;//设置定时器0,定时器1为工作方式1 TH0=(65536-fre)/256; TL0=(65536-fre)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 ET1=1; TR1=1; TR0=1;//启动定时器0 while(1) //等待中断产生 { if(tt=a) { tt=0; Waveout=~Waveout; } } } void timer0() interrupt 1 //定时器0中断 { TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失 TH0=(65536-fre)/256; TL0=(65536-fre)%256; tt++; } void timer1() interrupt 3 //定时器1中断用来产生300微秒时间定时 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; flag++; if(flag==6) { flag=0; freq=Freq[i]; } } 因篇幅问题不能全部显示,请点此查看更多更全内容