标题: 关于51单片机程序引脚宏定义的问题 [打印本页]

作者: lzj13055339857    时间: 2020-3-11 11:51
标题: 关于51单片机程序引脚宏定义的问题
我需要宏定义引脚程序要怎么写?
例如:我P0引脚有8个P0~P7,我把P0~P3作为按键输入,我P4~P6要作为数码管段选,那么我需要将P4~P6作为一个宏,就像P0=0XFE;酱紫,不知道有没有大佬帮忙解决下,最好有个例程给参考下!急需!


作者: f556    时间: 2020-3-11 11:51
P0~P3作为按键输入,我P4~P6要作为数码管段选,
意思是:key要读输入值,另外要送输出值给数码管
#define  keyVal  P0&0x0F
#define  Seg     P0|=0x70   //P06-5-4

main()
{
    unsigned char keyVal ;
   ....
}
MSP430的操作大多用这类,不象51。原来用51涉及拆分一半的口线,也用了这种方法。
不知是不是你需要的?


作者: 余生不负    时间: 2020-3-11 13:17
可以位定义

sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;

P00 =1;P00 =0; 这样一位一位的操作,建议多看一下教程
作者: game灬boy    时间: 2020-3-11 15:04
我有一个大胆的想法,将头文件中的
sfr P0    = 0x80;
sfr P1    = 0x90;
sfr P2    = 0xA0;
sfr P3    = 0xB0;
中间插入一个PA如:
sfr P0    = 0x80;
sfr PA    = 0x85;
sfr P1    = 0x90;
sfr P2    = 0xA0;
然后定义每个脚
/*        PA        */
sbit PA0        =P1^0;
sbit PA1        =P1^1;
sbit PA2        =P1^2;
sbit PA3        =P1^3;
自己没有试,但我觉得想法没问题
作者: xxpp2011    时间: 2020-3-11 15:26
为什么不直接按位定义呢,数码管三个引脚分别定义P0的其中一位就好

作者: panmingfu    时间: 2020-3-11 16:59
一楼的做法可以试下
作者: 一只小龙猫    时间: 2020-3-11 17:36
直接操作不行吗?





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1