Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CON
- _clkmode = xtal1 + pll16x
- _xinfreq = 5_000_000
- ' Set pins and Baud rate for XBee comms
- XB_Rx = 0 ' XBee DOUT
- XB_Tx = 1 ' XBee DIN
- XB_Baud = 9600 ' XBee Baud Rate
- CR = 13
- VAR
- Long PRStack[32]
- Long QRSStack [32]
- Long Rhythm
- OBJ
- XB : "XBee_Object_2"
- WAV : "PlayWav_8bit.spin"
- Pub Start | DataIn
- XB.start(XB_Rx, XB_Tx, 0, XB_Baud) ' Initialize comms for XBee
- cognew(PR, @PRStack)
- cognew(QRS, @QRSStack)
- repeat
- DataIn := XB.Rx ' Accept incoming byte
- If DataIn == "!" ' If start delimiter
- DataIn := XB.RxDecTime(500) ' Accept value for Rhythm
- if DataIn <> -1 ' If no timeout, hand data to Heart
- Rhythm := DataIn
- Pub PR | Index, x
- dira[8..11]~~
- repeat
- case Rhythm
- 1: 'SR
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt) 'S to T
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt) 'T to P
- 2: 'SB
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((306 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((614 * (clkfreq / 1000)) + cnt)
- 3: 'ST
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((90 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((180 * (clkfreq / 1000)) + cnt)
- 4: 'Afib
- Index := ?x
- Index := ||Index
- Index := Index // 100
- Index := Index + 1
- outa[9] := 1
- waitcnt(((Index + 50) * (clkfreq / 1000)) + cnt) 'Pwave
- outa[9] := 0
- waitcnt(((Index + 50) * (clkfreq / 1000)) + cnt) 'PR interval
- 5: 'Aflutter
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt) 'P wave
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt) 'PR Interval
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt) 'P wave
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt) 'PR Interval
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt) 'P wave
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt) 'PR Interval
- outa[10] := 1
- waitcnt((100 * (clkfreq / 1000)) + cnt) 'QRS
- outa[10] := 0
- waitcnt((15 * (clkfreq / 1000)) + cnt) 'RR Interval
- WAV.PlayHeartbeat
- waitcnt((65 * (clkfreq / 1000)) + cnt) 'RR Interval
- 6: 'SVT
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((10 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((30 * (clkfreq / 1000)) + cnt)
- 7: 'Vfib
- Index := ?x
- Index := ||Index
- Index := Index // 100
- Index := Index + 1
- outa[9] := 1
- waitcnt(((Index + 50) * (clkfreq / 1000)) + cnt) 'Pwave
- outa[9] := 0
- waitcnt(((Index + 50) * (clkfreq / 1000)) + cnt) 'PR interval
- 8: 'Vtach
- outa[10] := 1
- waitcnt((250 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- 9: '1AVB
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((150 * (clkfreq / 1000)) + cnt) 'PR segment
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt)
- 10: '2AVB Type 1
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt)
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((150 * (clkfreq / 1000)) + cnt) 'PR interval increases
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt) 'note between the beats shorten
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((200 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt)
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- WAV.PlayHeartbeat
- waitcnt((920 * (clkfreq / 1000)) + cnt)
- 11:
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt)
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt)
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((67 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((33 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((240 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((480 * (clkfreq / 1000)) + cnt)
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- WAV.PlayHeartbeat
- waitcnt((920 * (clkfreq / 1000)) + cnt) 'dropped QRS
- 12:
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt) 'Pwave
- WAV.PlayHeartbeat
- outa[9] := 0
- waitcnt((920 * (clkfreq / 1000)) + cnt) 'PR interval
- 13:
- outa[9] := 1
- waitcnt((80 * (clkfreq / 1000)) + cnt)
- outa[9] := 0
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 1
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((50 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((223 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((447 * (clkfreq / 1000)) + cnt)
- 14:
- outa[10] := 1
- waitcnt((100 * (clkfreq / 1000)) + cnt)
- outa[10] := 0
- waitcnt((366 * (clkfreq / 1000)) + cnt)
- WAV.PlayHeartbeat
- waitcnt((734 * (clkfreq / 1000)) + cnt)
- Pub QRS | Index, x
- dira[8..11]~~
- Repeat
- case Rhythm
- 4:
- Index := ?x
- Index := ||Index
- Index := Index // 360
- Index := Index + 2
- outa[10] := 1
- WAV.PlayHeartbeat
- waitcnt((100 * (clkfreq / 1000)) + cnt) 'QRS
- outa[10] := 0
- waitcnt(((Index * 3) * (clkfreq / 1000)) + cnt) 'RR Interval - PQRS
- 7:
- Index := ?x
- Index := ||Index
- Index := Index // 100
- Index := Index + 1
- outa[10] := 1
- waitcnt((50 * (clkfreq / 1000)) + cnt) 'QRS
- outa[10] := 0
- waitcnt((Index * (clkfreq / 1000)) + cnt) 'RR Interval - PQRS
- 12:
- outa[10] := 1
- waitcnt((150 * (clkfreq / 1000)) + cnt) 'QRS
- outa[10] := 0
- WAV.PlayHeartbeat
- waitcnt((1470 * (clkfreq / 1000)) + cnt) 'Slower RR Interval - QRS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement