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);
}
仿真图:
附件