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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 27-06-2007, 10:32 AM   #1
dvnccbmacbt
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 65
:
Cool Hỏi về ngắt trên chân RB4-RB7!!

Em viết chương trình như sau: chương trình dùng để chạy led thuận trên portD, khi có ngắt trên RB7 thì chạy led ngược lại.
Code:
/#include <16F877A.h>
#device *=16
#fuses NOWDT,HS,NOPROTECT
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(a)
#use fast_io(d)
#use fast_io(e)

#byte intcon=0x000B
#bit RBIF=intcon.0

int8 const led[]={1,2,4,8,16,32,64,128};
int8 a=0,j=0,i=0;
int16 dem=0;
//========ham ngat timer0==========//
#int_rb
void ngat_rb()
 {
   for(j=8;j>0;j--)
    {
     output_d(led[j-1]);
     delay_ms(10);
    }output_d(0);RBIF=0;
 }
//===========ham chinh=============//
void main()
{set_tris_d(0);
 set_tris_b(0xff);
 enable_interrupts(global);
 enable_interrupts(int_rb);
ext_int_edge(L_TO_H );
 while(1)
 {   for(i=0;i<8;i++)
    {
     output_d(led[i]);
     delay_ms(10);
    }output_d(0);
 }
}
còn đây là sơ đồ mạch:



đầu tiên nó chạy thuận thì đúng rồii. khi bấm nut thì nó chạy ngược lại cũng đúng nhưng sau đó thì nó cứ chạy ngược mãi mà không chạy thuận lại. Em nghĩ khi nó chạy xong chương trình ngắt rồi thì nó sẽ thực hiện chương trình chính chứ. Ở đây hàm delay có gây ra lỗi ko?

Cho em Hỏi thêm 1 ý nữa: Ngắt sẽ xảy ra khi có chuyển trạng thái trên chân RB4-Rb7. vây nếu trong chương trinh ta thiêt lập là output và cho chuyển trạng thái bằng lệnh thì có xảy ra ngắt ko? Sự khác nhau giữa ngắt ngoài trên chân RBO và ngắt trên RB4->RB7 là gì?
dvnccbmacbt vẫn chưa có mặt trong diễn đàn  
Old 27-06-2007, 06:39 PM   #2
LeDuc
Đệ tử 6 túi
 
LeDuc's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 150
:
Code:
#include <16F877A.h>
#device *=16 ADC=8
#fuses NOWDT,HS,NOPROTECT

#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(a)
#use fast_io(d)
#use fast_io(e)

#byte intcon=0x000B
#byte portb=0x6

#bit RB7 =portb.7
#bit RBIF=intcon.0
#bit RBIE=intcon.3
//-----------------------------
int8 const led[]={1,2,4,8,16,32,64,128};
int8 j=0,i=0;

//========ham ngat tren RB ==========//
#int_rb
void ngat_rb()
{
   if(rb7==0)
   for(j=8;j>0;j--)
   {
      output_d(led[j-1]);
      delay_ms(10);
   }
}
//===========ham chinh=============//
void main()
{
   set_tris_d(0);
   set_tris_b(0xff);
   enable_interrupts(global);
   enable_interrupts(int_rb);
   ext_int_edge(L_TO_H );
   while(true)
   { 
      for(i=0;i<8;i++)
      {
          output_d(led[i]);
          delay_ms(10);
      }
   }
}
Mình đã sửa lại đoạn code của bạn rồi ..thay đổi một chút thôi.
Mình đã kiểm tra và chạy ok rồi... Nhưng có lẽ dùng delay trong hàm ngắt là ko nên . Nên tìm 1 giải thuật khác , dịch bit chẳng hạn ...
Còn sự khác biệt giữa các ngắt :" bạn xem lại phía trên các anh có chỉ dẫn đó ...
hy vọng mọi người sẽ cùng nhau tìm hiểu nhiều hơn...có sai nhiều .. có sửa nhiều ..--->> tiến bộ nhiều (^_^)!!!
Rất cảm ơn vì đã gởi thắc mắc lên đây.. qua bài trên mình đã tìm hiểu thêm được nhiều điều mới..
__________________
_________________________________________________
Le Trung Duc
Industry Research & Application Center
NTT Institute of Hi_technolog
ltduc@ntt.edu.vn
leduc_cktd@yahoo.com.vn
http://www.nttc.edu.vn
CNC DIY : http://quangcaosanpham.com/shop/driverservo
0909300332
LeDuc vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá

Ð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à 11:57 AM.


Đượ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