|
compiling 11.c...
11.c(4): warning C318: can't open file 'lcd_1602.h'
11.c(5): warning C318: can't open file 'key.h'
11.c(6): warning C318: can't open file 'IIC_24C04.h'
11.C(55): warning C206: 'lcd_init': missing function-prototype
11.C(56): warning C206: 'IIC_24C04_Init': missing function-prototype
11.C(62): warning C206: 'keys_scan': missing function-prototype
11.C(120): warning C206: 'sendstring': missing function-prototype
11.C(120): error C267: 'sendstring': requires ANSI-style prototype
11.c(360): warning C316: unterminated conditionals
11.c - 1 Error(s), 8 Warning(s).
有一個錯誤怎么都看不出來,求大神幫下忙 啊
#include<reg52.h>
#include<string.h>
#include<intrins.h>
#include<lcd_1602.h>
#include<key.h>
#include<IIC_24C04.h>
#define uchar unsigned char
#define uint unsigned int
uchar pre_keyno=16,keyno=16;
uchar code Title_Text[]="your password...";
uchar DSY_BUFFER[16]=" ";
uchar userpassword[7]=" ";
uchar IIC_Password[7];
uchar lS_Valid_User=0;
uchar i=0;
void display_string(uchar *str,uchar lineno);
void beep();
uchar Clear_Password();
sbit LED_OPEN=P2^0;
sbit BEEP=P3^7;
void delay(uint x)
{
uchar i;
while (x--)
for(i=0;i<120;i++);
}
void beep()
{
uchar i;
for(i=0;i<100;i++)
{
BEEP=~BEEP;
}
BEEP=0;
}
void clear_password()
{
uchar i;
for(i=0;i<6;i++)
{
userpassword[ i]=' ';
DSY_BUFFER[ i]=' ';
}
}
void init_main()
{
P0=0xFF;
P1=0xFF;
P2=0xFF;
TMOD=0x02;
TH0=175;
TL0=175;
TR0=1;
delay(10);
lcd_init();
IIC_24C04_Init();
}
void key_main()
{
P1=0xF0;
if(P1!=0xF0) keyno=keys_scan();
if(pre_keyno!=keyno)
{
if(i<=6)
{
switch(keyno)
{
case 0: case 1: case 2: case 3: case 4:
case 5: case 6: case 7: case 8: case 9:
if(i<=6)
{
if(i==0)display_string(" ",0x40);
userpassword[ i]=keyno+'0';
userpassword[i+1]=' ';
DSY_BUFFER[ i]='*';
DSY_BUFFER[i+1]=' ';
display_string(DSY_BUFFER,0x40);
i++;
}
break;
case 10:
if(strcmp(userpassword,IIC_Password)==0)
{
LED_OPEN=0;
Clear_Password();
display_string("Unlock ok! ",0x40);
lS_Valid_User=1;
}
else
{
LED_OPEN=1;
Clear_Password();
display_string("ERROR! ",0x40);
lS_Valid_User=0;
}
i=0;
break;
case 11:
LED_OPEN=1;
Clear_Password();
display_string(Title_Text,0x00);
display_string(" ",0x40);
i=0;
lS_Valid_User=0;
break;
case 12:
if(!lS_Valid_User)display_string("No rights !",0x40);
else
{
i=0;
display_string("New Password: ",0x00);
display_string(" ",0x40);
}
break;
case 13:
if(!lS_Valid_User)display_string("No rights !",0x40);
else
{
sendstring(0xa0,0,userpassword,6);
recstring(0xa0,0,IIC_Password,6);
IIC_Password[6]='';
i=0;
display_string(Title_Text,0x00);
display_string("Password Saved! ",0x40);
}
break;
case 14:
i=0;
Clear_Password();
display_string(" ",0x40);
燈 }
}
beep();
pre_keyno=keyno;
}鳴器
beep();
delay(100)
P1=0xF0;
while(P1==0xF0);
}
void main()
{
init_main();
display_string(Title_Text,0x00);
recstring(0xa0,0,IIC_Password,6)
IIC_Password[6]='\0';
while(l)
{
key_main();
P1=0xF0;
while(P1!=0xF0);
while(P1==0xF0);
}
}
#ifndef _LCD1602_H_
#define _LCD1602_H_
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^1;
sbit rw=P2^2;
sbit eq=P2^3;
void delay_lcd(uchar n)
{
uchar i;
while(n--)
{
for(i=0;i<250;i++)
{
_nop_(); _nop_(); _nop_(); _nop_();
}
}
}
bit lcd_bz()
{
bit result;
rs=0;
rw=1;
eq=1;
_nop_(); _nop_();_nop_(); _nop_();
result=(bit)(P0&0x80);
eq=0;
return result;
}
void lcd_wcmd(uchar cmd)
{
rs=0;
rw=0;
eq=0;
P0=cmd;
eq=1;
delay_lcd(1);
eq=0;
}
void lcd_wdat(uchar dat)
{
while(lcd_bz());
rs=1;
rw=0;
P0=dat;
delay_lcd(1);
eq=1;
eq=0;
}
void lcd_init()
{
lcd_wcmd(0x38);
while(lcd_bz());
lcd_wcmd(0x0c);
lcd_wcmd(0x06);
lcd_wcmd(0x01);
}
void display_string(uchar *str,uchar lineno)
{
uchar i;
lcd_wcmd(0x80+lineno);
for (i=0;i<16;i++)
{
lcd_wdat(str[ i]);
}
}
#endif
#ifndef _key_H_
#define _key_H_
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay_key(uint x)
{
uchar i;
while (x--)
for(i=0;i<120;i++);
}
uchar keys_scan()
{
uchar temp,k;
P1=0x0F;
delay_key(2);
temp=P1^0x0F;
switch(temp)
{
case 1: k=0;break;
case 2: k=1;break;
case 4: k=2;break;
case 8: k=3;break;
default: break;
}
P1=0xF0;
delay_key(2);
temp=(P1>>4)^0x0F;
switch(temp)
{
case 1: k+=0;break;
case 2: k+=4;break;
case 4: k+=8;break;
case 8: k+=12;break;
default: break;
}
return k;
}
#ifndef _IIC_24C04_H_
#define _IIC_24C04_H_
#include<reg52.h>
#include<string.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define delay4us();
sbit SCL=P3^2;
sbit SDA=P3^3;
void start()
{
SDA=1;SCL=1;delay4us();
SDA=0;delay4us();SCL=0;
}
void stop()
{
SDA=0;SCL=1;delay4us();
SDA=1;delay4us();SCL=0;
}
void IIC_24C04_Init()
{
SCL=0;stop();
}
void ACK()
{
SDA=0;SCL=1;delay4us();
SDA=1;SCL=0;
}
void no_ACK()
{
SDA=1;SCL=1;delay4us();
SDA=0;SCL=0;
}
uchar recbyte()
{
uchar i;rd;
rd=0x00;
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;rd<<=1;rd|=SDA; delay4us(); SCL=0;delay4us();
}
SCL=0;
delay4us();
return rd;
}
uchar sendbyte(uchar wd)
{
uchar i;
bit ACK0;
for(i=0;i<8;i++)
{
SDA=(bit)(wd&0x80);
_nop_();_nop_();SCL=1;delay4us();SCL=0;wd<<=1;
}
delay4us();
SDA=1;
SCL=1;
delay4us();
ACK0=!SDA;
SCL=0;
delay4us();
return ACK0;
}
uchar sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar N);
{
uchar i;
start();
if(!sendbyte(slave))
return 0;
if(!sendbyte(subaddr))
return 0;
for(i=0;i<N-1;i++)
{
if(!sendbyte(buffer[ i])) return 0;
}
stop();
return 1;
}
uchar recstring(uchar slave,uchar subaddr,ucahr *buffer,uchar N);
{
uchar i;
start();
if(!sendbyte(slave)) return 0;
if(!sendbyte(subaddr)) return 0;
start();
if(!sendbyte(slave+1)) return 0;
for(i=0;i<N-1;i++)
{
buffer[ i]=recbyte();
ACK();
}
buffer[N-1]=recbyte();
no_ACK();
stop();
return 1;
}
|
|