×
单片机 > 单片机程序设计 > 详情

PIC单片机之按键错误汇总

发布时间:2020-05-16 发布时间:
|

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

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

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

#include
#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);
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法