📄 p18f4610.c
字号:
#include <p18f4610.h>
void timer0 (void);
unsigned char time20;
void main (void)
{
unsigned char a,b,c;
a=0;
b=0;
c=0;
RCONbits.IPEN = 1;
INTCON2bits.TMR0IP = 1;//TMRO为高优先级HH
IPR2bits.TMR3IP=1;//TMR3为高优先级
INTCON = 0X20;//TMROIE使能,其它中断关闭,总中断关闭HH
PIE2bits.TMR3IE=1;//TMR3IE使能
T1CON=0X8F;
TMR0H=0X63;
TMR0L=0Xbf;//20ms
T0CON = 0X88;//TMRO计数开始。不分频即Tosc/4 HH
INTCONbits.GIE= 1;//开所有中断HH INTCON.GIE=1;//开所有中断HH
while(1)
{
if(time20==1)
{
time20=0;
c++;
if(c==100)
{
a++;
c=0;
}
if(a==60)
{
b++;
a=0;
}
if(b==250)
b=0;
}
}
}
//高优先级中断处理
#pragma code high_vector=0x008
void
high_vector (void)
{
_asm
goto timer0
_endasm
}
//高优先级中断处理
//timer0中断处理
#pragma code
#pragma interrupt timer0
void
timer0 (void)
{
if (INTCONbits.TMR0IF)
{
INTCONbits.TMR0IF = 0;
TMR0H=0X63;
TMR0L=0Xbf;//重装20ms
time20 = 1;
}
}
//timer0中断处理
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -