#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口的八个灯就轮流亮了一次之后就不亮了,不知道是什么原因,想请各位高手指点一下!非常感谢!
文章评论(0条评论)
登录后参与讨论