/* ******************************
晶振频率为6MHz。
使用T0和T1两个计时器产生方波,
T0产生10Hz的方波,T1产生5Hz的
方波。
分别通过P2.0和P2.1两个引脚输出。
首先,输出T0产生的10Hz方波,2分
钟后输出T1产生的5Hz方波。于此同
时关闭T0中断,停止输出10Hz方波。
****************************** */
#include
***it P20=P2^0;
***it P21=P2^1;
unsigned char i;
unsigned char z;
unsigned char counter1;
void main (void)
{
TR0=0; // 禁止T0
TMOD=0x11; // T0和T1均选择工作方式1,16位定时器
TL0=0x58; // T0和T1均定时50ms
TH0=0x9e;
TL1=0x58;
TH1=0x9e;
i=1; //计数变量i赋初值
z=2; //计数变量z赋初值
P20=0; // P2.0输出低电平
counter1=0; //中断次数为0
ET0=1; // 使能T0溢出中断
ET1=1; // 使能T1溢出中断
EA=1; // 使能CPU中断
TR0=1; //T0开始运行
while(1) // 等待中断
{;}
}
void T0_ISR (void) interrupt 1 //T0中断服务函数
{
i--; //计数变量减1
counter1++; //中断次数加1
if(i==0)
{
P20=!P20; //将P2.0取反
i=1; // 重新给计数变量赋值
}
if(counter1==2400)
{
TR1=1; //开启T1中断
}
}
void T1_ISR (void) interrupt 2 // T1中断服务函数
{
TR0=0; //关闭T0中断
z--; //计数变量减1
P21=0; //P2.1输出低电平
if(z==0)
{
P21=!P21; //P2.1输出高电平
z=2; //重新给计数变量赋值
}
}
求大神看看这段程序,现在我只能由T0产生信号,T1的信号无法产生,希望大神们能帮我改一改,使代码的功能完全实现。小弟在此谢过了!!
已退回10积分