标题:
51单片机动态显示数码管程序的问题error C141: syntax error near '=', expected '...
[打印本页]
作者:
akpl8426009
时间:
2019-7-9 11:17
标题:
51单片机动态显示数码管程序的问题error C141: syntax error near '=', expected '...
这是我写的动态显示数码管的程序,但是却报错如下:
事牍芟允?c(37): error C141: syntax error near '=', expected '__asm'
我找了一下,
发现是 smg=smgduan;这出问题了 ,想问一下 宏定义的smg是不能给它赋值吗?
单片机源程序如下:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值,code值的是将smgduan[]存放在ROM中,而不是RAM中,这样可以节约资源
#define smg P0;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
void delay100us(void) //误差 0us
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=47;a>0;a--);
}
void smgshow(u8 i)
{
switch(i)
{
case 0:LSC=0;LSB=0;LSA=0;break;
case 1:LSC=0;LSB=0;LSA=1;break;
case 2:LSC=0;LSB=1;LSA=0;break;
case 3:LSC=0;LSB=1;LSA=1;break;
case 4:LSC=1;LSB=0;LSA=0;break;
case 5:LSC=1;LSB=0;LSA=1;break;
case 6:LSC=1;LSB=1;LSA=0;break;
case 7:LSC=1;LSB=1;LSA=1;break;
}
smg=smgduan[i];
delay100us();
smg=0x00;
}
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
void main()
{
u8 i;
while(1)
{
for(i=0;i<=7;i++)
{
smgshow(i);
}
}
}
复制代码
作者:
m182892
时间:
2019-7-9 16:02
smgduan你定义的是数组
作者:
akpl8426009
时间:
2019-7-9 16:09
我知道了(笑哭) #define smg P0; 这个我写错了 应该是#define smg P0 没有分号
作者:
angmall
时间:
2019-7-9 19:06
#define 宏定义 错误 不需要加 ;
#define smg P0;
要改
#define smg P0
作者:
lizewen
时间:
2019-7-10 16:08
C的格式错误,宏定义后没有 “ ; ”
作者:
cphnkj188
时间:
2019-7-10 22:59
keil错误提示不能按字义去分析,好多时候就是语法错误,比如少了个或是多了个分号
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1