打印

为什么书本上的这段代码写到PICC里面不能通过编译呢?

[复制链接]
4571|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
smallred007|  楼主 | 2012-2-28 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <pic18.h>
#define ldata PORTD   //PORTD = LCD data pins
#define rs PORTBbits.RB0
#define rw PORTBbits.RB1
#define en PORTBbits.RB2
void main()
{
TRISD=0;   //both ports B and D as output
TRISB=0;
en=0;    //enable idle low
MSDelay(250);
lcdcmd(0x38);  //init.LCD 2 lines,5x7 matrix
MSDelay(250);
lcd(0x0E);   //desplay on, cursor on
MSDelay(15);
lcdcmd(0x01);  //clear LCD
lcdready();
lcdcmd(0x06);  //shift cursor right
MSDelay(15);
lcdcmd(0x86);  //line 1, position 6
MSDelay(15);
lcddata('M');  //display letter 'M'
MSDelay(15);
lcddata('D');  //display letter 'D'
MSDelay(15);
lcddata('E');  //display letter 'E'
}
void lcdcmd(unsigned char value)
{
ldata = value;  //put the value on the pins
rs=0;
rw=0;
en=1;    //strbe the enable pin
MSDelay(1);
en=0;
}
void lcddata(unsigned char value)
{
ldata=value;  //jput the value on the pins
rs =1;
rw=0;
en=1;    //strobe the enable pin
MSDelay(1);
en=0;
}
void MSDelay(unsigned int itime)
{
unsigned int i,j;
for(i=0;i<itime;i++)
  for(j=0;j<135;j++);
}
沙发
PIC元旦节| | 2012-2-28 21:40 | 只看该作者
用的哪颗型号?
编译提示是?

使用特权

评论回复
板凳
smallred007|  楼主 | 2012-2-28 21:43 | 只看该作者
用的是PIC18F452。
用PICC18编译的。

使用特权

评论回复
地板
smallred007|  楼主 | 2012-2-28 21:45 | 只看该作者
Clean: Deleting intermediary and output files.
Clean: Deleted file "F:\PIC_EXCISE\Project12_1_LCD\test12_1.cce".
Clean: Deleted file "F:\PIC_EXCISE\Project12_1_LCD\test12_1.mcs".
Clean: Done.
Executing: "D:\HTSOFT\PIC18\bin\picc18.exe" -C -E"test12_1.cce" "test12_1.c" -O"test12_1.obj" -Zg9 -O -ASMLIST -Q -MPLAB -18F452
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 15 : undefined identifier: PORTBbits
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 15 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 15 : illegal conversion
Warning[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 17 : function declared implicit int
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 34 : type redeclared
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 36 : undefined identifier: PORTBbits
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 36 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 36 : illegal conversion
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 37 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 37 : illegal conversion
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 38 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 38 : illegal conversion
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 40 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 40 : illegal conversion
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 46 : undefined identifier: PORTBbits
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 46 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 46 : illegal conversion
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 47 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 47 : illegal conversion
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 48 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 48 : illegal conversion
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 50 : struct/union required
Error[000] F:\PIC_EXCISE\Project12_1_LCD\test12_1.c 50 : illegal conversion
Halting build on first failure as requested.
BUILD FAILED: Tue Feb 28 21:44:47 2012
这是错误提示

使用特权

评论回复
5
Ryanhsiung| | 2012-2-29 08:29 | 只看该作者
头文件没有包含吧

使用特权

评论回复
6
airwill| | 2012-2-29 08:42 | 只看该作者
看样子还是新手呢, 编译环境还没有调整好. 不要怕, 好好看看编译手册和找里面的例程学习一下.

使用特权

评论回复
7
yewuyi| | 2012-2-29 09:26 | 只看该作者
1、在MPLAB正确设置芯片型号
2、lcdcmd()等函数在main()函数之后,但你又没有在文件头做原型声明,所以要么把那些函数代码写到main()前面去,要么在main()前面进行定义
3、在你本段代码中出现了一些函数,但这些函数在当前文件中没有定义,也没有在外部文件定义并包含进来。
4、其它错误就不一一罗列,都是基本问题,还是自己多看看书再说,不然别人也不可能有耐心给你1+1=2这样去讲。

使用特权

评论回复
8
smallred007|  楼主 | 2012-2-29 19:54 | 只看该作者
我的确是新手呢。
这些代码跟书本上一模一样的代码呢,一个字都没有改动过。你说的在main()前面要声明函数,这个在C51里我是知道的,可是书本上出现这样的东西,我是摸不着头脑呢。
本想把书本上的例子抄进去试一试的。

使用特权

评论回复
9
yewuyi| | 2012-3-1 08:52 | 只看该作者
我的确是新手呢。
这些代码跟书本上一模一样的代码呢,一个字都没有改动过。你说的在main()前面要声明函数,这个在C51里我是知道的,可是书本上出现这样的东西,我是摸不着头脑呢。
本想把书本上的例子抄进去试一试 ...
smallred007 发表于 2012-2-29 19:54

1、书本不一定就正确,尽信书不如无书的道理,你应该懂的!
2、书本上可能有别的约定条件,你未必完全抄对了。
3、基本的C语言知识你应该弄明白,没弄明白抄这个干啥子?锻炼打字母符号吗?

使用特权

评论回复
10
dogglove| | 2012-3-2 10:44 | 只看该作者
这也太乱啦,还无端加那么延时,浪费时间啊,这种写法不适用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

21

帖子

1

粉丝