io_app.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. #ifndef __IO_APP_H__
  2. #define __IO_APP_H__
  3. #include "st_sys.h"
  4. #define INPUT_BITS_NUMBER 24
  5. #define OUTPUT_BITS_NUMBER 16
  6. #define EXTEND_IO_INPUT_NUMBER 6
  7. #define EXTEND_IO_OUTPUT_NUMBER 7
  8. #if (INPUT_BITS_NUMBER < IO_PIN_INPUT_NUMBER)
  9. #undef INPUT_BITS_NUMBER
  10. #define INPUT_BITS_NUMBER IO_PIN_INPUT_NUMBER
  11. #endif
  12. #if (OUTPUT_BITS_NUMBER < IO_PIN_OUTPUT_NUMBER)
  13. #undef OUTPUT_BITS_NUMBER
  14. #define OUTPUT_BITS_NUMBER IO_PIN_OUTPUT_NUMBER
  15. #endif
  16. #define INPUT_NUMBER INPUT_BITS_NUMBER + EXTEND_IO_INPUT_NUMBER
  17. #define OUTPUT_NUMBER OUTPUT_BITS_NUMBER + EXTEND_IO_OUTPUT_NUMBER
  18. extern byte_bits_t io_inputs[];
  19. extern byte_bits_t io_inputs_old[];
  20. extern byte_bits_t io_outputs[];
  21. #define X00 io_inputs[0].bits.b0
  22. #define X01 io_inputs[0].bits.b1
  23. #define X02 io_inputs[0].bits.b2
  24. #define X03 io_inputs[0].bits.b3
  25. #define X04 io_inputs[0].bits.b4
  26. #define X05 io_inputs[0].bits.b5
  27. #define X06 io_inputs[0].bits.b6
  28. #define X07 io_inputs[0].bits.b7
  29. #define X10 io_inputs[1].bits.b0
  30. #define X11 io_inputs[1].bits.b1
  31. #define X12 io_inputs[1].bits.b2
  32. #define X13 io_inputs[1].bits.b3
  33. #define X14 io_inputs[1].bits.b4
  34. #define X15 io_inputs[1].bits.b5
  35. #define X16 io_inputs[1].bits.b6
  36. #define X17 io_inputs[1].bits.b7
  37. #define X20 io_inputs[2].bits.b0
  38. #define X21 io_inputs[2].bits.b1
  39. #define X22 io_inputs[2].bits.b2
  40. #define X23 io_inputs[2].bits.b3
  41. #define X24 io_inputs[2].bits.b4
  42. #define X25 io_inputs[2].bits.b5
  43. #define X26 io_inputs[2].bits.b6
  44. #define X27 io_inputs[2].bits.b7
  45. #define X30 io_inputs[3].bits.b0
  46. #define X31 io_inputs[3].bits.b1
  47. #define X32 io_inputs[3].bits.b2
  48. #define X33 io_inputs[3].bits.b3
  49. #define X34 io_inputs[3].bits.b4
  50. #define X35 io_inputs[3].bits.b5
  51. #define X36 io_inputs[3].bits.b6
  52. #define X37 io_inputs[3].bits.b7
  53. #define X40 io_inputs[4].bits.b0
  54. #define X41 io_inputs[4].bits.b1
  55. #define X42 io_inputs[4].bits.b2
  56. #define X43 io_inputs[4].bits.b3
  57. #define X44 io_inputs[4].bits.b4
  58. #define X45 io_inputs[4].bits.b5
  59. #define X46 io_inputs[4].bits.b6
  60. #define X47 io_inputs[4].bits.b7
  61. #define OLDX00 io_inputs_old[0].bits.b0
  62. #define OLDX01 io_inputs_old[0].bits.b1
  63. #define OLDX02 io_inputs_old[0].bits.b2
  64. #define OLDX03 io_inputs_old[0].bits.b3
  65. #define OLDX04 io_inputs_old[0].bits.b4
  66. #define OLDX05 io_inputs_old[0].bits.b5
  67. #define OLDX06 io_inputs_old[0].bits.b6
  68. #define OLDX07 io_inputs_old[0].bits.b7
  69. #define OLDX10 io_inputs_old[1].bits.b0
  70. #define OLDX11 io_inputs_old[1].bits.b1
  71. #define OLDX12 io_inputs_old[1].bits.b2
  72. #define OLDX13 io_inputs_old[1].bits.b3
  73. #define OLDX14 io_inputs_old[1].bits.b4
  74. #define OLDX15 io_inputs_old[1].bits.b5
  75. #define OLDX16 io_inputs_old[1].bits.b6
  76. #define OLDX17 io_inputs_old[1].bits.b7
  77. #define OLDX20 io_inputs_old[2].bits.b0
  78. #define OLDX21 io_inputs_old[2].bits.b1
  79. #define OLDX22 io_inputs_old[2].bits.b2
  80. #define OLDX23 io_inputs_old[2].bits.b3
  81. #define OLDX24 io_inputs_old[2].bits.b4
  82. #define OLDX25 io_inputs_old[2].bits.b5
  83. #define OLDX26 io_inputs_old[2].bits.b6
  84. #define OLDX27 io_inputs_old[2].bits.b7
  85. #define OLDX30 io_inputs_old[3].bits.b0
  86. #define OLDX31 io_inputs_old[3].bits.b1
  87. #define OLDX32 io_inputs_old[3].bits.b2
  88. #define OLDX33 io_inputs_old[3].bits.b3
  89. #define OLDX34 io_inputs_old[3].bits.b4
  90. #define OLDX35 io_inputs_old[3].bits.b5
  91. #define OLDX36 io_inputs_old[3].bits.b6
  92. #define OLDX37 io_inputs_old[3].bits.b7
  93. #define OLDX40 io_inputs_old[4].bits.b0
  94. #define OLDX41 io_inputs_old[4].bits.b1
  95. #define OLDX42 io_inputs_old[4].bits.b2
  96. #define OLDX43 io_inputs_old[4].bits.b3
  97. #define OLDX44 io_inputs_old[4].bits.b4
  98. #define OLDX45 io_inputs_old[4].bits.b5
  99. #define OLDX46 io_inputs_old[4].bits.b6
  100. #define OLDX47 io_inputs_old[4].bits.b7
  101. #define X00_UP (X00 && !OLDX00)
  102. #define X01_UP (X01 && !OLDX01)
  103. #define X02_UP (X02 && !OLDX02)
  104. #define X03_UP (X03 && !OLDX03)
  105. #define X04_UP (X04 && !OLDX04)
  106. #define X05_UP (X05 && !OLDX05)
  107. #define X06_UP (X06 && !OLDX06)
  108. #define X07_UP (X07 && !OLDX07)
  109. #define X10_UP (X10 && !OLDX10)
  110. #define X11_UP (X11 && !OLDX11)
  111. #define X12_UP (X12 && !OLDX12)
  112. #define X13_UP (X13 && !OLDX13)
  113. #define X14_UP (X14 && !OLDX14)
  114. #define X15_UP (X15 && !OLDX15)
  115. #define X16_UP (X16 && !OLDX16)
  116. #define X17_UP (X17 && !OLDX17)
  117. #define X20_UP (X20 && !OLDX20)
  118. #define X21_UP (X21 && !OLDX21)
  119. #define X00_DW (!X00 && OLDX00)
  120. #define X01_DW (!X01 && OLDX01)
  121. #define X02_DW (!X02 && OLDX02)
  122. #define X03_DW (!X03 && OLDX03)
  123. #define X04_DW (!X04 && OLDX04)
  124. #define X05_DW (!X05 && OLDX05)
  125. #define X06_DW (!X06 && OLDX06)
  126. #define X07_DW (!X07 && OLDX07)
  127. #define X10_DW (!X10 && OLDX10)
  128. #define X11_DW (!X11 && OLDX11)
  129. #define X12_DW (!X12 && OLDX12)
  130. #define X13_DW (!X13 && OLDX13)
  131. #define X14_DW (!X14 && OLDX14)
  132. #define X15_DW (!X15 && OLDX15)
  133. #define X16_DW (!X16 && OLDX16)
  134. #define X17_DW (!X17 && OLDX17)
  135. #define X20_DW (!X20 && OLDX20)
  136. #define X21_DW (!X21 && OLDX21)
  137. #define Y00 io_outputs[0].bits.b0
  138. #define Y01 io_outputs[0].bits.b1
  139. #define Y02 io_outputs[0].bits.b2
  140. #define Y03 io_outputs[0].bits.b3
  141. #define Y04 io_outputs[0].bits.b4
  142. #define Y05 io_outputs[0].bits.b5
  143. #define Y06 io_outputs[0].bits.b6
  144. #define Y07 io_outputs[0].bits.b7
  145. #define Y10 io_outputs[1].bits.b0
  146. #define Y11 io_outputs[1].bits.b1
  147. #define Y12 io_outputs[1].bits.b2
  148. #define Y13 io_outputs[1].bits.b3
  149. #define Y14 io_outputs[1].bits.b4
  150. #define Y15 io_outputs[1].bits.b5
  151. #define Y16 io_outputs[1].bits.b6
  152. #define Y17 io_outputs[1].bits.b7
  153. #define Y20 io_outputs[2].bits.b0
  154. #define Y21 io_outputs[2].bits.b1
  155. #define Y22 io_outputs[2].bits.b2
  156. #define Y23 io_outputs[2].bits.b3
  157. #define Y24 io_outputs[2].bits.b4
  158. #define Y25 io_outputs[2].bits.b5
  159. #define Y26 io_outputs[2].bits.b6
  160. #define Y27 io_outputs[2].bits.b7
  161. #define Y30 io_outputs[3].bits.b0
  162. #define Y31 io_outputs[3].bits.b1
  163. #define Y32 io_outputs[3].bits.b2
  164. #define Y33 io_outputs[3].bits.b3
  165. #define Y34 io_outputs[3].bits.b4
  166. #define Y35 io_outputs[3].bits.b5
  167. #define Y36 io_outputs[3].bits.b6
  168. #define Y37 io_outputs[3].bits.b7
  169. extern int io_inputs_buffer[17];
  170. void io_app_read_input(void);
  171. void io_app_write_ouput(void);
  172. void io_app_init(void);
  173. void io_app_run(void);
  174. extern void TestAction(void);
  175. extern void InitTestAction(void);
  176. #endif