标题: 单片机C语言如何读取外部7个端口形成16进制数组? [打印本页]

作者: xia20    时间: 2023-3-9 17:05
标题: 单片机C语言如何读取外部7个端口形成16进制数组?
比如单片机P1测外部Q1~Q7的高低数据1011 1001,如何判断并存为16进制数组?C语言是不是这样?定义,num,a~G  ,if Q1==1, a=1,Q2==0, b=0,……num=a&&b&&c……

作者: hy47566398    时间: 2023-3-9 17:05
num = Q1<<7 + Q2<<6 +...+Q6<<1+Q7
作者: wzg_90    时间: 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();
}
作者: lyonkon    时间: 2023-3-10 08:23
你问题描述不准确,是p1
作者: xia20    时间: 2023-3-10 09:32
谢谢楼上各位的回复,都回答得很好,谢谢!
作者: lyonkon    时间: 2023-3-10 11:46
你问题描述不准确,是p1口整体作为一个字节接收数据,还是p1每一位作为独立的数据端口接收数据。如果是作为一个字节接收,就判断p1的值。是需要的值就存入内存。如果是独立接收数据,就判断p1口的值,然后逻辑运算取需要的位值,通过移位取得一个字节数据, 存入内存。值本来就是十六进制的。如果值的意义是数量,那么不用移位,用加
作者: wulin    时间: 2023-3-10 21:34
单片机只认识2进制,16进制是2进制的简短表达式,给人看的。定义一个变量unsigned char num。
num=P1;
作者: hzsweet    时间: 2023-3-11 11:13
那要看你是存内存的高8位还是低8位




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