Hiện nay tôi đang làm đồ án ghép nối máy tính. đề tài là thiết kế bộ tạo xung vuông 8253, mạch yêu cầu tần sô nhập từ bàn phím máy tinh.tôi đã tìm được phần lập trình nhưng hiện tại chưa thật sự hiểu được hết nó.và hiện tại tôi làm phần cứng vẫn chưa chạy rất mong được ý kiến đóng góp của các old members or newbie.sau đây là code tôi có được:
program tao_xung_vuong;
uses crt,dos;
var i,z:integer;
x:real;
procedure tre(t:longint);
Begin
for i:=1 to t do;
End;
procedure ghi_tu_dk(cw:byte);
Begin
port[$37A]:=$04;
PORT[$378]:=cw;
tre(100);
port[$37a]:=$00;
End;
procedure ghi_cho_T0(T0:byte);
Begin
port[$37A]:=$07;
port[$378]:=T0;
tre(100);
port[$37A]:=$03;
End;
procedure ghi_cho_T1(T1:byte);
Begin
port[$37A]:=$0A;
port[$378]:=T1;
tre(100);
port[$37A]:=08;
End;
procedure ghi_cho_T2(T2:byte) ;
Begin
port[$37A]:=06;
port[$378]:=T2;
tre(100);
port[$37A]:=04;
End;
Begin
clrscr;
write('nhap tan so x:');
readln(x);
z:=round(4E6/(64*x));
ghi_tu_dk($37);
ghi_cho_T0(8 mod 256);
ghi_cho_T0(8 div 256);
ghi_tu_dk($37);
ghi_cho_T1(8 mod 256);
ghi_cho_T1(8 div 256);
ghi_tu_dk($37);
ghi_cho_T0(z mod 256);
ghi_cho_T0(z div 256);
End.
đây là sơ đồ nguyên lý.
program tao_xung_vuong;
uses crt,dos;
var i,z:integer;
x:real;
procedure tre(t:longint);
Begin
for i:=1 to t do;
End;
procedure ghi_tu_dk(cw:byte);
Begin
port[$37A]:=$04;
PORT[$378]:=cw;
tre(100);
port[$37a]:=$00;
End;
procedure ghi_cho_T0(T0:byte);
Begin
port[$37A]:=$07;
port[$378]:=T0;
tre(100);
port[$37A]:=$03;
End;
procedure ghi_cho_T1(T1:byte);
Begin
port[$37A]:=$0A;
port[$378]:=T1;
tre(100);
port[$37A]:=08;
End;
procedure ghi_cho_T2(T2:byte) ;
Begin
port[$37A]:=06;
port[$378]:=T2;
tre(100);
port[$37A]:=04;
End;
Begin
clrscr;
write('nhap tan so x:');
readln(x);
z:=round(4E6/(64*x));
ghi_tu_dk($37);
ghi_cho_T0(8 mod 256);
ghi_cho_T0(8 div 256);
ghi_tu_dk($37);
ghi_cho_T1(8 mod 256);
ghi_cho_T1(8 div 256);
ghi_tu_dk($37);
ghi_cho_T0(z mod 256);
ghi_cho_T0(z div 256);
End.
đây là sơ đồ nguyên lý.
Comment