|
子函數(shù)皆報錯:KMS.c(28): error C267: 'lcd_control': requires ANSI-style prototype
我已經(jīng)在函數(shù)的使用前聲明了函數(shù)但是為什么還是報錯?
#include<reg51.h>
#define unchar unsigned char
#define unint unsigned int
unchar code_table[6]="ESJIAN"; //少了兩逗號
unchar code_table2[]="擺爛"; //一個中文兩個字節(jié)存儲
sbit LCDE =P2^7;
sbit RS=P2^6;
sbit RW=P2^5;
void delayms();
void lcd_control(); //例程上此處未加入中括號,思考是否可以
void lcd_data();
void lcd_init(); //此處漏掉逗號導(dǎo)致一堆報錯
void main() //最好不要用uchar main
{
unint num;
lcd_init();
lcd_control(0X80); // 'lcd_control': requires ANSI-style prototype:在上一行不該傳參的函數(shù)傳參
for(num=0;num<=5;num++)
{
lcd_data(code_table[num]); //字符數(shù)組的索引方式為此
delayms(5);
}
for(num=0;num<8;num++)
{
lcd_data(code_table2[num]);
delayms(5);
}
}
void delayms(unint z) //創(chuàng)建延遲函數(shù),以ms為步進(jìn)單位
{
unint x,y; //此處不能重定義傳入變量
for ( x = z; x>0 ; x--)
{
for(y=110;y>0;y--);
}
}
void lcd_control(unchar com)
{
RS=0;
P0=com;
delayms(5);
LCDE=1;
delayms(5);
LCDE=0;
}
void lcd_data(unchar datad[]) // syntax error near 'void', expected '__asm':上一行少打括號
{
RS=1;
P0=datad;
delayms(5);
LCDE=1;
delayms(5);
LCDE=0; //執(zhí)行完該執(zhí)行的之后,進(jìn)入函數(shù)前的寄存器是什么狀態(tài),那么我們就是什么狀態(tài)
}
void lcd_init()
{
LCDE=0; //使能低電平,激活LCD接收數(shù)據(jù)或者命令的初始狀態(tài)
lcd_control(0x38);
lcd_control(0x0c);
lcd_control(0x06);
lcd_control(0x01); //顯示初始化函數(shù)
}
|
|