原创 想请大家帮忙~谢谢

2009-5-9 15:10 1002 7 7 分类: MCU/ 嵌入式

#include <pic.h>


unsigned int s="0",k;      
void delay()
{
  unsigned int i;
  for(i=0;i<50000;i++)
     continue;
}            



void tmint(void)
{
        T0CS=0;                //T0CS:TMR0 时钟源选择位  1 = T0CKI 引脚上的外部时钟  0 = 内部指令周期时钟(CLKOUT)
        PSA="0";                //PSA:预分频器分配位        1 = 预分频器分配给WDT        0 = 预分频器分配给Timer0 模块
        //PS2=1;                //PS2:PS1:PS0:预分频比选择位  1 1 1是256分频
        //PS1=1;
        //PS0=1;
        T0IF=0;                //T0IF:TMR0 溢出中断标志位        1 = TMR0 寄存器已经溢出(必须用软件清零)        0 = TMR0 寄存器尚未发生溢出
        T0IE=1;                //T0IE:TMR0 溢出中断允许位        1 = 允许TMR0 溢出中断        0 = 禁止TMR0 溢出中断
}
void interrupt clkint(void)   //定时器中断函数
{  
     if(T0IF&&T0IE)
       {
        TMR0=0x80;
        T0IF=0;
        //T0IE=1;
        s++;
       }
}
main(void)
{  
    TRISD="0x00";
    //INTCON=0;
    k="0xFF";  
    PORTD="k";
    delay();
    k="0x00";
    PORTD="k";
    tmint();                        //调用定时器初始化程序   
    GIE="1";    //全局中断允许位GIE置位时,允许所有未屏蔽的中断;清零时,禁止所有中断
    TMR0=0x80;                //装入定时器初始值
    k="0x01";
    while(1)                         //循环等待中断
      {  
          if (s==10)
           { 
             s="0";
             PORTD="k";
             k="k"<<1;    
             //TMR0=0x06;    
             if (k==0x00)  PORTD="0x01";
           }
      }
}


 


这段程序调了很久都没能调好,仿真的时候,D口的八个灯就轮流亮了一次之后就不亮了,不知道是什么原因,想请各位高手指点一下!非常感谢!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条