; PORTY TLAČÍTEK #define RB2 PORTB,1 ; více #define RB3 PORTB,2 ; méněĺ #define RB1 PORTB,3 ; FUNKCE˙ #define RB4 PORTB,1 ; FUNKCE RUČNĚ˙ #define PORTKN b'00011110' ;POPSÁNÍ POLOHY TLAČÍTEK PORTU ;================================= #define RUC flag_0,3 ; REŽIM RUČNĚ ;================================= #define f_RB1 flag_5,0 ; #define f_RB2 flag_5,1 ; #define f_RB3 flag_5,2 ; #define f_RB4 flag_5,3 ; ;================================= #define kl_no flag_3,0 ; držení tlačítka ;================================= klava ; OBSLUHA TLAČÍTEK bsf STATUS,RP0 ; výběr banka 1 movlw PORTKN ; nastavení portů tlačítek na vstup movwf TRISB ; bcf STATUS,RP0 ; výběr banka 0 ;==================================== !!!!!!!! ; call zaderj ; volání programu zpoždění ; proti zákmitům ==================================== btfsc RB1 ; tlačítko funkce˙ goto t_PB3 ; btfsc kl_no ; goto vyh ; call zaderj ; volání programu zpoždění btfsc RB1 ; proti zákmitům goto end_kl_call ; bcf f_RB1 ; ;==================== btfsc vp_rp ; bit-úrovně volba parametrů funkce parametr 1 - úroveň goto $+3 ; bsf vp_rp ; nastavit správné nastavení tlačítek <> goto $+2 ; bcf vp_rp ; nastavit správný režim tlačítek <> vyb_re call vyb_fun ; goto end_kl_call ; ;==================================== t_PB3 btfsc RB3 ; tlačítko méně goto t_PB2 ; btfsc kl_no ; goto vyh ; call zaderj ; volání programu zpoždění btfsc RB3 ; goto end_kl_call ; bcf f_RB3 ; ;==================== btfss UST ; goto in_temin ; btfsc vp_rp ; bit-úrovně volba parametrů funkce parametr 1 - úroveň goto $+3 ; bsf LE_RI ;výběr funkcí -směru pouze v případě,je-li nakonfigurována goto vyb_re ; call ustanov ; goto end_kl_call ; ;==================================== t_PB2 btfsc RB2 ; tlačítko více goto t_PB4 ; btfsc kl_no ; goto vyh ; call zaderj ; volání programu zpoždění btfsc RB2 ; goto end_kl_call ; bcf f_RB2 ; ;==================== btfss UST ; goto in_temax ; btfsc vp_rp ; bit-úrovně volba parametrů funkce parametr 1 - úroveň goto $+3 ; bcf LE_RI ; výběr funkcí -směru goto vyb_re ; call ustanov ; goto end_kl_call ; ;==================================== ;==================================== t_PB4 btfsc RB1 ; tlačítko více goto end_klava ; btfsc kl_no ; goto vyh ; call zaderj ; volání programu zpoždění btfsc RB1 ; goto end_kl_call ; bcf f_RB1 ; ;==================== btfss RUC ; JESTLI JE RUČNÍ REŽIM SEPNI RELÉ goto trote ; btfsc kl_no goto vyh ; btfss RELE1 ; goto $+4 ; bcf RELE1 ; bsf kl_no ; bit tlačítko sepnuto goto end_kl_call ; bsf RELE1 ; bsf kl_no ; bit tlačítko sepnuto goto end_kl_call ; trote call restem ; goto end_kl_call ; ;==================================== in_temin bcf Ind_MAX ; bsf Ind_MIN ; movlw ct ; movwf ind_1 ; movlw b'00010000' ; "_" movwf ind_2 ; movlw b'00000000' ; "" movwf ind_3 ; goto inhre ;==================================== end_klava ; bcf kl_no ; reset stiskem tlačítka movlw SPUAN ; inicializace doby svícení˙ movwf uskor_1 ; movwf uskor ; goto end_kl_call ; ;==================================== vyh ; dvojté stisknutíĺ btfss UST ; goto end_vyh3 ; btfsc vp_rp ; goto end_vyh1 ; GOTO TESTRB1 ; jestli je stisknuto PB3+PB1 ENDTEST goto end_vyh1 ; ENDTEST1 btfsc RB1 ; goto end_vyh1 ; ;============== ; autovýchod z režimu nastavování clrf avtovyh ; call resautoexit ;============== ; goto end_vyh3 ; ;==================================== end_vyh1 movlw .5 ; subwf uskor_1,w ;kontrola dosažení proměné 1 BZ end_vyh2 ; decfsz uskor,f ; goto end_vyh3 ; decf uskor_1,f ; movfw uskor_1 ; movwf uskor ; end_vyh2 ; bcf kl_no ; end_vyh3 ; end_kl_call bsf f_RB1 ; bsf f_RB2 ; bsf f_RB3 ; bsf f_RB4 ; bsf STATUS,RP0 ; výběr banka 1 clrf TRISB ; nastavení portú na výstup bcf STATUS,RP0 ; výběr banka 0 return ; TESTRB1 BTFSC RB1 GOTO TESTRB2 GOTO ENDTEST1 TESTRB2 BTFSC RB2 GOTO ENDTEST GOTO ENDTEST1 ;====================================================