找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3707|回复: 6
打印 上一主题 下一主题
收起左侧

关于51单片机程序引脚宏定义的问题

[复制链接]
跳转到指定楼层
楼主
ID:605932 发表于 2020-3-11 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2黑币
我需要宏定义引脚程序要怎么写?
例如:我P0引脚有8个P0~P7,我把P0~P3作为按键输入,我P4~P6要作为数码管段选,那么我需要将P4~P6作为一个宏,就像P0=0XFE;酱紫,不知道有没有大佬帮忙解决下,最好有个例程给参考下!急需!

最佳答案

查看完整内容

P0~P3作为按键输入,我P4~P6要作为数码管段选, 意思是:key要读输入值,另外要送输出值给数码管 #define keyVal P0&0x0F #define Seg P0|=0x70 //P06-5-4 main() { unsigned char keyVal ; .... } MSP430的操作大多用这类,不象51。原来用51涉及拆分一半的口线,也用了这种方法。 不知是不是你需要的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:282850 发表于 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涉及拆分一半的口线,也用了这种方法。
不知是不是你需要的?

回复

使用道具 举报

板凳
ID:316880 发表于 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; 这样一位一位的操作,建议多看一下教程
回复

使用道具 举报

地板
ID:367369 发表于 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;
自己没有试,但我觉得想法没问题
回复

使用道具 举报

5#
ID:452950 发表于 2020-3-11 15:26 | 只看该作者
为什么不直接按位定义呢,数码管三个引脚分别定义P0的其中一位就好
回复

使用道具 举报

6#
ID:483611 发表于 2020-3-11 16:59 | 只看该作者
一楼的做法可以试下
回复

使用道具 举报

7#
ID:674113 发表于 2020-3-11 17:36 | 只看该作者
直接操作不行吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表