; LIST p=16F887 ; nastavení typu procesoru #INCLUDE ; definice proměnných pro tento procesor ; === NASTAVENÍ KONFIGURAČNÍHO SLOVA === __CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT __CONFIG _CONFIG2, _WRT_OFF & _BOR21V ; === PROGRAM === RESET ORG 0x0000 ; začátek programu na adrese 0000h ; Inicializace portů BANKSEL PORTD CLRF PORTD MOVLW 0x01 MOVWF PORTD BANKSEL TRISD MOVLW 0x00 MOVWF TRISD BANKSEL PORTB CLRF PORTB BANKSEL ANSEL CLRF ANSEL CLRF ANSELH BANKSEL TRISB CLRF TRISB MOVLW 0x01 MOVWF TRISB BANKSEL PORTD ; Hlavní smyčka programu LOOP_M BTFSC PORTB,0 ; PORTA<0> = 0? GOTO LOOP_M ; - ne: skok na LOOP_M LOOP1 ; - ano: tlačítko bylo sepnuto, pokračuj BTFSS PORTB, 0 ; PORTA<0> = 1? GOTO LOOP1 ; - ne: skok na LOOP1 ; - ano: tlačítko bylo rozepnuto, pokračuj CALL CHANGE_LED ; aktualizuj výstupní stav GOTO LOOP_M ; Podprogram pro rotaci LED CHANGE_LED BCF STATUS, C ; C = 0 BTFSC PORTD, 7 ; PORTB<7> = 0? BSF STATUS, C ; - ne -> C = 1 RLF PORTD, f ; rotace vlev RETURN RETURN END