📄 keyscan.c
字号:
#include<pic.h>
#define uint unsigned int
#define uchar unsigned char
//uchar keyscan(void)
const uchar Led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uchar temp;
void delay(uchar a) //8+3*(a-1)
{
uchar b;
b = a;
while(b--);
}
void rb_initial(void)
{
TRISB = 0XF0;
OPTION = 0X00;//启动RB弱上啦RBPU\
}
void rd_initial(void)
{
TRISD = 0X00;
}
/*void delay(void)
{
uchar i;
for(i=50;i--;)
{;}
}*/
uchar keyscan(void)
{
PORTB = 0XFE;
if(RB4 == 0)delay(30);if(RB4 == 0) temp = 1;
if(RB5 == 0)delay(30);if(RB5 == 0) temp = 2;
if(RB6 == 0)delay(30);if(RB6 == 0) temp = 3;
if(RB7 == 0)delay(30);if(RB7 == 0) temp = 4;
PORTB = 0XFD;
if(RB4 == 0)delay(30);if(RB4 == 0) temp = 5;
if(RB5 == 0)delay(30);if(RB5 == 0) temp = 6;
if(RB6 == 0)delay(30);if(RB6 == 0) temp = 7;
if(RB7 == 0)delay(30);if(RB7 == 0) temp = 8;
PORTB = 0XFB;
if(RB4 == 0)delay(30);if(RB4 == 0) temp = 9;
if(RB5 == 0)delay(30);if(RB5 == 0) temp = 10;
if(RB6 == 0)delay(30);if(RB6 == 0) temp = 11;
if(RB7 == 0)delay(30);if(RB7 == 0) temp = 12;
PORTB = 0XF7;
if(RB4 == 0)delay(30);if(RB4 == 0) temp = 13;
if(RB5 == 0)delay(30);if(RB5 == 0) temp = 14;
if(RB6 == 0)delay(30);if(RB6 == 0) temp = 15;
if(RB7 == 0)delay(30);if(RB7 == 0) temp = 16;
return(temp);
}
main()
{
uchar TEMP;
rb_initial();
rd_initial();
while(1)
{
keyscan();
PORTD = Led[temp] ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -