欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機如何讀不同IO口的數(shù)據(jù) [打印本頁]

作者: xyxiyangyaang    時間: 2021-11-16 16:56
標題: 單片機如何讀不同IO口的數(shù)據(jù)
C8051F330的單片機,需要讀8位數(shù)字,依次是P1^5,P1^4,P1^3,P1^1,P1^2,P1^0,P0^7,P0^4,我想把它們寫到一個數(shù)據(jù)里面,



#include <c8051f330.h>
sbit T8 = P1^5;
sbit T7 = P1^4;
sbit T6 = P1^3;
sbit T5 = P1^1;
sbit T4 = P1^2;
sbit T3 = P1^0;
sbit T2 = P0^7;
sbit T1 = P0^4;


void main()
{
        unsigned char dat = 0;
        dat |= T8<<0;
        dat |= T7<<1;
        dat |= T6<<2;
        dat |= T5<<3;
        dat |= T4<<4;
        dat |= T3<<5;
        dat |= T2<<6;
        dat |= T1<<7;

}

編譯的時候報錯,顯示‘<<’:bad operand type.
不知道為什么。
如果這個方案不可行,有沒有別的辦法,謝謝!

作者: 188610329    時間: 2021-11-16 22:18
T8 是一個位, 你讓 位去移位,往那里移?
其實,不該這么寫,但是考慮到你 T1~T8 的定位,可能是虛構(gòu)的,還是這么寫吧。
unsigned char  Combi_Data();
{
      unsigned char dat;
      if(T1)  dat |=1;
      dat <<=1;
      if(T2)  dat |=1;
      dat <<=1;
      if(T3)  dat |=1;
      dat <<=1;
      if(T4)  dat |=1;
      dat <<=1;
      if(T5)  dat |=1;
      dat <<=1;
      if(T6)  dat |=1;
      dat <<=1;
      if(T7)  dat |=1;
      dat <<=1;
      if(T8)  dat |=1;
      return dat;
}
作者: wulin    時間: 2021-11-17 06:36
實際電路設(shè)計中盡可能避免這種無序、交叉使用端口,會給編程帶來麻煩,稍不仔細就會出錯
  1. //宏定義 標識符     7(0.4)       6(0.7)       5(1.0)   4(1.2)3(1.1)    2(1.3)       1(1.4)       0(1.5)
  2. #define P_read ((P0<<3&0x80)|(P0>>1&0x40)|(P1<<5&0x20)|(P1<<2&0x18)|(P1>>2&0x04)||(P1>>2&0x02)|(P1>>5&0x01))
復制代碼

作者: munuc_w    時間: 2021-11-17 08:33
一個端口的可以一次讀取,不同的端口只能分別讀取,有特殊需要,只能后期再組合。
作者: wps10025    時間: 2021-11-17 09:19
可以宏定義
#define    T    P1
對T進行8位位移操作,單個IO不能位移
作者: zhaobolove    時間: 2021-11-17 09:35
dat |= (char)T1<<7;  全部這樣 加強制類型轉(zhuǎn)換 即可.
作者: zhaobolove    時間: 2021-11-17 09:37
我在是這樣弄的,  沒有問題

         char cbB1=         (char)X7<<7 | (char)X6<<6 | (char)X5<<5 | (char)X4<<4 | (char)X3<<3 | (char)X2<<2 | (char)X1<<1 | (char)X0  ;

sbit X0 = P0^0;    // X0-X7
sbit X1 = P0^3;
sbit X2 = P2^2;
sbit X3 = P1^3;
作者: yzwzfyz    時間: 2021-11-18 14:20
試試:
A^7 = P1^5;
A^6  = P1^4;
A^5  = P1^3;
A^4  = P1^1;
A^3  = P1^2;
A^2  = P1^0;
A^1  = P0^7;
A^0  = P0^4;
作者: pianzisiquanjia    時間: 2021-11-18 21:10
在讀取一個變量的函數(shù)里,如 char read(){ char a,b,c; a=P1&0xe0;  b=P2&0x1e;  c=P3&0x03; a=a+b+c; return a; } 大概構(gòu)思就是這樣;
作者: xyxiyangyaang    時間: 2021-11-19 09:01
,謝謝各位!
作者: cool1456    時間: 2021-11-19 09:13
T1 T2都是一個位而已,就只能有0,1,做不到右移8位的
作者: hezezeze    時間: 2021-11-19 18:32
采用 P0、P1、P2 和 P3的方式,一次可以讀取 8 個 IO 口




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1