![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ tử 4 túi
Tham gia ngày: Apr 2008
Bài gửi: 66
: |
xem giúp em đoạn code với !!!!!!!!
em có đoạn code thế này
............................................. #include <16F877A.h> #include <DEFS_16F877A.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #device 16F877*=16 ADC=10 #use delay(clock=4000000) #include <glcd.c> #define rd RB6 #define Inf RB7 char sp[]="SPO2:"; char hr[]="HR:"; int8 data,anhsang,hongngoai,hongngoai1,hongngoai2,min_h ongngoai,max_hongngoai,red,red1,red2,min_red,max_r ed; float chuky, nhiptim, spo2; unsigned int16 count,point,point1,point2; int8 check1, check2, flag, a,b,c,d,x,y,y1; //Chuong trinh ngat TMR0 #int_timer0 void interrupt_timer0() { set_timer0(6); ++count; if(count == 100) // 100*500us = 500000us = 5ms { count=0; flag=1; } } #INT_AD void ngat_bien_doi_ad() { if (check2 == 1) { y1 = y; y = data/5; glcd_line(x,63-y1,x,63-y,on); glcd_line(x+1,63,x+1,15,off); x++; if ( x==63) x=-53; } } /*CHUONG TRINH CHINH*/ void main (void) { check1 = 0; /// kiem tra coi co led nao sang hay ko, 1 la co led sang, 0 la ko co led nao sang check2 = 1; /// kiem tra coi led do or hong ngoai sang, 1 la hong ngoai, 0 la led do Red = 0; Inf = 1; setup_adc_ports(ALL_ANALOG); setup_adc(adc_clock_internal); set_adc_channel(0); enable_interrupts(INT_AD); enable_interrupts(int_timer0); enable_interrupts(global); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us set_tris_B(0); set_tris_D(0); delay_ms(100); // Tao tre 100ms cho LCD khoi dong glcd_init(on); glcd_text57(64,0,sp,1,on); glcd_text57(64,8,hr,1,on); while (true) { if(flag == 1) /// sau khi ngat 5ms { if (check1 == 1) /// kiem tra co led sang { if (a == b == c == d == 1) /// tinh spo2, chu ky { chuky = (point1 - point2) * 0.005 * 2; nhiptim = 60 / chuky; point = 0; } if (check2 == 1) /// led hong ngoai sang { ++point; hongngoai2 = hongngoai1; hongngoai1 = hongngoai; data = read_adc(); hongngoai = data - anhsang; /// da nhan gia tri hong ngoai, sau do kiem tra gia tri max, min if (hongngoai1 < hongngoai2) { if (hongngoai1 <hongngoai) { min_hongngoai = hongngoai1; a = 1; point1 = point; } } if (hongngoai1 >hongngoai2) { if (hongngoai1 >hongngoai) { max_hongngoai = hongngoai1; b = 1; point2 = point; } } check2 = 0; rd = 1; Inf = 0; } else ///led do sang { red2 = red1; red1 = red; data = read_adc(); red = data - anhsang; if (red1 < red2) { if (red1 <red) { min_red = red1; c = 1; } } if (red1 > red2) { if (red1 > red) { max_red = red1; d = 1; } } check2 = 1; rd = 0; Inf = 1; } flag = 0; check1 = 0; } else /// ko co led nao sang { anhsang = read_adc(); check1 = 1; flag = 0; } } } } .................................................. ................................... và sau khi compile thi có nhữnng warning thế này ................................. interrupts disabled during call to prevent re-entracy: [glcd_writeByte] interrupts disabled during call to prevent re-entracy: [@MUL88] interrupts disabled during call to prevent re-entracy: [glcd_pixel] ..................................... vậy là thế nào và em phải giải quyết thế nào ??? mong mọi người giúp đỡ |
![]() |
![]() |
|
|