📄 18f_int.c
字号:
//************************************************
//用18f6585写的tmr0中断程序,2006-9-22调试通过
//************************************************
#include<p18f4580.h>
#include<math.h>
#define uint unsigned int
void Int_tmr0(void);
void delay(uint);
int count;
void main(void)
{
TRISA=0x00;
PORTAbits.RA4=1;
TRISB=0x00;//设置RB5输出为0
PORTBbits.RB5=0;
INTCON=0xa0;//开放总中断和T0中断
INTCON2bits.TMR0IP=1;//tmr0高优先中断
TMR0L=0x01;
TMR0H=0x00;//装初值
T0CON=0x87;//使能tmr0,16位,预分频位256
count=0;
while(1)
{
// PORTB=count;//跑马灯
// count++;
unsigned char i;
for(i=0;i<100;i++)
{
PORTAbits.RA2=~PORTAbits.RA2;
delay(50000+i);
}
delay(50000);
}
}
#pragma code InterruptVectorHigh=0x08//从中断向量地址跳转的服务程序
void InterruptVectorHigh(void)
{
_asm
goto Int_tmr0//跳转要执行的子程序
_endasm
}
#pragma code
#pragma interrupt Int_tmr0
void Int_tmr0()
{
while(INTCONbits.TMR0IF==1)
{
INTCONbits.TMR0IF=0;//清除中断标志
PORTAbits.RA0=~PORTAbits.RA0;
}
TMR0L=0x01;
TMR0H=0x00;//装初值
}
void delay (uint tm)
{
while(tm--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -