微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于宏定义

关于宏定义

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define Left_moto_go      {P0^0=1,P0^1=0;}
#define Left_moto_back    {P0^0=0,P0^1=1;}
#define Left_moto_Stop    {P0^0=0,P0^1=0;}
#define Right_moto_go     {P0^2=1,P0^3=0;}       
#define Right_moto_back   {P0^2=0,P0^3=1;}
#define Right_moto_Stop   {P0^2=0,P0^3=0;}

这样宏定义为什么会出错,错在哪里?逗号改分号也是错的,试过删除分号,大括号改为小括号,也是错的,希望有人指导下

那是你还需要学习、进步啊~~~~~~

就告诉你两句话,1、把中括号去掉;2,把分号去掉;至于为什么,我反问两个问题你就知道了,1、你调用define的语句时结尾要加分号吗?2、你写的程序中那两句话需要加括号?

宏定义的本质是直接替换,你将宏定义后面的整句放到你的代码里,你就知道语法错误在哪里了

需要在宏定义时谨慎点,格式如下
#ifndef _DELAY1S_H_
#define _DELAY1S_H_
void delay1s();//延时函数
#endif
定义,调用不标准都会出问题

#define Left_moto_go()      {P0^0=1;P0^1=0;}
#define Left_moto_back ()   {P0^0=0;P0^1=1;}
#define Left_moto_Stop()    {P0^0=0;P0^1=0;}
#define Right_moto_go ()   { P0^2=1;P0^3=0 ;}     
#define Right_moto_back()  { P0^2=0;P0^3=1;}
#define Right_moto_Stop()   {P0^2=0;P0^3=0;}

P0^0=1  这是语法错误,你可改为:sbit  P00 = P0^0;   P00=1;   详细内容可查阅《51单片机轻松入门 基于STC15W4K系列》

解决了吗

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top