'140722v2 'valise emission code interrupteur 'programme pour 16f688 'code 1 2 3 4 5 6 7 8 9 10 18 19 20 21 'attente 2s avant debut 'commande par front interupteur 'emission code IR en A.4 Define CONF_WORD = 0x33e4 OPTION_REG = %00000000 OSCCON = %01100000 '4 Mhz interne ADCON0 = %0000000 TRISA = %11101111 TRISC = %11111111 INTCON = %00000000 'toutdigital ANSEL = %00000000 WPUA = %000000000 CMCON0 = %11111111 OPTION_REG = %00000000 Dim i As Byte Dim test As Byte Dim cpt As Byte Dim code As Byte Dim temps As Word Dim pos1 As Byte Dim pos2 As Byte Dim pos3 As Byte Dim pos4 As Byte Dim pos5 As Byte Dim pos6 As Byte Dim pos7 As Byte Dim pos8 As Byte Symbol int1 = PORTA.1 Symbol int2 = PORTA.2 Symbol int3 = PORTC.0 Symbol int4 = PORTC.1 Symbol int5 = PORTC.2 Symbol int6 = PORTC.3 Symbol int7 = PORTC.4 Symbol int8 = PORTC.5 'Symbol led1 = PORTA.4 PORTA = %00000000 PORTC = %00000000 temps = 500 'temps d'action pos1 = 2 pos2 = 2 pos3 = 2 pos4 = 2 pos5 = 2 pos6 = 2 pos7 = 2 pos8 = 2 WaitMs 2000 debut: 'ir = 0 test = 0 cpt = 0 code = 0 test = 0 'lecture des BP 'pos1 etat du BP1 'cd relais 1 'par int1 (interupteur ) 'int1 code 1 et 2** If int1 = 1 Then Gosub tempo2 If int1 = 1 Then If pos1 = 2 Then Gosub code1 pos1 = 0 WaitMs 40 Gosub code1 Gosub tempo Endif If pos1 = 1 Then Gosub code1 WaitMs 45 Gosub code1 pos1 = 0 Gosub tempo Endif Endif Endif If int1 = 0 Then Gosub tempo2 If int1 = 0 Then If pos1 = 2 Then Gosub code2 WaitMs 40 Gosub code2 pos1 = 1 Gosub tempo Endif If pos1 = 0 Then Gosub code2 pos1 = 1 WaitMs 40 Gosub code2 Gosub tempo Endif Endif Endif 'int2 code 16 et 17**** If int2 = 1 Then Gosub tempo2 If int2 = 1 Then If pos2 = 2 Then Gosub code16 pos2 = 0 WaitMs 40 Gosub code16 Gosub tempo Endif If pos2 = 1 Then Gosub code16 WaitMs 40 Gosub code16 pos2 = 0 Gosub tempo Endif Endif Endif If int2 = 0 Then Gosub tempo2 If int2 = 0 Then If pos2 = 2 Then Gosub code17 WaitMs 40 Gosub code17 pos2 = 1 Gosub tempo Endif If pos2 = 0 Then Gosub code17 pos2 = 1 WaitMs 40 Gosub code17 Gosub tempo Endif Endif Endif 'int3 code 3 et 4***** If int3 = 1 Then Gosub tempo2 If int3 = 1 Then If pos3 = 2 Then Gosub code3 pos3 = 0 WaitMs 40 Gosub code3 Gosub tempo Endif If pos3 = 1 Then Gosub code3 WaitMs 40 Gosub code3 pos3 = 0 Gosub tempo Endif Endif Endif If int3 = 0 Then Gosub tempo2 If int3 = 0 Then If pos3 = 2 Then Gosub code4 WaitMs 40 Gosub code4 pos3 = 1 Gosub tempo Endif If pos3 = 0 Then Gosub code4 pos3 = 1 WaitMs 40 Gosub code4 Gosub tempo Endif Endif Endif 'int4 code 18 et 19***** If int4 = 1 Then Gosub tempo2 If int4 = 1 Then If pos4 = 2 Then Gosub code18 pos4 = 0 WaitMs 40 Gosub code18 Endif If pos4 = 1 Then Gosub code18 WaitMs 45 Gosub code18 pos4 = 1 Gosub tempo Endif Endif Endif If int4 = 0 Then Gosub tempo2 If int4 = 0 Then If pos4 = 0 Then Gosub code19 WaitMs 45 Gosub code19 pos4 = 2 Gosub tempo Endif If pos4 = 1 Then Gosub code19 pos4 = 0 WaitMs 40 Gosub code19 Gosub tempo Endif Endif Endif 'int5 code 5 et 6 *** If int5 = 1 Then Gosub tempo2 If int5 = 1 Then If pos5 = 0 Then Gosub code5 pos5 = 1 WaitMs 40 Gosub code5 Gosub tempo Endif If pos5 = 2 Then Gosub code5 WaitMs 40 Gosub code5 pos5 = 1 Gosub tempo Endif Endif Endif If int5 = 0 Then Gosub tempo2 If int5 = 0 Then If pos5 = 0 Then Gosub code6 WaitMs 40 Gosub code6 pos5 = 0 WaitMs 100 Endif If pos5 = 1 Then Gosub code6 pos5 = 0 WaitMs 40 Gosub code6 WaitMs 100 Endif Endif Endif 'int6* code 7 et 8 If int6 = 1 Then Gosub tempo2 If int6 = 1 Then If pos6 = 0 Then Gosub code7 pos6 = 1 WaitMs 40 Gosub code7 Gosub tempo Endif If pos6 = 2 Then Gosub code7 WaitMs 40 Gosub code7 pos6 = 1 Gosub tempo Endif Endif Endif If int6 = 0 Then Gosub tempo2 If int6 = 0 Then If pos6 = 0 Then Gosub code8 WaitMs 40 Gosub code8 pos6 = 0 Gosub tempo Endif If pos6 = 1 Then Gosub code8 pos6 = 0 WaitMs 40 Gosub code8 Gosub tempo Endif Endif Endif WaitMs 100 'int7* code 20 et 21 If int7 = 1 Then Gosub tempo2 If int7 = 1 Then If pos7 = 0 Then Gosub code20 pos7 = 1 WaitMs 40 Gosub code20 Gosub tempo Endif If pos7 = 2 Then Gosub code20 WaitMs 40 Gosub code20 pos7 = 1 Gosub tempo Endif Endif Endif If int7 = 0 Then Gosub tempo2 If int7 = 0 Then If pos7 = 1 Then Gosub code21 WaitMs 40 Gosub code21 pos7 = 0 Gosub tempo Endif If pos7 = 1 Then Gosub code21 pos7 = 0 WaitMs 40 Gosub code21 Gosub tempo Endif Endif Endif WaitMs 100 Goto debut End salve0: ASM: bsf 0x05,4 '0x05,2port a.0 i = 0 For i = 0 To 59 ASM: bcf 0x05,4 Next i Return salve1: ASM: bsf 0x05,4 ASM: nop ASM: nop ASM: nop ASM: nop For i = 1 To 24 ASM: nop ASM: bcf 0x05,4 ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: nop ASM: bsf 0x05,4 Next i ASM: bcf 0x05,4 Return un: Gosub salve1 Gosub salve1 Gosub salve0 Return zero: Gosub salve1 Gosub salve0 Return initial: Gosub salve1 Gosub salve1 Gosub salve1 Gosub salve1 Gosub salve0 Return code1: Gosub initial Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code2: Gosub initial Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code3: Gosub initial Gosub un Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code4: Gosub initial Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code5: Gosub initial Gosub un Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code6: Gosub initial Gosub zero Gosub un Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code7: Gosub initial Gosub un Gosub un Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code8: Gosub initial Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code9: Gosub initial Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code10: Gosub initial Gosub zero Gosub un Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code11: Gosub initial Gosub un Gosub un Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code12: Gosub initial Gosub zero Gosub zero Gosub un Gosub un Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code16: Gosub initial Gosub zero Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code17: Gosub initial Gosub un Gosub zero Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code18: Gosub initial Gosub zero Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code19: Gosub initial Gosub un Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code20: Gosub initial Gosub zero Gosub zero Gosub un Gosub zero Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return code21: Gosub initial Gosub un Gosub zero Gosub un Gosub zero Gosub un Gosub zero Gosub zero Gosub un Gosub zero Gosub zero Gosub zero Gosub zero Return tempo: 'entre signal WaitMs 500 Return tempo2: 'antirebond WaitMs 100 Return