PIC单片机william hill官网
直播中

redRosa

10年用户 24经验值
擅长:可编程逻辑 模拟技术 RF/无线
私信 关注
[问答]

求大神帮忙改改程序!!!!

/* ******************************
晶振频率为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积分

回帖(6)

沈涛强

2016-4-26 17:57:48
此帖仅作者可见
举报

aa453547190

2016-4-26 22:55:15
此帖仅作者可见
举报

是对方第三方

2016-5-2 14:49:18
此帖仅作者可见
举报

男哥

2016-5-6 17:22:55
此帖仅作者可见
举报

马云

2016-7-22 19:02:24
此帖仅作者可见
举报

颜生

2017-9-30 17:39:11
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

更多回帖

发帖
×
20
完善资料,
赚取积分