lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:2450回复:5

keil c51这个垃圾,真气人!

楼主#
更多 发布于:2005-01-24 21:57
zlg7289也是用的p2口就可以,这个就不行!而且在zlg7289.c中
可以用sbit zlg17289cs=p2^4;来定义,而这个文件就不行非要用
#define  x5045cs P2_0 来定义。定义后编译又出现下面的问题!
请高手指教!




源文件如下:



//---------------------------------
   //x5045子程序
   //---------------------------------
#include <AT89X52.H>
#include <INTRINS.H>
#define x5045CS P2_0
#define x5045SO P2_1
#define x5045SI P2_2
#define x5045SCK P2_3
void OUTByte(unsigned char Byte) //输出一个定节
  {
     unsigned char TempCyc;



   for(TempCyc=0;TempCyc<8;TempCyc++)
    {
      x5045SCK = 0;
      x5045SI = Byte & 0x80;
       Byte = Byte<<1; //左移
      x5045SCK = 1;
    }
    x5045SI=0; //使SI处于确定的状态
  }
void WIPCHK(void)





void RESWDI(void)  //复位看门狗(喂狗)
                   //出问题的地方
{
    x5045CS=0 ;



    x5045CS=1 ;
  }



void WREN(void) //写使能锁存
  {
    x5045SCK=0;
    x5045CS=0;
    OUTByte(0x06); //发送06H写使能命令字
    x5045SCK=0;
    x5045CS=1;
  }



void WRDI(void) //写使能复位(禁止写)
  {
    x5045SCK=0;
    x5045CS=0;
    OUTByte(0x04); //发送04H写禁止命令字
    x5045SCK=0;
    x5045CS=1;
  }



void WRSR(void) //写状态寄存器
  {
     x5045SCK=0;
     x5045CS=0;
     OUTByte(0x01); //发送01H写寄存器命令字
     OUTByte(0x20); //发送寄存器值BL0,BL1为0没写保护,WD0=0 WD1=1看门狗复位时间为200ms
     x5045SCK=0;
     x5045CS=1;
     WIPCHK(); //判断是否写入
  }



unsigned char RSDR(void) //读状态寄存器
  {
      unsigned char Temp;



      x5045SCK=0;
      x5045CS=0;
      OUTByte(0x05); //发送05H读状态寄存器命令字
      Temp=INPUTByte(); //读状态寄存器值
      x5045SCK=0;
      x5045CS=1;
     return Temp;
  }



void WIPCHK(void) //reentrant //检查WIP位,判断是否写入完成
   {
     unsigned char Temp,TempCyc;



   for(TempCyc=0;TempCyc<50;TempCyc++)
    {
        Temp = RSDR(); //读状态寄存器
     if (Temp&0x01==0)
        TempCyc = 50;
    }
  }




unsigned char INPUTByte(void) //输入一个字节
{
   unsigned char Temp=0, TempCyc;



for(TempCyc=0;TempCyc<8;TempCyc++)
   {
     Temp = Temp<<1; //左移
     x5045SCK = 0;
    if (x5045SO)
     Temp = Temp|0x01; //SO为1,则最低位为1
     x5045SCK = 1;
    }
   return Temp;
}



unsigned char ReadByte(unsigned char ADD) //读地址中的数据这里不做先导字处理,只能读00-FFH
  {
    uchar Temp;
    unsigned char in_temp=0x03; //写指令临时变量
   if((ADD>>8)&0x01) in_temp |=8 //判断ADD是否大于八位,即
                                // 地址是否大于FF,若是则
                              // 0000A8 011 于1000相或,A8
                                  //置1。
    x5045SCK=0;
    x5045CS=0;
    OUTByte(in_temp); //发送读指令
    OUTByte(ADD); //发送低位地址
    Temp = INPUTByte();
    x5045SCK=0;
    x5045CS=1;
    return Temp;
  }



void WriteByte(unsigned char Byte,ADD) //向地址写入数据
  {
   unsigned char in_temp=0x2; //写指令临时变量
   if((ADD>>8)&0x01) in_temp |=8 //判断ADD是否大于八位,即地
                                //址是否大于FF,若是则
                              // 0000A8 010 于1000相或,A8
                                //置1。
    WREN(void) ;//写使能
    x5045SCK=0;
    x5045CS=0;
    OUTByte(in_temp); //发送写指令
    OUTByte(ADD); //发送低位地址
    OUTByte(Byte); //发送数据
    x5045SCK=0;
    x5045CS=1;
    WIPCHK(); //判断是否写入
    WRDI();  //写关闭
  }




错误提示如下:compiling x5045.c...
X5045.C(33): error C132: 'RESWDI': not in formal parameter list
X5045.C(33): error C141: syntax error near '{'
X5045.C(34): error C136: 'P2_0': 'void' on variable
X5045.C(34): error C244: 'P2_0': can't initialize, bad type or class
X5045.C(34): error C136: 'P2_0': 'void' on variable
X5045.C(34): error C132: 'P2_0': not in formal parameter list
X5045.C(36): error C244: 'P2_0': can't initialize, bad type or class
X5045.C(36): error C132: 'P2_0': not in formal parameter list
X5045.C(37): error C141: syntax error near '}'
Target not created
 
[url] [/url]
l=z=l 我听说,灌水是使分数快速增长的有效方法
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-24 23:36
zlg7289也是用的p2口就可以,这个就不行!而且在zlg7289.c中
可以用sbit zlg17289cs=p2^4;来定义,而这个文件就不行非要用
#define  x5045cs P2_0 来定义。定义后编译又出现下面的问题!
请高手指教!




源文件如下:



void WIPCHK(void)





void RESWDI(void)  //复位看门狗(喂狗)
                   //出问题的地方
{
    x5045CS=0 ;



void WIPCHK(void)
应该以分号结束吧!
A strong man can save himself. A great man can save another.
lsn_061
驱动老牛
驱动老牛
  • 注册日期2002-05-09
  • 最后登录2006-10-06
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望261点
  • 贡献值0点
  • 好评度169点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-25 08:00
哎.....上次还没放分呢..... :P
[img]http://bbs.zndev.com/image/medal/5.gif[/img]
lsn_061
驱动老牛
驱动老牛
  • 注册日期2002-05-09
  • 最后登录2006-10-06
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望261点
  • 贡献值0点
  • 好评度169点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-25 08:06
void RESWDI(void) //复位看门狗(喂狗)
//出问题的地方
{
x5045CS=0 ;把0和;得空格去掉试试



x5045CS=1 ;同上
}


别忘了.......那个一下......
 :P
[img]http://bbs.zndev.com/image/medal/5.gif[/img]
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-25 10:57
哎.....上次还没放分呢..... :P

嘿嘿,上次你也没给我分.你又没给我解决问题!
l=z=l 我听说,灌水是使分数快速增长的有效方法
tqyjk
驱动老牛
驱动老牛
  • 注册日期2001-08-31
  • 最后登录2012-01-06
  • 粉丝0
  • 关注0
  • 积分1021分
  • 威望319点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-31 13:59
那个编译器确实有点烦人。特别是文件里有中文的话,而且那个分号和冒号特难看。一不小心要找半天。  不过还没找到更好的编译器
游客

返回顶部