'RB0 infravevő csatlakozás
'RB1 adatok fogadása a mobil MBus-ról
'RB2 adatok küldése a mobil MBus-ra
'RB3 relé vezérlés a piezo hangsugárzóhoz
'RB4 élesítés visszajelző LED
'RB5 hangjelzés
'RB7 Érzékelő figyelés aktív 0-ra (rövidzár)
Dim i As Byte
Dim si As Byte
Dim s As Byte
Dim o As Byte
Dim j As Byte
Dim u As Byte
Dim b As Bit
Dim v(10) As Byte
Dim t As Word
Dim ha As Word
i = 0
b = 1
TRISB = %10000011
PORTA = 0
OPTION_REG = %11000000
INTCON.INTE = 1  'engedélyezi RB0/INT megszakítást
INTCON.RBIE = 1	'engedélyezi a RB4-RB7 megszakítást
INTCON.GIE = 1  'engedélyez minden nem maszkolt megszakítást


loop:
t = t + 1		'A t változó számlálja az infravevő jelét két megszakítás között
WaitUs 40
Goto loop
End

On Interrupt  'interrupt routine  
If INTCON.INTF = 1 Then
	If t < 250 Then
		If i = 8 Then
			s = v(1) * 128
			o = v(2) * 64
			s = s + o
			o = v(3) * 32
			s = s + o
			o = v(4) * 16
			s = s + o
			o = v(5) * 8
			s = s + o
			o = v(6) * 4
			s = s + o
			o = v(7) * 2
			s = s + o
			o = v(8) * 1
			s = s + o
			i = 0
				If s = 192 Then  'Az s értéke tartalmazza a 8 bites kódot
				u = u + 1
					If u = 5 Then
					PORTB.4 = PORTB.4 Xor b
					ha = 1
					For ha = 1 To 500  '1KHz hangjelzés
					PORTB.5 = 1
					WaitUs 500
					PORTB.5 = 0
					WaitUs 500
					Next ha
					ha = 1
					For ha = 1 To 500  '1.2KHz hangjelzés
					PORTB.5 = 1
					WaitUs 416
					PORTB.5 = 0
					WaitUs 416
					Next ha
					ha = 1
					For ha = 1 To 500  '1.428 KHz hangjelzés
					PORTB.5 = 1
					WaitUs 350
					PORTB.5 = 0
					WaitUs 350
					Next ha
					Goto vege2
					Endif
				Endif
				Goto vege
		Endif
		If t < 100 Then
		i = i + 1
		v(i) = 1
			If t < 65 Then
			v(i) = 0
			Endif
		Endif
	Endif
Endif
vege:
If INTCON.RBIF = 1 Then         'Itt kezdődik az SMS küldő rész
	If PORTB.4 = 1 Then
		PORTB.3 = 1
		Hseropen 9600
		shurok:
		WaitMs 500
		Hserout 0x1f, 0x00, 0x1d, 0x02, 0x00, 0x38, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x07, 0x91, 0x63, 0x02, 0x39, 0x00, 0x90, 0xf9
		Hserout 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x0b, 0x91, 0x63, 0xXX, 0xXX, 0xXX, 0xXX, 0xfX, 0x00, 0x00, 0x00
		Hserout 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xf0, 0x3a, 0x3c, 0x07, 0xc9, 0xd3, 0xe1, 0xb9, 0x9e, 0x1e, 0x9e
		Hserout 0x83, 0x42, 0x52, 0xa0
		WaitMs 30
		Hserget si
			If si > 0 Then  'Ha az üzenet elküldve, akkor ugorj a ve cimkére
			WaitMs 400
			Hserout 0x1f, 0x00, 0x1d, 0xd1, 0x00, 0x05, 0x00, 0x01, 0x00, 0x03, 0x00, 0x53, 0x87
			WaitMs 400
			Hserout 0x1f, 0x00, 0x1d, 0x7f, 0xd4, 0xa9
			Goto ve
			Endif
		Goto shurok
		ve:
		WaitMs 60000
		WaitMs 60000
		WaitMs 60000
		PORTB.3 = 0
	Endif
Endif
t = 0
INTCON.INTF = 0  'engélyezése az új RB0/INT megszakításnak
INTCON.RBIF = 0	'engedélyezése az új RB7 megszakításnak
vege2:
If u = 5 Then
WaitMs 1000
u = 0
Endif
Resume
