;=================================================================================================================== ;************************************************************** ; опнцпюллю оепедювх RC5 йндю он хй йюмюкс ;************************************************************** ; б пецхярпюу OPERAND1 х OPERAND2 хяундмше дюммше дкъ оепедювх ; р.е RC5 йнд б HEX бхде TRANSMIT_RC5 BCF INTCON,INT0IE,A ; опепшбюмхе нр яхцмюкю INT гюопеыемн, врнаш ме леьюкн оепедюве CLRF IR_REGISTR1,A ; намскъел пецхярпш CLRF IR_REGISTR2,A CLRF IR_REGISTR3,A CLRF IR_REGISTR4,A BCF IR_REGISTR1,0,A ; ятнплхпнбюкх ярюпрнбши хлоскэя CALL SHIFT_BUF ; BSF IR_REGISTR1,0,A ; CALL SHIFT_BUF ; MOVLW .13 ; йнкхвеярбн хмтнплюжхнммшу ахр MOVWF CH_BITE,A TRANSMIT1 BTFSS OPERAND1,4,A ; еякх оепедюбюелши ахр пюбем 1 оепедюел йнлахмюжхч 01 GOTO SEND_1 ; хмюве оепедюел йнлахмюжхч 10 BCF IR_REGISTR1,0,A ; еякх оепедюбюелши ахр пюбем 1 CALL SHIFT_BUF ; оепедюел йнлахмюжхч 01 BSF IR_REGISTR1,0,A ; CALL SHIFT_BUF ; TRANSMIT2 RLCF OPERAND2,F,A ; ядбхцюел хмтнплюжхч дкъ онякедсчыецн юмюкхгю RLCF OPERAND1,F,A ; DECFSZ CH_BITE,F,A ; оепедюмш бяе 13 ахр, еякх мер рн опнднкфюрэ GOTO TRANSMIT1 ; еякх мер рн опнднкфюрэ BCF IR_REGISTR1,0,A ; CALL SHIFT_BUF ; BCF IR_REGISTR1,0,A ; CALL SHIFT_BUF ; BCF IR_REGISTR1,0,A ; CALL SHIFT_BUF ; BCF IR_REGISTR1,0,A ; MOVLW .32 ; йнкхвеярбн оепедюбюелшу ахр б пюгбепмсрнл йнде RC5 MOVWF CH_BITE BSF TRISC,2,A ; онпр я2 мюярпнхрэ йюй бунд , мер бшдювх ьхл CALL INIT_TMR1 ; гюосярхрэ рюилеп дкъ тнплхпнбюмхъ хмрепбюкнб ядбхцю CALL GEN_PWM ; мюярпнхрэ лндскэ ьхл лхйпнйнмрпнккепю BSF TRISC,2,A ; онпр я2 мюярпнхрэ йюй бунд , мер бшдювх ьхл RETURN ;******************************** SEND_1 BSF IR_REGISTR1,0,A ; еякх оепедюбюелши ахр пюбем 1 CALL SHIFT_BUF ; оепедюел йнлахмюжхч 01 BCF IR_REGISTR1,0,A ; CALL SHIFT_BUF ; GOTO TRANSMIT2 ;******************************** ; дкъ тнплхпнбюмхе бпелеммшу хмрепбюкнб хяонкэгсел опепшбюмхъ TMR1 TMR1_PROC ; ячдю оноюдюел он опепшбюмхч рюилепю TMR1 BCF PIR1,TMR1IF,A ; яапняхрэ ткюц опепшбюмхъ нр TMR1 ;******************************** MOVLW 0F2 MOVWF TMR1H,A ; сярюмнбйю мнбнцн хмрепбюкю дкъ рюилепю ямювюкю ярюпьхи аюир MOVLW 20 MOVWF TMR1L,A ; ю гюрел х лкюдьхи ;******************************* BSF TRISC,2,A ; онпр я2 мюярпнхрэ йюй бунд , мер бшдювх ьхл BTFSC IR_REGISTR4,7,A ; опнбепхрэ мсфмю кх цемепюжхъ хкх мер BCF TRISC,2,A ; онпр я2 мюярпнхрэ йюй бшунд дкъ бшдювх ьхл ;******************************* CALL SHIFT_BUF ; ядбхц оепедючыецн астепю DECFSZ CH_BITE,F,A ; оепедюмш бяе ахрш? RETURN ; еякх мер рн опнднкфюрэ CALL STOP_PWM ; хмюве нярюмнбхрэ цемепюжхч яхцмюкю гюонмемхъ 36ЙцЖ CALL STOP_TMR1 ; х цемепюрнп хмрепбюкнб BSF INTCON,INT0IE,A ; ямнбю пюгпеьюел опепшбюмхе нр яхцмюкю INT дкъ опхелю х юмюкхгю йндю RETURN ;******************************** SHIFT_BUF ; б щрх пецхярпш гюохяюмю йнлюмдю б пюгбепмсрнл бхде RLCF IR_REGISTR1,F,A RLCF IR_REGISTR2,F,A RLCF IR_REGISTR3,F,A RLCF IR_REGISTR4,F,A RETURN ;************************************************************** ; опнцпюллю опхелю йндю он хй йюмюкс б тнплюре RC5 ;************************************************************** INT_PROC BCF INTCON,INT0IF,A ; яапняхрэ ткюц опепшбюмхъ нр бундю INT BCF INTCON,TMR0IF,A ; Cапня ткюцA опепшбюмхи рюилепю TMR0 MOVF TMR0L,W,A ; мюярпнийю рюилепю TMR0 рюй врнаш бн бпелъ MOVWF TMR_TEMP,A ; оюсгш лефдс онбрнпюлх оняшкйх опнхгнькн опепшбюмхе CLRF TMR0L,A ; опепшбюмхе нр TMR0 асдер цнбнпхрэ н рнл врн оняшкйю онкмнярэч опхмърю BSF RC5_START ; намюпсфем ярюпрнбши хлоскэя RC5 ;************************************************************** TEST_RX_BIT ; нопедекъел врн опхькн он хй йюмюкс MOVF RC5_BIT_COUNT,F,A ; щрн оепбши ярюпрнбши ахр? BTFSC STATUS,Z,A ; р.е явервхй опхмършу дюммшу пюбем 0 GOTO RC5_ADD_1 ; рнцдю ндмнгмювмн нм пюбем 1 ; он бпелеммнлс нймс нопедекъел гмювемхе опхмършу дюммшу MOVLW 1E ; бпелеммни хмрепбюк пюбем 2р ===>1C SUBWF TMR_TEMP,W,A ; CARRY асдер нвхыем еякх гмювемхе рюилепю < 8C BTFSS STATUS,C,A ; опносярхрэ еякх >= 8C р.е. анкэье 2р GOTO TIMER_IS_2T MOVLW 2C ; бпелеммни хмрепбюк пюбем 3р ===> 29 SUBWF TMR_TEMP,A,W ; CARRY асдер нвхыем еякх гмювемхе рюилепю < CF BTFSS STATUS,C,A ; опносярхрэ еякх >= CF р.е. бпелеммни хмрепбюк пюбем 4р GOTO TIMER_IS_3T ;**************************************** TIMER_IS_4T BTFSS RC5_RX,0,A ; опедшдсыхи ахр ашк "1" ? GOTO RC5_RX_ERROR ; еякх, ашк "0", рнцдю ньхайю! GOTO RC5_ADD_01 ; онякедмхи ахр = "1", рнцдю днаюбхл "01" ;**************************************** TIMER_IS_2T BTFSS RC5_RX,0,A ; опедшдсыхи ахр ашк "1" ? GOTO RC5_ADD_0 ; еякх, ашк "0", днаюбхл "0" GOTO RC5_ADD_1 ; мер, ашк "1", днаюбхл "1" ;**************************************** TIMER_IS_3T BTFSS RC5_RX,0,A ; опедшдсыхи ахр ашк "1" ? GOTO RC5_ADD_1 ; еякх, ашк "0", днаюбхл "1" GOTO RC5_ADD_00 ; онякедмхи ахр = "1", рнцдю днаюбхл "00" ;**************************************** RC5_ADD_0 RLCF RC5_RX,F,A ; ядбхцюел опхмърсч онякеднбюрекэмнярэ вепег ахр оепемняю RLCF RC5_RX1,F,A BCF RC5_RX,0,A ; х днаюбкъел 0 INCF RC5_BIT_COUNT,F,A ; сбекхвхрэ явервхй опхмършу ахр RETURN RC5_ADD_1 RLCF RC5_RX,F,A ; ядбхцюел опхмърсч онякеднбюрекэмнярэ вепег ахр оепемняю RLCF RC5_RX1,F,A BSF RC5_RX,0,A ; х днаюбкъел 1 INCF RC5_BIT_COUNT,F,A ; сбекхвхрэ явервхй опхмършу ахр RETURN RC5_ADD_00 CALL RC5_ADD_0 ; днаюбкъел 0 GOTO RC5_ADD_0 ; днаюбкъел 0 RC5_ADD_01 CALL RC5_ADD_0 ; днаюбкъел 0 GOTO RC5_ADD_1 ; днаюбкъел 1 ;**************************************** RC5_RX_ERROR INIT_RC5 CLRF RC5_RX,A ; мювюкэмюъ сярюмнбйю оепелеммшу CLRF RC5_RX1,A ; намскемхе пецхярпнб пегскэрюрю CLRF RC5_BIT_COUNT,A ; намскъел явервхй опхмършу дюммшу INT_RB0_INIT BSF TRISB,0,A ; бшбнд онпрю RB0 мюярпнхрэ дкъ опхелю дюммшу BCF INTCON,INT0IF,A ; яапняхрэ ткюц опепшбюмхъ нр яхцмюкю INT BCF INTCON2,INTEDG0,A ; опепшбюмхе он яоюдс яхцмюкю INT BSF INTCON,INT0IE,A ; пюгпеьхрэ опепшбюмхъ нр яхцмюкю INT INT_TMR0_INIT MOVLW B'11000111' ; йнщт декемхъ 16 вюярнрю опепшбюмхи опх 16 лцЖ 1000 цЖ ; ууу бшанп йнщттхжхемрю декемхъ 2,4,8,16,32,64,128,256 ; 0,1,2,3 ,4 ,5 ,6 ,7 CLRF TMR0L,A BSF INTCON,TMR0IE,A ; пюгпеьемн опепшбюмхе нр рюилепю RETURN ;**************************************** ; ячдю оноюдюел еякх бпелъ нфхдюмхъ яхцмюкю мю бунде RB0 опебшяхкн дносярхлне RC5_TMR0_PROC BCF INTCON,INT0IE,A ; гюоперхрэ опепшбюмхе нр яхцмюкю INT BCF INTCON,INT0IF,A ; яапняхрэ ткюц опепшбюмхъ нр бундю INT BCF RC5_START ; бпелъ нфхдюмхъ хлоскэянб RC5 хярейкн BSF RC5_ANALIZ ; сярюмнбхрэ ткюц менаундхлнярх юмюкхгю опхмършу дюммшу RETURN ;**************************************** ; ярюпр юмюкхгю опхмърни хй онякеднбюрекэмнярх ; опнцпюллю юмюкхгю опхмърнцн йндю бшгшбюеряъ б яксвюее еякх ; ашк сярюмнбкем ткюц опхелю йндю RC5 йнрнпши сярюмюбкхбюеряъ опнцпюллни опхелю ; нопня янярнъмхъ ткюцю опнхяундхр б нямнбмнл реке жхйкю нфхдюмхъ янашрхи ANALIZATOR_RC5 ; опнцпюллю юмюкхгю опхмърнцн бшгшбюеряъ б яксвюее еякх MOVLW .14 ; яв╗рвхй ахрнб RC-5 днкфем ашрэ пюбем 14 SUBWF RC5_BIT_COUNT,W,A ; опнбепъел BTFSC STATUS,Z,A ; опносярхрэ еякх HE пюбем 14 GOTO RC5_RESIVED ; опхмърше дюммше он RC5 бепмш ; еякх б онякеднбюрекэмнярх RC-5 онякедмхи ахр пюбем 0 рн лш опхлел рнкэйн 13 ахр ; б рюйнл яксвюе мсфмн днаюбхрэ 0 х асдер бяе нй хмюве щрн ньхайю опхелю MOVLW .13 ; яв╗рвхй ахрнб RC-5 днкфем ашрэ пюбем 13 SUBWF RC5_BIT_COUNT,W,A ; опнбепъел BTFSS STATUS,Z,A ; опносярхрэ еякх = 13, WILL NEED TO ADD A 0 GOTO RC5_RX_ERROR CALL RC5_ADD_0 ; днаюбкъел 0 ;**************************************** ; мю щрнл янаярбеммн х бяе. дюммше опхмърш ; ю реоепэ асдел дслюрэ врн я мхлх декюрэ RC5_RESIVED MOVF RC5_RX,W,A ; дюммше онлеыюел б дпсцхе пецхярпш дкъ дюкэмеиьеи напюанрйх MOVWF RC5_REG,A ; х хмдхйюжхх MOVF RC5_RX1,W,A MOVWF RC5_REG1,A ; напюанрйю онксвеммни йнлюмдш RC5 MOVLW 1F ANDWF RC5_REG1,F,A ; сапюкх ярюпрнбши ахр ;========================================================== ; оепедюел онксвеммше дюммше б янл онпр SEND_RC5_COM ; б мювюке опнбепхрэ мсфмн кх оепедюбюрэ йнлюмдс б янл онпр MOVLW RC5_COD ; щрю йнмярюмрю гюохяюмю б EEPROM CALL RID_BT IORLW 0 ; еякх мсфмн сахпюел TOGLE ахр BTFSS STATUS,Z,A GOTO NO_RC5_COD ; наундхл еякх ме мсфмн бшбндхрэ опхмърше дюммше б тнплюре RC5 б янл онпр ; оепедюел онксвеммше дюммше б янл онпр CALL INIT_USART ; мюярпнхрэ яйнпнярэ оепедювх янл онпрю MOVLW 'R' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'C' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '5' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW ':' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир SWAPF RC5_REG1,W,A CALL KOD_ASCII CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVF RC5_REG1,W,A CALL KOD_ASCII CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир SWAPF RC5_REG,W,A CALL KOD_ASCII CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVF RC5_REG,W,A CALL KOD_ASCII CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 0D CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир NO_RC5_COD ;========================================================== MOVLW COD_KEY1 ; йнд ймнойх "бшйкчвхрэ бяе" CALL RID_BT XORWF RC5_REG,W,A BTFSC STATUS,Z,A ; GOTO CLR_CD ; MOVLW COD_KEY2 ; йнд ймнойх "бйкчвхрэ бяе" CALL RID_BT XORWF RC5_REG,W,A BTFSC STATUS,Z,A ; GOTO SET_CD ; BTFSC F_1 GOTO NEXT_DIG0 ; якедсчыюъ жхтпю MOVLW COD_KEY3 ; йнд ймнойх "мювюкн ббндю" CALL RID_BT XORWF RC5_REG,W,A BTFSS STATUS,Z,A ; GOTO RC5_RX_ERROR ; мювхмюел бяецдю я ймнойх п+ BSF F_1 GOTO RC5_RX_ERROR ; мювхмюел бяецдю я ймнойх п+ NEXT_DIG0 MOVLW COD_KEY3 ; йнд ймнойх "мювюкн ббндю" CALL RID_BT XORWF RC5_REG,W,A BTFSC STATUS,Z,A ; GOTO RC5_RX_ERROR ; еякх он опефмелс мюфюрю п+ рн бшунд BTFSC F_2 GOTO NEXT_DIG ; BSF F_2 MOVF RC5_REG,W,A MOVWF KEY1,A MOVF RC5_REG1,W,A MOVWF KEY2,A GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю NEXT_DIG BTFSC F_3 GOTO NEXT_DIG2 ; якедсчыюъ жхтпю MOVF RC5_REG,W,A XORWF KEY1,W,A BTFSS STATUS,Z,A ; еякх щрн рнр фе йнд рн опнбепхрэ ярюпьхи аюир GOTO NEXT_DIG1 ; MOVF RC5_REG1,W,A XORWF KEY2,W,A BTFSC STATUS,Z,A ; еякх х ярюпьхи аюир рнрфе рн GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю ; хмюве щрн мнбюъ жхтпю NEXT_DIG1 BSF F_3 MOVF RC5_REG,W,A MOVWF KEY3,A MOVF RC5_REG1,W,A MOVWF KEY4,A GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю NEXT_DIG2 MOVLW COD_KEY4 ; CALL RID_BT XORWF RC5_REG,W,A BTFSS STATUS,Z,A ; GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю BCF F_3 BCF F_2 BCF F_1 ;******************************** RC5_READY ; онякеднбюрекэмнярэ мюфюрхъ ймнонй оскэрю бшонкмемю опюбхкэмн MOVLW 9 XORWF KEY1,W,A BTFSS STATUS,Z,A ; GOTO RC5_READY1 ; еякх ярюпьюъ рерпюдю ме пюбмю 9 рн ндмнгмювмн ме сопюбкъчыюъ йнлюмдю CALL RC5_RX_ERROR ; оепегюосяйюел опхел йндю RC5 MOVLW 9 ; XORWF KEY3,W,A ; опнбепъел лкюдьсч, бдпсц пюбмю 9 BTFSC STATUS,Z,A ; GOTO PRINT_SET0 ; бшбнд хмтнплюжхх н бяеу бйкчвеммшу пюинмюу MOVLW 5 ; XORWF KEY3,W,A ; опнбепъел лкюдьсч, бдпсц пюбмю 5 BTFSC STATUS,Z,A ; GOTO PRINT_CLR0 ; бшбнд хмтнплюжхх н бяеу бшйкчвеммшу пюинмюу MOVLW 3 ; XORWF KEY3,W,A ; опнбепъел лкюдьсч, бдпсц пюбмю 3 BTFSC STATUS,Z,A ; GOTO PRINT_INFO0 ; бшбнд хмтнплюжхх н янярнъмхх пюинмнб RC5_READY1 ; юмюкхг онксвеммшу дюммшу CALL KEY_POZITION ;онксвюел онгхжхнммши йнд ббедеммнцн деяърхвмнцн вхякю ;******************************** ; опнхгбндхл хглемемхъ мю бшундюу б яннрберярбхх я онксвеммшл йнднл MOVF REG_M6,W,A XORWF DATA6,F,A MOVF REG_M5,W,A XORWF DATA5,F,A MOVF REG_M4,W,A XORWF DATA4,F,A MOVF REG_M3,W,A XORWF DATA3,F,A MOVF REG_M2,W,A XORWF DATA2,F,A MOVF REG_M1,W,A XORWF DATA1,F,A ;******************************** PRN_POZITION CALL PRN_REZ ;******************************** ; еякх бяе бшйкчвемш MOVLW 03 ANDWF DATA4,W,A IORWF DATA5,W,A IORWF DATA6,W,A BTFSC STATUS,Z,A CALL PRN_ALL_OFF ; бшдюрэ б онпр , врн бяе бшйкчвемн ; еякх бяе бйкчвемш MOVLW 0FC IORWF DATA4,W,A MOVF DATA5,W,A ANDWF DATA6,W,A XORLW 0FF BTFSC STATUS,Z,A CALL PRN_ALL_ON ; бшдюрэ б онпр , врн бяе бйкчвемн ;******************************** ;гюыхрю нр менокюрш япюаюршбюер он явервхйс мюфюрхъ йкюбхь TMR_WORK CALL READ_ACC MOVF ACC0,W,A ; IORWF ACC1,W,A ; BTFSC STATUS,Z,A GOTO NO_MANI ; явервхй мю мске CALL INC_ACC CALL SAVE_ACC ;******************************** ; сопюбкемхе бйкчвемхел яберндхнднб CALL SET_BP GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю ;******************************** CLR_CD CLRF DATA1,A CLRF DATA2,A CLRF DATA3,A CLRF DATA4,A CLRF DATA5,A CLRF DATA6,A CALL PRN_ALL_OFF ; бшдюрэ б онпр , врн бяе бшйкчвемн CALL SET_BP GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю ;******************************** SET_CD MOVLW 0FF MOVWF DATA1,A MOVWF DATA2,A MOVWF DATA3,A MOVWF DATA4,A MOVWF DATA5,A MOVWF DATA6,A CALL PRN_ALL_ON ; бшдюрэ б онпр , врн бяе бйкчвемн CALL SET_BP GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю ;******************************** ; сопюбкемхе окюрни йкчвеи ;ондопнцпюллю бшрюкйхбюмхъ аюирю хг пецхярпю W б онякеднбюрекэмши пецхярп ядбхцю ; хяонкэгселше пецхярпш : ; W - бшбндхлши аюир ; TMPREG1 - бпелеммши пецхярп дкъ упюмемхъ бшбндхлнцн аюирю ; TMPREG2 - бпелеммши пецхярп дкъ ондяверю бшбндхлшу ахрнб #define PORT_W LATB,5,A ; онпр оюпюккекэмни гюцпсгйх дкъ пецхярпю ядбхцю бшбнд 1 #define PORT_DATA LATB,6,A ; онпр дюммшу дкъ пецхярпю ядбхцю бшбнд 2 #define PORT_STROB LATB,7,A ; онпр ярпнаю дкъ пецхярпю ядбхцю бшбнд 3 SET_BP MOVF DATA1,W,A CALL UPR1 MOVF DATA2,W,A CALL UPR1 MOVF DATA3,W,A CALL UPR1 MOVF DATA4,W,A CALL UPR1 MOVF DATA5,W,A CALL UPR1 MOVF DATA6,W,A CALL UPR1 BSF PORT_W ; ондюел яхцмюк гюцпсгйх NOP NOP BCF PORT_W RETURN ;*********************************** UPR1 MOVWF TMPREG1,A ; бшбндхлши яхлбнк хг W онлеярхрэ б REG MOVLW 8 ; йнкхвеярбн ахр б пецхярпе MOVWF TMPREG2,A UPR2 BCF PORT_DATA BTFSC TMPREG1,7,A ; еякх юмюкхгхпселши ахр пюбем 1 рн сярюмюбкхбюел BSF PORT_DATA ; ьхмс дюммшу б 1, хмюве опносяйюел сярюмнбйс б 1 NOP BSF PORT_STROB ; ондюел яхцмюк ярпнахпнбюмхъ NOP BCF PORT_STROB RLNCF TMPREG1,F,A ; ядбхц бкебн дкъ юмюкхгю якедсчыецн ахрю DECFSZ TMPREG2,F,A GOTO UPR2 RETURN ;*********************************** ;******************************** ;сбекхвемхе явервхйю INC_ACC MOVLW 1 BCF STATUS,C,A ADDWF ACC0,F,A ; сбекхвхрэ явервхй опнунднб йюперйх BTFSC STATUS,C,A INCF ACC1,F,A RETURN ;******************************** ;гюохяэ явервхйю SAVE_ACC MOVLW WORK_TIME ; MOVWF EEADR,A ; сярюмюбкхбюел юдпея б EEPROM MOVF ACC0,W,A ; CALL SAVE_EEPROM INCF EEADR,F,A ; MOVF ACC1,W,A ; CALL SAVE_EEPROM RETURN ;******************************** READ_ACC ; времхе явервхйю MOVLW WORK_TIME ; CALL RID_BT MOVWF ACC0,A ; INCF EEADR,F,A ; CALL RD_FLASH MOVWF ACC1,A ; RETURN ;******************************** ; явервхй мю мске NO_MANI MOVLW "M" CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW "A" CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW "N" CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW "I" CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW " " CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW "N" CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW "O" CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 0D CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир GOTO RC5_RX_ERROR ; он мнбни гюосяйюел опхел йндю ;******************************** PRN_POWER_ON MOVLW 'M' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'A' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'P' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '9' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '9' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '9' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 0D CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир RETURN ;******************************** PRN_ALL_ON MOVLW 'M' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'A' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'P' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '0' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '0' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '1' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 0D CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир RETURN ;******************************** PRN_ALL_OFF MOVLW 'M' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'A' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'P' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '0' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '0' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW '0' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 0D CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир RETURN ;******************************** ;онксвюел онгхжхнммши йнд ббедеммнцн деяърхвмнцн вхякю KEY_POZITION CLRF R2,A ; ондцнрнбхкх пецхярпш дкъ опенапюгнбюмхъ йндю CLRF R1,A CLRF R0,A MOVF KEY1,W,A ; оепбсч жхтпс вхрюел ANDLW 0F IORWF R2,F,A ; днаюбхрэ нвепедмсч рерпюдс CALL SHIFT_SIGN ; ядбхмсрэ дюммше MOVF KEY3,W,A ; явхрюрэ брнпсч жхтпс ANDLW 0F IORWF R2,F,A ; днаюбхрэ нвепедмсч рерпюдс CALL BCDTOBIN ; опенапюгнбюрэ й дбнхвмнлс бхдс MOVF L_BYTE,W,A MOVWF CH_B,A ;******************************** ; реоепэ мсфмн онксвхрэ пюгбепмсрши дбнхвмши йнд KOD_POZ CLRF REG_M1 ;намскхрэ бяе пецхярпш онгхжхнммнцн йндю CLRF REG_M2 CLRF REG_M3 CLRF REG_M4 CLRF REG_M5 CLRF REG_M6 BSF REG_M6,0,A ; яшлши лкюдьхи ахр пюбем 1 KOD_POZ1 DECFSZ CH_B,F,A GOTO KOD_POZ2 ; ядбхцюрэ пецхярп онгхжхнммнцн йндю он вхякс явервхйю RETURN ; йнмеж опенапюгнбюмхъ йнд-онгхжхъ KOD_POZ2 BCF STATUS,C,A ; яапняхрэ ахр оепемняю врнаш ме леьюк RLCF REG_M6,F,A ; ядбхцюел пецхярпш RLCF REG_M5,F,A ; RLCF REG_M4,F,A ; RLCF REG_M3,F,A ; RLCF REG_M2,F,A ; RLCF REG_M1,F,A ; GOTO KOD_POZ1 ;******************************** ; сопюбкемхе я йнлоэрепю йюпрни ;******************************** ON_CD TEST_S "M" TEST_S "A" TEST_S "P" TEST_S "0" TEST_S "0" TEST_S "1" TEST_S 0D BCF _BADKOM ; сярюмнбхрэ ткюц бшонкмемхъ йнлюмдш GOTO SET_CD ;******************************** OFF_CD TEST_S "M" TEST_S "A" TEST_S "P" TEST_S "0" TEST_S "0" TEST_S "0" TEST_S 0D BCF _BADKOM ; сярюмнбхрэ ткюц бшонкмемхъ йнлюмдш GOTO CLR_CD ;******************************** REGION_ON TEST_S "M" TEST_S "A" TEST_S "P" MOVF POSTINC2,W,A ; оепбсч жхтпс онкчанлс вхрюел MOVWF KEY1,A MOVF POSTINC2,W,A ; оепбсч жхтпс онкчанлс вхрюел MOVWF KEY3,A MOVF KEY1,W,A ; лш ме пеюцхпсел мю 00 юдпея XORWF KEY3,W,A BTFSC STATUS,Z,A RETURN TEST_S "1" TEST_S 0D BCF _BADKOM ; сярюмнбхрэ ткюц бшонкмемхъ йнлюмдш ;******************************** CALL KEY_POZITION ;онксвюел онгхжхнммши йнд ббедеммнцн деяърхвмнцн вхякю MOVF REG_M6,W,A IORWF DATA6,F,A MOVF REG_M5,W,A IORWF DATA5,F,A MOVF REG_M4,W,A IORWF DATA4,F,A MOVF REG_M3,W,A IORWF DATA3,F,A MOVF REG_M2,W,A IORWF DATA2,F,A MOVF REG_M1,W,A IORWF DATA1,F,A ;******************************** ; нропюбхрэ нрвер GOTO PRN_POZITION ; нрвхрюрэяъ б йюйнл янярнъмхх 0 хкх 1 мюундхряъ бшапюмши пюгпъд ;******************************** REGION_OFF TEST_S "M" TEST_S "A" TEST_S "P" MOVF POSTINC2,W,A ; оепбсч жхтпс онкчанлс вхрюел MOVWF KEY1,A MOVF POSTINC2,W,A ; оепбсч жхтпс онкчанлс вхрюел MOVWF KEY3,A MOVF KEY1,W,A ; лш ме пеюцхпсел мю 00 юдпея XORWF KEY3,W,A BTFSC STATUS,Z,A RETURN TEST_S "0" TEST_S 0D BCF _BADKOM ; сярюмнбхрэ ткюц бшонкмемхъ йнлюмдш ;******************************** CALL KEY_POZITION ;онксвюел онгхжхнммши йнд ббедеммнцн деяърхвмнцн вхякю COMF REG_M6,W,A ANDWF DATA6,F,A COMF REG_M5,W,A ANDWF DATA5,F,A COMF REG_M4,W,A ANDWF DATA4,F,A COMF REG_M3,W,A ANDWF DATA3,F,A COMF REG_M2,W,A ANDWF DATA2,F,A COMF REG_M1,W,A ANDWF DATA1,F,A ;******************************** ; нропюбхрэ нрвер GOTO PRN_POZITION ; нрвхрюрэяъ б йюйнл янярнъмхх 0 хкх 1 мюундхряъ бшапюмши пюгпъд ;******************************** PRN_REZ MOVLW 'M' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'A' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 'P' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVF KEY1,W,A CALL KOD_ASCII CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVF KEY3,W,A CALL KOD_ASCII CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир CALL KEY_POZITION ;онксвюел онгхжхнммши йнд ббедеммнцн деяърхвмнцн вхякю MOVF REG_M6,W,A ; еякх б пецхярпе мю леяре онг йндю 1 ANDWF DATA6,W,A BTFSS STATUS,Z,A ; GOTO PRINT1 ; оевюрюел 1 MOVF REG_M5,W,A ANDWF DATA5,W,A BTFSS STATUS,Z,A ; GOTO PRINT1 ; оевюрюел 1 MOVF REG_M4,W,A ANDWF DATA4,W,A BTFSS STATUS,Z,A ; GOTO PRINT1 ; оевюрюел 1 MOVF REG_M3,W,A ANDWF DATA3,W,A BTFSS STATUS,Z,A ; GOTO PRINT1 ; оевюрюел 1 MOVF REG_M2,W,A ANDWF DATA2,W,A BTFSS STATUS,Z,A ; GOTO PRINT1 ; оевюрюел 1 MOVF REG_M1,W,A ANDWF DATA1,W,A BTFSS STATUS,Z,A ; GOTO PRINT1 ; оевюрюел 1 PRINT0 MOVLW '0' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 0D CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир RETURN PRINT1 MOVLW '1' CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир MOVLW 0D CALL PUT_TO_TX ; оепедюрэ нвепедмни аюир RETURN ;******************************** ;******************************** ; бшбнд бяеу бйкчвеммшу пюинмнб PRINT_SET TEST_S "M" TEST_S "A" TEST_S "P" TEST_S "9" TEST_S "9" TEST_S "9" TEST_S 0D BCF _BADKOM ; сярюмнбхрэ ткюц бшонкмемхъ йнлюмдш PRINT_SET0 MOVLW 1 MOVWF KEY3,A CLRF KEY1,A PRINT_SET1 CALL TEST_KEY_POZITION ; опнбепхрэ еярэ кх б мсфмни онгхжхх 1 BTFSS STATUS,Z,A ; еякх STATUS,Z=1 рн щрнр пюинм ме бйкчвем мю йюпре CALL PRN_REZ ; еякх STATUS,Z=0 оевюрюел хтнплюжхч н пюинме, врн нм бйкчвем ; сбекхвемхе явервхйю пюинмнб INCF KEY3,F,A MOVLW .10 ; нпцюмхгсел деяърхвмши явервхй XORWF KEY3,W,A BTFSC STATUS,Z,A ; еякх лкюдьюъ рерпюдю пюбмю 10 CALL INIT_KEY3 ; й ярюпьеи рерпюде опхаюбкъел 1 ; опнбепйю мю йнмеж жхйкю бяецн с мюя 26 пюинмнб MOVLW 2 XORWF KEY1,W,A BTFSS STATUS,Z,A ; GOTO PRINT_SET1 ; еякх ярюпьюъ рерпюдю ме пюбмю 2 рн ндмнгмювмн опнбепъел якедсчыхи пюинм MOVLW 7 ; мн еякх ярюпьюъ рерпюдю пюбмю 2 рн XORWF KEY3,W,A ; опнбепъел лкюдьсч, бдпсц пюбмю 7 BTFSS STATUS,Z,A ; GOTO PRINT_SET1 ; еякх ме пюбмю 7 рн опнднкфхрэ жхйк RETURN ; хмюве бшунд - йнмеж жхйкю ;******************************** INIT_KEY3 CLRF KEY3,A INCF KEY1,F,A RETURN ;******************************** ;******************************** ; бшбнд бяеу бшйкчвеммшу пюинмнб PRINT_CLR TEST_S "M" TEST_S "A" TEST_S "P" TEST_S "9" TEST_S "9" TEST_S "5" TEST_S 0D BCF _BADKOM ; сярюмнбхрэ ткюц бшонкмемхъ йнлюмдш PRINT_CLR0 MOVLW 1 MOVWF KEY3,A CLRF KEY1,A PRINT_CLR1 CALL TEST_KEY_POZITION ; опнбепхрэ еярэ кх б мсфмни онгхжхх 1 BTFSC STATUS,Z,A ; еякх STATUS,Z=0 рн щрнр пюинм бйкчвем мю йюпре CALL PRN_REZ ; еякх STATUS,Z=1 оевюрюел хтнплюжхч н пюинме, врн нм бшйкчвем ; сбекхвемхе явервхйю пюинмнб INCF KEY3,F,A MOVLW .10 ; нпцюмхгсел деяърхвмши явервхй XORWF KEY3,W,A BTFSC STATUS,Z,A ; еякх лкюдьюъ рерпюдю пюбмю 10 CALL INIT_KEY3 ; й ярюпьеи рерпюде опхаюбкъел 1 ; опнбепйю мю йнмеж жхйкю бяецн с мюя 26 пюинмнб MOVLW 2 XORWF KEY1,W,A BTFSS STATUS,Z,A ; GOTO PRINT_CLR1 ; еякх ярюпьюъ рерпюдю ме пюбмю 2 рн ндмнгмювмн опнбепъел якедсчыхи пюинм MOVLW 7 ; мн еякх ярюпьюъ рерпюдю пюбмю 2 рн XORWF KEY3,W,A ; опнбепъел лкюдьсч, бдпсц пюбмю 7 BTFSS STATUS,Z,A ; GOTO PRINT_CLR1 ; еякх ме пюбмю 7 рн опнднкфхрэ жхйк RETURN ; хмюве бшунд - йнмеж жхйкю ;******************************** ;******************************** ; бшбнд янярнъмхъ бяеу пюинмнб бйкчвемш хкх бшйкчвемш PRINT_INFO TEST_S "M" TEST_S "A" TEST_S "P" TEST_S "9" TEST_S "9" TEST_S "3" TEST_S 0D BCF _BADKOM ; сярюмнбхрэ ткюц бшонкмемхъ йнлюмдш PRINT_INFO0 MOVLW 1 MOVWF KEY3,A CLRF KEY1,A PRINT_INFO1 CALL PRN_REZ ; еякх STATUS,Z=1 оевюрюел хтнплюжхч н пюинме, врн нм бшйкчвем ; сбекхвемхе явервхйю пюинмнб INCF KEY3,F,A MOVLW .10 ; нпцюмхгсел деяърхвмши явервхй XORWF KEY3,W,A BTFSC STATUS,Z,A ; еякх лкюдьюъ рерпюдю пюбмю 10 CALL INIT_KEY3 ; й ярюпьеи рерпюде опхаюбкъел 1 ; опнбепйю мю йнмеж жхйкю бяецн с мюя 26 пюинмнб MOVLW 2 XORWF KEY1,W,A BTFSS STATUS,Z,A ; GOTO PRINT_INFO1 ; еякх ярюпьюъ рерпюдю ме пюбмю 2 рн ндмнгмювмн опнбепъел якедсчыхи пюинм MOVLW 7 ; мн еякх ярюпьюъ рерпюдю пюбмю 2 рн XORWF KEY3,W,A ; опнбепъел лкюдьсч, бдпсц пюбмю 7 BTFSS STATUS,Z,A ; GOTO PRINT_INFO1 ; еякх ме пюбмю 7 рн опнднкфхрэ жхйк RETURN ; хмюве бшунд - йнмеж жхйкю ;******************************** ;******************************** TEST_KEY_POZITION CALL KEY_POZITION ;онксвюел онгхжхнммши йнд ббедеммнцн деяърхвмнцн вхякю MOVF REG_M6,W,A ; еякх б пецхярпе мю леяре онгхжхнммнцн йндю мюундхряъ 1 ANDWF DATA6,W,A BTFSS STATUS,Z,A ; опносярхрэ еякх 0 RETURN ; бшунд я опхгмюйнл STATUS ахр Z=0 , р.е. намюпсфемю 1 MOVF REG_M5,W,A ANDWF DATA5,W,A BTFSS STATUS,Z,A ; опносярхрэ еякх 0 RETURN ; бшунд я опхгмюйнл STATUS ахр Z=0 , р.е. намюпсфемю 1 MOVF REG_M4,W,A ANDWF DATA4,W,A BTFSS STATUS,Z,A ; опносярхрэ еякх 0 RETURN ; бшунд я опхгмюйнл STATUS ахр Z=0 , р.е. намюпсфемю 1 MOVF REG_M3,W,A ANDWF DATA3,W,A BTFSS STATUS,Z,A ; опносярхрэ еякх 0 RETURN ; бшунд я опхгмюйнл STATUS ахр Z=0 , р.е. намюпсфемю 1 MOVF REG_M2,W,A ANDWF DATA2,W,A BTFSS STATUS,Z,A ; опносярхрэ еякх 0 RETURN ; бшунд я опхгмюйнл STATUS ахр Z=0 , р.е. намюпсфемю 1 MOVF REG_M1,W,A ANDWF DATA1,W,A BTFSS STATUS,Z,A ; опносярхрэ еякх 0 RETURN ; бшунд я опхгмюйнл STATUS ахр Z=0 , р.е. намюпсфемю 1 RETURN ; еякх опнялнрпекх бяе пецхярпш рн бшунд я опхгмюйнл STATUS ахр Z=1 ; 1 б мсфмни онгхжхх ме намюпсфемю ;********************************