📄 interrupt.c
字号:
#include <pic.h>
#include"main.h"
unsigned char k1_count,k2_count;
unsigned int mcount=0;;
bit k1,k2;
unsigned int count,count1;
void init_timer(void)
{
//----TIME0 init-----------------
OPTION=3;
T0IE=1;
//----TIME1 init-----------------
T1CON=1;//enable TMR1 on , Prescaler Rate is 1:1
TMR1H=0xFE; //10ms interrupt once
TMR1L=0x0B;
TMR1IE=1;
PEIE=1; //enable TMR1 interrupt
//----TIME2 init-----------------
TMR2ON=1;
T2CON=0x7f;
TMR2IE=1;
PEIE=1; //enable TMR1 interrupt
PR2=38;//255;
//-------------------------------
GIE=1; //enable all unmasked interrupts
}
void interrupt ISR (void)
{
//==============time0 isr=========================
if(TMR0IF)//alarm
{
TMR0IF=0; TMR0=0; //4.42ms
if(K1==0)
{
if(k1_count==30)
{ k1_count=0; k1=1; }
else k1_count++;
}
//---------------------------------------------
if(K2==0)
{
if(k2_count==20)
{ k2_count=0; k2=1; }
else k2_count++;
}
}
//================time1 isr=========================
if(TMR1IF&TMR1IE)//process
{
TMR1IF=0;
TMR1H=0XFE;
TMR1L=0X0B;
//----------------------------------
if(k1) {
CLK=!CLK;
LED1=!LED1;
EN=1; //motor begin satr
CCW=1;
if(mcount==800)
{ EN=0; mcount=0; k1=0; LED1=1; }
else mcount++;
}
//----------------------------------
if(k2) {
CLK=!CLK;
LED1=!LED1;
EN=1; //motor begin satr
CCW=0;
if(mcount==800)
{ EN=0; mcount=0; k2=0; LED1=1; }
else mcount++;
}
//----------------------------------
}
//==================time2 isr========================
if(TMR2IF&TMR2IE)//buzzer
{
TMR2IF=0;
TMR2=0;
if(count1==100)
{
LED=!LED;
count1=0;
//---------------------
//--------------------
}
else count1++;
}
//===================================================
}
void inti_io(void)
{
TRISB1=0;
TRISB3=0;
TRISB4=0;
TRISB5=0;
TRISC4=0;
CCW =1;
EN =0;
CLK =1;
LED=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -