lijia115003 发表于 2013-4-8 09:32:34

51单片机C语言编程怎么宏定义只定义四个IO口

有两个步进电机,想用宏定义方便点写程序,motor1,motor2分别定义为 P1 的0~3,4~7,请教大神应该怎么弄

censtar 发表于 2013-4-8 09:33:52

啥情况 ?
#define XXXXXXX   不行么?

lijia115003 发表于 2013-4-8 09:53:32

censtar 发表于 2013-4-8 09:33 static/image/common/back.gif
啥情况 ?
#define XXXXXXX   不行么?

两个分开,比如P1的 1~3,4~4,到时要分开控制的,直接定义为p1话到时就不好算了,想分开算

jsntzxh 发表于 2013-4-8 10:06:29

本帖最后由 jsntzxh 于 2013-4-8 10:20 编辑

按位操作

lijia115003 发表于 2013-4-8 13:14:23

jsntzxh 发表于 2013-4-8 10:06 static/image/common/back.gif
按位操作

就是不想用sbit

304301959 发表于 2013-4-8 19:15:36

逻辑操作,就是与或非这种

lijia115003 发表于 2013-4-11 14:15:48

304301959 发表于 2013-4-8 19:15 static/image/common/back.gif
逻辑操作,就是与或非这种

具体怎么操作?没弄过,,,求指导,求赐教

kebaojun305 发表于 2013-4-11 14:19:26

置位PORTB|=PA0|PA1|PA2;
清零 PROTB&=~(PA0|PA1|PA2);

绿茶山人 发表于 2013-4-19 15:45:34

用带参数的宏比较容易实现楼主的要求。#define motor1(val)(P0 & 0xf0 | (val))在函数中对val值进行检查,不知道这样做是否能达到你的要求。

icoyool 发表于 2013-4-20 12:20:19


typedef union
{
        uchar All;
        struct
        {
                uchar motor1:4;
                uchar motor1:4;
        } Solo;
}Moter;

Moter MyMoter;

MyMoter.Solo.motor1 = 0x00~0x0F;
MyMoter.Solo.motor2 = 0x00~0x0F;

P0 = MyMoter.All;

师院小Q 发表于 2013-4-21 08:43:28

修改头文件啊……

绿茶山人 发表于 2013-4-21 17:01:15

icoyool 发表于 2013-4-20 12:20 static/image/common/back.gif
typedef union
{
        uchar All;


用位字段!好办法!

lijia115003 发表于 2013-4-24 22:02:47

icoyool 发表于 2013-4-20 12:20 static/image/common/back.gif
typedef union
{
        uchar All;


不会结构体啊
页: [1]
查看完整版本: 51单片机C语言编程怎么宏定义只定义四个IO口