PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 12-01-2011, 07:00 PM   #3
caovanhuong
Đệ tử 2 túi
 
caovanhuong's Avatar
 
Tham gia ngày: Jul 2009
Bài gửi: 40
:
Trích:
Nguyên văn bởi robotpic View Post
Code:
#include <18f4331.h>
#include <def_4331.h>

#FUSES HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOPUT,NOCPD,NODEBUG,NOFCMEN,NOCPB,STVREN,NOPWMPIN,HPOL_LOW
//#FUSES MCLR,NOIESO,NOWRTC,NOWRTB,NOWRTD,NOEBTR,NOWRT,NOEBTRB,T1STANDARD,NOWINEN
//#fuses EXCLKc3
#use delay(clock=20000000)

#use fast_io(b)
#use fast_io(c)
#use fast_io(a)
#use fast_io(d)
#use fast_io(e)

   
INT16 XUNG,XUNG1,XUNG2;

 
 
 #INT_EXT //RC3
 
 

   VOID DEM_NGAT()
      {   
           //disable_interrupts(int_ext);
               XUNG++;
           //if ((XUNG >= en_t)&&(flag_ngat == 0))
          // {
          //  ngat = 1;
          //  flag_ngat = 1;
          //  XUNG = 0;
         //  }
         //  enable_interrupts(int_ext) ;
      
      }
   
   #INT_EXT1 //RC4
   VOID DEM_NGAT_1()
      {
      
      XUNG1++;
    //  INT1IF=0;
      
      }
  
   #INT_EXT2 //RC5
   
   VOID DEM_NGAT_2()
      {
      XUNG2++;
     // INT2IF=1;
     
      }
   
  
   
   void main()
   { 
    /////////////////////////////
    trisa0=0;
    trisa5=0;
    trisb0=0;
    
    ra0=ra5=rb0=1;
    
    ////////////////////////////
    
    trisc4=1;
    trisc3=1;
    trisc5=1;

    xung=xung1=xung2=0;
    
   enable_interrupts(INT_EXT); 
   enable_interrupts(INT_EXT1); 
   enable_interrupts(INT_EXT2);
   
   ext_int_edge(0, L_TO_H );
   ext_int_edge(1, L_TO_H );
   ext_int_edge(2, L_TO_H );
   rc3=rc4=rc5=1;
   enable_interrupts(GLOBAL);  
   
  
    
           
           while(true)
                {  
                        
                                 
                            if(xung1==10)
                             {
                             ra0=0;
                             
                             }
                       else if(xung1==15)
                             {
                              ra0=1;
                              ra5=0;
                             }
                       else if (xung1==24)
                            {
                             ra0=ra5=1;
                             rb1=0;
                            }
                     
                }
                
    }
tôi cũng không hiểu là chương trình bạn chạy không đúng là không đúng kiểu gì.
làm tới PIC18 rồi mà câu lệnh lủng củng quá
thanh ghi trisa, trisb, trisc ở đâu mà lắm thế.
khai báo tới 3 ngắt mà sử dụng có một ngắt, biến xung 1 bạn chỉ sử dụng tới 24 mà bạn không giới hạn ở chương trình ngắt thì nó đếm mãi à, chương trình chạy sao mà đúng được.
__________________
Cao Văn Hưởng
SĐT: 01672754113
Email: caovanhuong@webdien.com
Nhận thiết kế mạch điện tử, PCB (Orcad)

caovanhuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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


Múi giờ GMT. Hiện tại là 02:21 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