找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1553|回复: 12
收起左侧

求助,帮忙看一下这个程序为啥不能编译

  [复制链接]
ID:661596 发表于 2019-12-12 15:01 | 显示全部楼层 |阅读模式
20黑币
楼主是刚学习单片机的,在书上看到的这个程序,可是不能编译,求大神帮忙解答一下

#include <reg51.h>                  
#include <intrins.h>
sbit RS=0xb0;
sbit RW=0xb1;
sbit E=0xb2;
void lcd_w_cmd ( unsigned char com);
void lcd_w_dat ( unsigned char dat );
unsigned char lcd_r_start ( );
void lcd_int();
void delay ( unsigned int i ) ;
void delay1 ( );
void main
{
unsigned char lcd[]="SHEN ZHEN";
unsigned char i;
P1=0xff;
lcd_int();
delay(255);
lcd_w_cmd(0x83);
delay(255);
for(i=0;lcd[i]!='\0';i++)
{ lcd_w_dat        (lcd[i]);
delay(200);}
while (1);
}
  viod delay1()
{
_nop_();
_nop_();
_nop_();
}
viod lcd_int()
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x03);
lcd_w_cmd(0x80);
}
unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
S=P2;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
   viod lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
i=lcd_r_start();
i&0x80;
delay(2);
}while (i!=0);
RW=0;
delay1()
RS=0;
delay1();
E=1;
delay1();
P1=COM;
delay1();
E=0;
delay1();
RW=1;
delay1(255);
}                         viod lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
i=lcd_r_start();
i&0x80;
delay(2);
}while(!=0);
RW=0;
delay1();
RS=1;
delay1();
EM=1;
delay1();
P1=dat;
delay1();
E=0;
delay1();
RW=1;
delay1(255);
}
viod delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i,;k++);
}

回复

使用道具 举报

ID:394424 发表于 2019-12-12 15:39 | 显示全部楼层
你把编译报的错误发出来
回复

使用道具 举报

ID:627214 发表于 2019-12-12 16:31 | 显示全部楼层
你能否发一下你的程序,我看看哪里有问题,你都没有主函数,我哪里知道有什么问题,并且你也没有发你的错误提示
回复

使用道具 举报

ID:282850 发表于 2019-12-12 16:51 | 显示全部楼层
不能编译!!!!!脑坏了?软件坏了?出错了?没有电了?
回复

使用道具 举报

ID:662647 发表于 2019-12-12 18:02 | 显示全部楼层
注意括号之间的分行,也可也重新输进去试一下
回复

使用道具 举报

ID:213173 发表于 2019-12-12 19:35 | 显示全部楼层
自始至终错误百出!!!楼主看的是什么书?究竟是书印错了还是楼主看书不认真?照抄都不会?
回复

使用道具 举报

ID:396245 发表于 2019-12-12 19:45 | 显示全部楼层
void main   //最明显的一处,main后面没有括号
{
unsigned char lcd[]="SHEN ZHEN";

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:523970 发表于 2019-12-12 20:50 | 显示全部楼层
不能编译是有可能是软件问题,像有些步骤没有对。
回复

使用道具 举报

ID:278179 发表于 2019-12-12 20:57 | 显示全部楼层
粗心大意,大小写不分,引用大写COM,定义是小写,void写成viod还有就是标点符号写重复的
#include <reg51.h>                  
#include <intrins.h>
sbit RS=0xb0;
sbit RW=0xb1;
sbit E=0xb2;
void lcd_w_cmd ( unsigned char com);
void lcd_w_dat ( unsigned char dat );
unsigned char lcd_r_start ( );
void lcd_int();
void delay( unsigned int i ) ;
void delay1( );

main()
{
unsigned char lcd[]="SHEN ZHEN";
unsigned char i;
P1=0xff;
lcd_int();
delay(255);
lcd_w_cmd(0x83);
delay(255);
for(i=0;lcd[i]!='\0';i++)
{
        lcd_w_dat(lcd[i]);
delay(200);
}

while (1);
}

void delay1()
{
_nop_();
_nop_();
_nop_();
}

void lcd_int()
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x03);
lcd_w_cmd(0x80);
}

unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P2;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}

void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do
        {
        i=lcd_r_start();
        i&=0x80;
        delay(2);
        }while (i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P1=com;
delay1();
E=0;
delay1();
RW=1;
delay1();
}                        

void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
i=lcd_r_start();
i&=0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P1=dat;
delay1();
E=0;
delay1();
RW=1;
delay1();
}

void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
回复

使用道具 举报

ID:627214 发表于 2019-12-14 20:02 | 显示全部楼层
把编译的错误发一下,谢谢  
回复

使用道具 举报

ID:662729 发表于 2019-12-15 16:07 | 显示全部楼层
#include <reg51.h>                  
#include <intrins.h>
sbit RS=0xb0;
sbit RW=0xb1;
sbit E=0xb2;
void lcd_w_cmd ( unsigned char com);
void lcd_w_dat ( unsigned char dat );
unsigned char lcd_r_start ( );
void lcd_int();
void delay ( unsigned int i ) ;
void delay1 ( );
void main()
{
unsigned char lcd[]="SHEN ZHEN";
unsigned char i;
P1=0xff;
lcd_int();
delay(255);
lcd_w_cmd(0x83);
delay(255);
for(i=0;lcd[i]!='\0';i++)
{ lcd_w_dat        (lcd[i]);
delay(200);}
while (1);
}
  void delay1()
{
_nop_();
_nop_();
_nop_();
}
void lcd_int()
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x03);
lcd_w_cmd(0x80);
}
unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P2;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
   void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
i=lcd_r_start();
i&=0x80;
delay(2);
}while (i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P1=com;
delay1();
E=0;
delay1();
RW=1;
delay1();
}                         void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
i=lcd_r_start();
i&=0x80;
delay(2);
}
while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P1=dat;
delay1();
E=0;
delay1();
RW=1;
delay1();
}
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
//错误已更改;需特别注意符号,“void"不要写成”viod",
回复

使用道具 举报

ID:429598 发表于 2019-12-15 22:32 | 显示全部楼层
代码里有很多错误,第12行void main之后要有一个()
第26、32、57、77、98行 viod 改为 void,o和i的字母写反了
第101行多了一个逗号“,”
89行EM未定义,我不知道你这个EM是什么,所以只查到了这里,还有一些错误。自己好好好得检查检查代码,拼写,标点,英文状态下的标点都不用龙错了
回复

使用道具 举报

ID:524818 发表于 2019-12-16 08:46 | 显示全部楼层
只看到主函数main后面没有小括号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表