Kód: Vybrať všetko
'Knižnica pre výber MCU
'Nastavenie frekvencie na 8MHz
$regfile = "m644def.dat"
$crystal = 8000000
'Deklarácia portu B ako výstupu
'Deklarácia portu A ako vstupu
'Nastavenie prerušenia INT0 tak aby reagoval na vzostupnú hranu
Config Portb = Output
Config Porta = Input
Config Int0 = Falling
'Pri aktivácii prerušenia sa presuń na program PR
'Povolenie prerušenia INT0
'Povolenie Všetkých prerušení
On Int0 P
Enable Int0
Enable Interrupts
'Deklarácia premennej A ako byte
Dim A As Byte
'Nastavenie premennej A na hodnotu H00
'Nastavenie portu B na hodnotu HFF
'Nastavenie portu A na hodnotu HFF, tzn aktivácia pull-up rezistorov
A = &H00
Portb = &HFF
Porta = &HFF
'Pomenovanie PA0 na TL1
Tl1 Alias Pina.1
'Spustenie Hlavného programu P0, ktorý beží v nekonečnej slučke
P0:
Do
'Po stlačení TL1 sa presuň na program P2
If Tl1 = 0 Then
Gosub P1
End If
'Pri hodnote premennej A = 2, tzn po vykonaní programu P1, a stlačení TL1 sa presuň na program P2
'Počkaj 250ms, kvôli odstráneniu prekmitov na TL1
If Tl1 = 0 And A = 2 Then
Gosub P2
End If
Waitms 250
Loop
'Program 1: Do premennej A zapíš hodnotu 2 a následne pošli na port B hodnotu H00, počkaj 2s a pošli na port B hodnotu HFF a znova čakaj 2s a následne sa vráť do programu P0
P1:
A = 2
Portb = &H00
Wait 2
Portb = &HFF
Wait 2
Return
'Program 2: Do premennej A zapíš hodnotu 1 a následne posielaj na jednotlivé piny portu B logické úrovňe podľa zadania(vytvorenie svetelného hada), pričom po každom
'odoslaní hodnoty počkaj 1s. Nakoniec sa vráť do programu P0
P2:
A = 1
Portb = &B00000001
Wait 1
Portb = &B00000010
Wait 1
Portb = &B00000100
Wait 1
Portb = &B00001000
Wait 1
Portb = &B00010000
Wait 1
Portb = &B00100000
Wait 1
Portb = &B01000000
Wait 1
Portb = &B10000000
Wait 1
Portb = &B01000000
Wait 1
Portb = &B00100000
Wait 1
Portb = &B00010000
Wait 1
Portb = &B00001000
Wait 1
Portb = &B00000100
Wait 1
Portb = &B00000010
Wait 1
Portb = &B00000001
Wait 1
Portb = &HFF
Return
'Program prerušenia
P:
Portb = &H55
Waitms 500
Return
End