这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 为什么指针无法读取返回值

共2条 1/1 1 跳转至

为什么指针无法读取返回值

助工
2013-12-17 00:48:24     打赏
#include<reg52.h>
#include "1602.h"

#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define  delay()  _nop_();_nop_();_nop_();_nop_();_nop_()
  sbit scl=P2^6;
  sbit sda=P2^7;

uchar  l[]={0x63,3,4,5,6,7,8,9};
uint k[8];
void start()
{  
  sda=1;
  scl=1;
  delay();
  sda=0;
  delay();
  scl=0;
}
void stop()
{  
sda=0;
scl=1;
delay();
sda=1;
delay();
  
}
void ack()

scl=1;
sda=1;
while(sda);
scl=0;
delay();
}

void PC_ack()
{

scl=1;
sda=1;
sda=0;
delay();
scl=0;
delay();
}

void write_byte(uchar d)
{ uchar i;
for(i=0;i<8;i++)
   { 
            sda=(bit)((d<<i)&0x80);
          scl=1; 
          scl=0;  
   }
}
void write_one(uchar e,uchar f)

   start();
   write_byte(0xa0);
   ack();
   write_byte(e);
   ack();
   write_byte(f);
   ack();
   stop();
}

uint read_byte()
{ uchar i;
  uint b;
  for(i=0;i<8;i++)
   {  
              b<<=1;        
                scl=0;
                b|=(sda)?0x01:0x00; 
        scl=1;
   }
    return b;
}
uchar read_one(uchar m)
{
  uchar b;
  start();
  write_byte(0xa0);
  ack();
  write_byte(m);
  ack();
  start();
  write_byte(0xa1);
  ack();
  b=read_byte();
  delay();  
   stop();
   return b;
}

void write_page(uchar e,uchar *q)
{
   start();
   write_byte(0xa0);
   ack();
   write_byte(e);
   ack();
   while(*q)
   {
            write_byte(*(q++));
     ack();
   }
   stop();
}
uint read_page(uchar h,uchar m)

  uint *v;
  uchar i;
  start();
  write_byte(0xa0);
  ack();
  write_byte(h);
  ack();
  start();
  write_byte(0xa1);
  ack();
        for(i=0;i<m;i++)
        {
          k=read_byte();
          PC_ack();
          
    }
  stop();
  v=&k[0];
  return *v;
}


void main()

   uint **w;
   uchar i;
   write_page(0x00,l);
   LCD_init();
   while(1)
   {  
   
            for(i=0;i<8;i++)
          {
          w=read_page(0x00,8);
           zl(0x80+i*2);
           sj((**w>>4)%10+0x30);
           sj((**w&0x0f)%10+0x30);
          }
     
   }

}

为什么在主函数中的
     w=read_page(0x00,8);
  会出现   illegal pointer conversion 的语句?哪位大神能告诉我,谢谢



助工
2013-12-18 23:24:18     打赏
2楼

我今天这样写没有语病,但还是乱码


uint   *k[8];

uint read_page(uchar h,uchar m)

  
  uchar i;
  start();
  write_byte(0xa0);
  ack();
  write_byte(h);
  ack();
  start();
  write_byte(0xa1);
  ack();
  for(i=0;i<m;i++)
{
 *k[i]=read_byte();
 PC_ack();
 
    }
  stop();
 
  return k[0];
}

void main()
 { 
//   uint *w;
   uchar i;
   write_page(0x00,l);
   LCD_init();  
   while(1)
   {  
  read_page(0x00,8);
    for(i=0;i<8;i++)
 {
 
  zl(0x80+i*2);
  sj((*k[i]>>4)%10+0x30);
  sj((*k[i]&0x0f)%10+0x30);
  
 }
     
   }
 }

你能帮帮忙,把你想的写出来吗,谢谢



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]