. , , ,

,,,

, - - —

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).

1.2 - ()

- , , - . - - , ( 3). :

V = V

 

. 3.

:

. , . , .

1.

. , . , . 20 4 . 4 . , .

2.

. 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.


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 , , . ,

 

 

 

! , , , .
. , :