Thông báo

Collapse
No announcement yet.

Vấn đề Ngắt trong ngắt của PIC

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Vấn đề Ngắt trong ngắt của PIC

    Em viết chương trình cho 8 led sáng đuổi liên tục từ trái sang phải và khi có tác động RB4->RB7 thì chạy ngược lại từ phải sang trái, tác động RB4->RB7 lần nữa thì chạy từ trái sang , code của em đây chỉ làm được khi tác động RB4->RB7 lần đầu thì chạy ngược lại từ phải sang, còn lần tác động thứ 2 để đổi chiều em không viết được , mong mọi người giúp em với
    code của em đây
    Code:
    #include <16F877A.h>
    #include <DEF_877A.h>
    #include <math.h>
    #fuses	NOWDT,HS,NOPROTECT,PUT,XT
    #use delay(clock=4000000)
    #use fast_io(b)
    #use fast_io(d)
    int i,j;
    unsigned int xuat[]={1,2,4,8,16,32,64,128};
    unsigned int xuat1[]={128,64,32,16,8,4,2,1};
    #int_rb NOCLEAR
    void ngatrb()
    {
    	delay_ms(100);	
    	PORTD=xuat[i];
    	PORTD=0X00;
    	delay_ms(100);	
    	for(j=0;j<=7;j++)
    		{
    			portd=xuat1[j];
    			delay_ms(100);
    		}
    }
    main()
    {
    	set_tris_b(0xf0);
    	set_tris_d(0x00);
    	enable_interrupts(global);
    	enable_interrupts(int_rb);
    	ext_int_edge(H_TO_L);
    	PORTD=0X00;
    	while(1)
    		{
    		for(i=0;i<=7;i++)
    			{
    			PORTD=xuat[i];
    			delay_ms(100);
    			}
    		}
    		
    }

  • #2
    Chương trình của bạn ko giống như ý định mà bạn nói!

    Comment


    • #3
      Em viết chương trình cho 8 led sáng đuổi liên tục từ trái sang phải và khi có tác động RB4->RB7 thì chạy ngược lại từ phải sang trái, tác động RB4->RB7 lần nữa thì chạy từ trái sang , code của em đây chỉ làm được khi tác động RB4->RB7 lần đầu thì chạy ngược lại từ phải sang, còn lần tác động thứ 2 để đổi chiều em không viết được , mong mọi người giúp em với
      Bác thử làm thế này xem. Khai báo 1 biến kiểu bool là flag, khi có ngắt thì đảo trạng thái flag, mỗi trạng thái của flag tương ứng với 1 trạng thái của Led.
      bool flag=true; //ko có bool thì thay bằng char ...
      void ngatrb()
      {
      if(cờ ngắt rb4||cờ ngắt rb5||cờ ngắt rb6||cờ ngắt rb7)
      flag =~flag; //hay if(flag==true) flag = false; else flag = true;
      }
      void main()
      {
      if(flag==true)
      {
      chương trình nháy thuận;
      }
      else
      {
      chương trình nháy nghịch;
      }
      }

      Comment

      Về tác giả

      Collapse

      loveboom3012 Tìm hiểu thêm về loveboom3012

      Bài viết mới nhất

      Collapse

      Đang tải...
      X