PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 03-03-2008, 02:10 PM   #19
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
giúp mình về cái timer với!!
trong chương trình của mình có sử dụng cả timer và ngắt. Đây là hàm phục vụ ngắt của mình:
Code:
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE))
   {
       //if(khoidong0==1)
       //  goto Thoat;
       output_low(pin_A3);
       output_low(pin_A4);
       output_low(pin_A5);
       if(!RB4)
       {
          if(ver==0)
            {
               ver=1;
               hienthicot1();
               goto Thoat;
            }
          if(ver==1)
            {
               ver=2;
               CPHT=1;
               goto Thoat;
            }
          if(ver==2)
            {
               ver=3;
               doctrunggian2();
               hienthicot3();
               goto Thoat;
            }
          if(ver==3)
            {
               ver=4;
               phantich_so(trunggian2);
               trunggian=nghin;
               lcd_display_blink(0,13);
               goto thoat;
            }
          if(ver==4)
            {
               ver=5;
               trunggian=tram;
               if(hor==6)
                  lcd_display_char(0,13,pw[0]);
               lcd_display_blink(0,14);
               goto thoat;
            }
          if(ver==5)
            {
               trunggian=chuc;
               if(hor==6)
                  lcd_display_char(0,14,pw[0]);
               ver=6;
               lcd_display_blink(0,15);
               goto thoat;
            }
          if(ver==6)
            {
               trunggian=donvi;
               if(hor==6)
                  lcd_display_char(0,15,pw[0]);
               ver=7;
               lcd_display_blink(0,16);
               goto thoat;
            }
          if(ver==7)
            {
               ver=4;
               trunggian=nghin;
               if(hor==6)
                  lcd_display_char(0,16,pw[0]);
               lcd_display_blink(0,13);
               goto thoat;
            }
        }  // Xong RB4
       if(!RB5)
       {
          if((ver==0)||(ver==1))
            goto Thoat;
          if(ver==2)
          {
            ver=1;
            hienthicot1();
            CPHT=0;
            hor=0;
            goto Thoat;
          }// endif(ver==1)
          if(ver==3)
          {
            if((hor==1)||(hor==2)||(hor==3)||(hor==4)||(hor==5))
                     hor=1;
            if((hor==6)||(hor==7)||(hor==8)||(hor==9))
                     hor=6;
            hienthicot2();
            ver=2;
            goto Thoat;
          }// endif(ver==1)
          if((ver==4)||(ver==5)||(ver==6)||(ver==7))
            {
               //RBIF=0;
               tonghop_so();

            }
         }// Endif(RB5)
       if(!RB6) // Xu ly tang gia tri
       {
         if((ver==4)||(ver==5)||(ver==6)||(ver==7))
            tangcot();
       }// Endif(RB6)
       if(!RB7)
       {
          if(ver==2)
            {
               if(hor==0)
               {
                  hor=1;
                  goto hienthi42;
               }
               if(hor==1)
               {
                  hor=6;
                  goto hienthi42;
               }
               if(hor==6)
               {
                  hor=0;
                  goto hienthi42;
               }
            hienthi42:
               hienthicot2();
               goto thoat;
            }
            if(ver==3)
            {

               if(hor==1)
               {
                  hor=2;
                  goto chuyendich43;
               }
               if(hor==2)
               {
                  hor=3;
                  goto chuyendich43;
               }
               if(hor==3)
               {
                  hor=4;
                  goto chuyendich43;
               }
               if(hor==4)
               {
                  hor=5;
                  goto chuyendich43;
               }
               if(hor==5)
               {
                  hor=1;
                  goto chuyendich43;
               }
               if((hor==6)&(user==1))
               {
                  hor=7;
                  user=0;
                  goto chuyendich43;
               }
               if(hor==7)
               {
                  hor=8;
                  goto chuyendich43;
               }
               if(hor==8)
               {
                  hor=9;
                  goto chuyendich43;
               }
               if(hor==9)
               {
                  hor=7;
                  goto chuyendich43;
               }
            chuyendich43:
               {
               //doctrunggian2();

               hienthicot3();
               phantich_so(trunggian2);
              // doctrunggian2();
               }
            } //If (ver==3)
         }// Endif(RB7)
Thoat:
   RBIF=0; //Xoa co ngat RB
   } // Ket thuc if co ngat
}// Ket thuc ham void
trong hàm phục vụ ngắt mình gọi đến khá nhiều hàm con. Khi chương trình chính không làm gì, chỉ thiết lập timer hoặc mình bỏ hẳn hàm phục vụ ngắt khỏi chương trình và trong chương trình chính cho gọi đến các hàm con khác thì timer chạy đúng như mong muốn. nhưng khi để hàm phục vụ ngắt và trong chương trình chính có gọi đến chương trình con đã được gọi trong hàm phục vụ ngắt thì thời gian ngắt của timer lại không chính xác nữa.
mình đã thử độc lập riêng timer thì hoàn toàn đúng.
mong được mọi người giúp đỡ. mình cảm ơn nhiều.
bean984 vẫn chưa có mặt trong diễn đàn  
 

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam