main.s 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208
  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // IAR C/C++ Compiler V2.10.4.157 for STM8 23/Feb/2025 18:40:36
  4. // Copyright 2010-2015 IAR Systems AB.
  5. //
  6. // Source file =
  7. // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\main.c
  8. // Command line =
  9. // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\main.c
  10. // -e -Ol --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa
  11. // --no_cross_call --debug --code_model medium --data_model medium -o
  12. // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\Obj\
  13. // --dlib_config "D:\Program Files (x86)\IAR Systems\Embedded Workbench
  14. // 7.0\stm8\LIB\dlstm8mmn.h" -D NDEBUG -lC
  15. // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\List\
  16. // -lA
  17. // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\List\
  18. // --vregs 16
  19. // List file =
  20. // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\List\main.s
  21. //
  22. ///////////////////////////////////////////////////////////////////////////////
  23. RTMODEL "__SystemLibrary", "DLib"
  24. RTMODEL "__code_model", "medium_or_large"
  25. RTMODEL "__core", "stm8"
  26. RTMODEL "__data_model", "medium"
  27. RTMODEL "__rt_version", "4"
  28. EXTERN ?add32_l0_l0_0x
  29. EXTERN ?b0
  30. EXTERN ?b1
  31. EXTERN ?b12
  32. EXTERN ?b2
  33. EXTERN ?inc32_l0_l0
  34. EXTERN ?load32_0x_l0
  35. EXTERN ?load32_l0_0x
  36. EXTERN ?mov_l0_l2
  37. EXTERN ?pop_l0
  38. EXTERN ?pop_w0
  39. EXTERN ?push_l0
  40. EXTERN ?push_l2
  41. EXTERN ?push_w0
  42. EXTERN ?sdiv16_x_x_y
  43. EXTERN ?sll16_x_x_a
  44. EXTERN ?smod16_y_x_y
  45. EXTERN ?sra16_x_x_a
  46. EXTERN ?ucmp32_c_l0_0x
  47. EXTERN ?w0
  48. EXTERN ?w1
  49. EXTERN ?w4
  50. EXTERN ?w5
  51. PUBLIC Addrp
  52. PUBLIC BUS_RevBuf
  53. PUBLIC BUS_RevData
  54. PUBLIC BUS_RevIndex
  55. PUBLIC BUS_RevOverTime
  56. PUBLIC BUS_Rev_Cmd
  57. PUBLIC BUS_Rev_Tick
  58. PUBLIC BUS_SendCmd
  59. PUBLIC BUS_SendCnt
  60. PUBLIC BUS_SendData
  61. PUBLIC BUS_SendInex
  62. PUBLIC BUS_SendingCmd
  63. PUBLIC BlankStr
  64. PUBLIC Bus_RevFlag
  65. PUBLIC Bus_SendLength
  66. PUBLIC CurrentCmd
  67. PUBLIC DeviceAddr
  68. PUBLIC DeviceSN
  69. PUBLIC EXTI_PORTC_IRQHandler
  70. PUBLIC GPIO_EXTI_Init
  71. PUBLIC GPIO_KEY_Init
  72. PUBLIC GPIO_KEY_Tick
  73. PUBLIC GPIO_LED_Init
  74. PUBLIC GPIO_LED_Tick
  75. PUBLIC KEY
  76. PUBLIC Ledswitch
  77. PUBLIC LocalTime
  78. PUBLIC RunMode
  79. PUBLIC STM8_Init
  80. PUBLIC SysVar_Init
  81. PUBLIC TIM1_ARRH
  82. PUBLIC TIM1_ARRL
  83. PUBLIC TIM1_CCR4H
  84. PUBLIC TIM1_CCR4L
  85. PUBLIC TIM1_PSCRH
  86. PUBLIC TIM1_PSCRL
  87. PUBLIC TIM1_PWM_Init
  88. PUBLIC TIM2_ARRH
  89. PUBLIC TIM2_ARRL
  90. PUBLIC TIM2_CCR2H
  91. PUBLIC TIM2_CCR2L
  92. PUBLIC TIM2_CNTRH
  93. PUBLIC TIM2_CNTRL
  94. PUBLIC TIM2_Init
  95. PUBLIC TIM2_PWM_Init
  96. PUBLIC TIM4_1ms_Init
  97. PUBLIC TIM4_ARR
  98. PUBLIC TIM4_CNTR
  99. PUBLIC TIM4_UPD_OVF_IRQHandler
  100. PUBLIC _A_CLK_CKDIVR
  101. PUBLIC _A_EXTI_CR1
  102. PUBLIC _A_PA_CR1
  103. PUBLIC _A_PA_CR2
  104. PUBLIC _A_PA_DDR
  105. PUBLIC _A_PA_IDR
  106. PUBLIC _A_PC_CR1
  107. PUBLIC _A_PC_CR2
  108. PUBLIC _A_PC_DDR
  109. PUBLIC _A_PD_CR1
  110. PUBLIC _A_PD_CR2
  111. PUBLIC _A_PD_DDR
  112. PUBLIC _A_PD_IDR
  113. PUBLIC _A_PD_ODR
  114. PUBLIC _A_TIM1_BKR
  115. PUBLIC _A_TIM1_CCER2
  116. PUBLIC _A_TIM1_CCMR4
  117. PUBLIC _A_TIM1_CR1
  118. PUBLIC _A_TIM1_OISR
  119. PUBLIC _A_TIM2_CCER1
  120. PUBLIC _A_TIM2_CCMR2
  121. PUBLIC _A_TIM2_CR1
  122. PUBLIC _A_TIM2_IER
  123. PUBLIC _A_TIM2_PSCR
  124. PUBLIC _A_TIM4_CR1
  125. PUBLIC _A_TIM4_IER
  126. PUBLIC _A_TIM4_PSCR
  127. PUBLIC _A_TIM4_SR
  128. PUBLIC _interrupt_25
  129. PUBLIC _interrupt_7
  130. PUBLIC main
  131. CFI Names cfiNames0
  132. CFI StackFrame CFA SP DATA
  133. CFI Resource A:8, XL:8, XH:8, YL:8, YH:8, SP:16, CC:8, PC:24, PCL:8
  134. CFI Resource PCH:8, PCE:8, ?b0:8, ?b1:8, ?b2:8, ?b3:8, ?b4:8, ?b5:8
  135. CFI Resource ?b6:8, ?b7:8, ?b8:8, ?b9:8, ?b10:8, ?b11:8, ?b12:8, ?b13:8
  136. CFI Resource ?b14:8, ?b15:8
  137. CFI ResourceParts PC PCE, PCH, PCL
  138. CFI EndNames cfiNames0
  139. CFI Common cfiCommon0 Using cfiNames0
  140. CFI CodeAlign 1
  141. CFI DataAlign 1
  142. CFI ReturnAddress PC CODE
  143. CFI CFA SP+3
  144. CFI A Undefined
  145. CFI XL Undefined
  146. CFI XH Undefined
  147. CFI YL Undefined
  148. CFI YH Undefined
  149. CFI CC Undefined
  150. CFI PC Frame(CFA, -2)
  151. CFI PCL Undefined
  152. CFI PCH Undefined
  153. CFI PCE Undefined
  154. CFI ?b0 Undefined
  155. CFI ?b1 Undefined
  156. CFI ?b2 Undefined
  157. CFI ?b3 Undefined
  158. CFI ?b4 Undefined
  159. CFI ?b5 Undefined
  160. CFI ?b6 Undefined
  161. CFI ?b7 Undefined
  162. CFI ?b8 SameValue
  163. CFI ?b9 SameValue
  164. CFI ?b10 SameValue
  165. CFI ?b11 SameValue
  166. CFI ?b12 SameValue
  167. CFI ?b13 SameValue
  168. CFI ?b14 SameValue
  169. CFI ?b15 SameValue
  170. CFI EndCommon cfiCommon0
  171. CFI Common cfiCommon1 Using cfiNames0
  172. CFI CodeAlign 1
  173. CFI DataAlign 1
  174. CFI ReturnAddress PC CODE
  175. CFI CFA SP+9
  176. CFI A Frame(CFA, -7)
  177. CFI XL Frame(CFA, -5)
  178. CFI XH Frame(CFA, -6)
  179. CFI YL Frame(CFA, -3)
  180. CFI YH Frame(CFA, -4)
  181. CFI CC Frame(CFA, -8)
  182. CFI PC Frame(CFA, -2)
  183. CFI PCL Undefined
  184. CFI PCH Undefined
  185. CFI PCE Undefined
  186. CFI ?b0 SameValue
  187. CFI ?b1 SameValue
  188. CFI ?b2 SameValue
  189. CFI ?b3 SameValue
  190. CFI ?b4 SameValue
  191. CFI ?b5 SameValue
  192. CFI ?b6 SameValue
  193. CFI ?b7 SameValue
  194. CFI ?b8 SameValue
  195. CFI ?b9 SameValue
  196. CFI ?b10 SameValue
  197. CFI ?b11 SameValue
  198. CFI ?b12 SameValue
  199. CFI ?b13 SameValue
  200. CFI ?b14 SameValue
  201. CFI ?b15 SameValue
  202. CFI EndCommon cfiCommon1
  203. // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\main.c
  204. // 1 ////////////////////////////////////////////////////////////////////////////////
  205. // 2
  206. // 3
  207. // 4
  208. // 5
  209. // 6
  210. // 7 //#define IsDebug
  211. // 8 //#define tim2Led
  212. // 9
  213. // 10 //#define RxTestDebug
  214. // 11
  215. // 12 ////////////////////////////////////////////////////////////////////////////////
  216. // 13
  217. // 14
  218. // 15 #include <iostm8s003f3.h>
  219. ASEGN `.near.noinit`:DATA:NOROOT,05001H
  220. SECTION_GROUP _A_PA_IDR
  221. // union <unnamed> const volatile _A_PA_IDR
  222. _A_PA_IDR:
  223. DS8 1
  224. ASEGN `.near.noinit`:DATA:NOROOT,05002H
  225. SECTION_GROUP _A_PA_DDR
  226. // union <unnamed> volatile _A_PA_DDR
  227. _A_PA_DDR:
  228. DS8 1
  229. ASEGN `.near.noinit`:DATA:NOROOT,05003H
  230. SECTION_GROUP _A_PA_CR1
  231. // union <unnamed> volatile _A_PA_CR1
  232. _A_PA_CR1:
  233. DS8 1
  234. ASEGN `.near.noinit`:DATA:NOROOT,05004H
  235. SECTION_GROUP _A_PA_CR2
  236. // union <unnamed> volatile _A_PA_CR2
  237. _A_PA_CR2:
  238. DS8 1
  239. ASEGN `.near.noinit`:DATA:NOROOT,0500cH
  240. SECTION_GROUP _A_PC_DDR
  241. // union <unnamed> volatile _A_PC_DDR
  242. _A_PC_DDR:
  243. DS8 1
  244. ASEGN `.near.noinit`:DATA:NOROOT,0500dH
  245. SECTION_GROUP _A_PC_CR1
  246. // union <unnamed> volatile _A_PC_CR1
  247. _A_PC_CR1:
  248. DS8 1
  249. ASEGN `.near.noinit`:DATA:NOROOT,0500eH
  250. SECTION_GROUP _A_PC_CR2
  251. // union <unnamed> volatile _A_PC_CR2
  252. _A_PC_CR2:
  253. DS8 1
  254. ASEGN `.near.noinit`:DATA:NOROOT,0500fH
  255. SECTION_GROUP _A_PD_ODR
  256. // union <unnamed> volatile _A_PD_ODR
  257. _A_PD_ODR:
  258. DS8 1
  259. ASEGN `.near.noinit`:DATA:NOROOT,05010H
  260. SECTION_GROUP _A_PD_IDR
  261. // union <unnamed> const volatile _A_PD_IDR
  262. _A_PD_IDR:
  263. DS8 1
  264. ASEGN `.near.noinit`:DATA:NOROOT,05011H
  265. SECTION_GROUP _A_PD_DDR
  266. // union <unnamed> volatile _A_PD_DDR
  267. _A_PD_DDR:
  268. DS8 1
  269. ASEGN `.near.noinit`:DATA:NOROOT,05012H
  270. SECTION_GROUP _A_PD_CR1
  271. // union <unnamed> volatile _A_PD_CR1
  272. _A_PD_CR1:
  273. DS8 1
  274. ASEGN `.near.noinit`:DATA:NOROOT,05013H
  275. SECTION_GROUP _A_PD_CR2
  276. // union <unnamed> volatile _A_PD_CR2
  277. _A_PD_CR2:
  278. DS8 1
  279. ASEGN `.near.noinit`:DATA:NOROOT,050a0H
  280. SECTION_GROUP _A_EXTI_CR1
  281. // union <unnamed> volatile _A_EXTI_CR1
  282. _A_EXTI_CR1:
  283. DS8 1
  284. ASEGN `.near.noinit`:DATA:NOROOT,050c6H
  285. SECTION_GROUP _A_CLK_CKDIVR
  286. // union <unnamed> volatile _A_CLK_CKDIVR
  287. _A_CLK_CKDIVR:
  288. DS8 1
  289. ASEGN `.near.noinit`:DATA:NOROOT,05250H
  290. SECTION_GROUP _A_TIM1_CR1
  291. // union <unnamed> volatile _A_TIM1_CR1
  292. _A_TIM1_CR1:
  293. DS8 1
  294. ASEGN `.near.noinit`:DATA:NOROOT,0525bH
  295. SECTION_GROUP _A_TIM1_CCMR4
  296. // union <unnamed> volatile _A_TIM1_CCMR4
  297. _A_TIM1_CCMR4:
  298. DS8 1
  299. ASEGN `.near.noinit`:DATA:NOROOT,0525dH
  300. SECTION_GROUP _A_TIM1_CCER2
  301. // union <unnamed> volatile _A_TIM1_CCER2
  302. _A_TIM1_CCER2:
  303. DS8 1
  304. ASEGN `.near.noinit`:DATA:NOROOT,05260H
  305. SECTION_GROUP TIM1_PSCRH
  306. // unsigned char volatile TIM1_PSCRH
  307. TIM1_PSCRH:
  308. DS8 1
  309. ASEGN `.near.noinit`:DATA:NOROOT,05261H
  310. SECTION_GROUP TIM1_PSCRL
  311. // unsigned char volatile TIM1_PSCRL
  312. TIM1_PSCRL:
  313. DS8 1
  314. ASEGN `.near.noinit`:DATA:NOROOT,05262H
  315. SECTION_GROUP TIM1_ARRH
  316. // unsigned char volatile TIM1_ARRH
  317. TIM1_ARRH:
  318. DS8 1
  319. ASEGN `.near.noinit`:DATA:NOROOT,05263H
  320. SECTION_GROUP TIM1_ARRL
  321. // unsigned char volatile TIM1_ARRL
  322. TIM1_ARRL:
  323. DS8 1
  324. ASEGN `.near.noinit`:DATA:NOROOT,0526bH
  325. SECTION_GROUP TIM1_CCR4H
  326. // unsigned char volatile TIM1_CCR4H
  327. TIM1_CCR4H:
  328. DS8 1
  329. ASEGN `.near.noinit`:DATA:NOROOT,0526cH
  330. SECTION_GROUP TIM1_CCR4L
  331. // unsigned char volatile TIM1_CCR4L
  332. TIM1_CCR4L:
  333. DS8 1
  334. ASEGN `.near.noinit`:DATA:NOROOT,0526dH
  335. SECTION_GROUP _A_TIM1_BKR
  336. // union <unnamed> volatile _A_TIM1_BKR
  337. _A_TIM1_BKR:
  338. DS8 1
  339. ASEGN `.near.noinit`:DATA:NOROOT,0526fH
  340. SECTION_GROUP _A_TIM1_OISR
  341. // union <unnamed> volatile _A_TIM1_OISR
  342. _A_TIM1_OISR:
  343. DS8 1
  344. ASEGN `.near.noinit`:DATA:NOROOT,05300H
  345. SECTION_GROUP _A_TIM2_CR1
  346. // union <unnamed> volatile _A_TIM2_CR1
  347. _A_TIM2_CR1:
  348. DS8 1
  349. ASEGN `.near.noinit`:DATA:NOROOT,05303H
  350. SECTION_GROUP _A_TIM2_IER
  351. // union <unnamed> volatile _A_TIM2_IER
  352. _A_TIM2_IER:
  353. DS8 1
  354. ASEGN `.near.noinit`:DATA:NOROOT,05308H
  355. SECTION_GROUP _A_TIM2_CCMR2
  356. // union <unnamed> volatile _A_TIM2_CCMR2
  357. _A_TIM2_CCMR2:
  358. DS8 1
  359. ASEGN `.near.noinit`:DATA:NOROOT,0530aH
  360. SECTION_GROUP _A_TIM2_CCER1
  361. // union <unnamed> volatile _A_TIM2_CCER1
  362. _A_TIM2_CCER1:
  363. DS8 1
  364. ASEGN `.near.noinit`:DATA:NOROOT,0530cH
  365. SECTION_GROUP TIM2_CNTRH
  366. // unsigned char volatile TIM2_CNTRH
  367. TIM2_CNTRH:
  368. DS8 1
  369. ASEGN `.near.noinit`:DATA:NOROOT,0530dH
  370. SECTION_GROUP TIM2_CNTRL
  371. // unsigned char volatile TIM2_CNTRL
  372. TIM2_CNTRL:
  373. DS8 1
  374. ASEGN `.near.noinit`:DATA:NOROOT,0530eH
  375. SECTION_GROUP _A_TIM2_PSCR
  376. // union <unnamed> volatile _A_TIM2_PSCR
  377. _A_TIM2_PSCR:
  378. DS8 1
  379. ASEGN `.near.noinit`:DATA:NOROOT,0530fH
  380. SECTION_GROUP TIM2_ARRH
  381. // unsigned char volatile TIM2_ARRH
  382. TIM2_ARRH:
  383. DS8 1
  384. ASEGN `.near.noinit`:DATA:NOROOT,05310H
  385. SECTION_GROUP TIM2_ARRL
  386. // unsigned char volatile TIM2_ARRL
  387. TIM2_ARRL:
  388. DS8 1
  389. ASEGN `.near.noinit`:DATA:NOROOT,05313H
  390. SECTION_GROUP TIM2_CCR2H
  391. // unsigned char volatile TIM2_CCR2H
  392. TIM2_CCR2H:
  393. DS8 1
  394. ASEGN `.near.noinit`:DATA:NOROOT,05314H
  395. SECTION_GROUP TIM2_CCR2L
  396. // unsigned char volatile TIM2_CCR2L
  397. TIM2_CCR2L:
  398. DS8 1
  399. ASEGN `.near.noinit`:DATA:NOROOT,05340H
  400. SECTION_GROUP _A_TIM4_CR1
  401. // union <unnamed> volatile _A_TIM4_CR1
  402. _A_TIM4_CR1:
  403. DS8 1
  404. ASEGN `.near.noinit`:DATA:NOROOT,05343H
  405. SECTION_GROUP _A_TIM4_IER
  406. // union <unnamed> volatile _A_TIM4_IER
  407. _A_TIM4_IER:
  408. DS8 1
  409. ASEGN `.near.noinit`:DATA:NOROOT,05344H
  410. SECTION_GROUP _A_TIM4_SR
  411. // union <unnamed> volatile _A_TIM4_SR
  412. _A_TIM4_SR:
  413. DS8 1
  414. ASEGN `.near.noinit`:DATA:NOROOT,05346H
  415. SECTION_GROUP TIM4_CNTR
  416. // unsigned char volatile TIM4_CNTR
  417. TIM4_CNTR:
  418. DS8 1
  419. ASEGN `.near.noinit`:DATA:NOROOT,05347H
  420. SECTION_GROUP _A_TIM4_PSCR
  421. // union <unnamed> volatile _A_TIM4_PSCR
  422. _A_TIM4_PSCR:
  423. DS8 1
  424. ASEGN `.near.noinit`:DATA:NOROOT,05348H
  425. SECTION_GROUP TIM4_ARR
  426. // unsigned char volatile TIM4_ARR
  427. TIM4_ARR:
  428. DS8 1
  429. // 16
  430. // 17
  431. // 18
  432. // 19
  433. // 20
  434. // 21 #define KEY0 KEY[0] //按键
  435. // 22 #define KEY1 KEY[1] //紧急按钮取消按键
  436. // 23
  437. // 24 //==============================================================
  438. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  439. // 25 __root unsigned int BUS_RevBuf[30];
  440. BUS_RevBuf:
  441. DS8 60
  442. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  443. // 26 __root unsigned char BUS_RevIndex=0;
  444. BUS_RevIndex:
  445. DS8 1
  446. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  447. // 27 __root unsigned char BUS_Rev_Cmd[3]; //总线接收
  448. BUS_Rev_Cmd:
  449. DS8 3
  450. // 28
  451. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  452. // 29 __root unsigned int BUS_RevOverTime=0; //总线接收超时,200
  453. BUS_RevOverTime:
  454. DS8 2
  455. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  456. // 30 __root unsigned char Bus_RevFlag=0; //总线接收成功
  457. Bus_RevFlag:
  458. DS8 1
  459. // 31 //==============================================================
  460. // 32
  461. SECTION `.near.data`:DATA:REORDER:ROOT(0)
  462. // 33 __root unsigned char Ledswitch=2; //RedLED开关
  463. Ledswitch:
  464. DC8 2
  465. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  466. // 34 __root unsigned char KEY[2]={0}; //按键
  467. KEY:
  468. DS8 2
  469. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  470. // 35 __root unsigned char CurrentCmd = 0; //当前命令类型
  471. CurrentCmd:
  472. DS8 1
  473. // 36
  474. // 37 //============================================
  475. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  476. // 38 __root unsigned char BUS_SendInex=0;
  477. BUS_SendInex:
  478. DS8 1
  479. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  480. // 39 __root unsigned char BUS_SendCmd[30]; //应用层发送数据
  481. BUS_SendCmd:
  482. DS8 30
  483. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  484. // 40 __root unsigned char BUS_SendingCmd[30]; //定时器正在处理数据
  485. BUS_SendingCmd:
  486. DS8 30
  487. // 41 //==============================================================
  488. // 42
  489. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  490. // 43 __root unsigned long LocalTime=0;
  491. LocalTime:
  492. DS8 4
  493. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  494. // 44 __root unsigned char RunMode=0; //0:表示注册模式,>0表示正常工作模式
  495. RunMode:
  496. DS8 1
  497. SECTION `.near.data`:DATA:REORDER:ROOT(0)
  498. // 45 __root unsigned char Bus_SendLength=146; //总线发送长度,在注册模式时长度为
  499. Bus_SendLength:
  500. DC8 146
  501. // 46
  502. // 47 //==============================================================
  503. // 48
  504. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  505. // 49 __root unsigned char BUS_SendCnt = 0; //重发计数
  506. BUS_SendCnt:
  507. DS8 1
  508. // 50
  509. // 51
  510. SECTION `.near.rodata`:CONST:REORDER:ROOT(0)
  511. // 52 __root const unsigned char BlankStr[28]="555555555555";
  512. BlankStr:
  513. DC8 "555555555555"
  514. DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  515. SECTION `.near.rodata`:CONST:REORDER:ROOT(0)
  516. // 53 __root const unsigned char DeviceSN[16]="SZFS20250120001";
  517. DeviceSN:
  518. DC8 "SZFS20250120001"
  519. SECTION `.near.rodata`:CONST:REORDER:ROOT(0)
  520. // 54 __root const unsigned char DeviceAddr[10]={0x31,0x08};
  521. DeviceAddr:
  522. DC8 49, 8, 0, 0, 0, 0, 0, 0, 0, 0
  523. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  524. // 55 __root const unsigned char *Addrp=0;
  525. Addrp:
  526. DS8 2
  527. // 56
  528. // 57
  529. // 58
  530. // 59
  531. // 60
  532. // 61
  533. // 62 void SysVar_Init(void);
  534. // 63 void BUS_RevData(void);
  535. // 64 void GPIO_KEY_Tick(void);
  536. // 65 void BUS_Rev_Tick(void);
  537. // 66 void BUS_SendData(unsigned char Length);
  538. // 67 void GPIO_MIC_SW(unsigned char status);
  539. // 68 //============================================
  540. // 69
  541. // 70 #ifdef RxTestDebug
  542. // 71 unsigned long rxtestDebugcnt=0;
  543. // 72 #endif
  544. // 73
  545. // 74 //==============================================================
  546. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  547. CFI Block cfiBlock0 Using cfiCommon0
  548. CFI Function SysVar_Init
  549. CODE
  550. // 75 void SysVar_Init(void)
  551. // 76 {
  552. // 77
  553. // 78 Addrp=DeviceAddr;
  554. SysVar_Init:
  555. LDW X, #DeviceAddr
  556. LDW L:Addrp, X
  557. // 79 RunMode=0;
  558. MOV L:RunMode, #0x0
  559. // 80 }
  560. RETF
  561. CFI EndBlock cfiBlock0
  562. // 81 //==============================================================
  563. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  564. CFI Block cfiBlock1 Using cfiCommon0
  565. CFI Function STM8_Init
  566. CODE
  567. // 82 void STM8_Init(void)
  568. // 83 {
  569. // 84 CLK_CKDIVR =0x18; //16M/8=2M
  570. STM8_Init:
  571. MOV L:0x50c6, #0x18
  572. // 85 }
  573. RETF
  574. CFI EndBlock cfiBlock1
  575. REQUIRE _A_CLK_CKDIVR
  576. // 86 //==============================================================
  577. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  578. CFI Block cfiBlock2 Using cfiCommon0
  579. CFI Function GPIO_EXTI_Init
  580. CODE
  581. // 87 void GPIO_EXTI_Init(void)
  582. // 88 {
  583. // 89 EXTI_CR1_PCIS=1; //PC口为下降沿中断
  584. GPIO_EXTI_Init:
  585. LD A, L:0x50a0
  586. AND A, #0xcf
  587. OR A, #0x10
  588. LD L:0x50a0, A
  589. // 90
  590. // 91 PC_DDR_DDR7=0;
  591. BRES L:0x500c, #0x7
  592. // 92 PC_CR1_C17=1;
  593. BSET L:0x500d, #0x7
  594. // 93 PC_CR2_C27=1;
  595. BSET L:0x500e, #0x7
  596. // 94 }
  597. RETF
  598. CFI EndBlock cfiBlock2
  599. REQUIRE _A_EXTI_CR1
  600. REQUIRE _A_PC_DDR
  601. REQUIRE _A_PC_CR1
  602. REQUIRE _A_PC_CR2
  603. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  604. CFI Block cfiBlock3 Using cfiCommon0
  605. CFI Function TIM2_Init
  606. CODE
  607. // 95 void TIM2_Init(void)
  608. // 96 {
  609. // 97 TIM2_IER = 0x00; //禁止中断
  610. TIM2_Init:
  611. MOV L:0x5303, #0x0
  612. // 98 TIM2_PSCR = 0x04; //设置预分频寄存器数
  613. MOV L:0x530e, #0x4
  614. // 99
  615. // 100 TIM2_ARRH =0xFF;
  616. MOV L:0x530f, #0xff
  617. // 101 TIM2_ARRL =0xFF;
  618. MOV L:0x5310, #0xff
  619. // 102
  620. // 103 TIM2_CNTRH=0x00; //初值
  621. MOV L:0x530c, #0x0
  622. // 104 TIM2_CNTRL=0x00;
  623. MOV L:0x530d, #0x0
  624. // 105 TIM2_CR1 |= 0x01; //开启定时器
  625. BSET L:0x5300, #0x0
  626. // 106 }
  627. RETF
  628. CFI EndBlock cfiBlock3
  629. REQUIRE _A_TIM2_IER
  630. REQUIRE _A_TIM2_PSCR
  631. REQUIRE TIM2_ARRH
  632. REQUIRE TIM2_ARRL
  633. REQUIRE TIM2_CNTRH
  634. REQUIRE TIM2_CNTRL
  635. REQUIRE _A_TIM2_CR1
  636. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  637. CFI Block cfiBlock4 Using cfiCommon0
  638. CFI Function GPIO_KEY_Init
  639. CODE
  640. // 107 void GPIO_KEY_Init(void)
  641. // 108 {
  642. // 109 //==============================================
  643. // 110 PA_DDR_DDR1=0;
  644. GPIO_KEY_Init:
  645. BRES L:0x5002, #0x1
  646. // 111 PA_DDR_DDR2=0;
  647. BRES L:0x5002, #0x2
  648. // 112 PA_CR1_C11=1;
  649. BSET L:0x5003, #0x1
  650. // 113 PA_CR1_C12=1;
  651. BSET L:0x5003, #0x2
  652. // 114 PA_CR2_C21=0;
  653. BRES L:0x5004, #0x1
  654. // 115 PA_CR2_C22=0;
  655. BRES L:0x5004, #0x2
  656. // 116 //==============================================
  657. // 117
  658. // 118 //==============================================
  659. // 119 PD_DDR_DDR4=0; // 设置为输入模式
  660. BRES L:0x5011, #0x4
  661. // 120 PD_CR1_C14=1; // 带上拉电阻输入
  662. BSET L:0x5012, #0x4
  663. // 121 PD_CR2_C24=0; // 禁用外部中断,只用查询方式
  664. BRES L:0x5013, #0x4
  665. // 122
  666. // 123 //==============================================
  667. // 124
  668. // 125
  669. // 126 KEY0=0;
  670. MOV L:KEY, #0x0
  671. // 127 KEY1=0;
  672. MOV L:KEY + 1, #0x0
  673. // 128 BUS_SendCnt =0;
  674. MOV L:BUS_SendCnt, #0x0
  675. // 129 }
  676. RETF
  677. CFI EndBlock cfiBlock4
  678. REQUIRE _A_PA_DDR
  679. REQUIRE _A_PA_CR1
  680. REQUIRE _A_PA_CR2
  681. REQUIRE _A_PD_DDR
  682. REQUIRE _A_PD_CR1
  683. REQUIRE _A_PD_CR2
  684. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  685. CFI Block cfiBlock5 Using cfiCommon0
  686. CFI Function GPIO_LED_Init
  687. CODE
  688. // 130 void GPIO_LED_Init(void)
  689. // 131 {
  690. // 132 PD_DDR_DDR3 =1; //输出引脚
  691. GPIO_LED_Init:
  692. BSET L:0x5011, #0x3
  693. // 133 PD_CR1_C13 =1; //推挽输出模式
  694. BSET L:0x5012, #0x3
  695. // 134 PD_ODR_ODR3 =0; //输出低电平,LED灭
  696. BRES L:0x500f, #0x3
  697. // 135
  698. // 136 Ledswitch=2;
  699. MOV L:Ledswitch, #0x2
  700. // 137 }
  701. RETF
  702. CFI EndBlock cfiBlock5
  703. REQUIRE _A_PD_DDR
  704. REQUIRE _A_PD_CR1
  705. REQUIRE _A_PD_ODR
  706. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  707. CFI Block cfiBlock6 Using cfiCommon0
  708. CFI Function TIM4_1ms_Init
  709. CODE
  710. // 138 void TIM4_1ms_Init(void)
  711. // 139 {
  712. // 140 TIM4_PSCR = 0x03; //设置预分频寄存器数
  713. TIM4_1ms_Init:
  714. MOV L:0x5347, #0x3
  715. // 141 //共8种分频比例1(0),2(1),4(2),8(3),16(4),32(5),64(6),128(7)
  716. // 142 TIM4_ARR = 0xF9; //设置自动重装载寄存器
  717. MOV L:0x5348, #0xf9
  718. // 143
  719. // 144 TIM4_IER = 0x01; //开启TIM4更新事件中断使能
  720. MOV L:0x5343, #0x1
  721. // 145 TIM4_CNTR = 0xF9; //配置TIM4定时器初值,使得开始计数时发生第一次溢出
  722. MOV L:0x5346, #0xf9
  723. // 146
  724. // 147 TIM4_CR1_CEN= 0x01; //使能计数器功能TIM4_CR1寄存器CEN位为"1"
  725. BSET L:0x5340, #0x0
  726. // 148 }
  727. RETF
  728. CFI EndBlock cfiBlock6
  729. REQUIRE _A_TIM4_PSCR
  730. REQUIRE TIM4_ARR
  731. REQUIRE _A_TIM4_IER
  732. REQUIRE TIM4_CNTR
  733. REQUIRE _A_TIM4_CR1
  734. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  735. CFI Block cfiBlock7 Using cfiCommon0
  736. CFI Function TIM1_PWM_Init
  737. CODE
  738. // 149 void TIM1_PWM_Init(void)
  739. // 150 {
  740. // 151 PC_DDR_DDR4 =1;
  741. TIM1_PWM_Init:
  742. BSET L:0x500c, #0x4
  743. // 152 //=============================================
  744. // 153 TIM1_PSCRH =0;
  745. MOV L:0x5260, #0x0
  746. // 154 TIM1_PSCRL =0; //定时器1 时钟不分频
  747. MOV L:0x5261, #0x0
  748. // 155
  749. // 156 TIM1_ARRH =0;
  750. MOV L:0x5262, #0x0
  751. // 157 TIM1_ARRL =19; //定时器1的PWM输出频率:2000 000/20=100K
  752. MOV L:0x5263, #0x13
  753. // 158
  754. // 159 TIM1_CR1 &=0x8F; //向上计数,边沿对齐模式
  755. LD A, L:0x5250
  756. AND A, #0x8f
  757. LD L:0x5250, A
  758. // 160 //=============================================
  759. // 161 TIM1_CCR4H =0;
  760. MOV L:0x526b, #0x0
  761. // 162 TIM1_CCR4L =10;
  762. MOV L:0x526c, #0xa
  763. // 163 TIM1_CCMR4 =0x60; //配置CH4为PWM模式1
  764. MOV L:0x525b, #0x60
  765. // 164 TIM1_CCER2 &=0x1F; //配置CH4高电平有效
  766. LD A, L:0x525d
  767. AND A, #0x1f
  768. LD L:0x525d, A
  769. // 165 //TIM1_CCER2 |=0x10; //使能CH4输出
  770. // 166 TIM1_OISR &=0xBF; //空闲输出低电平
  771. BRES L:0x526f, #0x6
  772. // 167 //通道4:100K_50% PWM输出
  773. // 168 //=============================================
  774. // 169 TIM1_CR1 |=0x01;
  775. BSET L:0x5250, #0x0
  776. // 170 TIM1_BKR =0x80;
  777. MOV L:0x526d, #0x80
  778. // 171
  779. // 172 }
  780. RETF
  781. CFI EndBlock cfiBlock7
  782. REQUIRE _A_PC_DDR
  783. REQUIRE TIM1_PSCRH
  784. REQUIRE TIM1_PSCRL
  785. REQUIRE TIM1_ARRH
  786. REQUIRE TIM1_ARRL
  787. REQUIRE _A_TIM1_CR1
  788. REQUIRE TIM1_CCR4H
  789. REQUIRE TIM1_CCR4L
  790. REQUIRE _A_TIM1_CCMR4
  791. REQUIRE _A_TIM1_CCER2
  792. REQUIRE _A_TIM1_OISR
  793. REQUIRE _A_TIM1_BKR
  794. // 173
  795. // 174
  796. // 175
  797. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  798. CFI Block cfiBlock8 Using cfiCommon0
  799. CFI Function TIM2_PWM_Init
  800. CODE
  801. // 176 void TIM2_PWM_Init(void)
  802. // 177 {
  803. // 178 // TIM2_IER = 0x04;
  804. // 179 // PD_DDR_DDR3 =1;
  805. // 180 //=============================================
  806. // 181
  807. // 182
  808. // 183
  809. // 184 TIM2_CCMR2 = TIM2_CCMR2 | 0x70; //配置CH2为PWM模式1
  810. TIM2_PWM_Init:
  811. LD A, L:0x5308
  812. OR A, #0x70
  813. LD L:0x5308, A
  814. // 185 // TIM2_CCER1 &=0x1F; //配置CH2高电平有效
  815. // 186 TIM2_CCER1 = TIM2_CCER1 | 0x30; //使能CH2输出
  816. LD A, L:0x530a
  817. OR A, #0x30
  818. LD L:0x530a, A
  819. // 187
  820. // 188 TIM2_ARRH =0;
  821. MOV L:0x530f, #0x0
  822. // 189 TIM2_ARRL = 19; //定时器1的PWM输出频率:2000 000/100=20K
  823. MOV L:0x5310, #0x13
  824. // 190
  825. // 191 // TIM2_CR1 &=0x8F; //向上计数,边沿对齐模式
  826. // 192 //=============================================
  827. // 193 TIM2_CCR2H =0x0;
  828. MOV L:0x5313, #0x0
  829. // 194 TIM2_CCR2L =0x00;
  830. MOV L:0x5314, #0x0
  831. // 195
  832. // 196 TIM2_PSCR =0; //0x03
  833. MOV L:0x530e, #0x0
  834. // 197 // TIM2_OISR &=0xBF; //空闲输出低电平
  835. // 198 //通道2:1K_50% PWM输出
  836. // 199 //=============================================
  837. // 200 TIM2_CR1 = TIM2_CR1 |0x01;
  838. BSET L:0x5300, #0x0
  839. // 201 // TIM2_BKR =0x80;
  840. // 202
  841. // 203 }
  842. RETF
  843. CFI EndBlock cfiBlock8
  844. REQUIRE _A_TIM2_CCMR2
  845. REQUIRE _A_TIM2_CCER1
  846. REQUIRE TIM2_ARRH
  847. REQUIRE TIM2_ARRL
  848. REQUIRE TIM2_CCR2H
  849. REQUIRE TIM2_CCR2L
  850. REQUIRE _A_TIM2_PSCR
  851. REQUIRE _A_TIM2_CR1
  852. // 204
  853. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  854. CFI Block cfiBlock9 Using cfiCommon0
  855. CFI Function GPIO_LED_Tick
  856. CODE
  857. // 205 void GPIO_LED_Tick(void)
  858. // 206 {
  859. // 207 static unsigned long flashTime=0;
  860. // 208 static unsigned char ledflag=0;
  861. // 209 static unsigned char ledflagbak=0;
  862. // 210 #ifdef tim2Led
  863. // 211
  864. // 212 if(Ledswitch==1)
  865. // 213 {
  866. // 214 //PD_ODR_ODR3=1;
  867. // 215 TIM2_CCR2H =0;
  868. // 216 TIM2_CCR2L =19;
  869. // 217 ledflag =0;
  870. // 218 }
  871. // 219 else if (Ledswitch==2)
  872. // 220 {
  873. // 221 if(LocalTime>flashTime)
  874. // 222 {
  875. // 223 flashTime=LocalTime+100;
  876. // 224 ledflag ++;
  877. // 225
  878. // 226 }
  879. // 227 if (ledflagbak == ledflag ) {
  880. // 228 return;
  881. // 229
  882. // 230 }
  883. // 231 ledflagbak = ledflag ;
  884. // 232 if(ledflag >39 ) {
  885. // 233 ledflag =0;
  886. // 234 }
  887. // 235 TIM2_CCR2H =0x0;
  888. // 236 if (ledflag > 19 ) {
  889. // 237 TIM2_CCR2L = (ledflag-19) ;
  890. // 238 } else if (ledflag > 15 ) {
  891. // 239 TIM2_CCR2L = (19-ledflag) ;
  892. // 240 ledflag = 20;
  893. // 241 }
  894. // 242 else {
  895. // 243 TIM2_CCR2L = (19-ledflag) ;
  896. // 244 }
  897. // 245
  898. // 246 }
  899. // 247 else
  900. // 248 {
  901. // 249 TIM2_CCR2H =0x0;
  902. // 250 TIM2_CCR2L =0x0;
  903. // 251 ledflag =0;
  904. // 252 // PD_ODR_ODR3=0;
  905. // 253 }
  906. // 254 #else
  907. // 255
  908. // 256 if(Ledswitch==1)
  909. GPIO_LED_Tick:
  910. LD A, L:Ledswitch
  911. CP A, #0x1
  912. JRNE L:??GPIO_LED_Tick_0
  913. // 257 {
  914. // 258 PD_ODR_ODR3=1;
  915. BSET L:0x500f, #0x3
  916. RETF
  917. // 259
  918. // 260 }
  919. // 261 else if (Ledswitch==2)
  920. ??GPIO_LED_Tick_0:
  921. LD A, L:Ledswitch
  922. CP A, #0x2
  923. JRNE L:??GPIO_LED_Tick_1
  924. // 262 {
  925. // 263 PD_ODR_ODR3=1;
  926. BSET L:0x500f, #0x3
  927. RETF
  928. // 264 }
  929. // 265 else
  930. // 266 {
  931. // 267 PD_ODR_ODR3=0;
  932. ??GPIO_LED_Tick_1:
  933. BRES L:0x500f, #0x3
  934. // 268 }
  935. // 269
  936. // 270
  937. // 271
  938. // 272
  939. // 273 #endif
  940. // 274 }
  941. RETF
  942. CFI EndBlock cfiBlock9
  943. REQUIRE _A_PD_ODR
  944. // 275
  945. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  946. CFI Block cfiBlock10 Using cfiCommon0
  947. CFI Function GPIO_KEY_Tick
  948. CODE
  949. // 276 void GPIO_KEY_Tick(void)
  950. // 277 {
  951. // 278 static unsigned long keyTime1=0;
  952. // 279 static unsigned char keyResTime =0;
  953. // 280 static unsigned long keyTime2=0;
  954. // 281 static unsigned char keyResTime2 =0;
  955. // 282
  956. // 283 // KEY0 处理
  957. // 284 if(PA_IDR_IDR1==1) //没有按下
  958. GPIO_KEY_Tick:
  959. LD A, L:0x5001
  960. SRL A
  961. AND A, #0x1
  962. CP A, #0x0
  963. JREQ L:??GPIO_KEY_Tick_0
  964. // 285 {
  965. // 286 if(KEY0==1)
  966. LD A, L:KEY
  967. CP A, #0x1
  968. JRNE L:??GPIO_KEY_Tick_1
  969. // 287 {
  970. // 288 keyResTime ++;
  971. LD A, L:??keyResTime
  972. ADD A, #0x1
  973. LD L:??keyResTime, A
  974. // 289 if (keyResTime >= 200) {
  975. LD A, L:??keyResTime
  976. CP A, #0xc8
  977. JRC L:??GPIO_KEY_Tick_2
  978. // 290 KEY0=2;
  979. MOV L:KEY, #0x2
  980. JRA L:??GPIO_KEY_Tick_2
  981. // 291 }
  982. // 292 }
  983. // 293 else
  984. // 294 {
  985. // 295 KEY0=0;
  986. ??GPIO_KEY_Tick_1:
  987. MOV L:KEY, #0x0
  988. // 296 }
  989. // 297 keyTime1=LocalTime+120;
  990. ??GPIO_KEY_Tick_2:
  991. LDW X, #0x78
  992. LDW S:?w1, X
  993. CLRW X
  994. LDW S:?w0, X
  995. LDW X, #LocalTime
  996. CALLF L:?add32_l0_l0_0x
  997. LDW X, #??keyTime1
  998. CALLF L:?load32_0x_l0
  999. JRA L:??GPIO_KEY_Tick_3
  1000. // 298 }
  1001. // 299 else if(LocalTime>keyTime1)
  1002. ??GPIO_KEY_Tick_0:
  1003. LDW Y, #LocalTime
  1004. LDW X, #??keyTime1
  1005. CALLF L:?load32_l0_0x
  1006. LDW X, Y
  1007. CALLF L:?ucmp32_c_l0_0x
  1008. JRNC L:??GPIO_KEY_Tick_4
  1009. // 300 {
  1010. // 301 KEY0=1;
  1011. MOV L:KEY, #0x1
  1012. // 302 keyResTime = 0;
  1013. MOV L:??keyResTime, #0x0
  1014. JRA L:??GPIO_KEY_Tick_3
  1015. // 303 }
  1016. // 304 else {
  1017. // 305 keyResTime = 0;
  1018. ??GPIO_KEY_Tick_4:
  1019. MOV L:??keyResTime, #0x0
  1020. // 306 }
  1021. // 307
  1022. // 308 // KEY1 处理
  1023. // 309 if(PD_IDR_IDR4==1) //没有按下
  1024. ??GPIO_KEY_Tick_3:
  1025. LD A, L:0x5010
  1026. SWAP A
  1027. AND A, #0xf
  1028. AND A, #0x1
  1029. CP A, #0x0
  1030. JREQ L:??GPIO_KEY_Tick_5
  1031. // 310 {
  1032. // 311 if(KEY1==1)
  1033. LD A, L:KEY + 1
  1034. CP A, #0x1
  1035. JRNE L:??GPIO_KEY_Tick_6
  1036. // 312 {
  1037. // 313 keyResTime2 ++;
  1038. LD A, L:??keyResTime2
  1039. ADD A, #0x1
  1040. LD L:??keyResTime2, A
  1041. // 314 if (keyResTime2 >= 200) {
  1042. LD A, L:??keyResTime2
  1043. CP A, #0xc8
  1044. JRC L:??GPIO_KEY_Tick_7
  1045. // 315 KEY1=2;
  1046. MOV L:KEY + 1, #0x2
  1047. JRA L:??GPIO_KEY_Tick_7
  1048. // 316 }
  1049. // 317 }
  1050. // 318 else
  1051. // 319 {
  1052. // 320 KEY1=0;
  1053. ??GPIO_KEY_Tick_6:
  1054. MOV L:KEY + 1, #0x0
  1055. // 321 }
  1056. // 322 keyTime2=LocalTime+120;
  1057. ??GPIO_KEY_Tick_7:
  1058. LDW X, #0x78
  1059. LDW S:?w1, X
  1060. CLRW X
  1061. LDW S:?w0, X
  1062. LDW X, #LocalTime
  1063. CALLF L:?add32_l0_l0_0x
  1064. LDW X, #??keyTime2
  1065. JPF L:?load32_0x_l0
  1066. // 323 }
  1067. // 324 else if(LocalTime>keyTime2)
  1068. ??GPIO_KEY_Tick_5:
  1069. LDW Y, #LocalTime
  1070. LDW X, #??keyTime2
  1071. CALLF L:?load32_l0_0x
  1072. LDW X, Y
  1073. CALLF L:?ucmp32_c_l0_0x
  1074. JRNC L:??GPIO_KEY_Tick_8
  1075. // 325 {
  1076. // 326 KEY1=1;
  1077. MOV L:KEY + 1, #0x1
  1078. // 327 keyResTime2 = 0;
  1079. MOV L:??keyResTime2, #0x0
  1080. RETF
  1081. // 328 }
  1082. // 329 else {
  1083. // 330 keyResTime2 = 0;
  1084. ??GPIO_KEY_Tick_8:
  1085. MOV L:??keyResTime2, #0x0
  1086. // 331 }
  1087. // 332 }
  1088. RETF
  1089. CFI EndBlock cfiBlock10
  1090. REQUIRE _A_PA_IDR
  1091. REQUIRE _A_PD_IDR
  1092. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  1093. ??keyTime1:
  1094. DS8 4
  1095. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  1096. ??keyResTime:
  1097. DS8 1
  1098. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  1099. ??keyTime2:
  1100. DS8 4
  1101. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  1102. ??keyResTime2:
  1103. DS8 1
  1104. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  1105. CFI Block cfiBlock11 Using cfiCommon0
  1106. CFI Function BUS_RevData
  1107. CODE
  1108. // 333 void BUS_RevData(void)
  1109. // 334 {
  1110. // 335 //=======================================
  1111. // 336 if(((BUS_Rev_Cmd[0]!=Addrp[0])||(BUS_Rev_Cmd[1]!=Addrp[1]))&&(BUS_Rev_Cmd[2]!=0x0E))
  1112. BUS_RevData:
  1113. LD A, [L:Addrp.w]
  1114. CP A, L:BUS_Rev_Cmd
  1115. JRNE L:??BUS_RevData_0
  1116. LDW X, L:Addrp
  1117. INCW X
  1118. LD A, (X)
  1119. CP A, L:BUS_Rev_Cmd + 1
  1120. JREQ L:??BUS_RevData_1
  1121. ??BUS_RevData_0:
  1122. LD A, L:BUS_Rev_Cmd + 2
  1123. CP A, #0xe
  1124. JREQ L:??BUS_RevData_1
  1125. // 337 {
  1126. // 338 if((BUS_Rev_Cmd[0]!=0xFF)||(BUS_Rev_Cmd[1]!=0xFF))
  1127. LD A, L:BUS_Rev_Cmd
  1128. CP A, #0xff
  1129. JRNE L:??BUS_RevData_2
  1130. LD A, L:BUS_Rev_Cmd + 1
  1131. CP A, #0xff
  1132. JREQ L:??BUS_RevData_1
  1133. // 339 return;
  1134. ??BUS_RevData_2:
  1135. RETF
  1136. // 340 }
  1137. // 341
  1138. // 342 //=======================================
  1139. // 343 switch(BUS_Rev_Cmd[2])
  1140. ??BUS_RevData_1:
  1141. LD A, L:BUS_Rev_Cmd + 2
  1142. TNZ A
  1143. JREQ L:??BUS_RevData_3
  1144. DEC A
  1145. JREQ L:??BUS_RevData_3
  1146. DEC A
  1147. JREQ L:??BUS_RevData_3
  1148. DEC A
  1149. JREQ L:??BUS_RevData_3
  1150. DEC A
  1151. JREQ L:??BUS_RevData_3
  1152. DEC A
  1153. JREQ L:??BUS_RevData_3
  1154. DEC A
  1155. JREQ L:??BUS_RevData_3
  1156. DEC A
  1157. JREQ L:??BUS_RevData_3
  1158. DEC A
  1159. JREQ L:??BUS_RevData_3
  1160. DEC A
  1161. JREQ L:??BUS_RevData_4
  1162. SUB A, #0x4
  1163. JREQ L:??BUS_RevData_5
  1164. DEC A
  1165. JREQ L:??BUS_RevData_6
  1166. JRA L:??BUS_RevData_3
  1167. // 344 {
  1168. // 345 case 0:
  1169. // 346 break;
  1170. // 347 case 1:
  1171. // 348 break;
  1172. // 349 case 2:
  1173. // 350 break;
  1174. // 351 case 3:
  1175. // 352 break;
  1176. // 353 case 4: //主机呼叫分机,或主机应答分机
  1177. // 354 break;
  1178. // 355 case 5: //主机挂断分机
  1179. // 356 break;
  1180. // 357 case 6: //广播模式
  1181. // 358 break;
  1182. // 359 case 7: //打开门灯
  1183. // 360 break;
  1184. // 361 case 8: //关闭门灯
  1185. // 362 break;
  1186. // 363 case 9: //取消紧急呼叫
  1187. // 364 RunMode=1;
  1188. ??BUS_RevData_4:
  1189. MOV L:RunMode, #0x1
  1190. // 365 Ledswitch=0;
  1191. MOV L:Ledswitch, #0x0
  1192. // 366 BUS_SendCnt =0;
  1193. MOV L:BUS_SendCnt, #0x0
  1194. // 367 break;
  1195. JRA L:??BUS_RevData_3
  1196. // 368 case 13: //注册命令
  1197. // 369 BUS_SendCmd[0]=Addrp[0];
  1198. ??BUS_RevData_5:
  1199. LD A, [L:Addrp.w]
  1200. LD L:BUS_SendCmd, A
  1201. // 370 BUS_SendCmd[1]=Addrp[1];
  1202. LDW X, L:Addrp
  1203. INCW X
  1204. LD A, (X)
  1205. LD L:BUS_SendCmd + 1, A
  1206. // 371 BUS_SendCmd[2]=0x0D;
  1207. MOV L:BUS_SendCmd + 2, #0xd
  1208. // 372 BUS_SendData(3);
  1209. LD A, #0x3
  1210. CALLF BUS_SendData
  1211. // 373 break;
  1212. JRA L:??BUS_RevData_3
  1213. // 374 case 14:
  1214. // 375 if(BUS_Rev_Cmd[1]=='Y') //转换盒已经注册过
  1215. ??BUS_RevData_6:
  1216. LD A, L:BUS_Rev_Cmd + 1
  1217. CP A, #0x59
  1218. JRNE L:??BUS_RevData_7
  1219. // 376 {
  1220. // 377 Ledswitch=0;
  1221. MOV L:Ledswitch, #0x0
  1222. // 378 RunMode=1;
  1223. MOV L:RunMode, #0x1
  1224. // 379 Bus_SendLength=26; //总线发送长度,在正常工作模式时,为26 (3byes*8+2)
  1225. MOV L:Bus_SendLength, #0x1a
  1226. JRA L:??BUS_RevData_3
  1227. // 380
  1228. // 381 }
  1229. // 382 else
  1230. // 383 {
  1231. // 384 RunMode=0; //0:表示注册模式,>0表示正常工作模式
  1232. ??BUS_RevData_7:
  1233. MOV L:RunMode, #0x0
  1234. // 385 Bus_SendLength=146;
  1235. MOV L:Bus_SendLength, #0x92
  1236. // 386 }
  1237. // 387 break;
  1238. // 388 }
  1239. // 389 Bus_RevFlag=0xFF;
  1240. ??BUS_RevData_3:
  1241. MOV L:Bus_RevFlag, #0xff
  1242. // 390 }
  1243. RETF
  1244. CFI EndBlock cfiBlock11
  1245. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  1246. CFI Block cfiBlock12 Using cfiCommon0
  1247. CFI Function BUS_Rev_Tick
  1248. CODE
  1249. // 391 void BUS_Rev_Tick(void)
  1250. // 392 {
  1251. // 393 static unsigned char i=0,j=0,k=0;
  1252. // 394 if(BUS_RevIndex==26)
  1253. BUS_Rev_Tick:
  1254. LD A, L:BUS_RevIndex
  1255. CP A, #0x1a
  1256. JREQ ??lb_5
  1257. JP L:??BUS_Rev_Tick_0
  1258. // 395 {
  1259. // 396 BUS_Rev_Cmd[0]=0;
  1260. ??lb_5:
  1261. MOV L:BUS_Rev_Cmd, #0x0
  1262. // 397 BUS_Rev_Cmd[1]=0;
  1263. MOV L:BUS_Rev_Cmd + 1, #0x0
  1264. // 398 BUS_Rev_Cmd[2]=0;
  1265. MOV L:BUS_Rev_Cmd + 2, #0x0
  1266. // 399 for(k=0;k<24;k++)
  1267. MOV L:??k, #0x0
  1268. JRA L:??BUS_Rev_Tick_1
  1269. // 400 {
  1270. // 401 i=k / 8;
  1271. ??BUS_Rev_Tick_2:
  1272. LD A, L:??k
  1273. MOV S:?b0, #0x8
  1274. CLRW X
  1275. LD XL, A
  1276. LD A, S:?b0
  1277. DIV X, A
  1278. LD A, XL
  1279. LD L:??i, A
  1280. // 402 j=k % 8;
  1281. LD A, L:??k
  1282. MOV S:?b0, #0x8
  1283. CLRW X
  1284. LD XL, A
  1285. LD A, S:?b0
  1286. DIV X, A
  1287. LD L:??j, A
  1288. // 403 if ((BUS_RevBuf[k]>280)&&(BUS_RevBuf[k]<400))
  1289. LD A, L:??k
  1290. CLRW X
  1291. LD XL, A
  1292. SLLW X
  1293. LDW X, (L:BUS_RevBuf,X)
  1294. SUBW X, #0x119
  1295. CPW X, #0x77
  1296. JRNC L:??BUS_Rev_Tick_3
  1297. // 404 {
  1298. // 405 BUS_Rev_Cmd[i]|=(1<<j);
  1299. LD A, L:??i
  1300. CLRW Y
  1301. LD YL, A
  1302. LD A, L:??j
  1303. CLRW X
  1304. INCW X
  1305. CALLF L:?sll16_x_x_a
  1306. LD A, XL
  1307. LDW X, Y
  1308. OR A, (L:BUS_Rev_Cmd,X)
  1309. LD S:?b0, A
  1310. LD A, L:??i
  1311. CLRW X
  1312. LD XL, A
  1313. LD A, S:?b0
  1314. LD (L:BUS_Rev_Cmd,X), A
  1315. // 406 }
  1316. // 407 }
  1317. ??BUS_Rev_Tick_3:
  1318. LD A, L:??k
  1319. ADD A, #0x1
  1320. LD L:??k, A
  1321. ??BUS_Rev_Tick_1:
  1322. LD A, L:??k
  1323. CP A, #0x18
  1324. JRC L:??BUS_Rev_Tick_2
  1325. // 408 BUS_RevIndex=0;
  1326. MOV L:BUS_RevIndex, #0x0
  1327. // 409 i=(BUS_Rev_Cmd[0]+ BUS_Rev_Cmd[1]+(BUS_Rev_Cmd[2]&0x0F))&0x0F;
  1328. LD A, L:BUS_Rev_Cmd + 1
  1329. ADD A, L:BUS_Rev_Cmd
  1330. ADD A, L:BUS_Rev_Cmd + 2
  1331. AND A, #0xf
  1332. LD L:??i, A
  1333. // 410 j=(BUS_Rev_Cmd[2]>>4)&0x0F;
  1334. LD A, L:BUS_Rev_Cmd + 2
  1335. SWAP A
  1336. AND A, #0xf
  1337. LD L:??j, A
  1338. // 411
  1339. // 412 #ifdef RxTestDebug
  1340. // 413 if(i==j)
  1341. // 414 {
  1342. // 415 BUS_Rev_Cmd[2]=BUS_Rev_Cmd[2]&0x0F;
  1343. // 416 BUS_RevData();
  1344. // 417 } else {
  1345. // 418 rxtestDebugcnt ++;
  1346. // 419 if (rxtestDebugcnt > 10) //200ms,100s
  1347. // 420 {
  1348. // 421 Ledswitch=1;
  1349. // 422 }
  1350. // 423
  1351. // 424 }
  1352. // 425 #else
  1353. // 426
  1354. // 427 BUS_Rev_Cmd[2]=BUS_Rev_Cmd[2]&0x0F;
  1355. LD A, L:BUS_Rev_Cmd + 2
  1356. AND A, #0xf
  1357. LD L:BUS_Rev_Cmd + 2, A
  1358. // 428 BUS_RevData();
  1359. CALLF BUS_RevData
  1360. // 429 #endif
  1361. // 430
  1362. // 431
  1363. // 432
  1364. // 433 }
  1365. // 434 }
  1366. ??BUS_Rev_Tick_0:
  1367. RETF
  1368. CFI EndBlock cfiBlock12
  1369. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  1370. ??i:
  1371. DS8 1
  1372. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  1373. ??j:
  1374. DS8 1
  1375. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  1376. ??k:
  1377. DS8 1
  1378. // 435 //===================TIM4计数溢出更新事件中断响应函数======================
  1379. // 436 #pragma vector=0x19
  1380. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  1381. CFI Block cfiBlock13 Using cfiCommon1
  1382. CFI Function TIM4_UPD_OVF_IRQHandler
  1383. CODE
  1384. // 437 __interrupt void TIM4_UPD_OVF_IRQHandler(void)
  1385. // 438 {
  1386. TIM4_UPD_OVF_IRQHandler:
  1387. _interrupt_25:
  1388. PUSH CC
  1389. CFI CFA SP+10
  1390. POP A
  1391. CFI CFA SP+9
  1392. AND A, #0xbf
  1393. PUSH A
  1394. CFI CFA SP+10
  1395. POP CC
  1396. CFI CFA SP+9
  1397. CALLF L:?push_l0
  1398. CFI ?b3 Frame(CFA, -9)
  1399. CFI ?b2 Frame(CFA, -10)
  1400. CFI ?b1 Frame(CFA, -11)
  1401. CFI ?b0 Frame(CFA, -12)
  1402. CFI CFA SP+13
  1403. // 439 __root static unsigned char flag=0;
  1404. // 440 unsigned char i,j;
  1405. // 441
  1406. // 442 TIM4_SR = 0; //清除更新事件中断标志位UIF
  1407. MOV L:0x5344, #0x0
  1408. // 443 LocalTime++;
  1409. LDW X, #LocalTime
  1410. CALLF L:?load32_l0_0x
  1411. CALLF L:?inc32_l0_l0
  1412. LDW X, #LocalTime
  1413. CALLF L:?load32_0x_l0
  1414. // 444 // if(BUS_RevOverTime>0)BUS_RevOverTime--;
  1415. // 445 //===================================
  1416. // 446 if(flag>1)
  1417. LD A, L:??flag
  1418. CP A, #0x2
  1419. JRC L:??TIM4_UPD_OVF_IRQHandler_0
  1420. // 447 {
  1421. // 448 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9; //总线为低电平
  1422. BSET L:0x525d, #0x4
  1423. // 449 flag--;
  1424. LD A, L:??flag
  1425. ADD A, #0xff
  1426. LD L:??flag, A
  1427. // 450 return;
  1428. JP L:??TIM4_UPD_OVF_IRQHandler_1
  1429. // 451 }
  1430. // 452 else if(flag==1)
  1431. ??TIM4_UPD_OVF_IRQHandler_0:
  1432. LD A, L:??flag
  1433. CP A, #0x1
  1434. JRNE L:??TIM4_UPD_OVF_IRQHandler_2
  1435. // 453 {
  1436. // 454 TIM1_CCER2_CC4E=0; //GPIOA->BRR = GPIO_Pin_9; //总线为高电平
  1437. BRES L:0x525d, #0x4
  1438. // 455 flag=0;
  1439. MOV L:??flag, #0x0
  1440. // 456 return;
  1441. JP L:??TIM4_UPD_OVF_IRQHandler_1
  1442. // 457 }
  1443. // 458 //===================================
  1444. // 459 if((BUS_SendInex>0)&&(flag==0))
  1445. ??TIM4_UPD_OVF_IRQHandler_2:
  1446. LD A, L:BUS_SendInex
  1447. CP A, #0x0
  1448. JRNE ??lb_3
  1449. JP L:??TIM4_UPD_OVF_IRQHandler_1
  1450. ??lb_3:
  1451. LD A, L:??flag
  1452. CP A, #0x0
  1453. JREQ ??lb_4
  1454. JP L:??TIM4_UPD_OVF_IRQHandler_1
  1455. // 460 {
  1456. // 461 if(BUS_SendInex==1) //起始位:总线5ms低电平
  1457. ??lb_4:
  1458. LD A, L:BUS_SendInex
  1459. CP A, #0x1
  1460. JRNE L:??TIM4_UPD_OVF_IRQHandler_3
  1461. // 462 {
  1462. // 463 flag=5;
  1463. MOV L:??flag, #0x5
  1464. // 464 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9;
  1465. BSET L:0x525d, #0x4
  1466. // 465 BUS_SendInex++;
  1467. LD A, L:BUS_SendInex
  1468. ADD A, #0x1
  1469. LD L:BUS_SendInex, A
  1470. JP L:??TIM4_UPD_OVF_IRQHandler_1
  1471. // 466 }
  1472. // 467 else if(BUS_SendInex<Bus_SendLength)
  1473. ??TIM4_UPD_OVF_IRQHandler_3:
  1474. LD A, L:BUS_SendInex
  1475. CP A, L:Bus_SendLength
  1476. JRNC L:??TIM4_UPD_OVF_IRQHandler_4
  1477. // 468 {
  1478. // 469 i=(BUS_SendInex-2)/8;
  1479. LD A, L:BUS_SendInex
  1480. CLRW X
  1481. LD XL, A
  1482. DECW X
  1483. DECW X
  1484. LDW Y, #0x8
  1485. CALLF L:?sdiv16_x_x_y
  1486. EXG A, XL
  1487. LD S:?b1, A
  1488. EXG A, XL
  1489. // 470 j=(BUS_SendInex-2)%8;
  1490. LD A, L:BUS_SendInex
  1491. CLRW X
  1492. LD XL, A
  1493. DECW X
  1494. DECW X
  1495. LDW Y, #0x8
  1496. CALLF L:?smod16_y_x_y
  1497. EXG A, YL
  1498. LD S:?b0, A
  1499. EXG A, YL
  1500. // 471 if(((BUS_SendingCmd[i]>>j)&0x01)>0) //数据位1:2ms低电平
  1501. CLRW X
  1502. EXG A, XL
  1503. LD A, S:?b1
  1504. EXG A, XL
  1505. LD A, (L:BUS_SendingCmd,X)
  1506. CLRW X
  1507. LD XL, A
  1508. LD A, S:?b0
  1509. CALLF L:?sra16_x_x_a
  1510. LD A, XL
  1511. AND A, #0x1
  1512. CP A, #0x1
  1513. JRC L:??TIM4_UPD_OVF_IRQHandler_5
  1514. // 472 {
  1515. // 473 flag=2;
  1516. MOV L:??flag, #0x2
  1517. JRA L:??TIM4_UPD_OVF_IRQHandler_6
  1518. // 474 }
  1519. // 475 else //数据位0:1ms低电平
  1520. // 476 {
  1521. // 477 flag=1;
  1522. ??TIM4_UPD_OVF_IRQHandler_5:
  1523. MOV L:??flag, #0x1
  1524. // 478 }
  1525. // 479 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9;
  1526. ??TIM4_UPD_OVF_IRQHandler_6:
  1527. BSET L:0x525d, #0x4
  1528. // 480 BUS_SendInex++;
  1529. LD A, L:BUS_SendInex
  1530. ADD A, #0x1
  1531. LD L:BUS_SendInex, A
  1532. JRA L:??TIM4_UPD_OVF_IRQHandler_1
  1533. // 481 }
  1534. // 482 else if(BUS_SendInex==Bus_SendLength)
  1535. ??TIM4_UPD_OVF_IRQHandler_4:
  1536. LD A, L:Bus_SendLength
  1537. CP A, L:BUS_SendInex
  1538. JRNE L:??TIM4_UPD_OVF_IRQHandler_7
  1539. // 483 {
  1540. // 484 flag=0;
  1541. MOV L:??flag, #0x0
  1542. // 485 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9;
  1543. BSET L:0x525d, #0x4
  1544. // 486 BUS_SendInex++;
  1545. LD A, L:BUS_SendInex
  1546. ADD A, #0x1
  1547. LD L:BUS_SendInex, A
  1548. JRA L:??TIM4_UPD_OVF_IRQHandler_1
  1549. // 487 }
  1550. // 488 else
  1551. // 489 {
  1552. // 490 TIM1_CCER2_CC4E=0;
  1553. ??TIM4_UPD_OVF_IRQHandler_7:
  1554. BRES L:0x525d, #0x4
  1555. // 491 BUS_SendInex=0;
  1556. MOV L:BUS_SendInex, #0x0
  1557. // 492 flag=0;
  1558. MOV L:??flag, #0x0
  1559. // 493 }
  1560. // 494 }
  1561. // 495
  1562. // 496 }
  1563. ??TIM4_UPD_OVF_IRQHandler_1:
  1564. CALLF L:?pop_l0
  1565. CFI ?b0 SameValue
  1566. CFI ?b1 SameValue
  1567. CFI ?b2 SameValue
  1568. CFI ?b3 SameValue
  1569. CFI CFA SP+9
  1570. IRET
  1571. CFI EndBlock cfiBlock13
  1572. REQUIRE _A_TIM4_SR
  1573. REQUIRE _A_TIM1_CCER2
  1574. SECTION `.near.bss`:DATA:REORDER:ROOT(0)
  1575. ??flag:
  1576. DS8 1
  1577. // 497 //===================外部IO下降沿中断事件中断响应函数=====================
  1578. // 498 #pragma vector=0x07
  1579. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  1580. CFI Block cfiBlock14 Using cfiCommon1
  1581. CFI Function EXTI_PORTC_IRQHandler
  1582. CODE
  1583. // 499 __interrupt void EXTI_PORTC_IRQHandler(void)
  1584. // 500 {
  1585. EXTI_PORTC_IRQHandler:
  1586. _interrupt_7:
  1587. CALLF L:?push_w0
  1588. CFI ?b1 Frame(CFA, -9)
  1589. CFI ?b0 Frame(CFA, -10)
  1590. CFI CFA SP+11
  1591. // 501 unsigned int i=0;
  1592. CLRW X
  1593. // 502 //===========================================
  1594. // 503 i=TIM2_CNTRH;
  1595. LD A, L:0x530c
  1596. CLRW Y
  1597. LD YL, A
  1598. LDW X, Y
  1599. // 504 i=(i<<8)+TIM2_CNTRL;
  1600. CLR A
  1601. RLWA X, A
  1602. LD A, L:0x530d
  1603. CLRW Y
  1604. LD YL, A
  1605. LDW S:?w0, Y
  1606. ADDW X, S:?w0
  1607. // 505 //===========================================
  1608. // 506 if(BUS_RevIndex==0)
  1609. LD A, L:BUS_RevIndex
  1610. CP A, #0x0
  1611. JRNE L:??EXTI_PORTC_IRQHandler_0
  1612. // 507 {
  1613. // 508 //===========================================
  1614. // 509 // BUS_RevOverTime=200; //接收200ms超时
  1615. // 510 Bus_RevFlag=0; //清除接收标志位
  1616. MOV L:Bus_RevFlag, #0x0
  1617. // 511 //===========================================
  1618. // 512 if((i>400)&&(i<750))
  1619. SUBW X, #0x191
  1620. CPW X, #0x15d
  1621. JRNC L:??EXTI_PORTC_IRQHandler_1
  1622. // 513 {
  1623. // 514 BUS_RevIndex=2;
  1624. MOV L:BUS_RevIndex, #0x2
  1625. JRA L:??EXTI_PORTC_IRQHandler_2
  1626. // 515
  1627. // 516 }
  1628. // 517 else
  1629. // 518 {
  1630. // 519 BUS_RevIndex=0;
  1631. ??EXTI_PORTC_IRQHandler_1:
  1632. MOV L:BUS_RevIndex, #0x0
  1633. JRA L:??EXTI_PORTC_IRQHandler_2
  1634. // 520 }
  1635. // 521 }
  1636. // 522 else if(BUS_RevIndex==1)
  1637. ??EXTI_PORTC_IRQHandler_0:
  1638. LD A, L:BUS_RevIndex
  1639. CP A, #0x1
  1640. JRNE L:??EXTI_PORTC_IRQHandler_3
  1641. // 523 {
  1642. // 524 if((i>400)&&(i<750))
  1643. SUBW X, #0x191
  1644. CPW X, #0x15d
  1645. JRNC L:??EXTI_PORTC_IRQHandler_4
  1646. // 525 {
  1647. // 526 BUS_RevIndex=2;
  1648. MOV L:BUS_RevIndex, #0x2
  1649. JRA L:??EXTI_PORTC_IRQHandler_2
  1650. // 527 }
  1651. // 528 else
  1652. // 529 {
  1653. // 530 BUS_RevIndex=0;
  1654. ??EXTI_PORTC_IRQHandler_4:
  1655. MOV L:BUS_RevIndex, #0x0
  1656. JRA L:??EXTI_PORTC_IRQHandler_2
  1657. // 531 }
  1658. // 532 }
  1659. // 533 else if(BUS_RevIndex<26)
  1660. ??EXTI_PORTC_IRQHandler_3:
  1661. LD A, L:BUS_RevIndex
  1662. CP A, #0x1a
  1663. JRNC L:??EXTI_PORTC_IRQHandler_2
  1664. // 534 {
  1665. // 535 BUS_RevBuf[BUS_RevIndex-2]=i;
  1666. LD A, L:BUS_RevIndex
  1667. CLRW Y
  1668. LD YL, A
  1669. SLLW Y
  1670. ADDW Y, #BUS_RevBuf - 4
  1671. LDW (Y), X
  1672. // 536 BUS_RevIndex++;
  1673. LD A, L:BUS_RevIndex
  1674. ADD A, #0x1
  1675. LD L:BUS_RevIndex, A
  1676. // 537 }
  1677. // 538 //===========================================
  1678. // 539 TIM2_CNTRH=0x00; //初值
  1679. ??EXTI_PORTC_IRQHandler_2:
  1680. MOV L:0x530c, #0x0
  1681. // 540 TIM2_CNTRL=0x00;
  1682. MOV L:0x530d, #0x0
  1683. // 541 }
  1684. CALLF L:?pop_w0
  1685. CFI ?b0 SameValue
  1686. CFI ?b1 SameValue
  1687. CFI CFA SP+9
  1688. IRET
  1689. CFI EndBlock cfiBlock14
  1690. REQUIRE TIM2_CNTRH
  1691. REQUIRE TIM2_CNTRL
  1692. // 542
  1693. // 543
  1694. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  1695. CFI Block cfiBlock15 Using cfiCommon0
  1696. CFI Function BUS_SendData
  1697. CODE
  1698. // 544 void BUS_SendData(unsigned char Length)
  1699. // 545 {
  1700. BUS_SendData:
  1701. LD S:?b2, A
  1702. // 546 // 添加发送前的状态检查
  1703. // 547 if(BUS_SendInex > 0) {
  1704. LD A, L:BUS_SendInex
  1705. CP A, #0x0
  1706. JRNE L:??BUS_SendData_0
  1707. // 548 return; // 如果上一次发送未完成,直接返回
  1708. // 549 }
  1709. // 550
  1710. // 551 unsigned char i=0,checksum=0;
  1711. CLR S:?b0
  1712. CLR S:?b1
  1713. // 552 //======================================================
  1714. // 553 checksum=0;
  1715. CLR A
  1716. LD S:?b1, A
  1717. // 554 BUS_SendCmd[Length-1]&=0x0F;
  1718. CLRW X
  1719. EXG A, XL
  1720. LD A, S:?b2
  1721. EXG A, XL
  1722. ADDW X, #BUS_SendCmd - 1
  1723. LD A, (X)
  1724. AND A, #0xf
  1725. CLRW X
  1726. EXG A, XL
  1727. LD A, S:?b2
  1728. EXG A, XL
  1729. ADDW X, #BUS_SendCmd - 1
  1730. LD (X), A
  1731. // 555 for(i=0;i<Length;i++)
  1732. CLR A
  1733. LD S:?b0, A
  1734. JRA L:??BUS_SendData_1
  1735. // 556 {
  1736. // 557 checksum+=BUS_SendCmd[i];
  1737. ??BUS_SendData_2:
  1738. CLRW X
  1739. EXG A, XL
  1740. LD A, S:?b0
  1741. EXG A, XL
  1742. LD A, (L:BUS_SendCmd,X)
  1743. ADD A, S:?b1
  1744. LD S:?b1, A
  1745. // 558 }
  1746. LD A, S:?b0
  1747. ADD A, #0x1
  1748. LD S:?b0, A
  1749. ??BUS_SendData_1:
  1750. LD A, S:?b0
  1751. CP A, S:?b2
  1752. JRC L:??BUS_SendData_2
  1753. // 559 BUS_SendCmd[Length-1]|=((checksum&0x0F)<<4);
  1754. CLRW X
  1755. EXG A, XL
  1756. LD A, S:?b2
  1757. EXG A, XL
  1758. ADDW X, #BUS_SendCmd - 1
  1759. LD A, S:?b1
  1760. SWAP A
  1761. AND A, #0xf0
  1762. OR A, (X)
  1763. CLRW X
  1764. EXG A, XL
  1765. LD A, S:?b2
  1766. EXG A, XL
  1767. ADDW X, #BUS_SendCmd - 1
  1768. LD (X), A
  1769. // 560 //计算校验值
  1770. // 561 //======================================================
  1771. // 562
  1772. // 563 for(i=0;i<Length;i++)
  1773. CLR S:?b0
  1774. JRA L:??BUS_SendData_3
  1775. // 564 {
  1776. // 565 BUS_SendingCmd[i]=BUS_SendCmd[i];
  1777. ??BUS_SendData_4:
  1778. CLRW X
  1779. EXG A, XL
  1780. LD A, S:?b0
  1781. EXG A, XL
  1782. LD A, (L:BUS_SendCmd,X)
  1783. CLRW X
  1784. EXG A, XL
  1785. LD A, S:?b0
  1786. EXG A, XL
  1787. LD (L:BUS_SendingCmd,X), A
  1788. // 566 }
  1789. LD A, S:?b0
  1790. ADD A, #0x1
  1791. LD S:?b0, A
  1792. ??BUS_SendData_3:
  1793. LD A, S:?b0
  1794. CP A, S:?b2
  1795. JRC L:??BUS_SendData_4
  1796. // 567 BUS_SendInex=1;
  1797. MOV L:BUS_SendInex, #0x1
  1798. // 568 }
  1799. ??BUS_SendData_0:
  1800. RETF
  1801. CFI EndBlock cfiBlock15
  1802. // 569
  1803. // 570
  1804. SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
  1805. CFI Block cfiBlock16 Using cfiCommon0
  1806. CFI Function main
  1807. CODE
  1808. // 571 int main( void )
  1809. // 572 {
  1810. main:
  1811. CALLF L:?push_l2
  1812. CFI ?b11 Frame(CFA, -3)
  1813. CFI ?b10 Frame(CFA, -4)
  1814. CFI ?b9 Frame(CFA, -5)
  1815. CFI ?b8 Frame(CFA, -6)
  1816. CFI CFA SP+7
  1817. PUSH S:?b12
  1818. CFI ?b12 Frame(CFA, -7)
  1819. CFI CFA SP+8
  1820. // 573 static unsigned long KeySentTime=0;
  1821. // 574 unsigned char i;
  1822. // 575 unsigned long TurnOnDelay=3600000; //上电延时60分钟,自动进入工作模式
  1823. LDW X, #0xee80
  1824. LDW S:?w5, X
  1825. LDW X, #0x36
  1826. LDW S:?w4, X
  1827. // 576 unsigned char TurnOnMode=0;
  1828. CLR S:?b12
  1829. // 577 //========================================================
  1830. // 578 STM8_Init();
  1831. CALLF STM8_Init
  1832. // 579 GPIO_EXTI_Init();
  1833. CALLF GPIO_EXTI_Init
  1834. // 580 #ifndef tim2Led
  1835. // 581 TIM2_Init();
  1836. CALLF TIM2_Init
  1837. // 582 #endif
  1838. // 583 GPIO_LED_Init();
  1839. CALLF GPIO_LED_Init
  1840. // 584 TIM4_1ms_Init();
  1841. CALLF TIM4_1ms_Init
  1842. // 585 GPIO_KEY_Init();
  1843. CALLF GPIO_KEY_Init
  1844. // 586 TIM1_PWM_Init();
  1845. CALLF TIM1_PWM_Init
  1846. // 587 #ifdef tim2Led
  1847. // 588 TIM2_PWM_Init();
  1848. // 589 #endif
  1849. // 590
  1850. // 591 SysVar_Init();
  1851. CALLF SysVar_Init
  1852. // 592
  1853. // 593 //========================================================
  1854. // 594 asm("rim"); //改变主程序软件优先级"开启中断"
  1855. rim
  1856. JRA L:??main_0
  1857. // 595 while(1)
  1858. // 596 {
  1859. // 597 if ((TurnOnDelay<LocalTime)&&(TurnOnMode==0))
  1860. // 598 {
  1861. // 599 RunMode=1;
  1862. // 600 Bus_SendLength=26; //总线发送长度,在正常工作模式时,为26 (3byes*8+2)
  1863. // 601 TurnOnMode=0xFF;
  1864. // 602 Ledswitch=0;
  1865. // 603 }
  1866. // 604 //====================================================
  1867. // 605 BUS_Rev_Tick();
  1868. // 606 GPIO_LED_Tick();
  1869. // 607 GPIO_KEY_Tick();
  1870. // 608 //===================================================
  1871. // 609 if(RunMode==0)
  1872. // 610 {
  1873. // 611 if(KEY0==2)
  1874. // 612 {
  1875. // 613 BUS_SendCmd[0]=Addrp[0];
  1876. // 614 BUS_SendCmd[1]=Addrp[1];
  1877. // 615 for(i=0;i<15;i++)
  1878. // 616 {
  1879. // 617 BUS_SendCmd[2+i]=DeviceSN[i];
  1880. // 618 }
  1881. // 619 BUS_SendCmd[17]=0x0E;
  1882. // 620 BUS_SendData(18);
  1883. // 621
  1884. // 622 //在注册模式下,用户按键,则发送注册码!
  1885. // 623 if(Ledswitch==0)
  1886. // 624 {
  1887. // 625 Ledswitch=2;
  1888. ??main_1:
  1889. MOV L:Ledswitch, #0x2
  1890. // 626 }
  1891. ??main_0:
  1892. LDW X, #LocalTime
  1893. CALLF L:?mov_l0_l2
  1894. CALLF L:?ucmp32_c_l0_0x
  1895. JRNC L:??main_2
  1896. TNZ S:?b12
  1897. JRNE L:??main_2
  1898. MOV L:RunMode, #0x1
  1899. MOV L:Bus_SendLength, #0x1a
  1900. MOV S:?b12, #0xff
  1901. MOV L:Ledswitch, #0x0
  1902. ??main_2:
  1903. CALLF BUS_Rev_Tick
  1904. CALLF GPIO_LED_Tick
  1905. CALLF GPIO_KEY_Tick
  1906. LD A, L:RunMode
  1907. CP A, #0x0
  1908. JRNE L:??main_3
  1909. LD A, L:KEY
  1910. CP A, #0x2
  1911. JRNE L:??main_0
  1912. LD A, [L:Addrp.w]
  1913. LD L:BUS_SendCmd, A
  1914. LDW X, L:Addrp
  1915. INCW X
  1916. LD A, (X)
  1917. LD L:BUS_SendCmd + 1, A
  1918. CLR S:?b0
  1919. JRA L:??main_4
  1920. ??main_5:
  1921. CLRW X
  1922. EXG A, XL
  1923. LD A, S:?b0
  1924. EXG A, XL
  1925. ADDW X, #BUS_SendCmd + 2
  1926. CLRW Y
  1927. EXG A, YL
  1928. LD A, S:?b0
  1929. EXG A, YL
  1930. LD A, (L:DeviceSN,Y)
  1931. LD (X), A
  1932. LD A, S:?b0
  1933. ADD A, #0x1
  1934. LD S:?b0, A
  1935. ??main_4:
  1936. LD A, S:?b0
  1937. CP A, #0xf
  1938. JRC L:??main_5
  1939. MOV L:BUS_SendCmd + 17, #0xe
  1940. LD A, #0x12
  1941. CALLF BUS_SendData
  1942. LD A, L:Ledswitch
  1943. CP A, #0x0
  1944. JRNE ??lb_0
  1945. JP L:??main_1
  1946. // 627 else
  1947. // 628 {
  1948. // 629 Ledswitch=0;
  1949. ??lb_0:
  1950. MOV L:Ledswitch, #0x0
  1951. JP L:??main_0
  1952. // 630 }
  1953. // 631 }
  1954. // 632 }
  1955. // 633 else
  1956. // 634 {
  1957. // 635 // 重发逻辑放在最前面处理
  1958. // 636 if ((BUS_SendCnt) && (LocalTime> KeySentTime)) { //重发逻辑
  1959. ??main_3:
  1960. LD A, L:BUS_SendCnt
  1961. CP A, #0x0
  1962. JREQ L:??main_6
  1963. LDW Y, #LocalTime
  1964. LDW X, #??KeySentTime
  1965. CALLF L:?load32_l0_0x
  1966. LDW X, Y
  1967. CALLF L:?ucmp32_c_l0_0x
  1968. JRNC L:??main_6
  1969. // 637 KeySentTime = LocalTime +1000;
  1970. LDW X, #0x3e8
  1971. LDW S:?w1, X
  1972. CLRW X
  1973. LDW S:?w0, X
  1974. LDW X, #LocalTime
  1975. CALLF L:?add32_l0_l0_0x
  1976. LDW X, #??KeySentTime
  1977. CALLF L:?load32_0x_l0
  1978. // 638 BUS_SendCnt--;
  1979. LD A, L:BUS_SendCnt
  1980. ADD A, #0xff
  1981. LD L:BUS_SendCnt, A
  1982. // 639 BUS_SendCmd[0]=Addrp[0];
  1983. LD A, [L:Addrp.w]
  1984. LD L:BUS_SendCmd, A
  1985. // 640 BUS_SendCmd[1]=Addrp[1];
  1986. LDW X, L:Addrp
  1987. INCW X
  1988. LD A, (X)
  1989. LD L:BUS_SendCmd + 1, A
  1990. // 641 BUS_SendCmd[2]=CurrentCmd; // 使用记录的命令类型
  1991. LD A, L:CurrentCmd
  1992. LD L:BUS_SendCmd + 2, A
  1993. // 642 BUS_SendData(3);
  1994. LD A, #0x3
  1995. CALLF BUS_SendData
  1996. JP L:??main_0
  1997. // 643 }
  1998. // 644 // 按键处理
  1999. // 645 else if(KEY0==2) //紧急呼叫
  2000. ??main_6:
  2001. LD A, L:KEY
  2002. CP A, #0x2
  2003. JRNE L:??main_7
  2004. // 646 {
  2005. // 647 BUS_SendCmd[0]=Addrp[0];
  2006. LD A, [L:Addrp.w]
  2007. LD L:BUS_SendCmd, A
  2008. // 648 BUS_SendCmd[1]=Addrp[1];
  2009. LDW X, L:Addrp
  2010. INCW X
  2011. LD A, (X)
  2012. LD L:BUS_SendCmd + 1, A
  2013. // 649 BUS_SendCmd[2]=0x0C;
  2014. MOV L:BUS_SendCmd + 2, #0xc
  2015. // 650 BUS_SendData(3);
  2016. LD A, #0x3
  2017. CALLF BUS_SendData
  2018. // 651 Ledswitch=2;
  2019. MOV L:Ledswitch, #0x2
  2020. // 652 BUS_SendCnt = 9;
  2021. MOV L:BUS_SendCnt, #0x9
  2022. // 653 KeySentTime = LocalTime +1000;
  2023. LDW X, #0x3e8
  2024. LDW S:?w1, X
  2025. CLRW X
  2026. LDW S:?w0, X
  2027. LDW X, #LocalTime
  2028. CALLF L:?add32_l0_l0_0x
  2029. LDW X, #??KeySentTime
  2030. CALLF L:?load32_0x_l0
  2031. // 654 CurrentCmd = 0x0C; // 记录当前命令类型
  2032. MOV L:CurrentCmd, #0xc
  2033. JP L:??main_0
  2034. // 655 }
  2035. // 656 else if(KEY0==3) //长按关闭指示灯
  2036. ??main_7:
  2037. LD A, L:KEY
  2038. CP A, #0x3
  2039. JRNE L:??main_8
  2040. // 657 {
  2041. // 658 Ledswitch=0; //dwd190802
  2042. MOV L:Ledswitch, #0x0
  2043. JP L:??main_0
  2044. // 659 }
  2045. // 660 else if(KEY1==2) //紧急呼叫取消
  2046. ??main_8:
  2047. LD A, L:KEY + 1
  2048. CP A, #0x2
  2049. JREQ ??lb_1
  2050. JP L:??main_0
  2051. // 661 {
  2052. // 662 if(CurrentCmd == 0x0C) { // 只有在紧急呼叫状态下才能取消
  2053. ??lb_1:
  2054. LD A, L:CurrentCmd
  2055. CP A, #0xc
  2056. JREQ ??lb_2
  2057. JP L:??main_0
  2058. // 663 BUS_SendCmd[0]=Addrp[0];
  2059. ??lb_2:
  2060. LD A, [L:Addrp.w]
  2061. LD L:BUS_SendCmd, A
  2062. // 664 BUS_SendCmd[1]=Addrp[1];
  2063. LDW X, L:Addrp
  2064. INCW X
  2065. LD A, (X)
  2066. LD L:BUS_SendCmd + 1, A
  2067. // 665 BUS_SendCmd[2]=0x07;
  2068. MOV L:BUS_SendCmd + 2, #0x7
  2069. // 666 BUS_SendData(3);
  2070. LD A, #0x3
  2071. CALLF BUS_SendData
  2072. // 667 Ledswitch=0;
  2073. MOV L:Ledswitch, #0x0
  2074. // 668 BUS_SendCnt = 9;
  2075. MOV L:BUS_SendCnt, #0x9
  2076. // 669 KeySentTime = LocalTime +1000;
  2077. LDW X, #0x3e8
  2078. LDW S:?w1, X
  2079. CLRW X
  2080. LDW S:?w0, X
  2081. LDW X, #LocalTime
  2082. CALLF L:?add32_l0_l0_0x
  2083. LDW X, #??KeySentTime
  2084. CALLF L:?load32_0x_l0
  2085. // 670 CurrentCmd = 0x07; // 记录当前命令类型
  2086. MOV L:CurrentCmd, #0x7
  2087. JP L:??main_0
  2088. CFI EndBlock cfiBlock16
  2089. // 671 }
  2090. // 672 }
  2091. // 673 }
  2092. // 674 }
  2093. // 675 }
  2094. SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
  2095. ??KeySentTime:
  2096. DS8 4
  2097. SECTION VREGS:DATA:REORDER:NOROOT(0)
  2098. END
  2099. //
  2100. // 1 757 bytes in section .far_func.text
  2101. // 157 bytes in section .near.bss
  2102. // 2 bytes in section .near.data
  2103. // 42 bytes in section .near.noinit (abs)
  2104. // 54 bytes in section .near.rodata
  2105. //
  2106. // 1 757 bytes of CODE memory
  2107. // 54 bytes of CONST memory
  2108. // 159 bytes of DATA memory (+ 42 bytes shared)
  2109. //
  2110. //Errors: none
  2111. //Warnings: 3