#include"main.h"
uchar tt;
__CONFIG(0x3184);
void delayms(uint num)
{
uint x,y;
for(x=num;x>0;x--)
for(y=108;y>0;y--);
}
void init(void)
{
OPTION = 0x00; //T0不分频,内部定时器,A口上拉使能 时钟
CMCON=0Xff; //关比较器
ADON = 0; //A/D转换关闭
ANSEL=0; //设置成数据口
TRISIO=0x08; //GPIO4 配置为输入引脚(三态) 0为输出,1为输入
WPU=0X08; //上啦寄存器 0为禁止上啦,1为上啦
GPIO = 0xCf; //I/O口拉高
PIE1=0X01; //使能溢出中断
TMR1H=0;
TMR1L=0;
T1CON=0X01; //TIMER1使能
TMR1IF=0; //TMR1 溢出中断标志位
PEIE=1; //外设中断使能位
TMR1IE=1; //TMR1 溢出中断使能位
GIE=1; //开全局中断
}
void main ()
{
uint i;
init();
while(1)
{
// i=((((uint)TMR1H)<<8)+TMR1L);
// if(i>=100)
// {
// i=0;
// TMR1H=0;
// TMR1L=0;
// GPIO5=!GPIO5;
// }
NOP();
}
}
void interrupt time1(void)
{
if(INTF==1)
{
INTF=0;
//计数器加1
}
if(TMR1IF==1) //这样才可以判断中断;
{
TMR1H=(65536-500)/256;
TMR1L=(65536-500)%256;
TMR1IF=0;
GPIO5=!GPIO5;
}
}
有谁知道这是怎么回事不 我用的是内部4M的晶振 还是说晶振误差了。。。。。。
|