找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2293|回复: 6
收起左侧

萌新简单流水灯的疑问;为什么编译的时候会出现error C193?有该怎么解决呢?

[复制链接]
ID:855933 发表于 2020-12-16 18:13 | 显示全部楼层 |阅读模式
#include <reg52.h>
sbit led=P1;
#define uint unsigned int
void star();
void finish();
void delay(uint x);
void main()
{
        int i;
        while(1)
        {
          void star();
                for(i=0;i<=7;i++)
                {
                        led<<1;
                        delay(250);
                }
                        led=~led;
                for(i=0;i<=7;i++)
                {
                        led>>1;
                        delay(250);
                }
                led=0xff;
                delay(250);
                led=0;
        }
}

void star()
{
  led=0xff;
        delay(250);
}

/*void finish()
{
        led=0xff;
        delay(250);
        led=0;
}*/

void delay(uint x)
{
  uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}


回复

使用道具 举报

ID:88256 发表于 2020-12-20 21:41 | 显示全部楼层
楼主这是在考我们呢,错误信息都不给完整,错误信息有提示行数的,一般来说很好找出错误所在。
5楼的说的只是编程上的问题,KEIL编译时并不一定会报错,甚至警告都不会;如果是单个LED,应该sbit=P0^0;,但看后面的程序有移位,应该是字节型的。
第12行的void star(); ,我从未见过这样用过,为了证实是不是这个报错,我将一个正常的程序主函数调用的子函数前面加上void (说明:被调用的子函数也是void没有返回值的),结果是报error C141错误,提示void附近语法错误,也就是说,就我这个KEIL,对于第12行是肯定会报错的,只是错误类型不一样。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:748788 发表于 2020-12-17 21:03 | 显示全部楼层
<<或>>是对数据作位运算,你的led是端口不是数据
回复

使用道具 举报

ID:57657 发表于 2020-12-18 00:02 | 显示全部楼层
<<和>>是错误的,应该为<<=和>>=
回复

使用道具 举报

ID:453974 发表于 2020-12-20 18:22 | 显示全部楼层
符号用错了哦
回复

使用道具 举报

ID:638887 发表于 2020-12-20 20:22 | 显示全部楼层
窃以为第二行就好象不对sbit=P0;一边是位,一边是字节char.肯请斧正。
回复

使用道具 举报

ID:864212 发表于 2020-12-20 21:22 | 显示全部楼层
十五行和二十行符号检查一下
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表