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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1605|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

MCU單片機(jī)IO口從新怎樣組合?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:89072 發(fā)表于 2023-9-21 09:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Modbus485通訊,把部分IO口組合在一起做一組,反復(fù)試了多次,在網(wǎng)上根據(jù)網(wǎng)上資料,還有在本網(wǎng)的一些帖子,都沒能完成,請(qǐng)大佬指導(dǎo)下該怎么辦啊,非常感謝。

單片機(jī)源程序如下:
  1. /*定義不同引腳一組*/

  2. #ifndef _USER_IO_H__
  3. #define _USER_IO_H__
  4. #include "STC8H.h"
  5. #include <intrins.h>
  6. //u8 data IONum[]=" ";//


  7. sbit IN7 = P3^5;//
  8. sbit IN6 = P3^6;
  9. sbit IN5 = P3^7;
  10. sbit IN4 = P2^0;
  11. sbit IN3 = P2^1;
  12. sbit IN2 = P2^2;
  13. sbit IN1 = P2^3;
  14. sbit IN0 = P2^4;

  15. sbit OT7 = P5^3;
  16. sbit OT6 = P1^6;
  17. sbit OT5 = P4^7;
  18. sbit OT4 = P0^5;
  19. sbit OT3 = P0^6;
  20. sbit OT2 = P0^7;
  21. sbit OT1 = P1^0;
  22. sbit OT0 = P4^3;

  23. extern unsigned char daIN;
  24. extern unsigned char daOT;

  25. extern void IOIN_Data(daIN);//輸入IO定義IOIN_Data(u8 daIN)
  26. extern void IOOT_Data(daOT);//輸出IO定義



  27. #endif
復(fù)制代碼
  1. /*定義不同引腳一組*/
  2. #include "User_IO.h"

  3. unsigned char daIN;


  4. unsigned char daOT;


  5. /******************************************************************
  6. 功能: 系統(tǒng)初始化
  7. 輸入:        無
  8. 輸出: 無
  9. 版本: V1
  10. 作者:
  11. 修改日期:
  12. 說明:
  13. ******************************************************************/
  14. void IOinit(void)
  15. {
  16.         P0M0 = 0x00;
  17.         P0M1 = 0x00;
  18.         P1M1 = 0x06;
  19.         P1M0 = 0x00; //P1.1;P1.2為ADC輸入口,設(shè)為高阻。
  20.         P2M0 = 0x00;
  21.         P2M1 = 0x00;
  22.         P3M0 = 0xb2;
  23.         P3M1 = 0x00;
  24.         P4M0 = 0x00;
  25.         P4M1 = 0x00;
  26.         P5M0 = 0x00;  //0x08  P5.3推挽輸出
  27.         P5M1 = 0x00;

  28. }
  29. void IOIN_Data(daIN)
  30. {

  31.         daIN = (daIN<<8)|IN7;
  32.         daIN = (daIN<<7)|IN6;
  33.         daIN = (daIN<<6)|IN5;
  34.         daIN = (daIN<<5)|IN4;
  35.         daIN = (daIN<<4)|IN3;
  36.         daIN = (daIN<<3)|IN2;
  37.         daIN = (daIN<<2)|IN1;
  38.         daIN = (daIN<<1)|IN0;

  39. }

  40. //void IOOT_Data(void)
  41. //{
  42. //        daOT = daOT |= OT0;
  43. //        daOT = (daOT<<1)|OT0;
  44. //        daOT = (daOT<<2)|OT1;
  45. //        daOT = (daOT<<3)|OT2;
  46. //        daOT = (daOT<<4)|OT3;
  47. //        daOT = (daOT<<5)|OT4;
  48. //        daOT = (daOT<<6)|OT5;
  49. //        daOT = (daOT<<7)|OT6;
  50. //        daOT = (daOT<<8)|OT7;

  51. //}

  52. //void IOOT_Data(daOT)                        //SCAN_SEG(unsigned char show_data)
  53. //{
  54. //    OT0=1;
  55. //    if((daOT&0x01)==0){OT0=0;}
  56. //    OT1=1;
  57. //    if((daOT&0x02)==0){OT1=0;}
  58. //    OT2=1;
  59. //    if((daOT&0x04)==0){OT2=0;}
  60. //    OT3=1;
  61. //    if((daOT&0x08)==0){OT3=0;}
  62. //    OT4=1;
  63. //    if((daOT&0x10)==0){OT4=0;}
  64. //    OT5=1;
  65. //    if((daOT&0x20)==0){OT5=0;}
  66. //    OT6=1;
  67. //    if((daOT&0x40)==0){OT6=0;}
  68. //    OT7=1;
  69. //    if((daOT&0x80)==0){OT7=0;}
  70. //}

  71. //void IOOT_Data(daOT)
  72. //{
  73. //        OT7 = (bit)(daOT&0x80);
  74. //        OT6 = (bit)(daOT&0x40);
  75. //        OT5 = (bit)(daOT&0x20);
  76. //        OT4 = (bit)(daOT&0x10);
  77. //        OT3 = (bit)(daOT&0x08);
  78. //        OT2 = (bit)(daOT&0x04);
  79. //        OT1 = (bit)(daOT&0x02);
  80. //        OT0 = (bit)(daOT&0x01);
  81. //}

  82. void   IOOT_Data(daOT)
  83. {
  84.        daOT <<= 1;
  85.        OT0 = CY;
  86.        daOT <<= 1;
  87.        OT1 = CY;
  88.        daOT <<= 1;
  89.        OT2 = CY;
  90.        daOT <<= 1;
  91.        OT3 = CY;
  92.        daOT <<= 1;
  93.        OT4 = CY;
  94.        daOT <<= 1;
  95.        OT5 = CY;
  96.        daOT <<= 1;
  97.        OT6 = CY;
  98.        daOT <<= 1;
  99.        OT7 = CY;
  100. }
復(fù)制代碼


  1. void display1()
  2. {
  3.         unsigned char h,z;
  4.         h=12;

  5.         delayms1(100);
  6.         daOT = 0x80;
  7. //        OT7  = OK;
  8.         delayms1(100);
  9.         daOT = 0x00;
  10. //        OT7  = OFF;
  11. }
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1073939 發(fā)表于 2023-9-21 14:15 | 只看該作者
extern void IOIN_Data(daIN);//輸入IO定義IOIN_Data(u8 daIN)
extern void IOOT_Data(daOT);//輸出IO定義


這2函數(shù)不要傳遞全局變量。
改成
unsigned char IOIN_Data(void);
void IOOT_Data(unsigned char out);


回復(fù)

使用道具 舉報(bào)

板凳
ID:1073939 發(fā)表于 2023-9-21 14:21 | 只看該作者
2個(gè)函數(shù)的實(shí)現(xiàn)部分。全局變量定義在bdata區(qū)效率高。
  1. bdata unsigned char daIN;
  2.         sbit bI0 = daIN ^ 0;
  3.         sbit bI1 = daIN ^ 1;
  4.         sbit bI2 = daIN ^ 2;
  5.         sbit bI3 = daIN ^ 3;
  6.         sbit bI4 = daIN ^ 4;
  7.         sbit bI5 = daIN ^ 5;
  8.         sbit bI6 = daIN ^ 6;
  9.         sbit bI7 = daIN ^ 7;
  10. bdata unsigned char daOT;
  11.         sbit bO0 = daOT ^ 0;
  12.         sbit bO1 = daOT ^ 1;
  13.         sbit bO2 = daOT ^ 2;
  14.         sbit bO3 = daOT ^ 3;
  15.         sbit bO4 = daOT ^ 4;
  16.         sbit bO5 = daOT ^ 5;
  17.         sbit bO6 = daOT ^ 6;
  18.         sbit bO7 = daOT ^ 7;
  19. unsigned char IOIN_Data(void)
  20. {
  21.         bI0=IN0;
  22.         bI1=IN1;
  23.         bI2=IN2;
  24.         bI3=IN3;
  25.         bI4=IN4;
  26.         bI5=IN5;
  27.         bI6=IN6;
  28.         bI7=IN7;
  29.         return daIN;
  30. }
  31. void IOOT_Data(unsigned char out)
  32. {
  33.         daOT=out;
  34.         OT0=bO0;
  35.         OT1=bO1;
  36.         OT2=bO2;
  37.         OT3=bO3;
  38.         OT4=bO4;
  39.         OT5=bO5;
  40.         OT6=bO6;
  41.         OT7=bO7;
  42. }
復(fù)制代碼






回復(fù)

使用道具 舉報(bào)

地板
ID:1073939 發(fā)表于 2023-9-21 14:26 | 只看該作者
輸出示范
  1. void display1()
  2. {
  3.         delayms1(100);
  4.         IOOT_Data(0x80);
  5.         delayms1(100);
  6.         IOOT_Data(0x00);
  7. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

5#
ID:89072 發(fā)表于 2023-9-21 14:30 | 只看該作者
ydatou 發(fā)表于 2023-9-21 14:15
這2函數(shù)不要傳遞全局變量。
改成
unsigned char IOIN_Data(void);

嗯嗯,謝謝我試試吧
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美 日韩 国产 在线 | 国产精品欧美一区二区三区不卡 | 午夜看看 | 国产亚洲欧美在线 | 日本精品999| 狠狠久久 | 亚洲国产成人精品一区二区 | 亚洲成人三区 | 黄色大片免费网站 | 精彩视频一区二区三区 | 亚洲精品国产精品国自产在线 | 最新高清无码专区 | www.久久久久久久久久久 | 久久久久久国产一区二区三区 | 国产亚洲一区在线 | 日本一区二区三区免费观看 | 伊人久久成人 | 国产精品久久av | 西西裸体做爰视频 | 欧美日韩免费视频 | 999视频在线播放 | 国产精品日日摸夜夜添夜夜av | 日韩一区二区三区在线视频 | 在线观看亚洲专区 | 亚洲看片 | 欧美亚洲视频在线观看 | av黄色在线| 久久亚 | 久久国产精品一区二区三区 | 欧美在线视频一区二区 | 国产精品久久久久永久免费观看 | 久久久久久久久综合 | 三级成人片 | 99re在线 | 天堂一区二区三区 | 久久综合香蕉 | av免费网址 | 欧美在线一区二区三区 | 国产欧美一区二区三区在线看蜜臀 | 日韩精品在线免费观看视频 | 欧美日韩高清一区二区三区 |