Điều khiển động cơ bước chế độ half-step
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.
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); } }