新手入门
- 积分
- 6
- 金钱
- 6
- 注册时间
- 2017-7-24
- 在线时间
- 0 小时
|
T0,T1优先权已默认,为什么改变定时器就可以执行,而不改变i在等于5后就不变了,但频率一定要高优先级啊,求改错
#include<REG51.H>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P1^5;
uint hh[]={50000,10000,5000,2500,1250,625,500};
uchar i=0,j=0;
void timer0() interrupt 1 // 定时器0控制频率
{ if(i==7)
i=0 ;
TH0=(65536-hh[i])/256;
TL0=(65536-hh[i])%256;
beep=~beep;
}
void timer1() interrupt 3 // 定时器1控制同个频率持续的时间,50mS脉冲
{TR0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
j++;
if(j==6){
j=0;
i++;
}
TR0=1;
}
void main()
{
EA=1; //开启总中断
ET0=1;ET1=1;//开启外部定时器中断
TMOD=0x11;
TH0=(65536-hh[i])/256;
TL0=(65536-hh[i])%256;//给定时器0赋初值
TH1=(65536-50000)/256;
TL1=(65536-50000)%256; //给定时器1赋初值
TR0=1;TR1=1;//启动两个定时器;
while(1);} |
|