Advertisement
kdygnaro

Untitled

Jun 23rd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. N equ 2048 ;próbki na przerobienie w okresie próbkowanie ok 48kHz
  2.  
  3.             ;bezpieczny zakres to 60 - 100 uderzeń na minutę czyli częstotliwosc bicia serca od 1Hz do 1,7Hz
  4.             ;czyli czasowo od 1s albo 0,59s -> gromoadzić odcinki 1 s
  5.             ;przy pominietej probce co 32 mamy przy 3k próbek mamy około 1kHz czyli mamy odcinki po ok 1s po 3000 próbek
  6.  
  7.     ;asr #12,a,b  ;podziel do średniej
  8.    
  9.     move #668,r6 ;stala czasowa w us
  10.     move #0,r0 ;znacznik dla 1 probki
  11.     move #2,r1 ;znacznik w pamieci x dla 3 probki
  12.    
  13.    
  14.         .LOOP #(N)
  15.         move x:(r0),a ;pobierz 1 próbke
  16.         move x:(r1)+,x0 ;pobierz 3 próbke
  17.         sub x0,a ;a=a-x1
  18.         asr a ;podziel przez 2
  19.         nop
  20.         move a,x0  
  21.         move x0,x1 ;potęgowanie
  22.         move #0,a
  23.         mac x0,x1,a ;potegowanie cz2
  24.         nop ;;ZAOKRAGLENIE DODAJ
  25.         add a,b  a,x:(r0)+  ;dodaj do sredniej IiI zapisz próbkę mamy teraz piki w miejscach załamka Q o szerokości od 1-3 probek czy nie lepiej w innym miejscu? Nie zameazesz pamieci?
  26.         .ENDL
  27.        
  28.     asr #11,b,a  ;podziel i uzyskaj srednia z probek w danym oknie po przetworzeniu w celu ustawienia progu
  29.    
  30.     move #0,r0 ;znacznik dla 1 probki przerobionej
  31.     nop
  32.     move x:(r0),a ;max pierwszy
  33.     move a,b
  34.     asr #3,b,a  ;próg wielokrotność sredniej po matlabie stwierdzono że 8 wartości średniej
  35.     ;move r2,a   ;prog w akumulatorze
  36.     move #0,r5 ;flaga przejscia
  37.     ;m długosc bufora kolowoeg - moze gdzies ich uzyc
  38.     .LOOP   #(N)
  39.         move x:(r0)+,b ;pobierz probke
  40.         move b,y1          
  41.         cmp  y1,a ;porownaj w a prog w p mwartosc zmiennej
  42.        
  43.         .IF <ge> ;jezeli przekracza prog
  44.         BSET #1,r5 ;ustaw bit 1 aby pokazac ze jestesmy powyzej
  45.         BTST #3,r5 ;sprawdz czy 2 przebieg
  46.             .IF <cs> ;jezeli 2 przebieg w probkach znajdź max i nie przejmuje się resztą
  47.             BSET #1,r5
  48.             .ENDI
  49.            
  50.             .IF <cc> ;jezeli bylo 0 to znaczy ze mamy nowe "wzgorze"   
  51.                            
  52.                 BTST #2,r5 ;testuje bit aby sprawdzic czy wczesniej bylo cos w tych probkach jzeli tak to znaczy ze spadlo ponizej 1
  53.                
  54.                 .IF <cs>   ;sprawdz co z poprzednim adresem albo czy wczesniej spadalo
  55.                
  56.                     BSET #3,r5 ;bit ze 2 przebieg w tych probkach
  57.                                
  58.                 .ENDI
  59.                
  60.                
  61.             .ENDI
  62.            
  63.            
  64.            
  65.             max b,a ;znajdź maksimum i wybierz większe!!!!!!!!!!!!!!!!!!!!!!nie dziala!!!!!!!!!!!!!!!!!!!!!!!!!
  66.                 ;tu mozna porownac do min jezeli nie beedziemy obrabiac danych potegowaniem
  67.             ;move b,r7
  68.             ;sub b,a
  69.             ;tst a
  70.            
  71.             .IF
  72.            
  73.             .ENDI
  74.            
  75.             cmp b,a ;wstaw wartości do rej CCR
  76.            
  77.             .IF <ge>    ;sprawdź jestestr CCR czy większe lub rowne - znaczy ze zmienionow w tym cyklu
  78.             move r0,x1  ;wstaw adres największej wartości
  79.            
  80.             .ENDI      
  81.            
  82.             .IF <ne> ;dodaj 1 jezeli nie bylo najwiekszego
  83.            
  84.             BSET #2,r5 ;ustaw 2 bit bo spada
  85.            
  86.             BTST #3,r5  ;sprawdz moze wlasnie znalezlismy drugie max
  87.             .IF <ne>
  88.             move r0,a
  89.             sub x1,a ;odejmij adres poprzedniego maksimum
  90.             move a,x1 ;
  91.             move r6,y0 ;przerzucamy
  92.             mpy x1,y0,a ;wymnozenie przez  0,334 ms na adres
  93.             ;mamy okres jedengo przebiegu w a
  94.             BSET #4,r5 ;ustaw bit ze znaleziono 2 impuls
  95.             .ENDI
  96.                        
  97.             .ENDI
  98.        
  99.            
  100.         .ENDI
  101.        
  102.         .IF <ne> ;nie przekroczyl progu
  103.         BCLR #1,r5 ;ustaw 0 na bicie bo jestesmy ponizej
  104.         .ENDI
  105.         ;liczymy ilosc cykli pobrania miedzy probkami wymanzamy mnozymy przez stala czasowa /zegar przetwornika -> okreslamy okres -> czestotliwosc bicia
  106.            
  107.     .ENDL
  108.    
  109.    
  110.    
  111.    
  112.    
  113.     forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement