找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1039|回复: 7
收起左侧

单片机C语言如何读取外部7个端口形成16进制数组?

[复制链接]
ID:198189 发表于 2023-3-9 17:05 | 显示全部楼层 |阅读模式
50黑币
比如单片机P1测外部Q1~Q7的高低数据1011 1001,如何判断并存为16进制数组?C语言是不是这样?定义,num,a~G  ,if Q1==1, a=1,Q2==0, b=0,……num=a&&b&&c……

最佳答案

回复

使用道具 举报

ID:1012735 发表于 2023-3-9 17:05 | 显示全部楼层
num = Q1<<7 + Q2<<6 +...+Q6<<1+Q7
回复

使用道具 举报

ID:537570 发表于 2023-3-9 22:59 | 显示全部楼层
#define VAL 0x9d

//判断函数
/*
函数说明 当P1口的值为0x9d ,将值通过Jude()函数返回,否则返回0
*/
int Jude()
{
        unsigned char temp;
       
        temp = P1;         //获取P1端口的值
        if(temp==VAL)       
        {
                return temp;       
        }else
        {
                return 0;       
        }
       
}

void main()
{
        unsigned char res;       
        res = Jude();
}
回复

使用道具 举报

ID:73992 发表于 2023-3-10 08:23 来自手机 | 显示全部楼层
你问题描述不准确,是p1
回复

使用道具 举报

ID:198189 发表于 2023-3-10 09:32 | 显示全部楼层
谢谢楼上各位的回复,都回答得很好,谢谢!
回复

使用道具 举报

ID:73992 发表于 2023-3-10 11:46 来自手机 | 显示全部楼层
你问题描述不准确,是p1口整体作为一个字节接收数据,还是p1每一位作为独立的数据端口接收数据。如果是作为一个字节接收,就判断p1的值。是需要的值就存入内存。如果是独立接收数据,就判断p1口的值,然后逻辑运算取需要的位值,通过移位取得一个字节数据, 存入内存。值本来就是十六进制的。如果值的意义是数量,那么不用移位,用加
回复

使用道具 举报

ID:213173 发表于 2023-3-10 21:34 | 显示全部楼层
单片机只认识2进制,16进制是2进制的简短表达式,给人看的。定义一个变量unsigned char num。
num=P1;
回复

使用道具 举报

ID:206581 发表于 2023-3-11 11:13 | 显示全部楼层
那要看你是存内存的高8位还是低8位
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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