#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
const uchar table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
const uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};
uchar key_num,sum,HL,kk;
void delay(uint x);
void init();
uchar scan();
void didi(uchar sum);
void shumaguan();
void main()
{
init();
while(1)
{
kk=scan();
shumaguan();
}
}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
// CMCON=0x07; //比較器關閉,RA0-RA3為IO
// CVRCON=0x00; //比較器電源關閉
// ADCON1=0x06; //AD轉換關閉,AN0-AN7配置為數字IO
// TRISA=0xff; //PORTA定義為輸入
TRISB=0Xf0; //定義RB0為輸出 1111輸入 0000輸出
TRISC=0X00; //PORTC定義為輸出
// RB0=1;
// TRISD=0x00; //PORTD定義為輸出
PORTC=0xFF;
}
uchar scan()
{
PORTB=0xf0; //1111 0000
key_num=PORTB;
key_num=key_num&0xf0;
if(key_num!=0xf0)
{
delay(5);
key_num=PORTB; //1110 0000
key_num=key_num&0xf0;//1110 0000
if(key_num!=0xf0)
{
key_num=PORTB&0XF0; //1110 0000
key_num=key_num|0X0F; //1110 1111
PORTB=key_num;
sum=PORTB;
key_num=key_num&0x0f;
sum=sum&0xf0;
HL=key_num+sum;
}
}
return HL;
}
void shumaguan()
{
switch(kk)
{
case 0xee:PORTC=table[0];break;
case 0xde:PORTC=table[1];break;
case 0xbe:PORTC=table[2];break;
case 0x7e:PORTC=table[3];break;
case 0xed:PORTC=table[4];break;
case 0xdd:PORTC=table[5];break;
case 0xbd:PORTC=table[6];break;
case 0x7d:PORTC=table[7];break;
case 0xeb:PORTC=table[8];break;
case 0xdb:PORTC=table[9];break;
case 0xbb:PORTC=table[10];break;
case 0x7b:PORTC=table[11];break;
case 0xe7:PORTC=table[12];break;
case 0xd7:PORTC=table[13];break;
case 0xb7:PORTC=table[14];break;
case 0x77:PORTC=table[15];break;
}
}C:\Users\root\Desktop\QQ截圖20151023223500.png |