HT46F49E 单片机定时控制1个灯关闭和点亮,为什么电路板通电后24秒左右才正常4秒点亮4秒关闭,和其他单片机定时器使用好像有点不一样,晶振外置8M的,程序如下:
#include "HT46F49E.h"
char i,j,k;
#pragma vector ISR_Timer0 @0x08 //定时器中断入口 void ISR_Timer0(void) //定时器中断子程序
{
i++;
_tmr=0x00;
if(i==100) { j++; i=0; }
if(j==10) { k++; j=0; }
}
void main()
{
_pac=0x00;//从右向左数第一个为pa0 也就是最后一个0
_pbc=0x00;//定义PB口为输出 0为输出 1为输入
_pbc=0x00;
_pcc=0x00;
_pdc=0x00;
_tmr=0x00; //定时器初值设置为0 这个初值装多少才为1us溢出,RC振荡 4M 8M 分别是多少
_tmrc=0x83; //定时器控制器控制设置
_eti=1; //开定时器中断开关
_emi=1; //开总中断开关
_ton=1; //开启定时器
_pb2=0;//关闭制水灯
while(1)
{
if(k==10)
{
_pb2=1;//点亮制水灯刚通电24秒才亮,后面就4秒一个循环不知为什么
}
if(k==20)
{
_pb2=0;//关闭制水灯
k=0;
}
_clrwdt();//看门狗清0
}
} |