Tady máš zapojení a funkční program, můžeš si doplnit ošetření tlačítek proti zákmitům.
;*****************************************************************************
;
; Ovladani 4 LED tlacitky ON -OFF
;
; PIC 16F84A
; Osc. -XT 4MHz
;
; Konfigurace programatoru: CP - NE; PWRTE - Disabled; WDTE - NE; OSC - XT
; !!!!!!!! NEJSOU OSETRENA TLACITKA PROTI ZAKMITUM !!!!!!!!!!!!
;
;******************************************************************************
LIST p=16f84A, R=DEC ;direktivy prekladace
include<p16f84A.inc> ;definice nazvu registru
;********************* definice zapojeni hardware ***************************
#DEFINE LED1 PORTB,0 ;1. LEDka
#DEFINE LED2 PORTB,1 ;2. LEDka
#DEFINE LED3 PORTB,2 ;3. LEDka
#DEFINE LED4 PORTB,3 ;4. LEDka
#DEFINE TL1 PORTB,4 ;Tlacitko 1, ovlada LED1
#DEFINE TL2 PORTB,5 ;Tlacitko 2, ovlada LED2
#DEFINE TL3 PORTB,6 ;Tlacitko 3, ovlada LED3
#DEFINE TL4 PORTB,7 ;Tlacitko 4, ovlada LED4
;******************** Promenne *******************************************
OffRam EQU 0x0C ;offset pameti pro PIC16F84
;******************** kod programu ****************************************
;
ORG 0
GOTO Start ;skok na zacatek programu
; ORG 4
; GOTO Prerus ;skok na obsluhu preruseni
;******************** Inicializace **********************************
Start BSF STATUS,RP0 ;banka1
MOVLW 0x00 ;nastaveni OPTION
MOVWF OPTION_REG
MOVLW 0x00 ;vse na PORTA - OUT
MOVWF TRISA
MOVLW 0xF0 ;nastaveni PORTB 11110000
MOVWF TRISB
MOVLW 0x00
MOVWF INTCON
BCF STATUS,RP0 ;banka0
BSF LED1 ;vypne LED1
BSF LED2
BSF LED3
BSF LED4
;******************* Hlavni program ***************************************
Start1 BTFSS TL1 ;testuje TL1, je-li sepnuto skok na podprogram
CALL Ledka1 ;kde testuje stav LED diody
BTFSS TL1 ;ceka na uvolneni tlacitka
GOTO $-1
BTFSS TL2
CALL Ledka2
BTFSS TL2
GOTO $-1
BTFSS TL3
CALL Ledka3
BTFSS TL3
GOTO $-1
BTFSS TL4
CALL Ledka4
BTFSS TL4
GOTO $-1
GOTO Start1
;******************* Podprogramy **************************************
Ledka1 BTFSS LED1 ;testuje predchozi stav LED1 a zmeni ji na opacny
GOTO $+3
BCF LED1
GOTO $+2
BSF LED1
RETURN
Ledka2 BTFSS LED2 ;testuje predchozi stav LED2 a zmeni ji na opacny
GOTO $+3
BCF LED2
GOTO $+2
BSF LED2
RETURN
Ledka3 BTFSS LED3 ;testuje predchozi stav LED3 a zmeni ji na opacny
GOTO $+3
BCF LED3
GOTO $+2
BSF LED3
RETURN
Ledka4 BTFSS LED4 ;testuje predchozi stav LED4 a zmeni ji na opacny
GOTO $+3
BCF LED4
GOTO $+2
BSF LED4
RETURN
;************************ Konec programu ************************************
END