Ðề tài: CCS C for PIC16F877A
View Single Post
Old 27-06-2007, 06:39 PM   #222
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