,,,
30 , , , 8 , 12 . 9 , , .
, , , , .
, - -.
, - LPT , .
.
1 -
1.1
1.2 -
2
2.1 58053
2.2 1555
2.3 1553
3
3.1
3.2
4
4.1
- () . , , . : . . - , - .
- , , , . , , . , , , , . , , . , : , .
. ( ) . -.
( . ) , , . . (), ( ). , , , , .. =0%, . , , , .
- 580, . .
1 -
1.1
, . , , ( ). (1).
. 1.
, , . , . , , .
(), . - F, F F . , :
F n3F (n=2, 3, 4,...) F m2F (m=3,4,5,...)
, , : ( ) ( , ).
( ) , , ( - ). , - . , , MOTOROLA (68HC705MC4, 68HC708MP16), INTEL (8xC196MC/MD/MH), TEXAS INSTRUMENTS, [2,3].
- (3-24) . - , "" , , , , . 8 125 . - , , , . MOTOROLA (68HC16Y1, MC68336) TPU (Timer Processor Unit), INTEL (8xC196NP/NU) EPA (Event Processor Array). , . TPU, EPA , , . , , , .
, , . , - .
F , . , 64 (Fmax = 60 ; (0.5-120)% 0.5%). 8- .
- . , , , 16- , .
, . , 27 ( 12). "" ( "") , .
. . . , F, ( ), , . "" , ( ), . , .
2.
. 2.
- , . , (Fmax = 60 ; (0.5-120)% 0.5%) 11. F/F 40 ( F 48) , , , 4 .
, - , 8- . , , .. MCS-51 (, 80C3x0 DALLAS SEMICONDUCTOR) 8.25 (183031).
- , , - . - - , ( 3). :
V = V
. 3.
:
. , . , .
. , . , . 20 4 . 4 . , .
. 50 , 100 .
3.
. 4.
- . - (. 18). , (FPWM) , (FBW):
FPWM = x FBW,
, , .
:
RC=1/(2πFBW)
, R. :
-10 x log[1 + (2πFPWMRC)2] ()
, , .
4.
. , . (00...FF), . , 100 .
2
2.1 58053
58053 580, , , .
, . (8 ) ( 1800), , . 58024, 58028, 58038, 58082, 58083, 58086, 58087 , n-. , 580, 10... + 70 .
58053 , - () : 0, 1, 2. ( 0 5), - , . 58053 5.
.
0, 1, 2 , . , , . . 0, 1, 2 , , . . , , . .
, CLK . CLK 2,6 .
16- , - . 216 104 - . . , GATE .
(05) OUT , , GATE.
0 ( ) , . GATE , ( ) .
.
1 ( ) τ=TCLKn, TCLK ; n , . GATE. . .
2 ( ) CLK n. TCLK(n1), TCLK. .
3 ( ) 2, n TCLKn/2. n TCLKn/2, TCLK(n-1)/2.
4 ( ) τ=Tclk , . GATE 4 0.
5 ( ) τ=Tclk , . 58053 1.
1. 58053
19, 20 | 0, 1 | |
1-8 | D7D0 | |
9, 15, 18 | CLK0CLK2 | |
10, 13, 17 | OUT0OUT2 | |
11, 14, 16 | GATE0GATE2 | |
12 | GND | |
21 | CS | |
22 | RD | |
23 | WR | |
24 | Ucc |
+5 |
6.
6.
KP580B53
............ .... 3
....16
...8
....6
:
- 210
- - 104
, ..<2,6
, ..700
2.2 15333
15333 . 156 . , . 7, 15333 . 2. , : ( - ) . - , - . .9 , . 15333 . . .
, .
15333 , (), ( - ). , .
15333 , ().
15333 238.16-1 . 10, 2 . . 3.
. 2. 15333
. 7. ,
15333
. 8. ,
. 9. 15333
15333 3.
. 3. 15333
1 |
5 5 % |
|
2 |
0,4 |
|
3 |
2,4 |
|
4 |
1,2,9,10 3,11 |
- 1,6 - 3,2 |
5 |
1,2,9,10 3,11 |
0,04 0,08 |
6 |
1 |
|
7 | -10...-40 | |
8 |
66 |
|
9 |
346,5 |
|
10 |
1,9 2,10 3,11 |
40 36 27 |
11 |
1,9 2,10 3,11 |
33 28 40 |
12 | (C)= 0 |
65 |
13 | (C)= 1000 |
2,76...3,37 |
14 |
200 |
2.3 K1555
. / . 1 19 . 1 19 : 19 ( ), 1 , .
.10.
10
3
3.1 .
11 .
11.
:
R1, R2.1;
R3, R4.6,8;
C1, C2, C5...0,15 ;
3, 4..220.
3.2
4-8 .
4 . DD1
5. X
6. DD2
7. DD3
8. LPT
4
4.1
- LPT .
378H, 379H 37AH. 378H Data, 379H - Status 37AH Control.
, , , Status . Data -, 0,1 2 Control -.
12 LPT .
12
- , - 58053 2 1 - 1 0 . - 2 .
2 CLK n. - 0, 1, . - 0 . . .
-, . LPT . , , , . , , . , .
program lpt;
uses dos,crt;
var
addr_d,addr_c: word;
e:integer;
in_t,in_tau:byte;
input_t,input_tau: String;
procedure set_kanal_0(value: byte);{ - 0}
var
PSW_strobe_0: byte;
PSW_strobe_1: byte;
N0_strobe_0: byte;
N0_strobe_1: byte;
psw_set: byte;
begin
PSW_strobe_1:=7;{00000111}
PSW_strobe_0:=6;{00000110}
N0_strobe_1:=1;{00000001}
N0_strobe_0:=0;{00000000}
psw_set:=50;{00110010}
{set mode}
Port[addr_c]:=PSW_strobe_1;
Port[addr_d]:=psw_set;
Port[addr_c]:=PSW_strobe_0;Port[addr_c]:=PSW_strobe_1;
{data => 8253}
Port[addr_d]:=value;
Port[addr_c]:=N0_strobe_0;Port[addr_c]:=N0_strobe_1;
end;
procedure set_kanal_1(value: byte); { - 1}
var
var
PSW_strobe_0: byte;
PSW_strobe_1: byte;
N1_strobe_0: byte;
N1_strobe_1: byte;
psw_set: byte;
begin
PSW_strobe_1:=7;{00000111}
PSW_strobe_0:=6;{00000110}
N1_strobe_1:=3;{00000011}
N1_strobe_0:=2;{00000010}
psw_set:=116;{01110100}
{set mode}
Port[addr_c]:=PSW_strobe_1;
Port[addr_d]:=psw_set;
Port[addr_c]:=PSW_strobe_0;Port[addr_c]:=PSW_strobe_1;
{data => 8253}
Port[addr_d]:=value;
Port[addr_c]:=N1_strobe_0;Port[addr_c]:=N1_strobe_1;
end;
begin
{ LPT }
addr_d:=MemW[$0040:$0008];
{ Control LPT }
addr_c:=addr_d+2;
while true do begin { }
write(' [q - ]: ');
readln(input_t);
if input_t='q' then break;
val(input_t,in_t,e);
set_kanal_1(in_t);
write(' [q - ]: ');
readln(input_tau);
if input_tau='q' then break;
val(input_tau,in_tau,e);
set_kanal_0(in_tau);
writeln('==========================================');
end;{ , q}
end.
30 , , , 8 , 12 . 9 , , . ,
Copyright (c) 2025 Stud-Baza.ru , , , .