发 帖  
原厂入驻New
[问答] 在网上搜的单片机简易计算机的c语言代码,编译总是失败。请问这是什么原因?
1654 单片机 计算机
分享
本帖最后由 一只耳朵怪 于 2018-5-29 17:14 编辑

网上搜的单片机简易计算机c语言代码,编译总是失败

不知道原因出现在哪里,求大佬帮忙看下,没什么分可以给,大佬体谅下QwQ

如下:

Build target 'Target 1'

assembling STARTUP.A51...

compiling jisuanqi.c...

JISUANQI.C(222): error C141: syntax error near 'char'

JISUANQI.C(222): error C202: 'i': undefined identi€€Fier

JISUANQI.C(223): error C202: 'j': undefined identifier

JISUANQI.C(225): error C202: 'i': undefined identifier

JISUANQI.C(226): error C202: 'i': undefined identifier

JISUANQI.C(229): error C202: 'i': undefined identifier

JISUANQI.C(230): error C202: 'i': undefined identifier

JISUANQI.C(230): error C202: 'i': undefined identifier

Target not created



对应编码为:

char dynamic_display() //动态显示函数

{

    ET0=0;

    char i,j;

        for(j=8;j>0;j--)

        {

        P1=tmp<<i|tmp>>(8-i); //片选的动态变化

        P0=DisplayCode[dsp[8-i]];//显示数字,由于录入时从高位开始录入,所以dsp[1]为最低位,dsp[8]为最高位

        delay(1);

        P0=0xff;  //消隐

        i++;

  if(i==8) i=0;

    }

  TL0=-(1000/256);

  TH0=-(1000%256);

  ET0=1;


}



全代码如下:

#include<reg51.h>

unsigned char DisplayCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x86,0xAF,0xFF,0x7F,0xBF};//码选,0~9,E,r,空格,.,-

char dsp[9]={0,0,12,12,12,12,12,12,12};

tmp=0xfe;

void delay(unsigned int z)//延迟函数

char keyscan()//键位扫描函数

void calculate(char k,char a[8],char b[8])

char dynamic_display() //动态显示函数

{

    ET0=0;

    char i,j;

        for(j=8;j>0;j--)

        {

        P1=tmp<<i|tmp>>(8-i); //片选的动态变化

        P0=DisplayCode[dsp[8-i]];//显示数字,由于录入时从高位开始录入,所以dsp[1]为最低位,dsp[8]为最高位

        delay(1);

        P0=0xff;  //消隐

        i++;

  if(i==8) i=0;

    }

  TL0=-(1000/256);

  TH0=-(1000%256);

  ET0=1;

}void main(void)

{

  char i,j,k,c;

  char a[8],b[8];

/***定时1ms***/

TMOD=0;

TL0=-(1000/256);

TH0=-(1000%256);

EA = 1; //总中断开关

ET0 = 1; //开中断

TR0 = 1; //启用计数器0

//数字录入循环

KSC

do

{...

}while((dsp[0]==15)&&(c<2));    //直到ab输入完成且按下等号


calculate(k,a,b);    //进行最后计算

/***goto跳转标志***/

goto KSC;    //跳回KSC,等待新一轮计算

while(1);    //防止程序跑飞

}

void inter_1ms() interrupt 1 using 1

{

   dynamic_display;

}




0
2018-5-29 16:54:21   评论 分享淘帖 邀请回答

相关问题

12个回答
  所有局部变量的声明,都只能紧挨着大括号{,而你程序中在{后面的却是ET0=0;肯定会错误,可把char i,j;写在前面。
可加我微信交流baofeng_zouyu
最佳答案
2018-5-29 16:54:22 评论

举报

限于字数限制,省略部分相关代码
2018-5-29 16:55:41 评论

举报

应该像unsigned char DisplayCode[]这样用unsigned char吧
2018-5-29 19:35:38 评论

举报

人中狼 发表于 2018-5-29 19:35
应该像unsigned char DisplayCode[]这样用unsigned char吧

改成unsigned char 后就变成了JISUANQI.C(222): error C141: syntax error near 'unsigned'
差不多一样的问题。。
2018-5-29 21:03:44 评论

举报

void delay(unsigned int z)//延迟函数
char keyscan()//键位扫描函数
void calculate(char k,char a[8],char b[8])
缺少分号
2018-5-29 22:55:17 评论

举报

  所有局部变量的声明,都只能紧挨着大括号{,而你程序中在{后面的却是ET0=0;肯定会错误,可把char i,j;写在前面。
可加我微信交流baofeng_zouyu
最佳答案
2018-5-30 09:36:17 评论

举报

所有局部变量的声明,都只能紧挨着大括号{,而你程序中在{后面的却是ET0=0;肯定会错误,可把char i,j;写在前面。
可加我微信交流baofeng_zouyu
2018-5-30 09:36:31 评论

举报

语法错误啊,建议楼主多看看检查检查
2018-5-30 11:08:55 评论

举报

2018-6-1 22:56:42 评论

举报

不错,感谢分享经验心得,值得学习,麻烦了,辛苦了,非常感谢。
2019-7-16 19:37:25 评论

举报

不错,感谢分享经验心得,值得学习,麻烦了,辛苦了,非常感谢。
2019-7-16 19:37:40 评论

举报

不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢。
2019-7-19 09:38:01 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /8 下一条

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