PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Tốc độ động cơ hiển thị không chính xác (http://www.picvietnam.com/forum/showthread.php?t=6453)

tungbka 02-06-2010 12:37 AM

Tốc độ động cơ hiển thị không chính xác
 
Em có lập trình đoạn chương trình sau:
Code:

  lcd_putchar(" PC or Manual?");
  while(down&S_t);

  If(!down) {
  lcd_putcmd(0x80);
  lcd_putchar("      Manual");
  delay_ms(1000);
  goto Manual;
      }
 
  If(!S_t) {
  lcd_putcmd(0x01);
  lcd_putchar(" PC");
  delay_ms(1000);
  goto Maytinh;
}

Còn đây là đoạn chương trình các ngắt:

Code:

#INT_RDA                                  // Ngat RS232
void Receive_isr()
{
text[dem]=getc();                        // Du lieu duoc dua vao mang
if(text[dem]=='@')                        // Kiem tra dieu kien ket thuc
    {
    flag =1;                              // Ket thuc nhan, bat co bao
    dem=0;
    }
else dem++;
}

#INT_EXT                                  // Ngat RB0
void ngatR0()
    {
      count++;                            // Ham duoc goi khi co suon len tai RB0
    }

#int_timer1
void Timer1_isr()
    {                                    // Ham duoc goi khi TImer1 tran (65535->0)
   
      set_timer1(53036);                  // Chu ky trich mau (65536-53036)*4*4/20000000 = 0.01
      tocdo= 30*(count + get_timer0());  // Tocdo=soxung*60/200/0.01
      count = 0;          //
      set_timer0(0);
 
    }

Với từng chương trình Maytinh hoặc Manual riêng rẽ thì chương trình chạy tốt, tốc độ động cơ hiển thị chính xác. Tuy nhiên khi ghép hai chương trình lại thì tốc độ lại hiển thị không chính xác nữa.
Em không biết nên làm thế nào nữa, chỉ ghép 2 chương trình đúng lại mà thành 1 chương trình sai. Hix. Mong mọi người cho em lời khuyên.


Múi giờ GMT. Hiện tại là 11:57 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam