PIC单片机之按键错误汇总

1、主程序入口MIAN如果定义成VOID类型则会出现语句错误提示,程序无法编译,请使用如下语句:

int main(int argc, char const *argv[])
{
/* code */
return 0;
}

2、按键在定义时,对端口的定义尽量使用高电平置位,防止不必要的麻烦,(低电平情况下出现程序显示数字1,按键无响应)程序如下:

#include<p18f45k22.h>
#define uchar unsigned char
const  uchar d_code[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XFF};
void delay(uchar n);
void init(void);
uchar key(void);
void display(uchar number);
int main(void){
init();
while(1){
display(key());
}
}
void delay(uchar n){
uchar i,j;
for(i=n;i>0;i--)
for(j=123;j>0;j--);
}
void init(void){
ANSELC=0;
ANSELD=0;
TRISC=0;
TRISD=0x78;//01111000
PORTC=0;
PORTD=1;
}
uchar key(void){
uchar key_number=0;
PORTDbits.RD7=1;
delay(5);
if(PORTDbits.RD3==1){
delay(1);
if(PORTDbits.RD3==1){
key_number=1;
}
}
else if(PORTDbits.RD4==1){
delay(1);
if(PORTDbits.RD4==1){
key_number=2;
}
}
else if(PORTDbits.RD5==1){
delay(1);
if(PORTDbits.RD5==1){
key_number=3;
}
}
else if(PORTDbits.RD6==1){
delay(1);
if(PORTDbits.RD6==1){
key_number=4;
}
}
else{
key_number=0;
}
return key_number;
}
void display(uchar number){
PORTDbits.RD0=1;
PORTC=d_code[number];
delay(5);
}

仿真图:

附件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值