Thông báo

Collapse
No announcement yet.

Giúp mình sửa lỗi code

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

  • Giúp mình sửa lỗi code

    bác nào sửa hộ em cái code mạch điều khiển động cơ.Em chuyển sang file hex toàn báo lỗi
    Code:
    #include<regx52.h>
    #include<stdio.h>
    #include<LCD.h>				 //Khai báo thu vien LCD
    sbit    PWM  		= P3^7;
    sbit    chieu 		= P3^6;
    sbit    E		    = P3^5;
    sbit    ledon 		= P3^1;
    sbit    ledoff 		= P3^0;
    sbit    ledthuan    = P3^2;
    sbit    lednghich   = P3^4;
    
    #define    phim_on 	   P1_0
    #define    phim_off    P1_1
    #define    phim_tang   P1_2
    #define    phim_giam   P1_3
    #define    phim_thuan  P1_4
    #define    phim_nghich P1_5
    
    unsigned int dem,t=0,t1=0,u,dem1=0,tocdo=0,tg=0;
    	   
    void ngat() interrupt 2		 //Hàm ngắt ngoài để đếm số xung
    {
    dem1++;	//Khi có 1 sườn sung tác động vào chân INT1 thì biến tăng lên 1 đơn vị
    } 
    
    void timer0() interrupt 1
    {
    TR0=0;					 //Dừng timer 0
    TH0=-1000/256;                            //Khoi tao cho bo dem timer 1voi he so chia là 2000
    TL0=-1000%256;
    t++;						 
    if(t==500) {
    			t=0;
    			t1=dem1;
    			dem1=0;
    			}
    TR0=1;						 //Chạy timer 0
    }	   
    //PWM------------------------------------------
    void timer2(void) interrupt 5{ //Ngắt timer 2 
      		  TR2=0;  
        	  TF2=0;                  		// Dừng chạy timer 2 
      		  dem++; 				//Tăng biến đếm
      		  if(dem > 10)			
    		  dem = 0;
    		  if(dem<tocdo)
    		  PWM = 1;			  	 //Tạo xung PWM
    	 	  else
    	 	  PWM = 0;
    		  TR2 = 1;
    } 
    
    void dieu_khien()				//Hàm điều khiển động cơ
    {
    	 if (phim_on==0)
    	{
    	     while(phim_on==0);	   //Khi nhấn vào phím on
    		 ledon=0;		   //Led báo động cơ hoạt động sáng lên
    		 ledoff=1;		   //Led báo động cơ ngừng hoạt động tắt
    			tocdo=5;	   //Khởi động động cơ với tốc độ chạy 50%
    			E=1;		   //Cho phép động cơ hoạt động
    			chieu=0;	   //Chiều động cơ là chiều thuận
    	}
    
    	if (phim_tang==0)
    		{
    		while (phim_tang==0);		//Nhấn vào phím tăng
    		E=1;
    		if(tg<10)
    			{
    			tg++;		 		  //Tăng tốc
    			}
    		if (chieu==0)tocdo=tg;
    		if (chieu==1)tocdo=10-tg;
    		}
    	
    	if (phim_giam==0)
    		{
    		while(phim_giam==0);		//Nhấn vào phím giảm
    		E=1;
    		if(tg>1)
    			{
    			tg--;		  		 //Giảm tốc
    			}
    		if (chieu==0)tocdo=10-tg;
    		if (chieu==1)tocdo=tg;
    		}
    
    	 if (phim_off==0)
    		 {
    	 	 while(phim_off==0);	  	 //Nhấn vào phím tắt
    		 E=0;					 //Động cơ ngừng hoạt động
    	 	 ledoff=0;
    		 ledon=1;
    	 	}
    	 
    	 if (phim_thuan==0)
    	 	{
    		 while(phim_thuan==0);		//Nhấn vào phím thuận
    		 chieu=0;
    		 E=1;
    		 tocdo=5;
    		 ledthuan=0;
    		 lednghich=1;
    		 }
    
    	 if(phim_nghich==0)	 		//Nhấn vào phím nghịch
    		 {
    	 	 while	(phim_nghich==0);
    		 chieu=1;		 		//Đổi chiều động cơ
    		 E=1;
    		 tocdo=5;
    		 ledthuan=1;
    		 lednghich=0;
    		 } 
    		 }
    
    void main()
    {
    	khoi_tao();				//Gọi hàm khởi tạo LCD
    	TMOD=0xd1;			//Timer 0 chế độ 1, timer 2 chế độ 1
    	IE=0xFF;
    	IP=0x04; 
    	TR1=1;TR0=1;
    	IT1=1;TF0=1;
    
    	T2CON=0x04; 			//Khởi tạo Timer 2 
    	RCAP2H=0xFF; 			//Khởi tạo giá trị cho timer 2
    	RCAP2L=0x9C; 
    	PWM=0;
    	EA=1;
    	TR2=1;				//Chạy timer 2
    	E=0;					//Động cơ ngừng hoạt động
    	
    	ghi_lenh1(0x01);			 //Xóa màn hình
    	ghi_lenh1(0x80);			 //Về đầu dòng thứ nhất
    	ghi_chuoi1("MOIBANDKDONGCO");
    
    while(1)
    	{ 
    	dieu_khien();			//Gọi hàm điều khiển động cơ
    	u=t1*60/32; 			//Chia lấy tốc độ động cơ
    	ghi_lenh(0xc0);			//Về đầu dòng thứ 2
    	sprintf(&mang[0],"TocdoDC=%4d V/P",u);//Ghi tốc độ động cơ lên  dòng thứ 2 
    	ghi_chuoi(&mang[0]);		//Gọi hàm ghi chuỗi
    	u=0;					//Xóa tốc độ
    	}
    }

  • #2
    Bác xem nó báo lỗi gì thì mọi người mới giúp bác được, cái này phải là ngôn ngữ C không bác, bác giỏi quá hà, ngày xưa 8051 này em toàn làm hợp ngữ nên C này em chịu thôi

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X