View Single Post
Old 14-08-2006, 12:44 AM   #13
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Chào các bác.Em mới học về Pic.Mong các bác chỉ giáo
Em dùng Htpic.
Em viết 1 chương trình đơn giản sử dụng timer0.
Nhưng chả hiểu tại sao thời gian delay ko chính xác(em mô phỏng bằng proteus).
Em delay 1 giây mà mô phỏng chạy những 15 giây(sai số lớn quá)
Mà ko hiểu tại sao lệnh while(1) lại ko lặp lại.Khi đèn chạy được 1 chu kỳ thì nó tắt luôn chứ ko lặp lại.
các bác xem giúp em với
Code:
//========================================================
//Bai toan phanh xe.Phanh duoc noi vao RB0
//khi phanh thi RB0 o muc thap
//binh thuong RB0 o muc cao
//co 8 led o RD8 den RD0 se sang theo quy luat(khi phanh)
//10000000,01000000...00000001,11111111,00000000
//sau do lap lai neu chua nha phanh
//thoi gian delay la 1 giay
//thach anh 20 Mhz

//========================================================
#include<pic.h>
#define out  PORTD
__CONFIG(HS & PWRTEN & BOREN & LVPDIS &WDTDIS );
void DL(unsigned int giay);
//--------------------------------------------------------------------------------------------------
const unsigned char a[]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0b11111111,0b00000000};
//========================================================
void main() 
{
    unsigned char i;	
            TRISB	= 0b11111111;    //Dinh nghia cong B la INPUT		
	RBPU      =0;              //co dien tro trong keo len nguon          
            TRISD           = 0b00000000;		
i=0;
while(1)
  {   
     if(RB0==0)                    //nhan phanh
         {
                out=a[i];
                i=i+1;
                DL(25000);          //delay 1giay
                if(i==11) i=0;
         }
    else
         {
             out=0;
             i=0;
         }
  }
}             
    	
//------------------------------------------------------------------------
void DL(unsigned int giay)    
{
 while(giay--)  
     {  
        //delay 40 microgiay
        PSA=1;      //bo chia dung cho wdt
        T0CS=0;     //dung dem thoi gian
        TMR0=56;  
        while(!TMR0IF);	
        TMR0IF=0;    
     }
}
//=============================THE END===========================
typhn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn