📄 main.c
字号:
#include <p18f4610.h>
#include "head.h"
//内存变量定义start
void main (void)
{
/*
//内存初始化从080H到F7EH
FSR0L=0x80;
FSR0H=0x00;
for(i=3840;i--;i<=0)
{
POSTINC0=0x00;
}
//内存初始化end
*/
PORTB=0XDF;
TRISB=1;
RCONbits.IPEN= 1;//允许中断有优先级HH
INTCONbits.GIE= 0;//关所有中断HH
INTCON2bits.TMR0IP = 1;//TMRO为高优先级HH
INTCONbits.TMR0IE= 1;//T0中断使能HH
TMR0H=0X63;
TMR0L=0Xbf;
T0CON = 0X88;
INTCONbits.GIE= 1;//开所有中断HH
key_scan=1;
while(1)
{
DI_sampling();
}
}
#pragma code high_vector=0x008
void high_vector (void)
{
_asm
goto timer0
_endasm
}
//高优先级中断处理
//timer0中断处理start
#pragma code
#pragma interrupt timer0
void
timer0 (void)
{
INTCONbits.TMR0IF = 0;
TMR0H=0X63;
TMR0L=0Xbf;//重装10ms
if(key_scan==1)
{
if (PORTBbits.RB5==0)//DI口线
{key1=key1|0x40;}
if (PORTBbits.RB5==1)//DI口线
{key1=0x00;}
}
}
//timer0中断处理end
/*
void DI_sampling(void)
{
switch(delay)
{
case delay2:
if(key1==key_temp)
{
key=key_temp;
}
else
{
key_temp=0x00;
delay=0x00;
}
break;
case delay1:
if(key1==key_temp)
{
delay=0x04;
}
else
{
key_temp=0x00;
delay=0x00;
}
break;
case delayflag:
if(key1==key_temp)
{
delay=0x03;
}
else
{
key_temp=0x00;
delay=0x00;
}
break;
case havekey:
key1=0x00;
key_scan=1;
delay=0x02;
break;
}
if(delay==0)
{
if(key1==0x00)
{
delay=0x00;
}
else
{
key_temp=key1;
key1=0x00;
key_scan=0;
delay=0x01;
}
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -