⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16key_int.c

📁 我用PROTEUS做了一个基于PIC16F877A的4*4键盘
💻 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 + -