3918|8

55

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于xdata编译问题 [复制链接]

在KEIL中进行编译时,出错找不到“no an lvalue"错误提示,如果将此行的代码去掉直接调用
printGB函数,编译就可以通过,小弟甚不解;期待哪位仁兄赐教;
代码原型如下:
#ifndef _h12_h
#define _h12_h
.....
byte bymtv_osdra _at_ 0x0f0;
byte bymtv_osdca _at_ 0x0f1;
byte bymtv_osddto _at_ 0x0f2;
....
#endif

主函数:
  #include <_h12_h.h>
int main()
{
......
bymtv_osdra = cursory | address;
while(menulen--)
{
   bymtv_osdca = cursory++;
   bymtv_osddt0 = 0x0f;
   dlyus(25);
}
//printGB(menulen);
.....
}

void PrintGB(uchar DisplayLen)
{
        uchar bCursorXBak = CursorX;

        byMTV_OSDRA = CursorY | Attribute;
        while(DisplayLen--)
        {
                byMTV_OSDCA = bCursorXBak++ ;
                byMTV_OSDDT0 = 0x0f;
                DlyUs(25);
        }
}


最新回复

主函数:   #include int main() { int menu_len; ...... bymtv_osdra = cursory | address; menu_len = nemulen;                  // 如果menulen是个宏,需要另外定义一定变量作为循环控制的变量,并复制menulen的值 while(menu_len--) {   bymtv_osdca = cursory++;   bymtv_osddt0 = 0x0f;   dlyus(25); } printGB(menu_len); // 你需要确定,是用menu_len还是menulen ..... }   详情 回复 发表于 2009-7-4 00:28
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个是你c语言没掌握好

把下面这个函数改一下就可以了

void PrintGB(uchar DisplayLen)
{
uchar bCursorXBak = CursorX;
uchar ucLoop      = DisplayLen;

byMTV_OSDRA = CursorY | Attribute;
while(ucLoop--)
{
byMTV_OSDCA = bCursorXBak++ ;
byMTV_OSDDT0 = 0x0f;
DlyUs(25);
}
}
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
LS的那个说不通

呵呵,传进来的是值变量,可以操作的

不知道LZ其它的东西问题在哪
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 lbing7 的回复:
LS的那个说不通
  
呵呵,传进来的是值变量,可以操作的
  
不知道LZ其它的东西问题在哪



呵呵

通不通ls可以找个环境自己试一下。
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

5
 
首先我确定printGB函数调用是没有问题的;menulen的宏定义在也在另一个库文件中,也进行了调用;
在编译中就是提示menulen变量找不到?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
printGB函数没有声明吧,应该在main函数前声明void PrintGB(uchar DisplayLen) ;
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
确定menulen变量在main的视线内?
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
menulen 是怎样定义的?
如果它只是一个宏,就不能进行menulen--这样的运算(它不是一个左值lvalue,不能被赋值)
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
主函数:
  #include <_h12_h.h>
int main()
{
int menu_len;
......
bymtv_osdra = cursory | address;
menu_len = nemulen;                  // 如果menulen是个宏,需要另外定义一定变量作为循环控制的变量,并复制menulen的值
while(menu_len--)
{
  bymtv_osdca = cursory++;
  bymtv_osddt0 = 0x0f;
  dlyus(25);
}
printGB(menu_len); // 你需要确定,是用menu_len还是menulen
.....
}
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表