打印

函数问题

[复制链接]
756|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiaxw|  楼主 | 2016-9-16 16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void WRITE_TWOline(uchar X,uchar Y,uchar count)
{
uchar i;
uchar DDATA;
switch(Y)
       {
     case 1:{
             X=X|0x80;
       WRITE_CMD(X);
                for(i=0;i=<count;i++)
                {
                 uchar Num=0;
                 DDATA=str0[Num];
                    WRITE_DATA(DDATA);
                 Num++;
                 }
      }break;
        case 2:{
                X=X+0x40;
             X=X|0x80;
       WRITE_CMD(X);
                for(i=0;i=<count;i++)
                {
                 uchar Num=0;
                 DDATA=str1[Num];
                    WRITE_DATA(DDATA);
                 Num++;
                 }
               }break;
     default:break;
      }
}

相关帖子

沙发
huangchui| | 2016-9-16 16:40 | 只看该作者
在Ubuntu 10.04上使用lspci和pciedemo内核模块对其进行了检查了吗?

使用特权

评论回复
板凳
jiaxw|  楼主 | 2016-9-16 16:42 | 只看该作者

KEIL报在62行和74行有语法错误,我却查不出来。

只能怪自己水平有限了。
for(i=0;i=<count;i++)

说的就是这一句里面有语法错误。

使用特权

评论回复
地板
dengdc| | 2016-9-16 16:44 | 只看该作者
按提示排除故障

使用特权

评论回复
5
zhanghqi| | 2016-9-16 16:46 | 只看该作者

keil的定位提示错误信息不是很准确的。
比如说你在一个.h文件中少了分号,有可能他提示你函数错误,并不提示你
这里少了分号。仔细排查下吧。

使用特权

评论回复
6
jiajs| | 2016-9-16 16:48 | 只看该作者
=<这个好像不是这样写的吧,应该是<=

使用特权

评论回复
7
zhenykun| | 2016-9-16 16:49 | 只看该作者
uchar Num=0;

使用特权

评论回复
8
wyjie| | 2016-9-16 16:51 | 只看该作者
uchar Num=0;语法上也不是不可以...
复合语句内部是允许定义变量的,但...作为循环语句每次上来都将Num初始化为0...你的Num++;便毫无意义...

使用特权

评论回复
9
jlyuan| | 2016-9-16 16:53 | 只看该作者
第一个错误,属于语法错误,是我打代码打的太快的结果,不可原谅的是我居然没有查出来。可见我对C的语法还是很生疏的。

第二个我觉得是逻辑上的错误,这种错误编译器一般不会报错,需要程序员自己的小心处理。

使用特权

评论回复
10
wuhany| | 2016-9-16 16:55 | 只看该作者
case 1:{
             ……
      }break;
这种风格头一次见,呵呵

使用特权

评论回复
11
lizye| | 2016-9-16 16:56 | 只看该作者
那么多指令,调用函数,不用{}都可以实现,反正CASE指令没有遇到BREAK都一直往下执行,途径不重要,只要好懂,能用好用都行,不知道其他人怎么看

使用特权

评论回复
12
dengdc| | 2016-9-16 16:58 | 只看该作者

应该是
for(i=0;i<=count;i++)
这个<=符号是很容易出错的,因为不太符合我们平时的写法

使用特权

评论回复
13
liliang9554| | 2016-9-16 17:00 | 只看该作者
=<改成<=

使用特权

评论回复
14
jiaxw|  楼主 | 2016-9-16 17:02 | 只看该作者

谢谢众位兄弟们,我把它重新改了一下。

void WRITE_TWOline(uchar X,uchar Y,uchar count)
{
uchar i;
switch(Y)
    {
     case 1:X|=0x80;
               WRITE_CMD(X);//调用写指令确定DDRAM地址
               for(i=0;i<=count;i++)
                {
                  WRITE_DATA(str0);
                 }
               break;
     case 2:X=(X+0x40)|0x80;
               WRITE_CMD(X);//调用写指令确定DDRAM地址
               for(i=0;i<=count;i++)
                {
                  WRITE_DATA(str1);
                }
               break;
    default:break;
   }
}

去掉了Num和DDATA两个变量,这里不需要那两个变量的辅助也同样可以实验函数功能。

使用特权

评论回复
15
jkl21| | 2016-9-16 17:03 | 只看该作者
这是描述的什么问题?

使用特权

评论回复
16
zhaoxqi| | 2016-9-16 17:04 | 只看该作者
这个写法用的人也挺多

使用特权

评论回复
17
jkl21| | 2016-9-16 17:05 | 只看该作者
huangchui 发表于 2016-9-16 16:40
在Ubuntu 10.04上使用lspci和pciedemo内核模块对其进行了检查了吗?

你怎么知道这是ubuntu的编程?

使用特权

评论回复
18
jiaxw|  楼主 | 2016-9-16 17:06 | 只看该作者
唉,还是没有什么结果,算了,先结贴吧,多谢大家啦

使用特权

评论回复
19
tongbu2015| | 2016-9-16 17:32 | 只看该作者
这个还是根据编译时提示的信息处理的吧

使用特权

评论回复
20
米尔豪斯| | 2016-9-16 20:41 | 只看该作者
=<改成<=

逻辑上可以少改动一下

使用特权

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

本版积分规则

825

主题

9762

帖子

4

粉丝