Stap 3: Schrijven van de Code van de ontvanger
'------------------------------------------------------------
' 18 X - ontvanger
SYMBOOL RCV_PIN = 7
SYMBOOL DATA_RCVD = w3
SYMBOOL DATA_RCVD_SIGN = b3
SYMBOOL CHECK_DATA = b1
SYMBOOL BAUDRATE = N1200 ' moet b T2400 als met behulp van USB-serieel
symbool temp = b12
symbool Cnt w2 = ' teller
symbool Digit0 = b8 ' digit0 gegevens bevatten
symbool Digit1 = b9 ' digit1 gegevens bevatten
symbool Digit2 = b10 ' digit2 gegevens bevatten
symbool Digit3 = b11 ' digit3 gegevens bevatten
symbool slvAddrWR = $70 ' I2C adres schrijven
symbool slvAddrRD = $71 ' I2C Lees het adres
PAUZE 1000
i2cslave slvAddrWR, i2cslow, i2cbyte ' I2C-7SEG initialiseren
writei2c 0,(%01000111)
NXT:
LAAG 5
LAAG 6
KANARIE RCV_PIN, BAUDRATE,("TP"), DATA_RCVD_SIGN, DATA_RCVD, CHECK_DATA
Als CHECK_DATA = "x" dan
SERTXD ("Val", DATA_RCVD_SIGN, #DATA_RCVD, 13, 10)
' groen
LAAG 5
HOGE 6
onderbreken van 100
Anders ' controleren bit niet goed ontvangen
sertxd ("slecht.", "teken", DATA_RCVD_SIGN, "-", #DATA_RCVD_SIGN, ", rcvd1", DATA_RCVD, "-" #DATA_RCVD, ", chk", CHECK_DATA, "-", #CHECK_DATA, 13, 10)
' Zet rood
LAAG 6
HOGE 5
Eind als
onderbreken van 100
laat cnt = DATA_RCVD
GOSUB converteren ' Converteer decimaal in elk segment LED
' Schakel de eerste 2 cijfers
Digit3 = $0
Digit2 = $0
writei2c 1,(Digit0,Digit1,Digit2,Digit3) ' schrijven van elk cijfer 7-segment
GOTO NXT
CONVERTEREN: ' opzoektabel voor 7-segment
Temp = cnt % 10
LOOKUP temp, ($3F$ 06, $5B, $4F, $66, 6D$, 7D$, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit0
Temp = cnt / 10 10%
LOOKUP temp, ($3F$ 06, $5B, $4F, $66, 6D$, 7D$, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit1
Temp = cnt / 100% 10
LOOKUP temp, ($3F$ 06, $5B, $4F, $66, 6D$, 7D$, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit2
Temp = cnt / 1000% 10
LOOKUP temp, ($3F$ 06, $5B, $4F, $66, 6D$, 7D$, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit3
TERUGKEER
'------------------------------------------------------------
Toen ik begon met behulp van de module mij watertje getting sommige storing en dus soms het niet zou laten zien de juiste waarde, dus ik heb een selectievakje byte toegevoegd aan het einde, om te controleren dat de gegevens correct werd ontvangen. Wanneer de gegevens worden goed ontvangen de LED knippert groen, als "slecht" gegevens ontvangen het zal rood knipperen.
De lijnen
Digit3 = $0
Digit2 = $0
worden toegevoegd om te stoppen met de eerste 2 cijfers op het display weergegeven, terwijl ze niet hoeven te worden op.