久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1649|回復: 2
打印 上一主題 下一主題
收起左側

IAP15W系列單片機怎樣把不同的IO口組成一個八位數據

[復制鏈接]
跳轉到指定樓層
樓主
ID:878906 發表于 2021-2-26 10:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如把P0.1、P0.2、P0.3、P0.4和P4.1、P4.2、P4.3、P4.4組成一個八位的數據,然后對這八位的數據進行讀寫?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328014 發表于 2021-2-26 16:03 | 只看該作者
回復

使用道具 舉報

板凳
ID:213173 發表于 2021-2-26 21:13 | 只看該作者
給你一個矩陣鍵盤4×4異組非順序端口讀寫程序示例參考
  1. #include <STC15F2K60S2.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define PD ((P2<<3&0x80)|(P2<<4&0x40)|(P3&0x3f))//P2.4/P2.2+P3.0~3.5

  5. sbit dula=P2^6;                        //573段選
  6. sbit wela=P2^7;                        //573位選

  7. uchar code table[]={                //數組
  8.         0x3f,0x06,0x5b,0x4f,
  9.         0x66,0x6d,0x7d,0x07,
  10.         0x7f,0x6f,0x77,0x7c,
  11.         0x39,0x5e,0x79,0x71};
  12. uchar data dis_buf[2];
  13. uchar key=0;
  14. bit wei=0;

  15. void PX(uchar x)
  16. {
  17.         P3&=0xc0;                //低6位清0,P36、37不變
  18.         P3|=(x&0x3f);        //P3低6位賦值
  19.         P2&=0xeb;                //P2.4、2.2清0,其它位不變
  20.         P2|=((x>>3&0x10)|(x>>4&0x04));//P2.4、2.2賦值
  21. }
  22. void keyscan()                                        //按鍵掃描程序
  23. {
  24.         static bit sign=0;                        //按鍵自鎖標志
  25.         static uint count=0;                //消抖計數變量                       
  26.         uchar num=0;                                        //臨時變量
  27.         PX(0xf0);                                        //賦值PX 1111 0000
  28.         if(PD!=0xf0)                                //檢測有按鍵按下
  29.         {
  30.                 if((++count>=100)&&(sign==0))        //100~1000,根據主循環周期調整約10~20ms
  31.                 {                       
  32.                         sign=1;                                //按鍵自鎖標志置1
  33.                         num=PD;                                //保存PD值xxxx 0000,x為0或1
  34.                         num|=0x0f;                        //保存num按位或0x0f值xxxx 1111
  35.                         PX(num);                                //賦值PX xxxx 1111
  36.                         num=PD;                                //保存PD xxxx xxxx
  37.                         switch(num)
  38.                         {
  39.                                 case 0xee: key= 1; break;
  40.                                 case 0xde: key= 2; break;
  41.                                 case 0xbe: key= 3; break;
  42.                                 case 0x7e: key= 4; break;
  43.                                 case 0xed: key= 5; break;
  44.                                 case 0xdd: key= 6; break;
  45.                                 case 0xbd: key= 7; break;
  46.                                 case 0x7d: key= 8; break;
  47.                                 case 0xeb: key= 9; break;
  48.                                 case 0xdb: key=10; break;
  49.                                 case 0xbb: key=11; break;
  50.                                 case 0x7b: key=12; break;
  51.                                 case 0xe7: key=13; break;
  52.                                 case 0xd7: key=14; break;
  53.                                 case 0xb7: key=15; break;
  54.                                 case 0x77: key=16; break;
  55.                         }
  56.                 }
  57.         }
  58.         else                                                //鍵抬起
  59.         {
  60.                 sign=0;                                //按鍵自鎖標志清0
  61.                 count=0;                                //消抖計數清0
  62.         }
  63. }

  64. int main()
  65. {
  66.         while(1)
  67.         {
  68.                 keyscan();
  69.                 dis_buf[0]=table[key/10];
  70.                 dis_buf[1]=table[key%10];
  71.                 P0=0x00;//消隱
  72.                 dula=1;
  73.                 dula=0;
  74.                 if(wei==0)
  75.                 {
  76.                         P0=0xfe;//送位碼
  77.                         wela=1;
  78.                         wela=0;
  79.                         P0=dis_buf[0];//送段碼
  80.                         dula=1;
  81.                         dula=0;
  82.                         wei=1;
  83.                 }
  84.                 else
  85.                 {
  86.                         P0=0xfd;
  87.                         wela=1;
  88.                         wela=0;
  89.                         P0=dis_buf[1];
  90.                         dula=1;
  91.                         dula=0;
  92.                         wei=0;
  93.                 }
  94.         }
  95. }
復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊大人久久 | 欧美伦理一区 | 欧美国产精品一区二区三区 | 亚洲日本一区二区 | 欧美成人精品二区三区99精品 | 国产午夜精品理论片a大结局 | 色久电影 | 欧美精品一区二区三区四区五区 | 97伦理最新伦理 | 国产精品久久久久久久岛一牛影视 | 国产精品久久性 | av大片在线观看 | 婷婷综合| 97成人精品| 91资源在线观看 | 亚洲伊人精品酒店 | 日韩一区二区福利视频 | 夜夜操av| 亚洲成人一区二区 | 久久99这里只有精品 | 欧美一区二区三区久久精品 | 伊人网在线播放 | 欧美一区二区三区高清视频 | 国产亚洲一区二区三区 | 精品久久久久一区二区国产 | 91人人看 | a级片在线观看 | 精品视频久久久久久 | 色综合久久久久 | av色站| 国产一区二区三区四区在线观看 | 国产色 | 欧美一区二区二区 | 99视频网站 | 国产精品久久久久久亚洲调教 | 九色网址| 日韩精品一区二区三区在线观看 | 亚洲一区二区在线视频 | 日韩中文字幕视频在线 | 欧美日韩国产一区二区三区 | 亚洲网视频 |