Thông báo

Collapse
No announcement yet.

Help me!!!!

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

  • Help me!!!!

    Điều khiển động cơ bước chế độ half-step
    Code:
    #include <REGX51.H>
    
    unsigned char steps[] = {0x01,0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x09};
    char 	step=0;
    unsigned char	ttre;
    
    #define		 thuan	P2_0
    #define		 nguoc	P2_1
    #define		 nhanh	P2_2	
    #define		 cham	P2_3
    #define		 dung	P2_4
    
    void tre(unsigned char i)
    {
    	unsigned char j	=0;
    	for(j=0;j<i;j++)
    		{
    		 	TMOD	= 0x01 ; // che do 16 bit;
    			TH0 	= 0xFF; 
    			TL0		= 0x9B ;
    			TR0		=1 ; 	 // khoi dong
    			while(!TF0);
    			TF0 	=0; 	 // xóa tràn
    			TR0 	=0 ;	 // stop bo dinh thoi	
    		}
    }
    
    void dieukhien()   
    {
    	P3=steps[step];
    	if(thuan==0)
    		{
    			step++;
    			if(step>=8)
    				step=0;
    		}
    		else if(nguoc==0)
    			{
    				step--;
    				if(step<0)
    					step=7;					
    			}
    }
    
    void main()
    {
    	while(1)
    	{
    		dieukhien();
    		if(nhanh==0)
    			{
    				ttre--;
    				if(ttre<=1)
    					{
    						ttre=1;
    						//tre(ttre);
    					}
    			}
    			else if(cham==0)
    				{
    					ttre++;
    					if(ttre>400)
    						{
    							ttre=400;
    						//	tre(ttre);
    						}
    				}
    			tre(ttre);
    	}	
    }
    chào cả nhà!Khi mà biến ttre tăng hoặc giảm đến ngưỡng thì ta giữ giá trị ở ngưỡng đó,lúc đó ta dùng lệnh j vậy?tại e chạy trên mô phỏng thì khi xung tăng/giảm đến ngưỡng rồi lại bị reset về mức đầu.
    Last edited by gt47; 12-05-2009, 11:58.

Về tác giả

Collapse

gt47 https://erich-shen.net/ Tìm hiểu thêm về gt47

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

Collapse

Đang tải...
X