Keil C中 error C141: syntax error near ‘=‘, expected ‘__asm‘

1、此段代码为对89C52单片机的定时器T0编程,设计的一段时钟代码。

#include<reg52.h>
unsigned char code ledcode[]={0x3f,0x5b,0x4f,0x66,0x7d,7,0x7f,0x6f};	//共阴极0-9的段选码
unsigned char data hou,min,sec,num,disbuf[]={0,0,10,0,0,10,0,0};		//时分秒,num为T0中断次数,disbuf为显示的各位数
#define codport P0;		//显示段码输出口
#define sitport P2;		//显示位码输出口

void display()	//显示函数
{
	unsigned int j;		//用于循环
	unsigned char i,scan;		//scan为输出的控制显示位的位码,也称扫描码
	scan=0x01;
	for(i=0;i<6;i++)
	{
		codport=0;		//显示新内容前,先清屏,否则在Proteus中会显示错乱
		codport=ledcode[disbuf[i]];		//要显示的数送断码口
		sitport=~scan;		//位码口低电平对应位有效,点亮
		scan=(scan<<1);
		for(j=0;j<500;j++);
	}
}

2、在下列程序中,编译显示报错
clock.c(14): warning C275: expression with possibly no effect
clock.c(14): error C141: syntax error near ‘=’, expected ‘__asm’
clock.c(15): error C141: syntax error near ‘=’, expected ‘__asm’
clock.c(16): error C141: syntax error near ‘=’, expected ‘__asm’
clock.c - 3 Error(s), 1 Warning(s).

定位发现出错的是

codport=0;		//显示新内容前,先清屏,否则在Proteus中会显示错乱
codport=ledcode[disbuf[i]];		//要显示的数送断码口
sitport=~scan;		//位码口低电平对应位有效,点亮

3、由于对codport和sitport需要进行的是位操作,则将修改宏定义为

#include<reg52.h>
unsigned char code ledcode[]={0x3f,0x5b,0x4f,0x66,0x7d,7,0x7f,0x6f};	//共阴极0-9的段选码
unsigned char data hou,min,sec,num,disbuf[]={0,0,10,0,0,10,0,0};		//时分秒,num为T0中断次数,disbuf为显示的各位数
sibt codport=P0;		//显示段码输出口
sbit sitport=P2;		//显示位码输出口

4、修改后编译成功

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值