找回密码
 立即注册
查看: 740|回复: 7

重新写了一下软件串口的函数库

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2025-04-14 12:35:14
已绑定手机

14

主题

41

回帖

635

积分

高级会员

积分
635
发表于 2024-6-14 17:28:58 | 显示全部楼层 |阅读模式
本帖最后由 Qinluoyao 于 2024-6-14 17:54 编辑

STC官方的软件函数库每次编译后只能使用一个IO口,在部分情况下不是特别灵活,因此我修改了一下官方的函数库,将IO口以函数的方式调用能够更加灵活实现相关功能。
  1. #ifndef __SOFT_PIN_H
  2. #define __SOFT_PIN_H
  3. #include "config.h"
  4. typedef enum{
  5.         PIN_LOW,
  6.         PIN_HIGH,
  7.         PIN_TOGGLE,
  8.         PIN_READ
  9. }sPin_State_t;
  10. typedef sPin_State_t (*sPin_t)(sPin_State_t);
  11. typedef struct
  12. {
  13.         sPin_t sP00, sP01, sP02, sP03, sP04, sP05, sP06, sP07;
  14.         sPin_t sP10, sP11, sP12, sP13, sP14, sP15, sP16, sP17;
  15.         sPin_t sP20, sP21, sP22, sP23, sP24, sP25, sP26, sP27;
  16.         sPin_t sP30, sP31, sP32, sP33, sP34, sP35, sP36, sP37;
  17.         sPin_t sP40, sP41, sP42, sP43, sP44, sP45, sP46, sP47;
  18.         sPin_t sP50, sP51, sP52, sP53, sP54, sP55, sP56, sP57;
  19.         sPin_t sP60, sP61, sP62, sP63, sP64, sP65, sP66, sP67;
  20.         sPin_t sP70, sP71, sP72, sP73, sP74;
  21. }sPin_Group_t;
  22. extern sPin_Group_t xdata sPin;
  23. void sPin_Group_init(void);
  24. #endif // !__SOFT_PIN_H
复制代码

Soft_Uart.zip

3.09 KB, 下载次数: 95

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2025-04-14 12:35:14
已绑定手机

14

主题

41

回帖

635

积分

高级会员

积分
635
发表于 2024-6-14 17:45:48 | 显示全部楼层
  1. #include "STC32G_GPIO.h"
  2. #include "Soft_Pin.h"
  3. sPin_State_t TRANSITIVE_P00(sPin_State_t value)
  4. {
  5.         switch (value)
  6.         {
  7.                 case PIN_READ: return P00;
  8.                 case PIN_TOGGLE: P00 = !P00; return P00;
  9.                 default: P00 = value; return P00;
  10.         }
  11. }
  12. sPin_State_t TRANSITIVE_P01(sPin_State_t value)
  13. {
  14.         switch (value)
  15.         {
  16.                 case PIN_READ: return P01;
  17.                 case PIN_TOGGLE: P01 = !P01; return P01;
  18.                 default: P01 = value; return P01;
  19.         }
  20. }
  21. sPin_State_t TRANSITIVE_P02(sPin_State_t value)
  22. {
  23.         switch (value)
  24.         {
  25.                 case PIN_READ: return P02;
  26.                 case PIN_TOGGLE: P02 = !P02; return P02;
  27.                 default: P02 = value; return P02;
  28.         }
  29. }
  30. sPin_State_t TRANSITIVE_P03(sPin_State_t value)
  31. {
  32.         switch (value)
  33.         {
  34.                 case PIN_READ: return P03;
  35.                 case PIN_TOGGLE: P03 = !P03; return P03;
  36.                 default: P03 = value; return P03;
  37.         }
  38. }
  39. sPin_State_t TRANSITIVE_P04(sPin_State_t value)
  40. {
  41.         switch (value)
  42.         {
  43.                 case PIN_READ: return P04;
  44.                 case PIN_TOGGLE: P04 = !P04; return P04;
  45.                 default: P04 = value; return P04;
  46.         }
  47. }
  48. sPin_State_t TRANSITIVE_P05(sPin_State_t value)
  49. {
  50.         switch (value)
  51.         {
  52.                 case PIN_READ: return P05;
  53.                 case PIN_TOGGLE: P05 = !P05; return P05;
  54.                 default: P05 = value; return P05;
  55.         }
  56. }
  57. sPin_State_t TRANSITIVE_P06(sPin_State_t value)
  58. {
  59.         switch (value)
  60.         {
  61.                 case PIN_READ: return P06;
  62.                 case PIN_TOGGLE: P06 = !P06; return P06;
  63.                 default: P06 = value; return P06;
  64.         }
  65. }
  66. sPin_State_t TRANSITIVE_P07(sPin_State_t value)
  67. {
  68.         switch (value)
  69.         {
  70.                 case PIN_READ: return P07;
  71.                 case PIN_TOGGLE: P07 = !P07; return P07;
  72.                 default: P07 = value; return P07;
  73.         }
  74. }
  75. sPin_State_t TRANSITIVE_P10(sPin_State_t value)
  76. {
  77.         switch (value)
  78.         {
  79.                 case PIN_READ: return P10;
  80.                 case PIN_TOGGLE: P10 = !P10; return P10;
  81.                 default: P10 = value; return P10;
  82.         }
  83. }
  84. sPin_State_t TRANSITIVE_P11(sPin_State_t value)
  85. {
  86.         switch (value)
  87.         {
  88.                 case PIN_READ: return P11;
  89.                 case PIN_TOGGLE: P11 = !P11; return P11;
  90.                 default: P11 = value; return P11;
  91.         }
  92. }
  93. sPin_State_t TRANSITIVE_P12(sPin_State_t value)
  94. {
  95.         switch (value)
  96.         {
  97.                 case PIN_READ: return P12;
  98.                 case PIN_TOGGLE: P12 = !P12; return P12;
  99.                 default: P12 = value; return P12;
  100.         }
  101. }
  102. sPin_State_t TRANSITIVE_P13(sPin_State_t value)
  103. {
  104.         switch (value)
  105.         {
  106.                 case PIN_READ: return P13;
  107.                 case PIN_TOGGLE: P13 = !P13; return P13;
  108.                 default: P13 = value; return P13;
  109.         }
  110. }
  111. sPin_State_t TRANSITIVE_P14(sPin_State_t value)
  112. {
  113.         switch (value)
  114.         {
  115.                 case PIN_READ: return P14;
  116.                 case PIN_TOGGLE: P14 = !P14; return P14;
  117.                 default: P14 = value; return P14;
  118.         }
  119. }
  120. sPin_State_t TRANSITIVE_P15(sPin_State_t value)
  121. {
  122.         switch (value)
  123.         {
  124.                 case PIN_READ: return P15;
  125.                 case PIN_TOGGLE: P15 = !P15; return P15;
  126.                 default: P15 = value; return P15;
  127.         }
  128. }
  129. sPin_State_t TRANSITIVE_P16(sPin_State_t value)
  130. {
  131.         switch (value)
  132.         {
  133.                 case PIN_READ: return P16;
  134.                 case PIN_TOGGLE: P16 = !P16; return P16;
  135.                 default: P16 = value; return P16;
  136.         }
  137. }
  138. sPin_State_t TRANSITIVE_P17(sPin_State_t value)
  139. {
  140.         switch (value)
  141.         {
  142.                 case PIN_READ: return P17;
  143.                 case PIN_TOGGLE: P17 = !P17; return P17;
  144.                 default: P17 = value; return P17;
  145.         }
  146. }
  147. sPin_State_t TRANSITIVE_P20(sPin_State_t value)
  148. {
  149.         switch (value)
  150.         {
  151.                 case PIN_READ: return P20;
  152.                 case PIN_TOGGLE: P20 = !P20; return P20;
  153.                 default: P20 = value; return P20;
  154.         }
  155. }
  156. sPin_State_t TRANSITIVE_P21(sPin_State_t value)
  157. {
  158.         switch (value)
  159.         {
  160.                 case PIN_READ: return P21;
  161.                 case PIN_TOGGLE: P21 = !P21; return P21;
  162.                 default: P21 = value; return P21;
  163.         }
  164. }
  165. sPin_State_t TRANSITIVE_P22(sPin_State_t value)
  166. {
  167.         switch (value)
  168.         {
  169.                 case PIN_READ: return P22;
  170.                 case PIN_TOGGLE: P22 = !P22; return P22;
  171.                 default: P22 = value; return P22;
  172.         }
  173. }
  174. sPin_State_t TRANSITIVE_P23(sPin_State_t value)
  175. {
  176.         switch (value)
  177.         {
  178.                 case PIN_READ: return P23;
  179.                 case PIN_TOGGLE: P23 = !P23; return P23;
  180.                 default: P23 = value; return P23;
  181.         }
  182. }
  183. sPin_State_t TRANSITIVE_P24(sPin_State_t value)
  184. {
  185.         switch (value)
  186.         {
  187.                 case PIN_READ: return P24;
  188.                 case PIN_TOGGLE: P24 = !P24; return P24;
  189.                 default: P24 = value; return P24;
  190.         }
  191. }
  192. sPin_State_t TRANSITIVE_P25(sPin_State_t value)
  193. {
  194.         switch (value)
  195.         {
  196.                 case PIN_READ: return P25;
  197.                 case PIN_TOGGLE: P25 = !P25; return P25;
  198.                 default: P25 = value; return P25;
  199.         }
  200. }
  201. sPin_State_t TRANSITIVE_P26(sPin_State_t value)
  202. {
  203.         switch (value)
  204.         {
  205.                 case PIN_READ: return P26;
  206.                 case PIN_TOGGLE: P26 = !P26; return P26;
  207.                 default: P26 = value; return P26;
  208.         }
  209. }
  210. sPin_State_t TRANSITIVE_P27(sPin_State_t value)
  211. {
  212.         switch (value)
  213.         {
  214.                 case PIN_READ: return P27;
  215.                 case PIN_TOGGLE: P27 = !P27; return P27;
  216.                 default: P27 = value; return P27;
  217.         }
  218. }
  219. sPin_State_t TRANSITIVE_P30(sPin_State_t value)
  220. {
  221.         switch (value)
  222.         {
  223.                 case PIN_READ: return P30;
  224.                 case PIN_TOGGLE: P30 = !P30; return P30;
  225.                 default: P30 = value; return P30;
  226.         }
  227. }
  228. sPin_State_t TRANSITIVE_P31(sPin_State_t value)
  229. {
  230.         switch (value)
  231.         {
  232.                 case PIN_READ: return P31;
  233.                 case PIN_TOGGLE: P31 = !P31; return P31;
  234.                 default: P31 = value; return P31;
  235.         }
  236. }
  237. sPin_State_t TRANSITIVE_P32(sPin_State_t value)
  238. {
  239.         switch (value)
  240.         {
  241.                 case PIN_READ: return P32;
  242.                 case PIN_TOGGLE: P32 = !P32; return P32;
  243.                 default: P32 = value; return P32;
  244.         }
  245. }
  246. sPin_State_t TRANSITIVE_P33(sPin_State_t value)
  247. {
  248.         switch (value)
  249.         {
  250.                 case PIN_READ: return P33;
  251.                 case PIN_TOGGLE: P33 = !P33; return P33;
  252.                 default: P33 = value; return P33;
  253.         }
  254. }
  255. sPin_State_t TRANSITIVE_P34(sPin_State_t value)
  256. {
  257.         switch (value)
  258.         {
  259.                 case PIN_READ: return P34;
  260.                 case PIN_TOGGLE: P34 = !P34; return P34;
  261.                 default: P34 = value; return P34;
  262.         }
  263. }
  264. sPin_State_t TRANSITIVE_P35(sPin_State_t value)
  265. {
  266.         switch (value)
  267.         {
  268.                 case PIN_READ: return P35;
  269.                 case PIN_TOGGLE: P35 = !P35; return P35;
  270.                 default: P35 = value; return P35;
  271.         }
  272. }
  273. sPin_State_t TRANSITIVE_P36(sPin_State_t value)
  274. {
  275.         switch (value)
  276.         {
  277.                 case PIN_READ: return P36;
  278.                 case PIN_TOGGLE: P36 = !P36; return P36;
  279.                 default: P36 = value; return P36;
  280.         }
  281. }
  282. sPin_State_t TRANSITIVE_P37(sPin_State_t value)
  283. {
  284.         switch (value)
  285.         {
  286.                 case PIN_READ: return P37;
  287.                 case PIN_TOGGLE: P37 = !P37; return P37;
  288.                 default: P37 = value; return P37;
  289.         }
  290. }
  291. sPin_State_t TRANSITIVE_P40(sPin_State_t value)
  292. {
  293.         switch (value)
  294.         {
  295.                 case PIN_READ: return P40;
  296.                 case PIN_TOGGLE: P40 = !P40; return P40;
  297.                 default: P40 = value; return P40;
  298.         }
  299. }
  300. sPin_State_t TRANSITIVE_P41(sPin_State_t value)
  301. {
  302.         switch (value)
  303.         {
  304.                 case PIN_READ: return P41;
  305.                 case PIN_TOGGLE: P41 = !P41; return P41;
  306.                 default: P41 = value; return P41;
  307.         }
  308. }
  309. sPin_State_t TRANSITIVE_P42(sPin_State_t value)
  310. {
  311.         switch (value)
  312.         {
  313.                 case PIN_READ: return P42;
  314.                 case PIN_TOGGLE: P42 = !P42; return P42;
  315.                 default: P42 = value; return P42;
  316.         }
  317. }
  318. sPin_State_t TRANSITIVE_P43(sPin_State_t value)
  319. {
  320.         switch (value)
  321.         {
  322.                 case PIN_READ: return P43;
  323.                 case PIN_TOGGLE: P43 = !P43; return P43;
  324.                 default: P43 = value; return P43;
  325.         }
  326. }
  327. sPin_State_t TRANSITIVE_P44(sPin_State_t value)
  328. {
  329.         switch (value)
  330.         {
  331.                 case PIN_READ: return P44;
  332.                 case PIN_TOGGLE: P44 = !P44; return P44;
  333.                 default: P44 = value; return P44;
  334.         }
  335. }
  336. sPin_State_t TRANSITIVE_P45(sPin_State_t value)
  337. {
  338.         switch (value)
  339.         {
  340.                 case PIN_READ: return P45;
  341.                 case PIN_TOGGLE: P45 = !P45; return P45;
  342.                 default: P45 = value; return P45;
  343.         }
  344. }
  345. sPin_State_t TRANSITIVE_P46(sPin_State_t value)
  346. {
  347.         switch (value)
  348.         {
  349.                 case PIN_READ: return P46;
  350.                 case PIN_TOGGLE: P46 = !P46; return P46;
  351.                 default: P46 = value; return P46;
  352.         }
  353. }
  354. sPin_State_t TRANSITIVE_P47(sPin_State_t value)
  355. {
  356.         switch (value)
  357.         {
  358.                 case PIN_READ: return P47;
  359.                 case PIN_TOGGLE: P47 = !P47; return P47;
  360.                 default: P47 = value; return P47;
  361.         }
  362. }
  363. sPin_State_t TRANSITIVE_P50(sPin_State_t value)
  364. {
  365.         switch (value)
  366.         {
  367.                 case PIN_READ: return P50;
  368.                 case PIN_TOGGLE: P50 = !P50; return P50;
  369.                 default: P50 = value; return P50;
  370.         }
  371. }
  372. sPin_State_t TRANSITIVE_P51(sPin_State_t value)
  373. {
  374.         switch (value)
  375.         {
  376.                 case PIN_READ: return P51;
  377.                 case PIN_TOGGLE: P51 = !P51; return P51;
  378.                 default: P51 = value; return P51;
  379.         }
  380. }
  381. sPin_State_t TRANSITIVE_P52(sPin_State_t value)
  382. {
  383.         switch (value)
  384.         {
  385.                 case PIN_READ: return P52;
  386.                 case PIN_TOGGLE: P52 = !P52; return P52;
  387.                 default: P52 = value; return P52;
  388.         }
  389. }
  390. sPin_State_t TRANSITIVE_P53(sPin_State_t value)
  391. {
  392.         switch (value)
  393.         {
  394.                 case PIN_READ: return P53;
  395.                 case PIN_TOGGLE: P53 = !P53; return P53;
  396.                 default: P53 = value; return P53;
  397.         }
  398. }
  399. sPin_State_t TRANSITIVE_P54(sPin_State_t value)
  400. {
  401.         switch (value)
  402.         {
  403.                 case PIN_READ: return P54;
  404.                 case PIN_TOGGLE: P54 = !P54; return P54;
  405.                 default: P54 = value; return P54;
  406.         }
  407. }
  408. sPin_State_t TRANSITIVE_P55(sPin_State_t value)
  409. {
  410.         switch (value)
  411.         {
  412.                 case PIN_READ: return P55;
  413.                 case PIN_TOGGLE: P55 = !P55; return P55;
  414.                 default: P55 = value; return P55;
  415.         }
  416. }
  417. sPin_State_t TRANSITIVE_P56(sPin_State_t value)
  418. {
  419.         switch (value)
  420.         {
  421.                 case PIN_READ: return P56;
  422.                 case PIN_TOGGLE: P56 = !P56; return P56;
  423.                 default: P56 = value; return P56;
  424.         }
  425. }
  426. sPin_State_t TRANSITIVE_P57(sPin_State_t value)
  427. {
  428.         switch (value)
  429.         {
  430.                 case PIN_READ: return P57;
  431.                 case PIN_TOGGLE: P57 = !P57; return P57;
  432.                 default: P57 = value; return P57;
  433.         }
  434. }
  435. sPin_State_t TRANSITIVE_P60(sPin_State_t value)
  436. {
  437.         switch (value)
  438.         {
  439.                 case PIN_READ: return P60;
  440.                 case PIN_TOGGLE: P60 = !P60; return P60;
  441.                 default: P60 = value; return P60;
  442.         }
  443. }
  444. sPin_State_t TRANSITIVE_P61(sPin_State_t value)
  445. {
  446.         switch (value)
  447.         {
  448.                 case PIN_READ: return P61;
  449.                 case PIN_TOGGLE: P61 = !P61; return P61;
  450.                 default: P61 = value; return P61;
  451.         }
  452. }
  453. sPin_State_t TRANSITIVE_P62(sPin_State_t value)
  454. {
  455.         switch (value)
  456.         {
  457.                 case PIN_READ: return P62;
  458.                 case PIN_TOGGLE: P62 = !P62; return P62;
  459.                 default: P62 = value; return P62;
  460.         }
  461. }
  462. sPin_State_t TRANSITIVE_P63(sPin_State_t value)
  463. {
  464.         switch (value)
  465.         {
  466.                 case PIN_READ: return P63;
  467.                 case PIN_TOGGLE: P63 = !P63; return P63;
  468.                 default: P63 = value; return P63;
  469.         }
  470. }
  471. sPin_State_t TRANSITIVE_P64(sPin_State_t value)
  472. {
  473.         switch (value)
  474.         {
  475.                 case PIN_READ: return P64;
  476.                 case PIN_TOGGLE: P64 = !P64; return P64;
  477.                 default: P64 = value; return P64;
  478.         }
  479. }
  480. sPin_State_t TRANSITIVE_P65(sPin_State_t value)
  481. {
  482.         switch (value)
  483.         {
  484.                 case PIN_READ: return P65;
  485.                 case PIN_TOGGLE: P65 = !P65; return P65;
  486.                 default: P65 = value; return P65;
  487.         }
  488. }
  489. sPin_State_t TRANSITIVE_P66(sPin_State_t value)
  490. {
  491.         switch (value)
  492.         {
  493.                 case PIN_READ: return P66;
  494.                 case PIN_TOGGLE: P66 = !P66; return P66;
  495.                 default: P66 = value; return P66;
  496.         }
  497. }
  498. sPin_State_t TRANSITIVE_P67(sPin_State_t value)
  499. {
  500.         switch (value)
  501.         {
  502.                 case PIN_READ: return P67;
  503.                 case PIN_TOGGLE: P67 = !P67; return P67;
  504.                 default: P67 = value; return P67;
  505.         }
  506. }
  507. sPin_State_t TRANSITIVE_P70(sPin_State_t value)
  508. {
  509.         switch (value)
  510.         {
  511.                 case PIN_READ: return P70;
  512.                 case PIN_TOGGLE: P70 = !P70; return P70;
  513.                 default: P70 = value; return P70;
  514.         }
  515. }
  516. sPin_State_t TRANSITIVE_P71(sPin_State_t value)
  517. {
  518.         switch (value)
  519.         {
  520.                 case PIN_READ: return P71;
  521.                 case PIN_TOGGLE: P71 = !P71; return P71;
  522.                 default: P71 = value; return P71;
  523.         }
  524. }
  525. sPin_State_t TRANSITIVE_P72(sPin_State_t value)
  526. {
  527.         switch (value)
  528.         {
  529.                 case PIN_READ: return P72;
  530.                 case PIN_TOGGLE: P72 = !P72; return P72;
  531.                 default: P72 = value; return P72;
  532.         }
  533. }
  534. sPin_State_t TRANSITIVE_P73(sPin_State_t value)
  535. {
  536.         switch (value)
  537.         {
  538.                 case PIN_READ: return P73;
  539.                 case PIN_TOGGLE: P73 = !P73; return P73;
  540.                 default: P73 = value; return P73;
  541.         }
  542. }
  543. sPin_State_t TRANSITIVE_P74(sPin_State_t value)
  544. {
  545.         switch (value)
  546.         {
  547.                 case PIN_READ: return P74;
  548.                 case PIN_TOGGLE: P74 = !P74; return P74;
  549.                 default: P74 = value; return P74;
  550.         }
  551. }
  552. sPin_Group_t xdata sPin;
  553. void sPin_Group_init(void)
  554. {
  555.         sPin.sP00 = TRANSITIVE_P00;
  556.         sPin.sP01 = TRANSITIVE_P01;
  557.         sPin.sP02 = TRANSITIVE_P02;
  558.         sPin.sP03 = TRANSITIVE_P03;
  559.         sPin.sP04 = TRANSITIVE_P04;
  560.         sPin.sP05 = TRANSITIVE_P05;
  561.         sPin.sP06 = TRANSITIVE_P06;
  562.         sPin.sP07 = TRANSITIVE_P07;
  563.         sPin.sP10 = TRANSITIVE_P10;
  564.         sPin.sP11 = TRANSITIVE_P11;
  565.         sPin.sP12 = TRANSITIVE_P12;
  566.         sPin.sP13 = TRANSITIVE_P13;
  567.         sPin.sP14 = TRANSITIVE_P14;
  568.         sPin.sP15 = TRANSITIVE_P15;
  569.         sPin.sP16 = TRANSITIVE_P16;
  570.         sPin.sP17 = TRANSITIVE_P17;
  571.         sPin.sP20 = TRANSITIVE_P20;
  572.         sPin.sP21 = TRANSITIVE_P21;
  573.         sPin.sP22 = TRANSITIVE_P22;
  574.         sPin.sP23 = TRANSITIVE_P23;
  575.         sPin.sP24 = TRANSITIVE_P24;
  576.         sPin.sP25 = TRANSITIVE_P25;
  577.         sPin.sP26 = TRANSITIVE_P26;
  578.         sPin.sP27 = TRANSITIVE_P27;
  579.         sPin.sP30 = TRANSITIVE_P30;
  580.         sPin.sP31 = TRANSITIVE_P31;
  581.         sPin.sP32 = TRANSITIVE_P32;
  582.         sPin.sP33 = TRANSITIVE_P33;
  583.         sPin.sP34 = TRANSITIVE_P34;
  584.         sPin.sP35 = TRANSITIVE_P35;
  585.         sPin.sP36 = TRANSITIVE_P36;
  586.         sPin.sP37 = TRANSITIVE_P37;
  587.         sPin.sP40 = TRANSITIVE_P40;
  588.         sPin.sP41 = TRANSITIVE_P41;
  589.         sPin.sP42 = TRANSITIVE_P42;
  590.         sPin.sP43 = TRANSITIVE_P43;
  591.         sPin.sP44 = TRANSITIVE_P44;
  592.         sPin.sP45 = TRANSITIVE_P45;
  593.         sPin.sP46 = TRANSITIVE_P46;
  594.         sPin.sP47 = TRANSITIVE_P47;
  595.         sPin.sP50 = TRANSITIVE_P50;
  596.         sPin.sP51 = TRANSITIVE_P51;
  597.         sPin.sP52 = TRANSITIVE_P52;
  598.         sPin.sP53 = TRANSITIVE_P53;
  599.         sPin.sP54 = TRANSITIVE_P54;
  600.         sPin.sP55 = TRANSITIVE_P55;
  601.         sPin.sP56 = TRANSITIVE_P56;
  602.         sPin.sP57 = TRANSITIVE_P57;
  603.         sPin.sP60 = TRANSITIVE_P60;
  604.         sPin.sP61 = TRANSITIVE_P61;
  605.         sPin.sP62 = TRANSITIVE_P62;
  606.         sPin.sP63 = TRANSITIVE_P63;
  607.         sPin.sP64 = TRANSITIVE_P64;
  608.         sPin.sP65 = TRANSITIVE_P65;
  609.         sPin.sP66 = TRANSITIVE_P66;
  610.         sPin.sP67 = TRANSITIVE_P67;
  611.         sPin.sP70 = TRANSITIVE_P70;
  612.         sPin.sP71 = TRANSITIVE_P71;
  613.         sPin.sP72 = TRANSITIVE_P72;
  614.         sPin.sP73 = TRANSITIVE_P73;
  615.         sPin.sP74 = TRANSITIVE_P74;
  616. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2025-04-14 12:35:14
已绑定手机

14

主题

41

回帖

635

积分

高级会员

积分
635
发表于 2024-6-14 17:46:19 | 显示全部楼层
  1. #ifndef __SOFT_UART_H
  2. #define __SOFT_UART_H
  3. #include "config.h"
  4. #include "Soft_Pin.h"
  5. void sTxSendAbyte(sPin_t sTXD,uint32_t BaudRate, u8 dat);
  6. void sPrintString(sPin_t sTXD,uint32_t BaudRate, u8 *str);
  7. #endif // !__SOFT_UART_H
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2025-04-14 12:35:14
已绑定手机

14

主题

41

回帖

635

积分

高级会员

积分
635
发表于 2024-6-14 17:46:41 | 显示全部楼层
  1. #include "Soft_Uart.h"
  2. extern void delayMicro(uint32_t micros);
  3. //========================================================================
  4. // 函数: sBitTime_Delay(value)
  5. // 描述: 位时间函数。
  6. // 参数: none.
  7. // 返回: none.
  8. // 版本: VER1.0
  9. // 日期: 2013-4-1
  10. // 备注:
  11. //========================================================================
  12. #define sBitTime_Delay(value)   delayMicro(value)        //请使用微秒延时函数
  13. //-------------------------------------------------------------------------------------------------------------------
  14. // 函数简介  : 模拟串口发送一个字节
  15. // 输入参数  : sTXD:发送端口        参照Soft_Pin.h文件中的sPin_t定义
  16. //             BaudRate:波特率
  17. //             dat:要发送的数据字节
  18. // 输出参数  : 无
  19. // 返回值    : 无
  20. //-------------------------------------------------------------------------------------------------------------------
  21. void sTxSendAbyte(sPin_t sTXD,uint32_t BaudRate, u8 dat)
  22. {
  23.         u8        i;
  24.         BaudRate = (1000000.0 / BaudRate);
  25.         EA = 0;
  26.         sTXD(PIN_LOW);
  27.         sBitTime_Delay(BaudRate);
  28.         for(i=0; i<8; i++)
  29.         {
  30.                 if(dat & 1)                sTXD(PIN_HIGH);
  31.                 else                        sTXD(PIN_LOW);
  32.                 dat >>= 1;
  33.                 sBitTime_Delay(BaudRate);
  34.         }
  35.         sTXD(PIN_HIGH);
  36.         EA = 1;
  37.         sBitTime_Delay(BaudRate);
  38.         sBitTime_Delay(BaudRate);
  39. }
  40. //========================================================================
  41. // 函数: void sPrintString(sPin_t sTXD,uint32_t BaudRate, u8 *str)
  42. // 描述: 模拟串口发送一个字符串
  43. // 参数: sTXD:发送端口        参照Soft_Pin.h文件中的sPin_t定义
  44. //       BaudRate:波特率
  45. //       str:要发送的字符串
  46. // 返回: none.
  47. // 备注:
  48. //========================================================================
  49. void sPrintString(sPin_t sTXD,uint32_t BaudRate, u8 *str)
  50. {
  51.         u8        i, dat;
  52.         BaudRate = (1000000.0 / BaudRate);
  53.     for (; *str != '\0'; str++)
  54.         {
  55.                 dat = *str;
  56.                 EA = 0;
  57.                 sTXD(PIN_LOW);
  58.                 sBitTime_Delay(BaudRate);
  59.                 for(i=0; i<8; i++)
  60.                 {
  61.                         if(dat & 1)                sTXD(PIN_HIGH);
  62.                         else                        sTXD(PIN_LOW);
  63.                         dat >>= 1;
  64.                         sBitTime_Delay(BaudRate);
  65.                 }
  66.                 sTXD(PIN_HIGH);
  67.                 EA = 1;
  68.                 sBitTime_Delay(BaudRate);
  69.                 sBitTime_Delay(BaudRate);
  70.         }
  71. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2025-06-30 00:05:33
已绑定手机

19

主题

3233

回帖

5351

积分

论坛元老

积分
5351
发表于 2024-6-14 17:50:41 来自手机 | 显示全部楼层
能不能提供一下源码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2025-04-14 12:35:14
已绑定手机

14

主题

41

回帖

635

积分

高级会员

积分
635
发表于 2024-6-14 17:52:15 | 显示全部楼层
在对 #define sBitTime_Delay(value) 进行微秒定向后初
调用sPin_Group_init(); 对软件IO口进行初始化
  1. void main(void)
  2. {
  3.         Clock_init();
  4.         sPin_Group_init();
  5.         while (1)
  6.         {
  7.                 sPrintString(sPin.sP31, 115200, "P31\n");
  8.                 sPrintString(sPin.sP01, 115200, "P01\n");
  9.         }
  10. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2025-04-14 12:35:14
已绑定手机

14

主题

41

回帖

635

积分

高级会员

积分
635
发表于 2024-6-14 17:55:19 | 显示全部楼层
so*** 发表于 2024-6-14 17:50
能不能提供一下源码

放在顶楼了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:186
  • 最近打卡:2025-03-06 09:49:49

14

主题

133

回帖

1247

积分

金牌会员

积分
1247
发表于 2024-11-11 15:03:45 | 显示全部楼层
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-30 06:26 , Processed in 0.153238 second(s), 90 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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