lepreachun
Üye
- Katılım
- 26 May 2010
- Mesajlar
- 6
- Puanları
- 1
- Yaş
- 36
İyi akşamlar beyler. Elimde kalp atış ölçümü ile ilgili bir PIC dosyası var. C ile yazılmış ancak ben tam olarak işlevini anlayamadım. Bu konuda yardım edebilirseniz sevinirim.
Sistem parmaktan atış işaretini alıp LCD ekrana yazdıracak. Ancak LCD ekrana sürekli ölçülen sonuçlar yazılıyor. Yani bir an 76 atımken bir anda parmak oynama yaparsa 40 ya da 120 atım gibi alakasız sonuçlar geliyor ama doğru ölçüm yapıldığında da aşağı yukarı 3-5 farkla birbirine yakın sonuçlar veriliyor.
#include "as2.h"
#zero_ram
unsigned long int display[10];
unsigned long int a,heart_rate;
unsigned int sira;
#define LCD_EN PIN_B1
#define LCD_RS PIN_D7
#define LCD_D0 PIN_B2
#define LCD_D1 PIN_B3
#define LCD_D2 PIN_B4
#define LCD_D3 PIN_B5
#include "lcd_mini.h"
#int_EXT
void EXT_isr(void)
{
unsigned long int b,c;
b=a;
c=a;
c=50000/c;
if((c<200) && (c>40)){
display[0]=display[1];
display[1]=display[2];
display[2]=display[3];
display[3]=display[4];
display[4]=display[5];
display[5]=display[6];
display[6]=display[7];
display[7]=display[8];
display[8]=display[9];
display[9]=40000/b;
heart_rate=(display[0]+display[1]+display[2]+display[3]+display[4]+display[5]+display[6]+display[7]+display[8]+display[9])/10;
printf(lcd_putc,"\1A=%3Lu \2NABIZ=%3Lu ATIM/DAKIKA",heart_rate,display[9]);
}
a=0;
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_0(RTCC_EXT_H_TO_L|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,200,12);
setup_ccp1(CCP_OFF);
delay_ms(1000);
lcd_init();
printf(lcd_putc,"\1NABIZ OLCER");
delay_ms(1000);
printf(lcd_putc,"\f");
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(1){
delay_ms(1);
a++;
}
}
Sistem parmaktan atış işaretini alıp LCD ekrana yazdıracak. Ancak LCD ekrana sürekli ölçülen sonuçlar yazılıyor. Yani bir an 76 atımken bir anda parmak oynama yaparsa 40 ya da 120 atım gibi alakasız sonuçlar geliyor ama doğru ölçüm yapıldığında da aşağı yukarı 3-5 farkla birbirine yakın sonuçlar veriliyor.
#include "as2.h"
#zero_ram
unsigned long int display[10];
unsigned long int a,heart_rate;
unsigned int sira;
#define LCD_EN PIN_B1
#define LCD_RS PIN_D7
#define LCD_D0 PIN_B2
#define LCD_D1 PIN_B3
#define LCD_D2 PIN_B4
#define LCD_D3 PIN_B5
#include "lcd_mini.h"
#int_EXT
void EXT_isr(void)
{
unsigned long int b,c;
b=a;
c=a;
c=50000/c;
if((c<200) && (c>40)){
display[0]=display[1];
display[1]=display[2];
display[2]=display[3];
display[3]=display[4];
display[4]=display[5];
display[5]=display[6];
display[6]=display[7];
display[7]=display[8];
display[8]=display[9];
display[9]=40000/b;
heart_rate=(display[0]+display[1]+display[2]+display[3]+display[4]+display[5]+display[6]+display[7]+display[8]+display[9])/10;
printf(lcd_putc,"\1A=%3Lu \2NABIZ=%3Lu ATIM/DAKIKA",heart_rate,display[9]);
}
a=0;
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_0(RTCC_EXT_H_TO_L|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,200,12);
setup_ccp1(CCP_OFF);
delay_ms(1000);
lcd_init();
printf(lcd_putc,"\1NABIZ OLCER");
delay_ms(1000);
printf(lcd_putc,"\f");
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(1){
delay_ms(1);
a++;
}
}
Son düzenleme: