標(biāo)題:
keil編譯1602滾動(dòng)顯示程序,總是有一處語(yǔ)法錯(cuò)誤
[打印本頁(yè)]
作者:
浮生若夢(mèng)。
時(shí)間:
2018-12-25 21:47
標(biāo)題:
keil編譯1602滾動(dòng)顯示程序,總是有一處語(yǔ)法錯(cuò)誤
我這個(gè)打的有問(wèn)題嗎,為什么總是有一處語(yǔ)法錯(cuò)誤,求大佬指教。
main.c
#include"main.h"
void main()
{
init_lcd();
while(1);
{
display();
}
}
1602. C
#include"1602.h"
unsigned char code t0[]="Welcome to the";
unsigned char code t1[]="world of MCU!!!";
unsigned char code t2[]="Fighting!!!!!";
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<200;j++);
}
void write_com(unsigned char com)
{
lcdrs=0;
P0=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void write_date(unsigned char date)
{
lcdrs=1;
P0=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void init_lcd()
{
lcden=0;
lcdrw=0;
write_com(0x0f);
write_com(0x38);
write_com(0x01);
write_com(0x0c);
write_com(0x06);
write_com(0x80);
}
void display()
{
unsigned int i;
write_com(0x80);
for(i=0;i<16;i++)
{
write_date(t0);
}
delay(500);
write_com(0x80+0x40);
for(i=0;i<16;i++)
{
write_date(t1[ i]);
}
delay(500);
write_com(0x01);
write_com(0x80);
for(i=0;i<16;i++)
{
write_date(t1[ i]);
}
delay(500);
write_com(0x80+0x40);
for(i=0;i<16;i++);
{
write_date(t2);
}
delay(500);
write_com(0x01);
}
Main.h
#include"reg52.h"
#include"1602.h"
1602.H
#include"reg52.h"
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
void delay(unsigned int time);
void write_com(unsigned char com);
void write_com(unsigned char date);
void init_lcd();
void display();
Build target 'Target 1'
compiling main.c...
compiling 1602.c...
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?DISPLAY?1602
Program Size: data=11.0 xdata=0 code=329
creating hex file from "main"...
"main" - 0 Error(s), 1 Warning(s).
作者:
luolina
時(shí)間:
2018-12-25 22:51
是不是要這樣啊write_data(t0[i]);
作者:
1113634577
時(shí)間:
2018-12-26 07:29
不是錯(cuò)誤,是警告,編譯可運(yùn)行,有1個(gè)子程序在main內(nèi)未使用
作者:
HC6800-ES-V2.0
時(shí)間:
2018-12-26 08:10
新手的典型錯(cuò)誤。。。!
警告是說(shuō),你的display()函數(shù)沒有用上,我一看你的程序,果然是這個(gè)錯(cuò)誤:
while(1);
這里不能有那個(gè)分號(hào)。。。。!
作者:
wulin
時(shí)間:
2018-12-26 08:44
void main()
{
init_lcd();
while(1);//多了分號(hào)
{
display();
}
}
整理后的程序
#include"reg52.h"
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
unsigned char code t0[]="Welcome to the";
unsigned char code t1[]="world of MCU!!!";
unsigned char code t2[]="Fighting!!!!!";
void delay(unsigned int time);
void write_com(unsigned char com);
void write_com(unsigned char date);
void init_lcd();
void display();
void main()
{
init_lcd();
while(1)
{
display();
}
}
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<200;j++);
}
void write_com(unsigned char com)
{
lcdrs=0;
P0=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void write_date(unsigned char date)
{
lcdrs=1;
P0=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void init_lcd()
{
lcden=0;
lcdrw=0;
write_com(0x0f);
write_com(0x38);
write_com(0x01);
write_com(0x0c);
write_com(0x06);
write_com(0x80);
}
void display()
{
unsigned int i;
write_com(0x80);
for(i=0;i<16;i++)
{
write_date(t0);
}
delay(500);
write_com(0x80+0x40);
for(i=0;i<16;i++)
{
write_date(t1[ i]);
}
delay(500);
write_com(0x01);
write_com(0x80);
for(i=0;i<16;i++)
{
write_date(t1[ i]);
}
delay(500);
write_com(0x80+0x40);
for(i=0;i<16;i++);
{
write_date(t2);
}
delay(500);
write_com(0x01);
}
作者:
wh8010jky
時(shí)間:
2018-12-26 09:35
while(1); 這里的分號(hào)造成了{(lán)}里的delay函數(shù)不運(yùn)行,程序在分號(hào)處死循環(huán),也就是停在這里,什么也不干。
作者:
jll586
時(shí)間:
2018-12-26 11:49
語(yǔ)法錯(cuò)誤應(yīng)該不能編譯成功吧,看到樓主寫的代碼,就想起自己寫的了,感同身受,我們要努力學(xué)習(xí)
作者:
DamnS
時(shí)間:
2018-12-26 19:55
只是一個(gè)警告,不是錯(cuò)誤,編譯就行
作者:
wh8010jky
時(shí)間:
2018-12-26 22:33
wulin 發(fā)表于 2018-12-26 08:44
void main()
{
init_lcd();
void main()
{
init_lcd();
while(1)
{
display();
}
}
5樓兄臺(tái),這里整理完還是有問(wèn)題的吧?while(1),永遠(yuǎn)跳不出這個(gè)循環(huán),這里除了顯示其他什么都不做,而且顯示也不能調(diào)控,有什么意思嗎?想跳出來(lái)就應(yīng)該加break;
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1