' DEFINE TARGET = MEGA88 @ 4MHZ $regfile = "M88def.dat" $crystal = 4000000 ' CONFIGURE IO PORTS Config Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Portd.3 = Output Config Portd.4 = Output Config Portd.6 = Output Config Portd.7 = Output Config Portb.3 = Output Config Portb.4 = Output Config Portb.5 = Output Config Portb.2 = Output ' DEFINE VARIABLES Dim Led(10) As Byte Dim A As Byte Dim B As Byte Dim C As Byte Dim D As Word Dim E As Word Dim F As Integer Dim G As Word Dim H As Word Dim J As Integer Dim K As Integer Dim X As Byte ' DEFINE LED DIGITS Led(1) = 8 Led(2) = 187 Led(3) = 97 Led(4) = 49 Led(5) = 178 Led(6) = 52 Led(7) = 4 Led(8) = 185 Led(9) = 0 Led(10) = 48 ' SET DEFAULT HEART RATE K = 60 ' START ADC RUNNING Start Adc ' ********** MAIN LOOP ********** Main: Do ' READ ADC VALUE D = Getadc(0) ' GET ADC CHANGE SINCE LAST F = D - E F = Abs(f) E = D ' test bench 1 second = 164 clk 'X = X + 1 'F = 0 'If X = 200 Then 'X = 0 'F = 10 'End If ' HEART BEAT FILTER If G > 0 Then G = G - 1 If F > 4 And G = 0 Then G = 40 ' HEART BEAT LED FLASHER If G = 1 Then Portb.2 = 0 If G = 20 Then Portb.2 = 1 ' CALCULATE HEART RATE PER MINUTE H = H + 1 If G = 1 Then J = 9840 / H H = 0 End If ' SLOWLY ADJUST RUNNING AVERAGE If G = 1 Then If K > J Then K = K - 1 If K < J Then K = K + 1 End If ' DISPLAY DATA ON LEDS If K > 99 Then C = K Mod 10 B = K \ 10 B = B Mod 10 A = K \ 100 End If If K < 100 Then C = K Mod 10 B = K \ 10 A = 0 End If If K < 10 Then C = K B = 0 A = 0 End If Gosub Ledshow ' RESTART MAIN LOOP Loop End ' ********** LED DISPLAY ROUTINE ********** Ledshow: Portb.5 = 1 Portb.4 = 0 Portb.3 = 0 D = A + 1 Portd = Led(d) Waitms 2 Portb.5 = 0 Portb.4 = 1 Portb.3 = 0 D = B + 1 Portd = Led(d) Waitms 2 Portb.5 = 0 Portb.4 = 0 Portb.3 = 1 D = C + 1 Portd = Led(d) Waitms 2 Return