em đang viết code cho bộ điều khiển cảm biến nhiệt độ.trong đó có đoạn dùng lặp repeat để ổn định nhiệt độ dùng xung PWM.
code như sau :
procedure TForm1.btn7Click(Sender: TObject);
var x,oC,od:real;
a,b,c,d,e:integer;
begin
a:= 0;
b:= 63;
c:= 127;
d:= 191;
e:= 255;
repeat
od:=strtofloat(edt6.Text);
x:=readbyte ();
oC:=x/40;
if oC>od then sendbyte (a)//tat nguon bat quat
else if oC=od then showmessage ('ok')
else if oC<od then
if od-oC< 5 then sendbyte(b) //25% pwm
else if (5 < od-oc) and (od-oC< 10) then sendbyte(c) // 50 % pwm
else if (10< od-oC) and (od-oC< 15) then sendbyte(d) //75 % pwm
else if (15< od-oC) and (od-oC< 20) then sendbyte(e) //100% pwm
until stop=true
end;
procedure TForm1.btn5Click(Sender: TObject);
begin
stop:=True;
end;
trong đó od là nhiệt độ mà ng ta nhập vào, nhưng khi cho lặp thì có hiện tượng "đơ", máy k cho dừng(k cho click vào nút dừng), các bác pro cho e hỏi tại sao??? thanks nhìu
code như sau :
procedure TForm1.btn7Click(Sender: TObject);
var x,oC,od:real;
a,b,c,d,e:integer;
begin
a:= 0;
b:= 63;
c:= 127;
d:= 191;
e:= 255;
repeat
od:=strtofloat(edt6.Text);
x:=readbyte ();
oC:=x/40;
if oC>od then sendbyte (a)//tat nguon bat quat
else if oC=od then showmessage ('ok')
else if oC<od then
if od-oC< 5 then sendbyte(b) //25% pwm
else if (5 < od-oc) and (od-oC< 10) then sendbyte(c) // 50 % pwm
else if (10< od-oC) and (od-oC< 15) then sendbyte(d) //75 % pwm
else if (15< od-oC) and (od-oC< 20) then sendbyte(e) //100% pwm
until stop=true
end;
procedure TForm1.btn5Click(Sender: TObject);
begin
stop:=True;
end;
trong đó od là nhiệt độ mà ng ta nhập vào, nhưng khi cho lặp thì có hiện tượng "đơ", máy k cho dừng(k cho click vào nút dừng), các bác pro cho e hỏi tại sao??? thanks nhìu
Comment