📄 16key_int.c
字号:
/**********************************
本设计的键盘采用外部中断的方式。
按键的行线经4端口或门相或后输入到外部中断引脚INT,当按键按下时(下降沿跳变),产生外部中断,
调入中断子程序,再对键进行扫描,确定那个键按下,真样节省了扫描时间,调高了CPU执行效率
******************************************/
#include<pic.h>
#define uint unsigned int
#define uchar unsigned char
uchar key=0;
void int_init() //RB0外部中断初始化
{
GIE=1;
INTE=1; //外部中断允许
INTF=0;
TRISB0=1; //RB0为外部中断输入引脚,设为输入
TRISD=0x00; //不能少,因设为输入时,默认输入为0,所以先清0
PORTD=0x0f;
TRISD=0xf0;
TRISC=0x00;
INTEDG=1; //INT上升沿有效
}
void interrupt intkey()
{
INTF=0;
PORTD=0x00;
RD0=1;
if(1==RD4) key=1;
if(1==RD5) key=2;
if(1==RD6) key=3;
if(1==RD7) key=4;
RD0=0;
RD1=1;
if(1==RD4) key=5;
if(1==RD5) key=6;
if(1==RD6) key=7;
if(1==RD7) key=8;
RD1=0;
RD2=1;
if(1==RD4) key=9;
if(1==RD5) key=10;
if(1==RD6) key=11;
if(1==RD7) key=12;
RD2=0;
RD3=1;
if(1==RD4) key=13;
if(1==RD5) key=14;
if(1==RD6) key=15;
if(1==RD7) key=16;
RD3=0;
PORTD=0x0f; //恢复PORTB的值
PORTC=key;
}
void main()
{
int_init();
while(1){;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -