📄 untitled.c
字号:
#include <htc.h>
#include <pic18.h>
#define uchar unsigned char //--------------在程序中用uchar置换unsgned char减省录入量
#define uint unsigned int
#define FLASH_LED PORTD //用FLASH_LED置换PORTD,方便以后移置。
#define LED_TRIS TRISD //
void init(void); //PIC芯片资源初始化函数
unsigned char table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
//--------------------------
void init(void)
{
// ADCON1=0x0f;
TRISB=0x0F; //定义端口B为低4位输出,高4位为输入
TRISC=0x00; //定义端口C为输出
INTCON=0x00; //关闭所有中断
}
//----------------------------
void main(void)
{
init();
PORTC=0x00;
while(1)
{
// PORTB=0xFF;
//RB0=0;
PORTB=0xFE;
temp=PORTB;
temp=temp & 0xf0;
if (temp!=0xf0)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=PORTB;
temp=temp & 0xf0;
if (temp!=0xf0)
{
temp=PORTB;
// temp=temp & 0xf0;
switch(temp)
{
case 0xee:
key=1;
break;
case 0xde:
key=2;
break;
case 0xbe:
key=3;
break;
case 0x7e:
key=4;
break;
}
temp=PORTB;
// RA0=~RA0;
PORTC=table[key];
temp=temp & 0xf0;
//while(temp!=0x0f)
// {
// temp=PORTB;
//temp=temp & 0x0f;
//}
}
}
//****************扫描第二行
PORTB=0xfd;
// RB1=0;
temp=PORTB;
temp=temp & 0xf0;
if (temp!=0xf0)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
// temp=PORTB;
//temp=temp & 0xf0;
if (temp!=0xf0)
{
temp=PORTB;
temp=temp & 0x0f;
switch(temp)
{
case 0xed:
key=5;
break;
case 0xdd:
key=6;
break;
case 0xbd:
key=7;
break;
case 0x7d:
key=8;
break;
}
temp=PORTB;
// RA0=~RA0;
PORTC=table[key];
temp=temp & 0x0f;
// while(temp!=0xf0)
// {
//temp=PORTB;
// temp=temp & 0xf0;
// }
}
}
//××××××××××××××扫描第三行
PORTB=0xfb;
// RB2=0;
temp=PORTB;
temp=temp & 0xf0;
if (temp!=0xf0)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=PORTB;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=PORTB;
temp=temp & 0xf0;
switch(temp)
{
case 0xeb:
key=9;
break;
case 0xdb:
key=10;
break;
case 0xbb:
key=11;
break;
case 0x7b:
key=12;
break;
}
temp=PORTB;
// RA0=~RA0;
PORTC=table[key];
temp=temp & 0x0f;
//while(temp!=0x0f)
// {
// temp=PORTB;
// temp=temp & 0x0f;
// }
}
}
//**********扫描第四行
PORTB=0xf7;
// RB3=0;
temp=PORTB;
temp=temp & 0xf0;
if (temp!=0xf0)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=PORTB;
temp=temp & 0xf0;
if (temp!=0xf0)
{
temp=PORTB;
temp=temp & 0x0f;
switch(temp)
{
case 0xe7:
key=13;
break;
case 0xd7:
key=14;
break;
case 0xb7:
key=15;
break;
case 0x77:
key=16;
break;
}
temp=PORTB;
// RA0=~RA0;
PORTC=table[key];
temp=temp & 0x0f;
//while(temp!=0x0f)
// {
// temp=PORTB;
// temp=temp & 0x0f;
// }
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -