/****************************************************************
函数名称:void Set_User_T16(void)
函数功能:定时器计数定时256us
函数参数:无
函数返回值:无
函数说明:
****************************************************************/
#define USER_TIMER_CONFIG() $ T16M IHRC, /4, BIT10
#define ENABLE_TIMER() SET1 INTEN.2 //$ INTEN T16 //开定时器中断
#define DISENABLE_TIMER() SET0 INTEN.2 //关定时器中断
#define INIT_TIMER_VALUE(n) STT16 n//装载定时器计数值
#define CONST_TIMER_VALUE 0
#define EA_INT() ENGINT//开总中断
#define DIS_INT() DISGINT//关总中断
/**************************************************************/
void Set_User_T16(void)/*定时256us进一次中断 2^10/(16/) = 256us*/
{
//SET0 T16flag;//reset the flag
USER_TIMER_CONFIG();
T16val = CONST_TIMER_VALUE;//256us
INIT_TIMER_VALUE(T16val);
INTRQ = 0;//清除INTRQ
EA_INT();
ENABLE_TIMER();
}
/************************************************
中断服务函数
************************************************/
void Interrupt (void)
{
pushaf;
if (Intrq.T16)/*256us进入一次中断*/
{ // T16 Trig
// User can add code
Intrq.T16 = 0;
T16val = CONST_TIMER_VALUE;
INIT_TIMER_VALUE(T16val);
LED_Scan1();
//LED_scan2();
}
popaf;
}
/****************************************************************
函数名称:void LED_Scan(void)
函数功能:扫描函数,扫描要显示13:14,其他图标都亮
函数参数:无
函数返回值:无
函数说明:没有用到的引脚设置为高阻态
if语句里面注释的pbc位所有LED数码管全亮
****************************************************************/
void LED_Scan1(void)
{
static u8 cnt = 0;
SetPortIn();//设置高阻态,关闭上拉
//SetPortOut();
$ pbdier = 0;
switch (cnt)//轮询一个引脚为高电平
{
case 0:
pbc.0 = 1;//设置pb0输出
pb.0 = 1;//输出高电平
break;
case 1:
pbc.1 = 1;
pb.1 = 1;
break;
case 2:
pbc.2 = 1;
pb.2 = 1;
break;
case 3:
pbc.3 = 1;
pb.3 = 1;
break;
case 4:
pbc.4 = 1;
pb.4 = 1;
break;
case 5:
pbc.5 = 1;
pb.5 = 1;
break;
case 6:
pbc.6 = 1;
pb.6 = 1;
break;
default:
break;
}
//将发生变化的引脚所对应要显示的内容更改
if (PIN1)
{
//pbc = 0x3f;
pbc = 0x35;//配置输出引脚 0:输入 1:输出
pb = 0X01;//
}
if (PIN2)
{
//pbc = 0x3f;
pbc = 0x2e;
pb = 0x02;
}
if (PIN3)
{
//pbc = 0x7f;
pbc = 0x7c;
pb = 0x04;
}
if (PIN4)
{
//pbc = 0x3f;
pbc = 0x1b;
pb = 0x08;
}
if (PIN5)
{
//pbc = 0x7f;
pbc = 0x72;
pb = 0x10;
}
if (PIN6)
{
//pbc = 0x7f;
pbc = 0x72;
pb = 0x20;
}
if (PIN7)
{
//pbc = 0x64;
pbc = 0x44;
pb = 0x40;
}
cnt++;
if(cnt >= 7)
{
cnt = 0;
}
//cnt = (cnt >= 8)?0:cnt+1;
}
联系客服