;************************************************** ;**** ÏÎÄÏÐÎÃÐÀÌÌÛ ÐÀÁÎÒÛ Ñ EEPROM PIC ***** ;************************************************** ; ;********* ×ÒÅÍÈÅ ÊÎÍÑÒÀÍÒ ***** L_TIMER1 MOVLW VAL_TIMER1 ; ÓÊÀÇÛÂÀÅÌ ÀÄÐÅÑ ×ÒÅÍÈß VAL_TIMER1 GOTO RID_BT L_TIMER2 MOVLW VAL_TIMER2 ; ÓÊÀÇÛÂÀÅÌ ÀÄÐÅÑ ×ÒÅÍÈß VAL_TIMER2 GOTO RID_BT L_BAUND MOVLW UST_BAUND ; ÓÊÀÇÛÂÀÅÌ ÀÄÐÅÑ ×ÒÅÍÈß UST_BAUND RID_BT MOVWF EEADR,A ; ÓÑÒÀÍÀÂËÈÂÀÅÌ ÀÄÐÅÑ Â EEPROM RD_FLASH BCF EECON1,EEPGD,A ; ÓÊÀÇÀÒÅËÜ ÏÀÌßÒÈ ÄÀÍÍÛÕ BCF EECON1,CFGS,A ; BSF EECON1,RD,A MOVF EEDATA,W,A RETURN ;******************************** SAVE_EEPROM MOVWF EEDATA,A WR_FLASH BCF INTCON,GIE,A ; ÂÑÅ ÌÀÑÊÈÐÓÅÌÛÅ ÏÐÅÐÛÂÀÍÈß ÇÀÏÐÅØÅÍÛ BCF EECON1,EEPGD,A ; ÓÊÀÇÀÒÅËÜ ÏÀÌßÒÈ ÄÀÍÍÛÕ BCF EECON1,CFGS,A ; BCF EECON1,FREE,A ; BSF EECON1,WREN,A MOVLW 55 MOVWF EECON2,A MOVLW 0AA MOVWF EECON2,A BSF EECON1,WR,A WAIT_WR BTFSS PIR2,EEIF,A GOTO WAIT_WR BCF PIR2,EEIF,A BCF EECON1,WREN,A BSF INTCON,GIE,A ; ÂÑÅ ÌÀÑÊÈÐÓÅÌÛÅ ÏÐÅÐÛÂÀÍÈß ÐÀÇÐÅØÅÍÛ RETURN ;************************************************************* ;ÏÎÄÏÐÎÃÐÀÌÌÛ ÈÍÈÖÈÀËÈÇÀÖÈÈ ÌÎÄÓËÅÉ ÏÐÎÖÅÑÑÎÐÀ È ÏÅÐÅÔÈÐÈÈ ;****************************************************************** INIT_INTERUPT ; ÈÍÈÖÈÀËÈÇÀÖÈß ÑÈÑÒÅÌÛ CLRF INTCON,A ; ÇÀÏÐÅÒ ÂÑÅÕ ÏÐÅÐÛÂÀÍÈÉ È ÑÁÐÎÑ ÔËÀÃΠÏÐÅÐÛÂÀÍÈÉ CLRF PIR1,A ; ÑÁÐÎÑ ÔËÀÃΠÏÅÐÅÔÅÐÈÈ CLRF PIE1,A ; ÇÀÏÐÅÒ ÂÑÅÕ ÏÅÐÈÔÅÐÈÉÍÛÕ ÏÐÅÐÛÂÀÍÈÉ RETURN ;****************************************************************** INIT_PORT ; ÍÀÑÒÐÎÉÊÀ ÏÎÐÒΠMOVLW B'11111111' ; ÏÎÐÒ À MOVWF TRISA,A ; ÍÀÑÒÐÎÉÊÀ ÏÎÐÒÀ A MOVLW B'00001111' MOVWF TRISB,A ; ÍÀÑÒÐÎÉÊÀ ÏÎÐÒÀ  MOVLW B'10011000' MOVWF TRISC,A ; ÍÀÑÒÐÎÉÊÀ ÏÎÐÒÀ Ñ RETURN ;****************************************************************** INIT_TIMER ; ÍÀÑÒÐÎÉÊÀ ÒÀÉÌÅÐÀ 0 MOVLW B'11000111' ; ÊÎÝÔ ÄÅËÅÍÈß 16 ×ÀÑÒÎÒÀ ÏÐÅÐÛÂÀÍÈÉ ÏÐÈ 20 ÌÃö 1250 Ãö ; ÕÕÕ ÂÛÁÎÐ ÊÎÝÔÔÈÖÈÅÍÒÀ ÄÅËÅÍÈß 2,4,8,16,32,64,128,256 ; 0,1,2,3 ,4 ,5 ,6 ,7 MOVWF T0CON,A RETURN ;******************************* INIT_TMR1 ; ÍÀÑÒÐÎÉÊÀ TMR1 MOVLW B'10000001' ; ÍÀÑÒÐÎÉÊÀ TMR1 MOVWF T1CON,A MOVLW VAL_TMR1H CALL RID_BT MOVWF TMR1H,A ; MOVLW VAL_TMR1L CALL RID_BT MOVWF TMR1L,A ; BSF PIE1,TMR1IE,A ; ÐÀÇÐÅØÅÍÈÅ ÏÐÅÐÛÂÀÍÈÉ ÎÒ TMR1 RETURN ;*************************** ;INTERUPT_TMR1 ; MOVLW B'10000001' ; MOVWF T1CON,A BSF PIE1,TMR1IE,A ; RETURN ;*************************** STOP_TMR1 ; ÎÑÒÀÍÎÂÊÀ ÒÀÉÌÅÐÀ È ÇÀÏÐÅÒ ÏÐÅÐÛÂÀÍÈÉ BCF T1CON,TMR1ON,A BCF PIE1,TMR1IE,A ; ÇÀÏÐÅÙÅÍÈÅ ÏÐÅÐÛÂÀÍÈÉ ÎÒ TMR1À RETURN ;******************************** ;CLR_TMR1 CLRF TMR1H,A CLRF TMR1L,A RETURN ;******************************** GEN_PWM ; ÍÀÑÒÐÎÉÊÀ PWM BCF TRISC,2,A ; ÏÎÐÒ Ñ2 ÍÀÑÒÐÎÈÒÜ ÊÀÊ ÂÛÕÎÄ ÄËß ÂÛÄÀ×È ØÈÌ MOVF FR_PWM,W,A ; ×ÀÑÒÎÒÀ ÑÈÃÍÀËÀ ØÈÌ ÎÏÐÅÄÅËßÅÒÑß ÏÀÐÀÌÅÒÐÎÌ FR_PWM MOVWF CCPR1L,A ; RLNCF CCPR1L,W,A ; ÏÅÐÈÎÄ ÑÈÃÍÀËÀ ÂÑÅÃÄÀ ÐÀÂÅÍ ÓÄÂÎÅÍÍÎÉ ÄËÈÒÅËÜÍÎÑÒÈ MOVWF PR2,A ; MOVLW B'00000100' ; ÏÐÅÄÅËÈÒÅËÜ ÐÀÂÅÍ 1:1; B'00000100'-1:1 ; B'00000101'-1:4 ; B'00000110'-1:16 MOVWF T2CON,A MOVLW B'00001111' ; MOVWF CCP1CON,A RETURN ;******************************** STOP_PWM CLRF CCP1CON,A RETURN ;******************************** INTEDG_UP BCF INTCON,INT0IF,A ; ÑÁÐÎÑÈÒÜ ÔËÀà ÏÐÅÐÛÂÀÍÈß ÎÒ ÑÈÃÍÀËÀ INT BSF INTCON2,INTEDG0,A ; ÏÐÅÐÛÂÀÍÈÅ ÏÎ ÔÐÎÍÒÓ ÑÈÃÍÀËÀ INT BSF INTCON,INT0IE,A ; ÐÀÇÐÅØÈÒÜ ÏÐÅÐÛÂÀÍÈß ÎÒ ÑÈÃÍÀËÀ INT RETURN ;********************************* INTEDG_DONE BCF INTCON,INT0IF,A ; ÑÁÐÎÑÈÒÜ ÔËÀà ÏÐÅÐÛÂÀÍÈß ÎÒ ÑÈÃÍÀËÀ INT BCF INTCON2,INTEDG0,A ; ÏÐÅÐÛÂÀÍÈÅ ÏÎ ÑÏÀÄÓ ÑÈÃÍÀËÀ INT BSF INTCON,INT0IE,A ; ÐÀÇÐÅØÈÒÜ ÏÐÅÐÛÂÀÍÈß ÎÒ ÑÈÃÍÀËÀ INT RETURN ;******************************** INIT_USART ; ÓÑÒÀÍÎÂÊÈ ÏÅÐÅÄÀÒ×ÈÊÀ CALL L_BAUND ; ÇÀÃÐÓÇÈÒÜ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È ; MOVLW 08 ; ÏÎ ÓÌÎË×ÀÍÈÞ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È 115200 ÁÈÒ/ÑÅÊ ÄËß 16 ÌÃÖ ; MOVLW 0A ; ÏÎ ÓÌÎË×ÀÍÈÞ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È 115200 ÁÈÒ/ÑÅÊ ÄËß 20 ÌÃÖ ; MOVLW 67 ; ÏÎ ÓÌÎË×ÀÍÈÞ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È 9600 ÁÈÒ/ÑÅÊ ÄËß 16 ÌÃÖ INIT_USART_SPID MOVWF SPBRG,A ; MOVLW B'00000100' ; ÍÀÑÒÐÎÉÊÀ ÏÎÑË. ÏÎÐÒÀ BRGH=1 ÄËß 20 ÌÃÖ MOVWF TXSTA,A ; BSF TRISC,7,A ; ÏÎÐÒ Ñ7 ÍÀÑÒÐÎÈÒÜ ÊÀÊ ÂÕÎÄ ÑÈÃÍÀËÀ RX BCF TRISC,6,A ; ÏÎÐÒ Ñ6 ÍÀÑÒÐÎÈÒÜ ÊÀÊ ÂÛÕÎÄ ÑÈÃÍÀËÀ TX BCF TRISC,5,A ; ÏÎÐÒ Ñ5 ÍÀÑÒÐÎÈÒÜ ÊÀÊ ÂÛÕÎÄ ÑÈÃÍÀËÀ ÓÏÐÀÂËÅÍÈß BSF PIE1,RCIE,A ; ÐÀÇÐÅØÅÍÈÅ ÏÐÅÐÛÂÀÍÈÉ ÎÒ ÏÎÑË. ÏÐÈÅÌÍÈÊÀ BSF PIE1,TXIE,A ; ÐÀÇÐÅØÅÍÈÅ ÏÐÅÐÛÂÀÍÈÉ ÎÒ ÏÎÑË. ÏÅÐÅÄÀÒ×ÈÊÀ BSF RCSTA,SPEN,A ; ÊÎÍÔÈÃÓÐÈÐÎÂÀÍÈÅ ÊÀÊ ÏÎÑË. ÏÎÐÒÀ BSF RCSTA,CREN,A ; ÐÀÇÐÅØÅÍÈÅ ÏÐÈÅÌÀ ÎÒ ÏÎÑË. ÏÎÐÒÀ BSF TXSTA,TXEN,A ; ÐÀÇÐÅØÅÍÈÅ ÐÀÁÎÒÛ ÏÅÐÅÄÀÒ×ÈÊÀ RETURN ;******************************** ; ;ÍÀÑÒÐÎÉÊÀ ÀÖÏ INIT_ADC MOVLW B'10000110' ; ÂÑÅ ÂÂÛÂÎÄÀ ÏÎÐÒÀ ÖÈÔÐÎÂÛÅ MOVWF ADCON1,A ; CLRF ADCON0,A ; BSF ADCON0,0,A ; ÂÊËÞ×ÈÒÜ ÌÎÄÓËÜ ÀÖÏ ; BSF ADCON0,7,A ; ÒÀÊÒÎÂÛÅ ÈÌÏÓËÜÑÛ ÄËß ÀÖÏ Fosc/32 RETURN ;******************************** INIT_EEPROM CALL L_BAUND ; Ñ×ÈÒÀÒÜ ÓÑÒÀÍÎÂËÅÍÍÓÞ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È XORLW 67 ; ÅÑËÈ ÑÊÎÐÎÑÒÜ 9600 ÁÈÒ/ÑÅÊ BTFSC STATUS,Z,A RETURN ; ÒÎ ÍÅ ÏÅÐÅÏÈÑÛÂÀÒÜ ÏÀÌßÒÜ ;******************************** ; ÈÍÈÖÈÀËÈÇÀÖÈß EEPROM ÓÑÒÀÍÎÂÊÀ ÇÍÀ×ÅÍÈÉ Â EEPROM ÏÎ ÓÌÎË×ÀÍÈÞ INIT_EEPROM_NEW INIT_EEPROM1 BCF INTCON,GIE,A ; ÂÑÅ ÌÀÑÊÈÐÓÅÌÛÅ ÏÐÅÐÛÂÀÍÈß ÇÀÏÐÅÙÅÍÛ ÍÀ ÂÐÅÌß Î×ÈÑÒÊÈ ÏÀÌßÒÈ MOVLW 0FFH MOVWF LOOPCOUNT,A CLR_EEPROM ; ÑÒÈÐÀÍÈÅ ÂÑÅÉ EEPROM ÏÀÌßÒÈ CLRWDT MOVF LOOPCOUNT,W,A MOVWF EEADR,A ; ÓÑÒÀÍÀÂËÈÂÀÅÌ ÀÄÐÅÑ Â EEPROM MOVLW 00 ; CALL SAVE_EEPROM ; ÎÁÍÓËÈÒÜ ß×ÅÉÊÓ EEPROM ÏÀÌßÒÈ DECFSZ LOOPCOUNT,F,A ; ÓÌÅÍÜØÀÅÌ Ñ×ÅÒ×ÈÊ È ÎÄÍÎÂÐÅÌÅÍÍÎ ÀÄÐÅÑ ÇÀÏÈÑÈ GOTO CLR_EEPROM CLRWDT ;******************************** MOVLW VAL_TIMER1 ; MOVWF EEADR,A ; ÓÑÒÀÍÀÂËÈÂÀÅÌ ÀÄÐÅÑ Â EEPROM MOVLW 20 ; ÇÍÀ×ÅÍÈÅ ÏÎ ÓÌÎË×ÀÍÈÞ CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW VAL_TIMER2 ; MOVWF EEADR,A ; ÓÑÒÀÍÀÂËÈÂÀÅÌ ÀÄÐÅÑ Â EEPROM MOVLW 00 ; ÇÍÀ×ÅÍÈÅ ÏÎ ÓÌÎË×ÀÍÈÞ CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW UST_BAUND ; ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È MOVWF EEADR,A ; ÓÑÒÀÍÀÂËÈÂÀÅÌ ÀÄÐÅÑ Â EEPROM ; MOVLW 08 ; ÏÎ ÓÌÎË×ÀÍÈÞ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È 115200 ÁÈÒ/ÑÅÊ ÄËß 16 ÌÃÖ ; MOVLW 0A ; ÏÎ ÓÌÎË×ÀÍÈÞ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È 115200 ÁÈÒ/ÑÅÊ ÄËß 20 ÌÃÖ MOVLW 67 ; ÏÎ ÓÌÎË×ÀÍÈÞ ÑÊÎÐÎÑÒÜ ÏÅÐÅÄÀ×È 9600 ÁÈÒ/ÑÅÊ ÄËß 16 ÌÃÖ CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW VAL_TMR1H ; MOVWF EEADR,A ; MOVLW 0F2 ; CALL SAVE_EEPROM MOVLW VAL_TMR1L ; MOVWF EEADR,A ; MOVLW 20 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW VAL_FR_PWM ; MOVWF EEADR,A ; MOVLW 32 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW COD_KEY1 ; MOVWF EEADR,A ; MOVLW 11 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW COD_KEY2 ; MOVWF EEADR,A ; MOVLW 10 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW COD_KEY3 ; MOVWF EEADR,A ; MOVLW 21 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW COD_KEY4 ; MOVWF EEADR,A ; MOVLW 20 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW WORK_TIME ; MOVWF EEADR,A ; MOVLW 01 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW WORK_TIME+1 ; MOVWF EEADR,A ; MOVLW 00 ; CALL SAVE_EEPROM CLRWDT ;******************************** MOVLW RC5_COD ; MOVWF EEADR,A ; MOVLW 0F ; CALL SAVE_EEPROM CLRWDT ;******************************** RETURN