;PIC16F628A
	INCLUDE "P16F628.INC"LIST
	P=PIC16F628, R=DEC
	ERRORLEVEL      -302
	__config  _XT_OSC & _PWRTE_ON & _WDT_OFF & _LVP_OFF

	CBLOCK 0X20
	 hertek1,hertek2,hertek3
	 buzz,pungi1,pungi2
	 wtemp,stemp,pause1,pause2
	ENDC

#define vgomb	PORTA,0	;víz gomb
#define s1gomb	PORTA,1	;szörp 1 gomb
#define s2gomb	PORTA,2	;szörp 2 gomb
#define buzzer	PORTA,3	;csipogó
;
#define pgomb	PORTB,0	;program gomb
#define piros	PORTB,1	;szörp 2 visszajelző led
#define zold	PORTB,2	;szörp 1 visszajelző led
#define kek	PORTB,3	;víz visszajelző led
#define szorp2	PORTB,5	;szörp 2 kimenet vezérlő
#define szorp1	PORTB,6	;szörp 1 kimenet vezérlő
#define viz	PORTB,7	;víz kimenet vezérlő
;
	ORG	0x00	;reset vektor
	goto	main
;
	ORG	0x04	;megszak vektor  - programozási interrupt
PUSH 	movwf	wtemp
	swapf	status,0
	movwf	statustemp
	btfsc	intcon,intf
	goto	PGOMB
PoP	swapf	statustemp,0
	movwf	status
	swapf	wtemp,1
	swapf	wtemp,0
	bsf	intcon,gie
	retfie
;
main 	clrf	status
	clrf	PORTB
	clrf	PORTA
	bsf	STATUS,5
	movlw	b'11110001'
	movwf	TRISB
	movlw	b'00000111'
	movwf	TRISA
	bcf	STATUS,5
	movlw	7
	movwf	CMCON
;
;*****************************************
;***********	Foprogram	**********
;*****************************************
start	clrw
	clrf	PORTB
	clrf	PORTA
;
	btfss	vgomb
	goto	viz1	;simavíz -hez ugrik
	btfss	s1gomb
	goto	viz2	;szörp 1 -hez ugrik
	btfss	s2gomb
	goto	viz3	;szörp 2 -hez ugrik
	goto	start
;
;*****************************************
;************   Főprogi vége   ***********
;
;********** termékválasztás ********
;***********************************
viz1	movlw	b'10001000'
	movwf	portb
	btfss	viz1
	goto	vizz1
	goto	start
vizz1	call	beep1a
vizz2	btfss	viz1
	goto	vizz2
	goto	start
;
viz2	movlw	b'11000100'
	movwf	portb
	btfss	viz2
	goto	viz21
	goto	start
viz21	call	beep1b
viz22	btfss	viz2
	goto	viz22
	goto	start
;
viz3	movlw	b'10100010'
	movwf	portb
	btfss	viz3
	goto	viz31
	goto	start
viz31	call	beep1c
viz32	btfss	viz3
	goto	viz32
	goto	start
;
;**********************************************
;**************** Programozás *****************
PGOMB	bcf	intcon,gie	;fenntartva késöbbi
	bcf	intcon,intf	;fejlesztéshez
	movlw	b'00001110'
	movwf	PORTB
vgom	btfss	vgomb
	goto	vgom
	call	beep1a
s1gom	btfss	s1gomb
	goto	s1gom
	call	beep1b
s2gom	btfss	s2gomb
	goto	s2gom
	call	beep1c
	goto	POP
;**********************************************
;
;
;********* csipogo rutin 1,2,3 ****************
beep1a	movlw	500
	movwf	buzz
beep2a	bsf	buzzer
	call	hang1
	bcf	buzzer
	call	hang1
	bsf	buzzer
	call	hang1
	bcf	buzzer
	decfsz	buzz,1
	goto	beep2a
	return
;
beep1b	movlw	10000
	movwf	buzz
beep2b	bsf	buzzer
	call	hang2
	bcf	buzzer
	call	hang2
	bsf	buzzer
	call	hang2
	bcf	buzzer
	decfsz	buzz,1
	goto	beep2b
	return
;
beep1c	movlw	10000
	movwf	buzz
beep2c	bsf	buzzer
	call	hang3
	bcf	buzzer
	call	hang3
	bsf	buzzer
	call	hang3
	bcf	buzzer
	decfsz	buzz,1
	goto	beep2c
	return
;
;************* SZÜNETEK *****************
;******** futofény Ledváltás szünet *****
;****************************************
pungi	movlw	200
	movwf	pungi1
pungia	movlw	100
	movwf	pungi2
pungib	nop
	nop
	decfsz	pungi2,1
	goto	pungib
	decfsz	pungi1,1
	goto	pungia
	return
;
;******* a csipogo hangja *******
hang1	movlw	5
	movwf	hertek2
	goto	hang
;
hang2	movlw	10
	movwf	hertek2
	goto	hang
;
hang3	movlw	20
	movwf	hertek2
	goto	hang
;
;
hang	movlw	2
	movwf	hertek1
hloop1	movf	hertek2
	movwf	hertek3
hloop2	nop
	nop
	decfsz	hertek3,1
	goto	hloop2
	decfsz	hertek1,1
	goto	hloop1
	return
;
;******** szünet *************
pause	movlw	40
	movwf	pause1
pausea	movlw	80
	movwf	pause2
pauseb	nop
	nop
	decfsz	pause2,1
	goto	pauseb
	decfsz	pause1,1
	goto	pausea
	return
;end;
