123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208 |
- ///////////////////////////////////////////////////////////////////////////////
- //
- // IAR C/C++ Compiler V2.10.4.157 for STM8 23/Feb/2025 18:40:36
- // Copyright 2010-2015 IAR Systems AB.
- //
- // Source file =
- // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\main.c
- // Command line =
- // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\main.c
- // -e -Ol --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa
- // --no_cross_call --debug --code_model medium --data_model medium -o
- // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\Obj\
- // --dlib_config "D:\Program Files (x86)\IAR Systems\Embedded Workbench
- // 7.0\stm8\LIB\dlstm8mmn.h" -D NDEBUG -lC
- // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\List\
- // -lA
- // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\List\
- // --vregs 16
- // List file =
- // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\Release\List\main.s
- //
- ///////////////////////////////////////////////////////////////////////////////
- RTMODEL "__SystemLibrary", "DLib"
- RTMODEL "__code_model", "medium_or_large"
- RTMODEL "__core", "stm8"
- RTMODEL "__data_model", "medium"
- RTMODEL "__rt_version", "4"
- EXTERN ?add32_l0_l0_0x
- EXTERN ?b0
- EXTERN ?b1
- EXTERN ?b12
- EXTERN ?b2
- EXTERN ?inc32_l0_l0
- EXTERN ?load32_0x_l0
- EXTERN ?load32_l0_0x
- EXTERN ?mov_l0_l2
- EXTERN ?pop_l0
- EXTERN ?pop_w0
- EXTERN ?push_l0
- EXTERN ?push_l2
- EXTERN ?push_w0
- EXTERN ?sdiv16_x_x_y
- EXTERN ?sll16_x_x_a
- EXTERN ?smod16_y_x_y
- EXTERN ?sra16_x_x_a
- EXTERN ?ucmp32_c_l0_0x
- EXTERN ?w0
- EXTERN ?w1
- EXTERN ?w4
- EXTERN ?w5
- PUBLIC Addrp
- PUBLIC BUS_RevBuf
- PUBLIC BUS_RevData
- PUBLIC BUS_RevIndex
- PUBLIC BUS_RevOverTime
- PUBLIC BUS_Rev_Cmd
- PUBLIC BUS_Rev_Tick
- PUBLIC BUS_SendCmd
- PUBLIC BUS_SendCnt
- PUBLIC BUS_SendData
- PUBLIC BUS_SendInex
- PUBLIC BUS_SendingCmd
- PUBLIC BlankStr
- PUBLIC Bus_RevFlag
- PUBLIC Bus_SendLength
- PUBLIC CurrentCmd
- PUBLIC DeviceAddr
- PUBLIC DeviceSN
- PUBLIC EXTI_PORTC_IRQHandler
- PUBLIC GPIO_EXTI_Init
- PUBLIC GPIO_KEY_Init
- PUBLIC GPIO_KEY_Tick
- PUBLIC GPIO_LED_Init
- PUBLIC GPIO_LED_Tick
- PUBLIC KEY
- PUBLIC Ledswitch
- PUBLIC LocalTime
- PUBLIC RunMode
- PUBLIC STM8_Init
- PUBLIC SysVar_Init
- PUBLIC TIM1_ARRH
- PUBLIC TIM1_ARRL
- PUBLIC TIM1_CCR4H
- PUBLIC TIM1_CCR4L
- PUBLIC TIM1_PSCRH
- PUBLIC TIM1_PSCRL
- PUBLIC TIM1_PWM_Init
- PUBLIC TIM2_ARRH
- PUBLIC TIM2_ARRL
- PUBLIC TIM2_CCR2H
- PUBLIC TIM2_CCR2L
- PUBLIC TIM2_CNTRH
- PUBLIC TIM2_CNTRL
- PUBLIC TIM2_Init
- PUBLIC TIM2_PWM_Init
- PUBLIC TIM4_1ms_Init
- PUBLIC TIM4_ARR
- PUBLIC TIM4_CNTR
- PUBLIC TIM4_UPD_OVF_IRQHandler
- PUBLIC _A_CLK_CKDIVR
- PUBLIC _A_EXTI_CR1
- PUBLIC _A_PA_CR1
- PUBLIC _A_PA_CR2
- PUBLIC _A_PA_DDR
- PUBLIC _A_PA_IDR
- PUBLIC _A_PC_CR1
- PUBLIC _A_PC_CR2
- PUBLIC _A_PC_DDR
- PUBLIC _A_PD_CR1
- PUBLIC _A_PD_CR2
- PUBLIC _A_PD_DDR
- PUBLIC _A_PD_IDR
- PUBLIC _A_PD_ODR
- PUBLIC _A_TIM1_BKR
- PUBLIC _A_TIM1_CCER2
- PUBLIC _A_TIM1_CCMR4
- PUBLIC _A_TIM1_CR1
- PUBLIC _A_TIM1_OISR
- PUBLIC _A_TIM2_CCER1
- PUBLIC _A_TIM2_CCMR2
- PUBLIC _A_TIM2_CR1
- PUBLIC _A_TIM2_IER
- PUBLIC _A_TIM2_PSCR
- PUBLIC _A_TIM4_CR1
- PUBLIC _A_TIM4_IER
- PUBLIC _A_TIM4_PSCR
- PUBLIC _A_TIM4_SR
- PUBLIC _interrupt_25
- PUBLIC _interrupt_7
- PUBLIC main
-
- CFI Names cfiNames0
- CFI StackFrame CFA SP DATA
- CFI Resource A:8, XL:8, XH:8, YL:8, YH:8, SP:16, CC:8, PC:24, PCL:8
- CFI Resource PCH:8, PCE:8, ?b0:8, ?b1:8, ?b2:8, ?b3:8, ?b4:8, ?b5:8
- CFI Resource ?b6:8, ?b7:8, ?b8:8, ?b9:8, ?b10:8, ?b11:8, ?b12:8, ?b13:8
- CFI Resource ?b14:8, ?b15:8
- CFI ResourceParts PC PCE, PCH, PCL
- CFI EndNames cfiNames0
-
- CFI Common cfiCommon0 Using cfiNames0
- CFI CodeAlign 1
- CFI DataAlign 1
- CFI ReturnAddress PC CODE
- CFI CFA SP+3
- CFI A Undefined
- CFI XL Undefined
- CFI XH Undefined
- CFI YL Undefined
- CFI YH Undefined
- CFI CC Undefined
- CFI PC Frame(CFA, -2)
- CFI PCL Undefined
- CFI PCH Undefined
- CFI PCE Undefined
- CFI ?b0 Undefined
- CFI ?b1 Undefined
- CFI ?b2 Undefined
- CFI ?b3 Undefined
- CFI ?b4 Undefined
- CFI ?b5 Undefined
- CFI ?b6 Undefined
- CFI ?b7 Undefined
- CFI ?b8 SameValue
- CFI ?b9 SameValue
- CFI ?b10 SameValue
- CFI ?b11 SameValue
- CFI ?b12 SameValue
- CFI ?b13 SameValue
- CFI ?b14 SameValue
- CFI ?b15 SameValue
- CFI EndCommon cfiCommon0
-
-
- CFI Common cfiCommon1 Using cfiNames0
- CFI CodeAlign 1
- CFI DataAlign 1
- CFI ReturnAddress PC CODE
- CFI CFA SP+9
- CFI A Frame(CFA, -7)
- CFI XL Frame(CFA, -5)
- CFI XH Frame(CFA, -6)
- CFI YL Frame(CFA, -3)
- CFI YH Frame(CFA, -4)
- CFI CC Frame(CFA, -8)
- CFI PC Frame(CFA, -2)
- CFI PCL Undefined
- CFI PCH Undefined
- CFI PCE Undefined
- CFI ?b0 SameValue
- CFI ?b1 SameValue
- CFI ?b2 SameValue
- CFI ?b3 SameValue
- CFI ?b4 SameValue
- CFI ?b5 SameValue
- CFI ?b6 SameValue
- CFI ?b7 SameValue
- CFI ?b8 SameValue
- CFI ?b9 SameValue
- CFI ?b10 SameValue
- CFI ?b11 SameValue
- CFI ?b12 SameValue
- CFI ?b13 SameValue
- CFI ?b14 SameValue
- CFI ?b15 SameValue
- CFI EndCommon cfiCommon1
-
- // D:\紧急按钮更新取消按键-2025-0120\紧急按钮更新取消按键-2025-0120\源代码\模拟紧急按钮V1_STM8(250120)\main.c
- // 1 ////////////////////////////////////////////////////////////////////////////////
- // 2
- // 3
- // 4
- // 5
- // 6
- // 7 //#define IsDebug
- // 8 //#define tim2Led
- // 9
- // 10 //#define RxTestDebug
- // 11
- // 12 ////////////////////////////////////////////////////////////////////////////////
- // 13
- // 14
- // 15 #include <iostm8s003f3.h>
- ASEGN `.near.noinit`:DATA:NOROOT,05001H
- SECTION_GROUP _A_PA_IDR
- // union <unnamed> const volatile _A_PA_IDR
- _A_PA_IDR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05002H
- SECTION_GROUP _A_PA_DDR
- // union <unnamed> volatile _A_PA_DDR
- _A_PA_DDR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05003H
- SECTION_GROUP _A_PA_CR1
- // union <unnamed> volatile _A_PA_CR1
- _A_PA_CR1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05004H
- SECTION_GROUP _A_PA_CR2
- // union <unnamed> volatile _A_PA_CR2
- _A_PA_CR2:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0500cH
- SECTION_GROUP _A_PC_DDR
- // union <unnamed> volatile _A_PC_DDR
- _A_PC_DDR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0500dH
- SECTION_GROUP _A_PC_CR1
- // union <unnamed> volatile _A_PC_CR1
- _A_PC_CR1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0500eH
- SECTION_GROUP _A_PC_CR2
- // union <unnamed> volatile _A_PC_CR2
- _A_PC_CR2:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0500fH
- SECTION_GROUP _A_PD_ODR
- // union <unnamed> volatile _A_PD_ODR
- _A_PD_ODR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05010H
- SECTION_GROUP _A_PD_IDR
- // union <unnamed> const volatile _A_PD_IDR
- _A_PD_IDR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05011H
- SECTION_GROUP _A_PD_DDR
- // union <unnamed> volatile _A_PD_DDR
- _A_PD_DDR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05012H
- SECTION_GROUP _A_PD_CR1
- // union <unnamed> volatile _A_PD_CR1
- _A_PD_CR1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05013H
- SECTION_GROUP _A_PD_CR2
- // union <unnamed> volatile _A_PD_CR2
- _A_PD_CR2:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,050a0H
- SECTION_GROUP _A_EXTI_CR1
- // union <unnamed> volatile _A_EXTI_CR1
- _A_EXTI_CR1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,050c6H
- SECTION_GROUP _A_CLK_CKDIVR
- // union <unnamed> volatile _A_CLK_CKDIVR
- _A_CLK_CKDIVR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05250H
- SECTION_GROUP _A_TIM1_CR1
- // union <unnamed> volatile _A_TIM1_CR1
- _A_TIM1_CR1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0525bH
- SECTION_GROUP _A_TIM1_CCMR4
- // union <unnamed> volatile _A_TIM1_CCMR4
- _A_TIM1_CCMR4:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0525dH
- SECTION_GROUP _A_TIM1_CCER2
- // union <unnamed> volatile _A_TIM1_CCER2
- _A_TIM1_CCER2:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05260H
- SECTION_GROUP TIM1_PSCRH
- // unsigned char volatile TIM1_PSCRH
- TIM1_PSCRH:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05261H
- SECTION_GROUP TIM1_PSCRL
- // unsigned char volatile TIM1_PSCRL
- TIM1_PSCRL:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05262H
- SECTION_GROUP TIM1_ARRH
- // unsigned char volatile TIM1_ARRH
- TIM1_ARRH:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05263H
- SECTION_GROUP TIM1_ARRL
- // unsigned char volatile TIM1_ARRL
- TIM1_ARRL:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0526bH
- SECTION_GROUP TIM1_CCR4H
- // unsigned char volatile TIM1_CCR4H
- TIM1_CCR4H:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0526cH
- SECTION_GROUP TIM1_CCR4L
- // unsigned char volatile TIM1_CCR4L
- TIM1_CCR4L:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0526dH
- SECTION_GROUP _A_TIM1_BKR
- // union <unnamed> volatile _A_TIM1_BKR
- _A_TIM1_BKR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0526fH
- SECTION_GROUP _A_TIM1_OISR
- // union <unnamed> volatile _A_TIM1_OISR
- _A_TIM1_OISR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05300H
- SECTION_GROUP _A_TIM2_CR1
- // union <unnamed> volatile _A_TIM2_CR1
- _A_TIM2_CR1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05303H
- SECTION_GROUP _A_TIM2_IER
- // union <unnamed> volatile _A_TIM2_IER
- _A_TIM2_IER:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05308H
- SECTION_GROUP _A_TIM2_CCMR2
- // union <unnamed> volatile _A_TIM2_CCMR2
- _A_TIM2_CCMR2:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0530aH
- SECTION_GROUP _A_TIM2_CCER1
- // union <unnamed> volatile _A_TIM2_CCER1
- _A_TIM2_CCER1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0530cH
- SECTION_GROUP TIM2_CNTRH
- // unsigned char volatile TIM2_CNTRH
- TIM2_CNTRH:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0530dH
- SECTION_GROUP TIM2_CNTRL
- // unsigned char volatile TIM2_CNTRL
- TIM2_CNTRL:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0530eH
- SECTION_GROUP _A_TIM2_PSCR
- // union <unnamed> volatile _A_TIM2_PSCR
- _A_TIM2_PSCR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,0530fH
- SECTION_GROUP TIM2_ARRH
- // unsigned char volatile TIM2_ARRH
- TIM2_ARRH:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05310H
- SECTION_GROUP TIM2_ARRL
- // unsigned char volatile TIM2_ARRL
- TIM2_ARRL:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05313H
- SECTION_GROUP TIM2_CCR2H
- // unsigned char volatile TIM2_CCR2H
- TIM2_CCR2H:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05314H
- SECTION_GROUP TIM2_CCR2L
- // unsigned char volatile TIM2_CCR2L
- TIM2_CCR2L:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05340H
- SECTION_GROUP _A_TIM4_CR1
- // union <unnamed> volatile _A_TIM4_CR1
- _A_TIM4_CR1:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05343H
- SECTION_GROUP _A_TIM4_IER
- // union <unnamed> volatile _A_TIM4_IER
- _A_TIM4_IER:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05344H
- SECTION_GROUP _A_TIM4_SR
- // union <unnamed> volatile _A_TIM4_SR
- _A_TIM4_SR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05346H
- SECTION_GROUP TIM4_CNTR
- // unsigned char volatile TIM4_CNTR
- TIM4_CNTR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05347H
- SECTION_GROUP _A_TIM4_PSCR
- // union <unnamed> volatile _A_TIM4_PSCR
- _A_TIM4_PSCR:
- DS8 1
- ASEGN `.near.noinit`:DATA:NOROOT,05348H
- SECTION_GROUP TIM4_ARR
- // unsigned char volatile TIM4_ARR
- TIM4_ARR:
- DS8 1
- // 16
- // 17
- // 18
- // 19
- // 20
- // 21 #define KEY0 KEY[0] //按键
- // 22 #define KEY1 KEY[1] //紧急按钮取消按键
- // 23
- // 24 //==============================================================
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 25 __root unsigned int BUS_RevBuf[30];
- BUS_RevBuf:
- DS8 60
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 26 __root unsigned char BUS_RevIndex=0;
- BUS_RevIndex:
- DS8 1
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 27 __root unsigned char BUS_Rev_Cmd[3]; //总线接收
- BUS_Rev_Cmd:
- DS8 3
- // 28
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 29 __root unsigned int BUS_RevOverTime=0; //总线接收超时,200
- BUS_RevOverTime:
- DS8 2
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 30 __root unsigned char Bus_RevFlag=0; //总线接收成功
- Bus_RevFlag:
- DS8 1
- // 31 //==============================================================
- // 32
- SECTION `.near.data`:DATA:REORDER:ROOT(0)
- // 33 __root unsigned char Ledswitch=2; //RedLED开关
- Ledswitch:
- DC8 2
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 34 __root unsigned char KEY[2]={0}; //按键
- KEY:
- DS8 2
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 35 __root unsigned char CurrentCmd = 0; //当前命令类型
- CurrentCmd:
- DS8 1
- // 36
- // 37 //============================================
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 38 __root unsigned char BUS_SendInex=0;
- BUS_SendInex:
- DS8 1
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 39 __root unsigned char BUS_SendCmd[30]; //应用层发送数据
- BUS_SendCmd:
- DS8 30
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 40 __root unsigned char BUS_SendingCmd[30]; //定时器正在处理数据
- BUS_SendingCmd:
- DS8 30
- // 41 //==============================================================
- // 42
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 43 __root unsigned long LocalTime=0;
- LocalTime:
- DS8 4
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 44 __root unsigned char RunMode=0; //0:表示注册模式,>0表示正常工作模式
- RunMode:
- DS8 1
- SECTION `.near.data`:DATA:REORDER:ROOT(0)
- // 45 __root unsigned char Bus_SendLength=146; //总线发送长度,在注册模式时长度为
- Bus_SendLength:
- DC8 146
- // 46
- // 47 //==============================================================
- // 48
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 49 __root unsigned char BUS_SendCnt = 0; //重发计数
- BUS_SendCnt:
- DS8 1
- // 50
- // 51
- SECTION `.near.rodata`:CONST:REORDER:ROOT(0)
- // 52 __root const unsigned char BlankStr[28]="555555555555";
- BlankStr:
- DC8 "555555555555"
- DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- SECTION `.near.rodata`:CONST:REORDER:ROOT(0)
- // 53 __root const unsigned char DeviceSN[16]="SZFS20250120001";
- DeviceSN:
- DC8 "SZFS20250120001"
- SECTION `.near.rodata`:CONST:REORDER:ROOT(0)
- // 54 __root const unsigned char DeviceAddr[10]={0x31,0x08};
- DeviceAddr:
- DC8 49, 8, 0, 0, 0, 0, 0, 0, 0, 0
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- // 55 __root const unsigned char *Addrp=0;
- Addrp:
- DS8 2
- // 56
- // 57
- // 58
- // 59
- // 60
- // 61
- // 62 void SysVar_Init(void);
- // 63 void BUS_RevData(void);
- // 64 void GPIO_KEY_Tick(void);
- // 65 void BUS_Rev_Tick(void);
- // 66 void BUS_SendData(unsigned char Length);
- // 67 void GPIO_MIC_SW(unsigned char status);
- // 68 //============================================
- // 69
- // 70 #ifdef RxTestDebug
- // 71 unsigned long rxtestDebugcnt=0;
- // 72 #endif
- // 73
- // 74 //==============================================================
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock0 Using cfiCommon0
- CFI Function SysVar_Init
- CODE
- // 75 void SysVar_Init(void)
- // 76 {
- // 77
- // 78 Addrp=DeviceAddr;
- SysVar_Init:
- LDW X, #DeviceAddr
- LDW L:Addrp, X
- // 79 RunMode=0;
- MOV L:RunMode, #0x0
- // 80 }
- RETF
- CFI EndBlock cfiBlock0
- // 81 //==============================================================
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock1 Using cfiCommon0
- CFI Function STM8_Init
- CODE
- // 82 void STM8_Init(void)
- // 83 {
- // 84 CLK_CKDIVR =0x18; //16M/8=2M
- STM8_Init:
- MOV L:0x50c6, #0x18
- // 85 }
- RETF
- CFI EndBlock cfiBlock1
- REQUIRE _A_CLK_CKDIVR
- // 86 //==============================================================
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock2 Using cfiCommon0
- CFI Function GPIO_EXTI_Init
- CODE
- // 87 void GPIO_EXTI_Init(void)
- // 88 {
- // 89 EXTI_CR1_PCIS=1; //PC口为下降沿中断
- GPIO_EXTI_Init:
- LD A, L:0x50a0
- AND A, #0xcf
- OR A, #0x10
- LD L:0x50a0, A
- // 90
- // 91 PC_DDR_DDR7=0;
- BRES L:0x500c, #0x7
- // 92 PC_CR1_C17=1;
- BSET L:0x500d, #0x7
- // 93 PC_CR2_C27=1;
- BSET L:0x500e, #0x7
- // 94 }
- RETF
- CFI EndBlock cfiBlock2
- REQUIRE _A_EXTI_CR1
- REQUIRE _A_PC_DDR
- REQUIRE _A_PC_CR1
- REQUIRE _A_PC_CR2
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock3 Using cfiCommon0
- CFI Function TIM2_Init
- CODE
- // 95 void TIM2_Init(void)
- // 96 {
- // 97 TIM2_IER = 0x00; //禁止中断
- TIM2_Init:
- MOV L:0x5303, #0x0
- // 98 TIM2_PSCR = 0x04; //设置预分频寄存器数
- MOV L:0x530e, #0x4
- // 99
- // 100 TIM2_ARRH =0xFF;
- MOV L:0x530f, #0xff
- // 101 TIM2_ARRL =0xFF;
- MOV L:0x5310, #0xff
- // 102
- // 103 TIM2_CNTRH=0x00; //初值
- MOV L:0x530c, #0x0
- // 104 TIM2_CNTRL=0x00;
- MOV L:0x530d, #0x0
- // 105 TIM2_CR1 |= 0x01; //开启定时器
- BSET L:0x5300, #0x0
- // 106 }
- RETF
- CFI EndBlock cfiBlock3
- REQUIRE _A_TIM2_IER
- REQUIRE _A_TIM2_PSCR
- REQUIRE TIM2_ARRH
- REQUIRE TIM2_ARRL
- REQUIRE TIM2_CNTRH
- REQUIRE TIM2_CNTRL
- REQUIRE _A_TIM2_CR1
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock4 Using cfiCommon0
- CFI Function GPIO_KEY_Init
- CODE
- // 107 void GPIO_KEY_Init(void)
- // 108 {
- // 109 //==============================================
- // 110 PA_DDR_DDR1=0;
- GPIO_KEY_Init:
- BRES L:0x5002, #0x1
- // 111 PA_DDR_DDR2=0;
- BRES L:0x5002, #0x2
- // 112 PA_CR1_C11=1;
- BSET L:0x5003, #0x1
- // 113 PA_CR1_C12=1;
- BSET L:0x5003, #0x2
- // 114 PA_CR2_C21=0;
- BRES L:0x5004, #0x1
- // 115 PA_CR2_C22=0;
- BRES L:0x5004, #0x2
- // 116 //==============================================
- // 117
- // 118 //==============================================
- // 119 PD_DDR_DDR4=0; // 设置为输入模式
- BRES L:0x5011, #0x4
- // 120 PD_CR1_C14=1; // 带上拉电阻输入
- BSET L:0x5012, #0x4
- // 121 PD_CR2_C24=0; // 禁用外部中断,只用查询方式
- BRES L:0x5013, #0x4
- // 122
- // 123 //==============================================
- // 124
- // 125
- // 126 KEY0=0;
- MOV L:KEY, #0x0
- // 127 KEY1=0;
- MOV L:KEY + 1, #0x0
- // 128 BUS_SendCnt =0;
- MOV L:BUS_SendCnt, #0x0
- // 129 }
- RETF
- CFI EndBlock cfiBlock4
- REQUIRE _A_PA_DDR
- REQUIRE _A_PA_CR1
- REQUIRE _A_PA_CR2
- REQUIRE _A_PD_DDR
- REQUIRE _A_PD_CR1
- REQUIRE _A_PD_CR2
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock5 Using cfiCommon0
- CFI Function GPIO_LED_Init
- CODE
- // 130 void GPIO_LED_Init(void)
- // 131 {
- // 132 PD_DDR_DDR3 =1; //输出引脚
- GPIO_LED_Init:
- BSET L:0x5011, #0x3
- // 133 PD_CR1_C13 =1; //推挽输出模式
- BSET L:0x5012, #0x3
- // 134 PD_ODR_ODR3 =0; //输出低电平,LED灭
- BRES L:0x500f, #0x3
- // 135
- // 136 Ledswitch=2;
- MOV L:Ledswitch, #0x2
- // 137 }
- RETF
- CFI EndBlock cfiBlock5
- REQUIRE _A_PD_DDR
- REQUIRE _A_PD_CR1
- REQUIRE _A_PD_ODR
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock6 Using cfiCommon0
- CFI Function TIM4_1ms_Init
- CODE
- // 138 void TIM4_1ms_Init(void)
- // 139 {
- // 140 TIM4_PSCR = 0x03; //设置预分频寄存器数
- TIM4_1ms_Init:
- MOV L:0x5347, #0x3
- // 141 //共8种分频比例1(0),2(1),4(2),8(3),16(4),32(5),64(6),128(7)
- // 142 TIM4_ARR = 0xF9; //设置自动重装载寄存器
- MOV L:0x5348, #0xf9
- // 143
- // 144 TIM4_IER = 0x01; //开启TIM4更新事件中断使能
- MOV L:0x5343, #0x1
- // 145 TIM4_CNTR = 0xF9; //配置TIM4定时器初值,使得开始计数时发生第一次溢出
- MOV L:0x5346, #0xf9
- // 146
- // 147 TIM4_CR1_CEN= 0x01; //使能计数器功能TIM4_CR1寄存器CEN位为"1"
- BSET L:0x5340, #0x0
- // 148 }
- RETF
- CFI EndBlock cfiBlock6
- REQUIRE _A_TIM4_PSCR
- REQUIRE TIM4_ARR
- REQUIRE _A_TIM4_IER
- REQUIRE TIM4_CNTR
- REQUIRE _A_TIM4_CR1
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock7 Using cfiCommon0
- CFI Function TIM1_PWM_Init
- CODE
- // 149 void TIM1_PWM_Init(void)
- // 150 {
- // 151 PC_DDR_DDR4 =1;
- TIM1_PWM_Init:
- BSET L:0x500c, #0x4
- // 152 //=============================================
- // 153 TIM1_PSCRH =0;
- MOV L:0x5260, #0x0
- // 154 TIM1_PSCRL =0; //定时器1 时钟不分频
- MOV L:0x5261, #0x0
- // 155
- // 156 TIM1_ARRH =0;
- MOV L:0x5262, #0x0
- // 157 TIM1_ARRL =19; //定时器1的PWM输出频率:2000 000/20=100K
- MOV L:0x5263, #0x13
- // 158
- // 159 TIM1_CR1 &=0x8F; //向上计数,边沿对齐模式
- LD A, L:0x5250
- AND A, #0x8f
- LD L:0x5250, A
- // 160 //=============================================
- // 161 TIM1_CCR4H =0;
- MOV L:0x526b, #0x0
- // 162 TIM1_CCR4L =10;
- MOV L:0x526c, #0xa
- // 163 TIM1_CCMR4 =0x60; //配置CH4为PWM模式1
- MOV L:0x525b, #0x60
- // 164 TIM1_CCER2 &=0x1F; //配置CH4高电平有效
- LD A, L:0x525d
- AND A, #0x1f
- LD L:0x525d, A
- // 165 //TIM1_CCER2 |=0x10; //使能CH4输出
- // 166 TIM1_OISR &=0xBF; //空闲输出低电平
- BRES L:0x526f, #0x6
- // 167 //通道4:100K_50% PWM输出
- // 168 //=============================================
- // 169 TIM1_CR1 |=0x01;
- BSET L:0x5250, #0x0
- // 170 TIM1_BKR =0x80;
- MOV L:0x526d, #0x80
- // 171
- // 172 }
- RETF
- CFI EndBlock cfiBlock7
- REQUIRE _A_PC_DDR
- REQUIRE TIM1_PSCRH
- REQUIRE TIM1_PSCRL
- REQUIRE TIM1_ARRH
- REQUIRE TIM1_ARRL
- REQUIRE _A_TIM1_CR1
- REQUIRE TIM1_CCR4H
- REQUIRE TIM1_CCR4L
- REQUIRE _A_TIM1_CCMR4
- REQUIRE _A_TIM1_CCER2
- REQUIRE _A_TIM1_OISR
- REQUIRE _A_TIM1_BKR
- // 173
- // 174
- // 175
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock8 Using cfiCommon0
- CFI Function TIM2_PWM_Init
- CODE
- // 176 void TIM2_PWM_Init(void)
- // 177 {
- // 178 // TIM2_IER = 0x04;
- // 179 // PD_DDR_DDR3 =1;
- // 180 //=============================================
- // 181
- // 182
- // 183
- // 184 TIM2_CCMR2 = TIM2_CCMR2 | 0x70; //配置CH2为PWM模式1
- TIM2_PWM_Init:
- LD A, L:0x5308
- OR A, #0x70
- LD L:0x5308, A
- // 185 // TIM2_CCER1 &=0x1F; //配置CH2高电平有效
- // 186 TIM2_CCER1 = TIM2_CCER1 | 0x30; //使能CH2输出
- LD A, L:0x530a
- OR A, #0x30
- LD L:0x530a, A
- // 187
- // 188 TIM2_ARRH =0;
- MOV L:0x530f, #0x0
- // 189 TIM2_ARRL = 19; //定时器1的PWM输出频率:2000 000/100=20K
- MOV L:0x5310, #0x13
- // 190
- // 191 // TIM2_CR1 &=0x8F; //向上计数,边沿对齐模式
- // 192 //=============================================
- // 193 TIM2_CCR2H =0x0;
- MOV L:0x5313, #0x0
- // 194 TIM2_CCR2L =0x00;
- MOV L:0x5314, #0x0
- // 195
- // 196 TIM2_PSCR =0; //0x03
- MOV L:0x530e, #0x0
- // 197 // TIM2_OISR &=0xBF; //空闲输出低电平
- // 198 //通道2:1K_50% PWM输出
- // 199 //=============================================
- // 200 TIM2_CR1 = TIM2_CR1 |0x01;
- BSET L:0x5300, #0x0
- // 201 // TIM2_BKR =0x80;
- // 202
- // 203 }
- RETF
- CFI EndBlock cfiBlock8
- REQUIRE _A_TIM2_CCMR2
- REQUIRE _A_TIM2_CCER1
- REQUIRE TIM2_ARRH
- REQUIRE TIM2_ARRL
- REQUIRE TIM2_CCR2H
- REQUIRE TIM2_CCR2L
- REQUIRE _A_TIM2_PSCR
- REQUIRE _A_TIM2_CR1
- // 204
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock9 Using cfiCommon0
- CFI Function GPIO_LED_Tick
- CODE
- // 205 void GPIO_LED_Tick(void)
- // 206 {
- // 207 static unsigned long flashTime=0;
- // 208 static unsigned char ledflag=0;
- // 209 static unsigned char ledflagbak=0;
- // 210 #ifdef tim2Led
- // 211
- // 212 if(Ledswitch==1)
- // 213 {
- // 214 //PD_ODR_ODR3=1;
- // 215 TIM2_CCR2H =0;
- // 216 TIM2_CCR2L =19;
- // 217 ledflag =0;
- // 218 }
- // 219 else if (Ledswitch==2)
- // 220 {
- // 221 if(LocalTime>flashTime)
- // 222 {
- // 223 flashTime=LocalTime+100;
- // 224 ledflag ++;
- // 225
- // 226 }
- // 227 if (ledflagbak == ledflag ) {
- // 228 return;
- // 229
- // 230 }
- // 231 ledflagbak = ledflag ;
- // 232 if(ledflag >39 ) {
- // 233 ledflag =0;
- // 234 }
- // 235 TIM2_CCR2H =0x0;
- // 236 if (ledflag > 19 ) {
- // 237 TIM2_CCR2L = (ledflag-19) ;
- // 238 } else if (ledflag > 15 ) {
- // 239 TIM2_CCR2L = (19-ledflag) ;
- // 240 ledflag = 20;
- // 241 }
- // 242 else {
- // 243 TIM2_CCR2L = (19-ledflag) ;
- // 244 }
- // 245
- // 246 }
- // 247 else
- // 248 {
- // 249 TIM2_CCR2H =0x0;
- // 250 TIM2_CCR2L =0x0;
- // 251 ledflag =0;
- // 252 // PD_ODR_ODR3=0;
- // 253 }
- // 254 #else
- // 255
- // 256 if(Ledswitch==1)
- GPIO_LED_Tick:
- LD A, L:Ledswitch
- CP A, #0x1
- JRNE L:??GPIO_LED_Tick_0
- // 257 {
- // 258 PD_ODR_ODR3=1;
- BSET L:0x500f, #0x3
- RETF
- // 259
- // 260 }
- // 261 else if (Ledswitch==2)
- ??GPIO_LED_Tick_0:
- LD A, L:Ledswitch
- CP A, #0x2
- JRNE L:??GPIO_LED_Tick_1
- // 262 {
- // 263 PD_ODR_ODR3=1;
- BSET L:0x500f, #0x3
- RETF
- // 264 }
- // 265 else
- // 266 {
- // 267 PD_ODR_ODR3=0;
- ??GPIO_LED_Tick_1:
- BRES L:0x500f, #0x3
- // 268 }
- // 269
- // 270
- // 271
- // 272
- // 273 #endif
- // 274 }
- RETF
- CFI EndBlock cfiBlock9
- REQUIRE _A_PD_ODR
- // 275
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock10 Using cfiCommon0
- CFI Function GPIO_KEY_Tick
- CODE
- // 276 void GPIO_KEY_Tick(void)
- // 277 {
- // 278 static unsigned long keyTime1=0;
- // 279 static unsigned char keyResTime =0;
- // 280 static unsigned long keyTime2=0;
- // 281 static unsigned char keyResTime2 =0;
- // 282
- // 283 // KEY0 处理
- // 284 if(PA_IDR_IDR1==1) //没有按下
- GPIO_KEY_Tick:
- LD A, L:0x5001
- SRL A
- AND A, #0x1
- CP A, #0x0
- JREQ L:??GPIO_KEY_Tick_0
- // 285 {
- // 286 if(KEY0==1)
- LD A, L:KEY
- CP A, #0x1
- JRNE L:??GPIO_KEY_Tick_1
- // 287 {
- // 288 keyResTime ++;
- LD A, L:??keyResTime
- ADD A, #0x1
- LD L:??keyResTime, A
- // 289 if (keyResTime >= 200) {
- LD A, L:??keyResTime
- CP A, #0xc8
- JRC L:??GPIO_KEY_Tick_2
- // 290 KEY0=2;
- MOV L:KEY, #0x2
- JRA L:??GPIO_KEY_Tick_2
- // 291 }
- // 292 }
- // 293 else
- // 294 {
- // 295 KEY0=0;
- ??GPIO_KEY_Tick_1:
- MOV L:KEY, #0x0
- // 296 }
- // 297 keyTime1=LocalTime+120;
- ??GPIO_KEY_Tick_2:
- LDW X, #0x78
- LDW S:?w1, X
- CLRW X
- LDW S:?w0, X
- LDW X, #LocalTime
- CALLF L:?add32_l0_l0_0x
- LDW X, #??keyTime1
- CALLF L:?load32_0x_l0
- JRA L:??GPIO_KEY_Tick_3
- // 298 }
- // 299 else if(LocalTime>keyTime1)
- ??GPIO_KEY_Tick_0:
- LDW Y, #LocalTime
- LDW X, #??keyTime1
- CALLF L:?load32_l0_0x
- LDW X, Y
- CALLF L:?ucmp32_c_l0_0x
- JRNC L:??GPIO_KEY_Tick_4
- // 300 {
- // 301 KEY0=1;
- MOV L:KEY, #0x1
- // 302 keyResTime = 0;
- MOV L:??keyResTime, #0x0
- JRA L:??GPIO_KEY_Tick_3
- // 303 }
- // 304 else {
- // 305 keyResTime = 0;
- ??GPIO_KEY_Tick_4:
- MOV L:??keyResTime, #0x0
- // 306 }
- // 307
- // 308 // KEY1 处理
- // 309 if(PD_IDR_IDR4==1) //没有按下
- ??GPIO_KEY_Tick_3:
- LD A, L:0x5010
- SWAP A
- AND A, #0xf
- AND A, #0x1
- CP A, #0x0
- JREQ L:??GPIO_KEY_Tick_5
- // 310 {
- // 311 if(KEY1==1)
- LD A, L:KEY + 1
- CP A, #0x1
- JRNE L:??GPIO_KEY_Tick_6
- // 312 {
- // 313 keyResTime2 ++;
- LD A, L:??keyResTime2
- ADD A, #0x1
- LD L:??keyResTime2, A
- // 314 if (keyResTime2 >= 200) {
- LD A, L:??keyResTime2
- CP A, #0xc8
- JRC L:??GPIO_KEY_Tick_7
- // 315 KEY1=2;
- MOV L:KEY + 1, #0x2
- JRA L:??GPIO_KEY_Tick_7
- // 316 }
- // 317 }
- // 318 else
- // 319 {
- // 320 KEY1=0;
- ??GPIO_KEY_Tick_6:
- MOV L:KEY + 1, #0x0
- // 321 }
- // 322 keyTime2=LocalTime+120;
- ??GPIO_KEY_Tick_7:
- LDW X, #0x78
- LDW S:?w1, X
- CLRW X
- LDW S:?w0, X
- LDW X, #LocalTime
- CALLF L:?add32_l0_l0_0x
- LDW X, #??keyTime2
- JPF L:?load32_0x_l0
- // 323 }
- // 324 else if(LocalTime>keyTime2)
- ??GPIO_KEY_Tick_5:
- LDW Y, #LocalTime
- LDW X, #??keyTime2
- CALLF L:?load32_l0_0x
- LDW X, Y
- CALLF L:?ucmp32_c_l0_0x
- JRNC L:??GPIO_KEY_Tick_8
- // 325 {
- // 326 KEY1=1;
- MOV L:KEY + 1, #0x1
- // 327 keyResTime2 = 0;
- MOV L:??keyResTime2, #0x0
- RETF
- // 328 }
- // 329 else {
- // 330 keyResTime2 = 0;
- ??GPIO_KEY_Tick_8:
- MOV L:??keyResTime2, #0x0
- // 331 }
- // 332 }
- RETF
- CFI EndBlock cfiBlock10
- REQUIRE _A_PA_IDR
- REQUIRE _A_PD_IDR
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??keyTime1:
- DS8 4
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??keyResTime:
- DS8 1
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??keyTime2:
- DS8 4
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??keyResTime2:
- DS8 1
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock11 Using cfiCommon0
- CFI Function BUS_RevData
- CODE
- // 333 void BUS_RevData(void)
- // 334 {
- // 335 //=======================================
- // 336 if(((BUS_Rev_Cmd[0]!=Addrp[0])||(BUS_Rev_Cmd[1]!=Addrp[1]))&&(BUS_Rev_Cmd[2]!=0x0E))
- BUS_RevData:
- LD A, [L:Addrp.w]
- CP A, L:BUS_Rev_Cmd
- JRNE L:??BUS_RevData_0
- LDW X, L:Addrp
- INCW X
- LD A, (X)
- CP A, L:BUS_Rev_Cmd + 1
- JREQ L:??BUS_RevData_1
- ??BUS_RevData_0:
- LD A, L:BUS_Rev_Cmd + 2
- CP A, #0xe
- JREQ L:??BUS_RevData_1
- // 337 {
- // 338 if((BUS_Rev_Cmd[0]!=0xFF)||(BUS_Rev_Cmd[1]!=0xFF))
- LD A, L:BUS_Rev_Cmd
- CP A, #0xff
- JRNE L:??BUS_RevData_2
- LD A, L:BUS_Rev_Cmd + 1
- CP A, #0xff
- JREQ L:??BUS_RevData_1
- // 339 return;
- ??BUS_RevData_2:
- RETF
- // 340 }
- // 341
- // 342 //=======================================
- // 343 switch(BUS_Rev_Cmd[2])
- ??BUS_RevData_1:
- LD A, L:BUS_Rev_Cmd + 2
- TNZ A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_3
- DEC A
- JREQ L:??BUS_RevData_4
- SUB A, #0x4
- JREQ L:??BUS_RevData_5
- DEC A
- JREQ L:??BUS_RevData_6
- JRA L:??BUS_RevData_3
- // 344 {
- // 345 case 0:
- // 346 break;
- // 347 case 1:
- // 348 break;
- // 349 case 2:
- // 350 break;
- // 351 case 3:
- // 352 break;
- // 353 case 4: //主机呼叫分机,或主机应答分机
- // 354 break;
- // 355 case 5: //主机挂断分机
- // 356 break;
- // 357 case 6: //广播模式
- // 358 break;
- // 359 case 7: //打开门灯
- // 360 break;
- // 361 case 8: //关闭门灯
- // 362 break;
- // 363 case 9: //取消紧急呼叫
- // 364 RunMode=1;
- ??BUS_RevData_4:
- MOV L:RunMode, #0x1
- // 365 Ledswitch=0;
- MOV L:Ledswitch, #0x0
- // 366 BUS_SendCnt =0;
- MOV L:BUS_SendCnt, #0x0
- // 367 break;
- JRA L:??BUS_RevData_3
- // 368 case 13: //注册命令
- // 369 BUS_SendCmd[0]=Addrp[0];
- ??BUS_RevData_5:
- LD A, [L:Addrp.w]
- LD L:BUS_SendCmd, A
- // 370 BUS_SendCmd[1]=Addrp[1];
- LDW X, L:Addrp
- INCW X
- LD A, (X)
- LD L:BUS_SendCmd + 1, A
- // 371 BUS_SendCmd[2]=0x0D;
- MOV L:BUS_SendCmd + 2, #0xd
- // 372 BUS_SendData(3);
- LD A, #0x3
- CALLF BUS_SendData
- // 373 break;
- JRA L:??BUS_RevData_3
- // 374 case 14:
- // 375 if(BUS_Rev_Cmd[1]=='Y') //转换盒已经注册过
- ??BUS_RevData_6:
- LD A, L:BUS_Rev_Cmd + 1
- CP A, #0x59
- JRNE L:??BUS_RevData_7
- // 376 {
- // 377 Ledswitch=0;
- MOV L:Ledswitch, #0x0
- // 378 RunMode=1;
- MOV L:RunMode, #0x1
- // 379 Bus_SendLength=26; //总线发送长度,在正常工作模式时,为26 (3byes*8+2)
- MOV L:Bus_SendLength, #0x1a
- JRA L:??BUS_RevData_3
- // 380
- // 381 }
- // 382 else
- // 383 {
- // 384 RunMode=0; //0:表示注册模式,>0表示正常工作模式
- ??BUS_RevData_7:
- MOV L:RunMode, #0x0
- // 385 Bus_SendLength=146;
- MOV L:Bus_SendLength, #0x92
- // 386 }
- // 387 break;
- // 388 }
- // 389 Bus_RevFlag=0xFF;
- ??BUS_RevData_3:
- MOV L:Bus_RevFlag, #0xff
- // 390 }
- RETF
- CFI EndBlock cfiBlock11
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock12 Using cfiCommon0
- CFI Function BUS_Rev_Tick
- CODE
- // 391 void BUS_Rev_Tick(void)
- // 392 {
- // 393 static unsigned char i=0,j=0,k=0;
- // 394 if(BUS_RevIndex==26)
- BUS_Rev_Tick:
- LD A, L:BUS_RevIndex
- CP A, #0x1a
- JREQ ??lb_5
- JP L:??BUS_Rev_Tick_0
- // 395 {
- // 396 BUS_Rev_Cmd[0]=0;
- ??lb_5:
- MOV L:BUS_Rev_Cmd, #0x0
- // 397 BUS_Rev_Cmd[1]=0;
- MOV L:BUS_Rev_Cmd + 1, #0x0
- // 398 BUS_Rev_Cmd[2]=0;
- MOV L:BUS_Rev_Cmd + 2, #0x0
- // 399 for(k=0;k<24;k++)
- MOV L:??k, #0x0
- JRA L:??BUS_Rev_Tick_1
- // 400 {
- // 401 i=k / 8;
- ??BUS_Rev_Tick_2:
- LD A, L:??k
- MOV S:?b0, #0x8
- CLRW X
- LD XL, A
- LD A, S:?b0
- DIV X, A
- LD A, XL
- LD L:??i, A
- // 402 j=k % 8;
- LD A, L:??k
- MOV S:?b0, #0x8
- CLRW X
- LD XL, A
- LD A, S:?b0
- DIV X, A
- LD L:??j, A
- // 403 if ((BUS_RevBuf[k]>280)&&(BUS_RevBuf[k]<400))
- LD A, L:??k
- CLRW X
- LD XL, A
- SLLW X
- LDW X, (L:BUS_RevBuf,X)
- SUBW X, #0x119
- CPW X, #0x77
- JRNC L:??BUS_Rev_Tick_3
- // 404 {
- // 405 BUS_Rev_Cmd[i]|=(1<<j);
- LD A, L:??i
- CLRW Y
- LD YL, A
- LD A, L:??j
- CLRW X
- INCW X
- CALLF L:?sll16_x_x_a
- LD A, XL
- LDW X, Y
- OR A, (L:BUS_Rev_Cmd,X)
- LD S:?b0, A
- LD A, L:??i
- CLRW X
- LD XL, A
- LD A, S:?b0
- LD (L:BUS_Rev_Cmd,X), A
- // 406 }
- // 407 }
- ??BUS_Rev_Tick_3:
- LD A, L:??k
- ADD A, #0x1
- LD L:??k, A
- ??BUS_Rev_Tick_1:
- LD A, L:??k
- CP A, #0x18
- JRC L:??BUS_Rev_Tick_2
- // 408 BUS_RevIndex=0;
- MOV L:BUS_RevIndex, #0x0
- // 409 i=(BUS_Rev_Cmd[0]+ BUS_Rev_Cmd[1]+(BUS_Rev_Cmd[2]&0x0F))&0x0F;
- LD A, L:BUS_Rev_Cmd + 1
- ADD A, L:BUS_Rev_Cmd
- ADD A, L:BUS_Rev_Cmd + 2
- AND A, #0xf
- LD L:??i, A
- // 410 j=(BUS_Rev_Cmd[2]>>4)&0x0F;
- LD A, L:BUS_Rev_Cmd + 2
- SWAP A
- AND A, #0xf
- LD L:??j, A
- // 411
- // 412 #ifdef RxTestDebug
- // 413 if(i==j)
- // 414 {
- // 415 BUS_Rev_Cmd[2]=BUS_Rev_Cmd[2]&0x0F;
- // 416 BUS_RevData();
- // 417 } else {
- // 418 rxtestDebugcnt ++;
- // 419 if (rxtestDebugcnt > 10) //200ms,100s
- // 420 {
- // 421 Ledswitch=1;
- // 422 }
- // 423
- // 424 }
- // 425 #else
- // 426
- // 427 BUS_Rev_Cmd[2]=BUS_Rev_Cmd[2]&0x0F;
- LD A, L:BUS_Rev_Cmd + 2
- AND A, #0xf
- LD L:BUS_Rev_Cmd + 2, A
- // 428 BUS_RevData();
- CALLF BUS_RevData
- // 429 #endif
- // 430
- // 431
- // 432
- // 433 }
- // 434 }
- ??BUS_Rev_Tick_0:
- RETF
- CFI EndBlock cfiBlock12
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??i:
- DS8 1
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??j:
- DS8 1
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??k:
- DS8 1
- // 435 //===================TIM4计数溢出更新事件中断响应函数======================
- // 436 #pragma vector=0x19
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock13 Using cfiCommon1
- CFI Function TIM4_UPD_OVF_IRQHandler
- CODE
- // 437 __interrupt void TIM4_UPD_OVF_IRQHandler(void)
- // 438 {
- TIM4_UPD_OVF_IRQHandler:
- _interrupt_25:
- PUSH CC
- CFI CFA SP+10
- POP A
- CFI CFA SP+9
- AND A, #0xbf
- PUSH A
- CFI CFA SP+10
- POP CC
- CFI CFA SP+9
- CALLF L:?push_l0
- CFI ?b3 Frame(CFA, -9)
- CFI ?b2 Frame(CFA, -10)
- CFI ?b1 Frame(CFA, -11)
- CFI ?b0 Frame(CFA, -12)
- CFI CFA SP+13
- // 439 __root static unsigned char flag=0;
- // 440 unsigned char i,j;
- // 441
- // 442 TIM4_SR = 0; //清除更新事件中断标志位UIF
- MOV L:0x5344, #0x0
- // 443 LocalTime++;
- LDW X, #LocalTime
- CALLF L:?load32_l0_0x
- CALLF L:?inc32_l0_l0
- LDW X, #LocalTime
- CALLF L:?load32_0x_l0
- // 444 // if(BUS_RevOverTime>0)BUS_RevOverTime--;
- // 445 //===================================
- // 446 if(flag>1)
- LD A, L:??flag
- CP A, #0x2
- JRC L:??TIM4_UPD_OVF_IRQHandler_0
- // 447 {
- // 448 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9; //总线为低电平
- BSET L:0x525d, #0x4
- // 449 flag--;
- LD A, L:??flag
- ADD A, #0xff
- LD L:??flag, A
- // 450 return;
- JP L:??TIM4_UPD_OVF_IRQHandler_1
- // 451 }
- // 452 else if(flag==1)
- ??TIM4_UPD_OVF_IRQHandler_0:
- LD A, L:??flag
- CP A, #0x1
- JRNE L:??TIM4_UPD_OVF_IRQHandler_2
- // 453 {
- // 454 TIM1_CCER2_CC4E=0; //GPIOA->BRR = GPIO_Pin_9; //总线为高电平
- BRES L:0x525d, #0x4
- // 455 flag=0;
- MOV L:??flag, #0x0
- // 456 return;
- JP L:??TIM4_UPD_OVF_IRQHandler_1
- // 457 }
- // 458 //===================================
- // 459 if((BUS_SendInex>0)&&(flag==0))
- ??TIM4_UPD_OVF_IRQHandler_2:
- LD A, L:BUS_SendInex
- CP A, #0x0
- JRNE ??lb_3
- JP L:??TIM4_UPD_OVF_IRQHandler_1
- ??lb_3:
- LD A, L:??flag
- CP A, #0x0
- JREQ ??lb_4
- JP L:??TIM4_UPD_OVF_IRQHandler_1
- // 460 {
- // 461 if(BUS_SendInex==1) //起始位:总线5ms低电平
- ??lb_4:
- LD A, L:BUS_SendInex
- CP A, #0x1
- JRNE L:??TIM4_UPD_OVF_IRQHandler_3
- // 462 {
- // 463 flag=5;
- MOV L:??flag, #0x5
- // 464 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9;
- BSET L:0x525d, #0x4
- // 465 BUS_SendInex++;
- LD A, L:BUS_SendInex
- ADD A, #0x1
- LD L:BUS_SendInex, A
- JP L:??TIM4_UPD_OVF_IRQHandler_1
- // 466 }
- // 467 else if(BUS_SendInex<Bus_SendLength)
- ??TIM4_UPD_OVF_IRQHandler_3:
- LD A, L:BUS_SendInex
- CP A, L:Bus_SendLength
- JRNC L:??TIM4_UPD_OVF_IRQHandler_4
- // 468 {
- // 469 i=(BUS_SendInex-2)/8;
- LD A, L:BUS_SendInex
- CLRW X
- LD XL, A
- DECW X
- DECW X
- LDW Y, #0x8
- CALLF L:?sdiv16_x_x_y
- EXG A, XL
- LD S:?b1, A
- EXG A, XL
- // 470 j=(BUS_SendInex-2)%8;
- LD A, L:BUS_SendInex
- CLRW X
- LD XL, A
- DECW X
- DECW X
- LDW Y, #0x8
- CALLF L:?smod16_y_x_y
- EXG A, YL
- LD S:?b0, A
- EXG A, YL
- // 471 if(((BUS_SendingCmd[i]>>j)&0x01)>0) //数据位1:2ms低电平
- CLRW X
- EXG A, XL
- LD A, S:?b1
- EXG A, XL
- LD A, (L:BUS_SendingCmd,X)
- CLRW X
- LD XL, A
- LD A, S:?b0
- CALLF L:?sra16_x_x_a
- LD A, XL
- AND A, #0x1
- CP A, #0x1
- JRC L:??TIM4_UPD_OVF_IRQHandler_5
- // 472 {
- // 473 flag=2;
- MOV L:??flag, #0x2
- JRA L:??TIM4_UPD_OVF_IRQHandler_6
- // 474 }
- // 475 else //数据位0:1ms低电平
- // 476 {
- // 477 flag=1;
- ??TIM4_UPD_OVF_IRQHandler_5:
- MOV L:??flag, #0x1
- // 478 }
- // 479 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9;
- ??TIM4_UPD_OVF_IRQHandler_6:
- BSET L:0x525d, #0x4
- // 480 BUS_SendInex++;
- LD A, L:BUS_SendInex
- ADD A, #0x1
- LD L:BUS_SendInex, A
- JRA L:??TIM4_UPD_OVF_IRQHandler_1
- // 481 }
- // 482 else if(BUS_SendInex==Bus_SendLength)
- ??TIM4_UPD_OVF_IRQHandler_4:
- LD A, L:Bus_SendLength
- CP A, L:BUS_SendInex
- JRNE L:??TIM4_UPD_OVF_IRQHandler_7
- // 483 {
- // 484 flag=0;
- MOV L:??flag, #0x0
- // 485 TIM1_CCER2_CC4E=1; //GPIOA->BSRR = GPIO_Pin_9;
- BSET L:0x525d, #0x4
- // 486 BUS_SendInex++;
- LD A, L:BUS_SendInex
- ADD A, #0x1
- LD L:BUS_SendInex, A
- JRA L:??TIM4_UPD_OVF_IRQHandler_1
- // 487 }
- // 488 else
- // 489 {
- // 490 TIM1_CCER2_CC4E=0;
- ??TIM4_UPD_OVF_IRQHandler_7:
- BRES L:0x525d, #0x4
- // 491 BUS_SendInex=0;
- MOV L:BUS_SendInex, #0x0
- // 492 flag=0;
- MOV L:??flag, #0x0
- // 493 }
- // 494 }
- // 495
- // 496 }
- ??TIM4_UPD_OVF_IRQHandler_1:
- CALLF L:?pop_l0
- CFI ?b0 SameValue
- CFI ?b1 SameValue
- CFI ?b2 SameValue
- CFI ?b3 SameValue
- CFI CFA SP+9
- IRET
- CFI EndBlock cfiBlock13
- REQUIRE _A_TIM4_SR
- REQUIRE _A_TIM1_CCER2
- SECTION `.near.bss`:DATA:REORDER:ROOT(0)
- ??flag:
- DS8 1
- // 497 //===================外部IO下降沿中断事件中断响应函数=====================
- // 498 #pragma vector=0x07
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock14 Using cfiCommon1
- CFI Function EXTI_PORTC_IRQHandler
- CODE
- // 499 __interrupt void EXTI_PORTC_IRQHandler(void)
- // 500 {
- EXTI_PORTC_IRQHandler:
- _interrupt_7:
- CALLF L:?push_w0
- CFI ?b1 Frame(CFA, -9)
- CFI ?b0 Frame(CFA, -10)
- CFI CFA SP+11
- // 501 unsigned int i=0;
- CLRW X
- // 502 //===========================================
- // 503 i=TIM2_CNTRH;
- LD A, L:0x530c
- CLRW Y
- LD YL, A
- LDW X, Y
- // 504 i=(i<<8)+TIM2_CNTRL;
- CLR A
- RLWA X, A
- LD A, L:0x530d
- CLRW Y
- LD YL, A
- LDW S:?w0, Y
- ADDW X, S:?w0
- // 505 //===========================================
- // 506 if(BUS_RevIndex==0)
- LD A, L:BUS_RevIndex
- CP A, #0x0
- JRNE L:??EXTI_PORTC_IRQHandler_0
- // 507 {
- // 508 //===========================================
- // 509 // BUS_RevOverTime=200; //接收200ms超时
- // 510 Bus_RevFlag=0; //清除接收标志位
- MOV L:Bus_RevFlag, #0x0
- // 511 //===========================================
- // 512 if((i>400)&&(i<750))
- SUBW X, #0x191
- CPW X, #0x15d
- JRNC L:??EXTI_PORTC_IRQHandler_1
- // 513 {
- // 514 BUS_RevIndex=2;
- MOV L:BUS_RevIndex, #0x2
- JRA L:??EXTI_PORTC_IRQHandler_2
- // 515
- // 516 }
- // 517 else
- // 518 {
- // 519 BUS_RevIndex=0;
- ??EXTI_PORTC_IRQHandler_1:
- MOV L:BUS_RevIndex, #0x0
- JRA L:??EXTI_PORTC_IRQHandler_2
- // 520 }
- // 521 }
- // 522 else if(BUS_RevIndex==1)
- ??EXTI_PORTC_IRQHandler_0:
- LD A, L:BUS_RevIndex
- CP A, #0x1
- JRNE L:??EXTI_PORTC_IRQHandler_3
- // 523 {
- // 524 if((i>400)&&(i<750))
- SUBW X, #0x191
- CPW X, #0x15d
- JRNC L:??EXTI_PORTC_IRQHandler_4
- // 525 {
- // 526 BUS_RevIndex=2;
- MOV L:BUS_RevIndex, #0x2
- JRA L:??EXTI_PORTC_IRQHandler_2
- // 527 }
- // 528 else
- // 529 {
- // 530 BUS_RevIndex=0;
- ??EXTI_PORTC_IRQHandler_4:
- MOV L:BUS_RevIndex, #0x0
- JRA L:??EXTI_PORTC_IRQHandler_2
- // 531 }
- // 532 }
- // 533 else if(BUS_RevIndex<26)
- ??EXTI_PORTC_IRQHandler_3:
- LD A, L:BUS_RevIndex
- CP A, #0x1a
- JRNC L:??EXTI_PORTC_IRQHandler_2
- // 534 {
- // 535 BUS_RevBuf[BUS_RevIndex-2]=i;
- LD A, L:BUS_RevIndex
- CLRW Y
- LD YL, A
- SLLW Y
- ADDW Y, #BUS_RevBuf - 4
- LDW (Y), X
- // 536 BUS_RevIndex++;
- LD A, L:BUS_RevIndex
- ADD A, #0x1
- LD L:BUS_RevIndex, A
- // 537 }
- // 538 //===========================================
- // 539 TIM2_CNTRH=0x00; //初值
- ??EXTI_PORTC_IRQHandler_2:
- MOV L:0x530c, #0x0
- // 540 TIM2_CNTRL=0x00;
- MOV L:0x530d, #0x0
- // 541 }
- CALLF L:?pop_w0
- CFI ?b0 SameValue
- CFI ?b1 SameValue
- CFI CFA SP+9
- IRET
- CFI EndBlock cfiBlock14
- REQUIRE TIM2_CNTRH
- REQUIRE TIM2_CNTRL
- // 542
- // 543
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock15 Using cfiCommon0
- CFI Function BUS_SendData
- CODE
- // 544 void BUS_SendData(unsigned char Length)
- // 545 {
- BUS_SendData:
- LD S:?b2, A
- // 546 // 添加发送前的状态检查
- // 547 if(BUS_SendInex > 0) {
- LD A, L:BUS_SendInex
- CP A, #0x0
- JRNE L:??BUS_SendData_0
- // 548 return; // 如果上一次发送未完成,直接返回
- // 549 }
- // 550
- // 551 unsigned char i=0,checksum=0;
- CLR S:?b0
- CLR S:?b1
- // 552 //======================================================
- // 553 checksum=0;
- CLR A
- LD S:?b1, A
- // 554 BUS_SendCmd[Length-1]&=0x0F;
- CLRW X
- EXG A, XL
- LD A, S:?b2
- EXG A, XL
- ADDW X, #BUS_SendCmd - 1
- LD A, (X)
- AND A, #0xf
- CLRW X
- EXG A, XL
- LD A, S:?b2
- EXG A, XL
- ADDW X, #BUS_SendCmd - 1
- LD (X), A
- // 555 for(i=0;i<Length;i++)
- CLR A
- LD S:?b0, A
- JRA L:??BUS_SendData_1
- // 556 {
- // 557 checksum+=BUS_SendCmd[i];
- ??BUS_SendData_2:
- CLRW X
- EXG A, XL
- LD A, S:?b0
- EXG A, XL
- LD A, (L:BUS_SendCmd,X)
- ADD A, S:?b1
- LD S:?b1, A
- // 558 }
- LD A, S:?b0
- ADD A, #0x1
- LD S:?b0, A
- ??BUS_SendData_1:
- LD A, S:?b0
- CP A, S:?b2
- JRC L:??BUS_SendData_2
- // 559 BUS_SendCmd[Length-1]|=((checksum&0x0F)<<4);
- CLRW X
- EXG A, XL
- LD A, S:?b2
- EXG A, XL
- ADDW X, #BUS_SendCmd - 1
- LD A, S:?b1
- SWAP A
- AND A, #0xf0
- OR A, (X)
- CLRW X
- EXG A, XL
- LD A, S:?b2
- EXG A, XL
- ADDW X, #BUS_SendCmd - 1
- LD (X), A
- // 560 //计算校验值
- // 561 //======================================================
- // 562
- // 563 for(i=0;i<Length;i++)
- CLR S:?b0
- JRA L:??BUS_SendData_3
- // 564 {
- // 565 BUS_SendingCmd[i]=BUS_SendCmd[i];
- ??BUS_SendData_4:
- CLRW X
- EXG A, XL
- LD A, S:?b0
- EXG A, XL
- LD A, (L:BUS_SendCmd,X)
- CLRW X
- EXG A, XL
- LD A, S:?b0
- EXG A, XL
- LD (L:BUS_SendingCmd,X), A
- // 566 }
- LD A, S:?b0
- ADD A, #0x1
- LD S:?b0, A
- ??BUS_SendData_3:
- LD A, S:?b0
- CP A, S:?b2
- JRC L:??BUS_SendData_4
- // 567 BUS_SendInex=1;
- MOV L:BUS_SendInex, #0x1
- // 568 }
- ??BUS_SendData_0:
- RETF
- CFI EndBlock cfiBlock15
- // 569
- // 570
- SECTION `.far_func.text`:CODE:REORDER:NOROOT(0)
- CFI Block cfiBlock16 Using cfiCommon0
- CFI Function main
- CODE
- // 571 int main( void )
- // 572 {
- main:
- CALLF L:?push_l2
- CFI ?b11 Frame(CFA, -3)
- CFI ?b10 Frame(CFA, -4)
- CFI ?b9 Frame(CFA, -5)
- CFI ?b8 Frame(CFA, -6)
- CFI CFA SP+7
- PUSH S:?b12
- CFI ?b12 Frame(CFA, -7)
- CFI CFA SP+8
- // 573 static unsigned long KeySentTime=0;
- // 574 unsigned char i;
- // 575 unsigned long TurnOnDelay=3600000; //上电延时60分钟,自动进入工作模式
- LDW X, #0xee80
- LDW S:?w5, X
- LDW X, #0x36
- LDW S:?w4, X
- // 576 unsigned char TurnOnMode=0;
- CLR S:?b12
- // 577 //========================================================
- // 578 STM8_Init();
- CALLF STM8_Init
- // 579 GPIO_EXTI_Init();
- CALLF GPIO_EXTI_Init
- // 580 #ifndef tim2Led
- // 581 TIM2_Init();
- CALLF TIM2_Init
- // 582 #endif
- // 583 GPIO_LED_Init();
- CALLF GPIO_LED_Init
- // 584 TIM4_1ms_Init();
- CALLF TIM4_1ms_Init
- // 585 GPIO_KEY_Init();
- CALLF GPIO_KEY_Init
- // 586 TIM1_PWM_Init();
- CALLF TIM1_PWM_Init
- // 587 #ifdef tim2Led
- // 588 TIM2_PWM_Init();
- // 589 #endif
- // 590
- // 591 SysVar_Init();
- CALLF SysVar_Init
- // 592
- // 593 //========================================================
- // 594 asm("rim"); //改变主程序软件优先级"开启中断"
- rim
- JRA L:??main_0
- // 595 while(1)
- // 596 {
- // 597 if ((TurnOnDelay<LocalTime)&&(TurnOnMode==0))
- // 598 {
- // 599 RunMode=1;
- // 600 Bus_SendLength=26; //总线发送长度,在正常工作模式时,为26 (3byes*8+2)
- // 601 TurnOnMode=0xFF;
- // 602 Ledswitch=0;
- // 603 }
- // 604 //====================================================
- // 605 BUS_Rev_Tick();
- // 606 GPIO_LED_Tick();
- // 607 GPIO_KEY_Tick();
- // 608 //===================================================
- // 609 if(RunMode==0)
- // 610 {
- // 611 if(KEY0==2)
- // 612 {
- // 613 BUS_SendCmd[0]=Addrp[0];
- // 614 BUS_SendCmd[1]=Addrp[1];
- // 615 for(i=0;i<15;i++)
- // 616 {
- // 617 BUS_SendCmd[2+i]=DeviceSN[i];
- // 618 }
- // 619 BUS_SendCmd[17]=0x0E;
- // 620 BUS_SendData(18);
- // 621
- // 622 //在注册模式下,用户按键,则发送注册码!
- // 623 if(Ledswitch==0)
- // 624 {
- // 625 Ledswitch=2;
- ??main_1:
- MOV L:Ledswitch, #0x2
- // 626 }
- ??main_0:
- LDW X, #LocalTime
- CALLF L:?mov_l0_l2
- CALLF L:?ucmp32_c_l0_0x
- JRNC L:??main_2
- TNZ S:?b12
- JRNE L:??main_2
- MOV L:RunMode, #0x1
- MOV L:Bus_SendLength, #0x1a
- MOV S:?b12, #0xff
- MOV L:Ledswitch, #0x0
- ??main_2:
- CALLF BUS_Rev_Tick
- CALLF GPIO_LED_Tick
- CALLF GPIO_KEY_Tick
- LD A, L:RunMode
- CP A, #0x0
- JRNE L:??main_3
- LD A, L:KEY
- CP A, #0x2
- JRNE L:??main_0
- LD A, [L:Addrp.w]
- LD L:BUS_SendCmd, A
- LDW X, L:Addrp
- INCW X
- LD A, (X)
- LD L:BUS_SendCmd + 1, A
- CLR S:?b0
- JRA L:??main_4
- ??main_5:
- CLRW X
- EXG A, XL
- LD A, S:?b0
- EXG A, XL
- ADDW X, #BUS_SendCmd + 2
- CLRW Y
- EXG A, YL
- LD A, S:?b0
- EXG A, YL
- LD A, (L:DeviceSN,Y)
- LD (X), A
- LD A, S:?b0
- ADD A, #0x1
- LD S:?b0, A
- ??main_4:
- LD A, S:?b0
- CP A, #0xf
- JRC L:??main_5
- MOV L:BUS_SendCmd + 17, #0xe
- LD A, #0x12
- CALLF BUS_SendData
- LD A, L:Ledswitch
- CP A, #0x0
- JRNE ??lb_0
- JP L:??main_1
- // 627 else
- // 628 {
- // 629 Ledswitch=0;
- ??lb_0:
- MOV L:Ledswitch, #0x0
- JP L:??main_0
- // 630 }
- // 631 }
- // 632 }
- // 633 else
- // 634 {
- // 635 // 重发逻辑放在最前面处理
- // 636 if ((BUS_SendCnt) && (LocalTime> KeySentTime)) { //重发逻辑
- ??main_3:
- LD A, L:BUS_SendCnt
- CP A, #0x0
- JREQ L:??main_6
- LDW Y, #LocalTime
- LDW X, #??KeySentTime
- CALLF L:?load32_l0_0x
- LDW X, Y
- CALLF L:?ucmp32_c_l0_0x
- JRNC L:??main_6
- // 637 KeySentTime = LocalTime +1000;
- LDW X, #0x3e8
- LDW S:?w1, X
- CLRW X
- LDW S:?w0, X
- LDW X, #LocalTime
- CALLF L:?add32_l0_l0_0x
- LDW X, #??KeySentTime
- CALLF L:?load32_0x_l0
- // 638 BUS_SendCnt--;
- LD A, L:BUS_SendCnt
- ADD A, #0xff
- LD L:BUS_SendCnt, A
- // 639 BUS_SendCmd[0]=Addrp[0];
- LD A, [L:Addrp.w]
- LD L:BUS_SendCmd, A
- // 640 BUS_SendCmd[1]=Addrp[1];
- LDW X, L:Addrp
- INCW X
- LD A, (X)
- LD L:BUS_SendCmd + 1, A
- // 641 BUS_SendCmd[2]=CurrentCmd; // 使用记录的命令类型
- LD A, L:CurrentCmd
- LD L:BUS_SendCmd + 2, A
- // 642 BUS_SendData(3);
- LD A, #0x3
- CALLF BUS_SendData
- JP L:??main_0
- // 643 }
- // 644 // 按键处理
- // 645 else if(KEY0==2) //紧急呼叫
- ??main_6:
- LD A, L:KEY
- CP A, #0x2
- JRNE L:??main_7
- // 646 {
- // 647 BUS_SendCmd[0]=Addrp[0];
- LD A, [L:Addrp.w]
- LD L:BUS_SendCmd, A
- // 648 BUS_SendCmd[1]=Addrp[1];
- LDW X, L:Addrp
- INCW X
- LD A, (X)
- LD L:BUS_SendCmd + 1, A
- // 649 BUS_SendCmd[2]=0x0C;
- MOV L:BUS_SendCmd + 2, #0xc
- // 650 BUS_SendData(3);
- LD A, #0x3
- CALLF BUS_SendData
- // 651 Ledswitch=2;
- MOV L:Ledswitch, #0x2
- // 652 BUS_SendCnt = 9;
- MOV L:BUS_SendCnt, #0x9
- // 653 KeySentTime = LocalTime +1000;
- LDW X, #0x3e8
- LDW S:?w1, X
- CLRW X
- LDW S:?w0, X
- LDW X, #LocalTime
- CALLF L:?add32_l0_l0_0x
- LDW X, #??KeySentTime
- CALLF L:?load32_0x_l0
- // 654 CurrentCmd = 0x0C; // 记录当前命令类型
- MOV L:CurrentCmd, #0xc
- JP L:??main_0
- // 655 }
- // 656 else if(KEY0==3) //长按关闭指示灯
- ??main_7:
- LD A, L:KEY
- CP A, #0x3
- JRNE L:??main_8
- // 657 {
- // 658 Ledswitch=0; //dwd190802
- MOV L:Ledswitch, #0x0
- JP L:??main_0
- // 659 }
- // 660 else if(KEY1==2) //紧急呼叫取消
- ??main_8:
- LD A, L:KEY + 1
- CP A, #0x2
- JREQ ??lb_1
- JP L:??main_0
- // 661 {
- // 662 if(CurrentCmd == 0x0C) { // 只有在紧急呼叫状态下才能取消
- ??lb_1:
- LD A, L:CurrentCmd
- CP A, #0xc
- JREQ ??lb_2
- JP L:??main_0
- // 663 BUS_SendCmd[0]=Addrp[0];
- ??lb_2:
- LD A, [L:Addrp.w]
- LD L:BUS_SendCmd, A
- // 664 BUS_SendCmd[1]=Addrp[1];
- LDW X, L:Addrp
- INCW X
- LD A, (X)
- LD L:BUS_SendCmd + 1, A
- // 665 BUS_SendCmd[2]=0x07;
- MOV L:BUS_SendCmd + 2, #0x7
- // 666 BUS_SendData(3);
- LD A, #0x3
- CALLF BUS_SendData
- // 667 Ledswitch=0;
- MOV L:Ledswitch, #0x0
- // 668 BUS_SendCnt = 9;
- MOV L:BUS_SendCnt, #0x9
- // 669 KeySentTime = LocalTime +1000;
- LDW X, #0x3e8
- LDW S:?w1, X
- CLRW X
- LDW S:?w0, X
- LDW X, #LocalTime
- CALLF L:?add32_l0_l0_0x
- LDW X, #??KeySentTime
- CALLF L:?load32_0x_l0
- // 670 CurrentCmd = 0x07; // 记录当前命令类型
- MOV L:CurrentCmd, #0x7
- JP L:??main_0
- CFI EndBlock cfiBlock16
- // 671 }
- // 672 }
- // 673 }
- // 674 }
- // 675 }
- SECTION `.near.bss`:DATA:REORDER:NOROOT(0)
- ??KeySentTime:
- DS8 4
- SECTION VREGS:DATA:REORDER:NOROOT(0)
- END
- //
- // 1 757 bytes in section .far_func.text
- // 157 bytes in section .near.bss
- // 2 bytes in section .near.data
- // 42 bytes in section .near.noinit (abs)
- // 54 bytes in section .near.rodata
- //
- // 1 757 bytes of CODE memory
- // 54 bytes of CONST memory
- // 159 bytes of DATA memory (+ 42 bytes shared)
- //
- //Errors: none
- //Warnings: 3
|