51单片机自学笔记 387页 13.8m 高清书签版

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 387

tyw

tyw

51


89S51 ,

tyw
:

C RTX51

, , RTX51
, ,

, ,
, ,
,
,

.5 .
.TP368.
1

51 /,, .
:,
2010.
1
ISBN978 7 81124 935 4

(
CIP)

CIP (
2009) 231676

2010,,
,

51

37 (
100191) :
010 82317024 :
010 82328026
//www.
h
t
t
bua
ap
r
e
s
s.
c
om.
cn E-ma
i
l:
emsbook@gma
i
l.
c
om
p:

:
787960 1/16

:
27.
25 :
610

2010 1 1 2010 1 1

I
SBN978 7 81124 935 4

:
4000

:
47
.00 ( 1 )

tyw

,,

,,

,,

,,
,
,,

,: ,

(
1) ,
,

(
2) ,
,
,

(
3),,

(
4) 51 ,
ARM, ,
, 9 ; 10~14 C

, 9 ,; 15
,, C ,

,
, ARM

tyw

(
5) :
,,,,
,,

(
6) ,
,,

, 1

, D
E

,,

, 3

, 7

? ,
,, ,
,
,
,,
,,

,,:

(
1),;,
(
2),,,

(
3) ,
,

(
4),,
tyw
,,

(
5), , ,

()

,,

, ,

, D
E, ,

,,

,, RTX51

,
, 51
,

, (

),,

,,
2006 ,

, , ,

tyw

,
,

,f
hg2002@126.
c
om,;
bua
a
f
i
na.
c
om,
y@s

2009 10 25

tyw

........................................................................................12

1.1  ...........................................................................................................12
1.2  ...............................................................................................................13
1.3  .......................................................................................................14
1.4  ...........................................................................................................14
1.4.1 ...........................................................................................................14
1.4.2 ...................................................................................................................15
1.4.3 .......................................................................................................................16
1.4.4 ...............................................................................................................17
1.4.5 ...............................................................................................................18
1.5  ...........................................................................................................19
1.6 .........................................................................................................................22
2        ...............................................................................23
2.1  .......................................................................................................23
2.1.1 ...................................................................................................24
2.1.2 ..................................................................................24
2.1.3 ......................................................................................................24
2.1.4 P0P1P2P3.......................................................................25
2.2  ...............................................................................................26
2.2.1 ..........................................................................................26
2.2.2 ..............................................................................................30
2.3  .......................................................................................................................30
1

tyw

3    ......................................................................................33
3.1  LED............................................................................................................34
3.2  ...........................................................................................................................38
3.3  LED........................................................................................................44
4  LED ...........................................................................................................47
4.1  LED ................................................................................47
4.2  LED................................................................................................47
4.3  LED....................................................................................................48
4.4  LED....................................................................................................49
4.  .....................................................................................................................50
4.6  ...............................................................................................................51
4.7  0-99 .................................................................................................53
4.8  ...................................................................................................60
5    ..........................................................................................................62
5.1  LED ................................................................................62
5.1.1  ................................................................................63
5.1.2  ................................................................................63
5.1.3  ................................................................................................65
5.2  ...............................................................................................................65
5.2.1  CALLRET ...........................................................68
5.2.2  RETSJMP...................................................................69
5.2.3  CALLRET ...........................................................................70

tyw

5.3  .......................................................................................................73

5.3.1 ..................................................................73
5.3.2 ..................................................................................75
5.3.3 ..................................................................................77
5.3.4 ......................................................................................77
5.3.5 ..............................................................................78
5.4  .......................................................................................................................80
6    /.................................................................................................82
6.1 / ...............................................................................................82
6.1.1 / ........................................................................82
6.1.2 / ....................................................83
6.1.3 / ............................................................................83
6.2 /............................................................................84
6.2.1 TH0TL0 TH1TL1 ....................................................................84
6.2.2 /TMOD....................................................84
6.2.3 /TCON .............................................................86
6.2.4 IE ..............................................................................................86
6.3 .....................................................................................................88
6.4 .............................................................................................................88
6.4.1 50msLED .......................................................88
6.4.2 50msLED .......................................................92
6.4.3 PK.........................................................................................................95

tyw

6.4.4  ....................................................................................................97

6.4.5 ....................................................................................................100
6.5  DELAY .............................................107
6.6  .................................................................................................................108
6.6.1  ..........................................................................................108
6.6.2  ..................................................................................................108
6.6.3  ..............................................................................................108
7     /.........................................................................................109
7.1 /T1 .........................................................................................109
7.1.1 T1 ...........................................................................................109
7.1.2  .................................................. 112
7.1.3  .................................................................. 116
7.2  .................................................................................................................120
7.2.1  ..................................................................................................120
7.2.2  ..............................................................................................120
7.2.3  100 .........................................................................................120
8    P3.2 P3.3 ..................................................................................122
8.1 ........................................................................................................122
8.2 ...............................................................................................................125
8.2.1  ..........................................................................................125
8.2.2  IE...................................................................................125
8.2.3  TCON...........................................................................................126

tyw

8.2.4  ..........................................................................................126
8.3 LED.................................................................................................127

8.3.1  LED.......................................................................127
8.3.2  LED.......................................................................130
8.3.3  LED...............................................131
8.3.4  IP ..................................................................134
8.3.5  ..........................................136
8.3.6  ..........................................................................139
8.3.7  P3.2 P3.3 LED.........................................139
8.4 ...........................................................................................140
8.5 ...............................................................................................144
8.5.1  ..............................................................................................144
8.5.2  ......................................................................................150
8.5.3  ..........................................................154
8.5.4  ......................................................155
8.5.5  ......................................................................160
8.6 ...............................................................................................................161
9   ..........................................................................................................162
9.1 ................................................................................................................162
9.1.1  ......................................................................................162
9.1.2  ......................................................................................163
9.1.3  ..............................................................................................163

tyw

9.2 ...........................................................................................................163

9.351 ..........................................................................................................164
9.3.1  SCON...........................................................................164
9.3.2  T1 ....................................................166
9.3.3  ..................................................................167
9.4 51 ....................................................................................167
9.4.1 ............................................................................................167
9.4.2 ............................................................................................170
9.5 ...........................................................................................172
9.5.1 PC...............................................................................172
9.5.2 ........................................................................................176
9.6 .......................................................................................................................178
9.6.1 ................................................................................................178
9.6.2 ............................................................................................178
10   KeilC51..................................................................................179
10.1  KeiluVision2 ................................................................................179
10.1.1  Keil ...........................................................................................180
10.1.2  Keil ...........................................................................................182
10.2  C ........................................................................................................186
10.3  .......................................................................................................188
10.4  ...........................................................................................190
10.4.1  C51 .......................................................................................191

tyw

10.4.2  ...................................................................................................191
10.4.3 .........................................................................................................193

10.4.4 ......................................................................................................194
10.4.5 ..........................................................................................................195
10.4.6Keil .......................................................................................195
10.4.7  ........................................................................196
10.4.8  typedef.................................................................................201
11   ............................................................................202
11.1 ..........................................................................................................................202
11.1.1  ...................................................................................................202
11.1.2  ...................................................................................................203
11.1.3  ........................................................................................203
11.1.4  ...................................................................................................205
11.1.5  ...................................................................................................206
11.1.6  .......................................................................................................208
11.1.7  ...........................................................................................209
11.1.8  ...................................................................................................209
11.1.9  ........................................................................................210
11.1.10  .................................................................................210
11.2C51 .................................................................................................212
11.2.1  ...................................................................................212
11.2.2  .......................................................................212

tyw

11.2.3  .......................................................217
12   C51 ........................................................................................225
12.1 .............................................................................................................................225
12.1.1  ........................................................................225
12.1.2  ........................................................................227
12.2 .............................................................................................................................231
12.2.1  ...........................................................231
12.2.2  LED ....................................................................................232
12.2.3  ............................................................................233
12.2.4  ........................................................235
12.3 .....................................................................................................236
12.3.1 ..................................................................236
12.3.2 ..............................................................................237
12.3.3 ..........................................................................239
12.4 .....................................................................................................242
12.4.1 ..................................................................................242
12.4.2 TCL2543 ........................................................................244
13   51 ......................................................................................248
13.1I/O ...........................................................................................................248
13.1.1 .................................................................................................248
13.1.2 ......................................................................................250
13.1.3 ..........................................................................................252

tyw

13.2 .............................................................................................................258

13.2.1 ..................................................................................259
13.2.2 ..................................................................................261
13.2.3 ..........................................................................263
13.3 .........................................................................................................264
13.4 .............................................................................................................265
13.5 .................................................................................................269
13.5.1 ......................................................................................269
13.5.2 ......................................................................................273
13.5.3 ..................................................................................................276
14

51 ................................................................................280

14.144 .................................................................................................280
14.2 LED ..............................................................................................283
14.2.174LS138 .................................................................................283
14.2.274HC595 ............................................................................................285
14.2.3LED ...............................................................................286
14.3 ADC0832 ..................................................................................289
14.3.1ADC0832 .......................................................................289
14.3.2 .....................................................................................................291
14.4 AD590...........................................................................................295
14.4.1 ......................................................................................296
14.4.2 .............................................................................................297

tyw

14.5 DAC0832 ..................................................................................301

14.5.1DAC0832 ............................................................................................301
14.5.2 .........................................................................................................301
14.5.3 .............................................................................................302
14.6 MAX531 ....................................................................................305
14.6.1MAX531 .............................................................................................305
14.6.3 ..................................................................................309
15   RTX51 ....................................................................................315
15.1RTX51..................................................315
15.2 .........................................................................................316
15.3 .................................................................................................317
15.4 .....................................................................................................321
15.4.1  main() ...........................................................................................323
15.4.3  ....................................................324
15.4.4  RTX51Tiny ..............................................................................327
15.4.5  ...........................................................................................330
A  ............................................................................................................334
B

MCS-51

334

C  C51 ..................................................................................................................341
D   ..........................................................................................354
 E   .........................................................................363
F   .......................................................................................................................367
G   ..................................................................................................................368
10

H..............................................................................................................370
tyw

 I ......................................................................................................377
JMCS-51 ................................................................................................379
.......................................................................................................................................380

11

tyw

1


51
51

1.1

51
51

12

tyw

1.2
20 70
F-8 Intel MCS-48

CMOS Intel 1980


8 MCS-51
1
1983 Intel 16
251AVR430PIC
MCS-96 /

ADPWM

3 51
32

51 87LPC
W78 DS87 GSM97
ATMEL 89S51 Flash ROM
13

tyw

51

AVR PIC MSP430

AVR ATMEL 8
RISC

/
PWMSPIUSARTI2C AVR
8

430 TI RISC
PIC MICROCHIP
8 RISC

51
51

1.3

1.4
1.4.1
ISP

LED

14

tyw

1-1

1.4.2
1-2

1
2
3
4
5
6

1-2

1-3 74LS244
MOSI 51 P1.5
MISO 51 P1.6 SCK 51 P1.7 RESET 51
RST DIY

15

tyw

1-3

1-4 USB
1-5 MEGA8
USB

1-4 USB

1.4.3
5V 5V
5V 1-5 220V
7V 9V 4 C1 C2
7805 C3 C4 +5V D3
D2

5V USB USB 5V
1-6 USB

16

tyw

1-5

1-6 USB

1.4.4
KEILWAVE6000
WAVE6000 KEIL
http://www.wave-cn.com/setup
1-7

17

tyw

1-7 wave6000

1.4.5

USB 1-8

1-8
18

tyw

1.5

1-9


1-10

1-9

1-10

1-11

1-11

10mA

+5V
1/4W1/8W
500
R

( G)
470
19

1-10
tyw

1-12 LED LED


4.7k

10K

18

9
8
7
6
5
4
3
2
1

EA
U1

X2

5
6
7
8

P0.0
P0.1
P0.2
89S51 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7
RST

R9

D1

+5

470

X1
GND

R1

39
38
37
36
35
34
33
32

Y1
12M
C1
30pF

19
20

C3
10uF

VCC

40

31

+5

C2
30pF

1-12 LED

WAVE6000 1-13
asm

1-13 WAVE6000

20

1-14
tyw
.HEX 1-14

1-14 LED

1-15 USBASP
Flash
WAVE6000 LED.HEX

\ch1\led.flv

21

tyw

1-15

1.6
R0R1
DJNZ
LED.HEX

ROM ROM RAM

22

tyw

2


2.1
51 2-1 TQFP PLCC TQFP
PLCC
DIP
2-2 40 DIP

2-1 TQFP PLCC

23

tyw

2.1.1

1 VDD40 +5V
2 GND20 +5V

2.1.2
18 19

2-3
10-30pF

PCB

XTL2 XTL1

2.1.3
1 PSEN(29 ) ROM

OE

2 ALE/PROG30
2-2 DIP
/EPROM
P0
EPROM
3 RST/VPD9 /
reset 2

4 EA/VPP(31 )/ ROM
31
31 +5V

24

tyw

2-3

2.1.4 P0P1P2P3
51 4 I/O P0P1P2 P33 8
I/O P1
P0 39-32
P0
P0 P2 8 P0

8

P1 1-8 I/O
P2 21-28 P2
1
8
2
P3 10-17
P3 I/O
3
2-1
431

+5V

2-1 P3

P3.0

RXD

P3.1

TXD

P3.2

INTO

P3.3

INT1

P3.4

T0

P3.5

T1

P3.6

WR

RAM

P3.7

RD

RAM

25

tyw
P1P2P3 4 TTL MOS P0
TTL 8 TTL CMOS
/ I/O

2.2

CPU RAM
ROM
P0P1P2 P3

2.2.1
ROM RAM

2-4

ROM Read Only Memory

ROM

26

AT89S51 4K AT89S52 8K
tyw
31EA+5V
31EA GND
64K
2-4a
RAM Random Access

Memory

4KROM

ROM
51 256 RAM
0000H
2-4b 0127 00H

7FH 128
0023H
128255 80HFFH 128 21
0000H0003H000BH
128
0013H001BH 0023H
107
128 52

128

256
128 RAM 2-5

1
R0R1R2R3R4R5R6 R7
32
00H1FH 031 32 4 8
R0R7 00H
R0 R0
00H
00H1FH 32 R0R7
4 R0

00H08H10H 18H

PSW RS0 RS1


16 8
2-5

00H
CLR RS0PSWRS00
1FH 32
CLR RS1PSWRS10
32
MOV R0,#22H R0 00H

22H
1
SETB RS0PSWRS01
8
SETB RS1PSWRS01

MOV R0,#22H R0 18H

22H

PSW RS0RS1 0

0 R0R7 00H07H
8
27

MOV R0,#22H 00H 22H


tyw
RS0RS1 1 3 MOV R0,#22H
18H 22H

2
20H-2FH 16 8 128

128
2-5 9 1(setb 8) 21H
1 21H 01H 21H 00H

2-5

SETB 11H
MOV 11H,#55H
SETB 11H 11H 1 22H 2 1 22H
02H 22H 00H MOV 11H,#55H
11H 55H 2 R1
55H SETB MOV

3
30H7FH 80
28

30H 31H
tyw

32

WAVE6000 F8
DATA

ORG 0000H
SETB 20H
MOV R0#55H
SETB 21H
MOV R7#44H
CLR 20H
SETB RS0
CLR 21H
SETB RS1
SETB 00H
MOV R0#0AAH
SETB 01H
MOV R7#0BBH
MOV 20H#0FFH

4
128255 80HFFHSFR 21
80HFFH 2-2
A
2-2

F0H

00H

ACC

E0H

00H

PSW

D0H

00H

IP

B8H

00H

P3

B0H

FFH

P3

IE

A8H

00H

P2

A0H

FFH

P2

SBUF

99H

SCON

98H

00H

P1

90H

FFH

P1

TH1

8DH

00H

/ 1 8

TH0

8CH

00H

/ 1 8

TL1

8BH

00H

/ 0 8

TL0

8AH

00H

/ 0 8

TMOD

89A

00000000B

TCON

88H

0X000000B

DPH

83H

00H

DPL

82H

00H

SP

81H

07H

P0

80H

FFH

P0

PCON

87H

0XXX0000B

29

tyw

2.2.2

I/O P0P1P2 P3
ROM RAM

1
51
SBUF P3.1 P3.0

2/
51 16 / T0 T1
TMOD

3
51 /
P3.2 P3.3
/ CPU
0

51 IP

2.3
ROM
ROM

ROM

PROM

OTPROM

EPROM

15 EEPROM
EPROM
Flash ROM

ROM RAM RAM ROM


30

tyw

201 8 203 8
205 207 6
8 209

PC
RAM
8 209
209 ROM RAM 0 1 ROM
0 1 0 1
ROM ROM

RAM
R0

RAM

ROM RAM 64K


101 ROM RAM

P0 P2 P0 P2 P0 P2
29 PSEN 30 31 P0 P2
P3.6WR P3.7RD 101
101

31

tyw
0 1

0 1

1 1
0

32

tyw

C C

111 111

B51

33

tyw

3.1 LED
LED
LED
3-1 \ch3\led.flv

1
LED
LED
32 IO : P0 P0
3-1 89S51 IO
20mA LED
R1(470 ) P0.7 +5V
4.7k

10K

18

9
8
7
6
5
4
3
2
1

EA

X2

5
6
7
8

39
38
37
36
35
34
33
32

P0.0
RST U1 P0.1
P0.2
89S51 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

X1
GND

Y1
12M
C1
30pF

R9

D1

+5

470

19
20

R1

VCC

C3
10uF

31

40

+5

C2
30pF

3-1 LED

2
P0.7

3
ORG 0000H

SJMP START

;START

ORG 0030H
START:MOV SP, #60H

;30H
;

MOV P0, #0FFH ;P0


;--------------------------------------MAIN:CLR P0.7

;P0.7

CALL DELAY

SETB P0.7

;P0.7

CALL DELAY

;
34

SJMP MAIN

tyw

;MAIN

;---------------------------------DELAY:MOV R0, #250

;R0

D2:MOV R1, #250

;R1

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

4
C1R2 8

NO C1 R2 VCC
C1 C1 0 VCC
R2 9 RST C1
C1 R2 9 RST
9 RST 24 8
P0
9 VCC 8
P0 8 8
31 VCC

0000

? ROM ORG
START:MOV SP,#60H

0000H 0030H
LED
ORG
SJMP START 0000H START:MOV
SP,#60H 0030H
30H 0H ORG 0040H ORG
0025H
ORG 0030H
SJMP START
ORG 0040H

35

tyw

START:MOV SP, #60H


MOV P0, #0FFH
ORG 0025H
MOV P0, #45H

120000
12 0 MOV HOUR,#12,MOV
MINUTE,#0,MOV SECOND,#0
START:MOV SP,#60H MOV P0,#0FFH START

MOV SP,#60H
PC
RAM
07H RAM
07H 0 R7

50H 60H
MOV SP,#60H MOV SP,60H#
# SP 60H
60H # RAM60H SP
60H 00H# 00H
R0

55

36

P0.0
tyw
DJNZ 250250
P0.0

MOV R1,#250 DJNZ R1,D1 2

12M 51 12 1M 1
D1:DJNZ R1,D1
250250 2 12500 0.125
R0R1 R0 R1 2

6M 2 0.25
R0 R1 255 FFH
51
8 R0 R1 8 8 1 255
R0 R1 0 DJNZ R0R1
255 0

R0 R1
RAM
R0 R1

\ch3\led_delay.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

START:MOV SP, #60H

MOV P0, #0FFH ;P0


;---------------------------------------------------------------MAIN:CLR P0.0
MOV 40H, #2
CALL DELAY

;P0.0
;RAM40H100
;

SETB P0.0

; P0.0

MOV 40H, #200

;RAM40H200

CALL DELAY

SJMP MAIN

;MAIN

;--------------------------------------------------------------DELAY:MOV R0, 40H


D2:MOV R1, #250

;R0
;R1

37

D1:DJNZ R1, D1

tyw

;R110D1

DJNZ R0, D2

;R010D2

RET

END

CLR P0.0 SETB P0.0

PWM

3.2

LED

\ch3\led_horse.flv

3-1 8 LED
3-2

4.7K

39
38
37
36
35
34
33
32

R2
R3
R4
R5
R6
R7
R8
R9

470

D8
D7

D3
D1

19
20

X2
18

C1
Y1
30pF 12MHz

C2
30pF

3-2 8 LED

ORG 0000H

SJMP START

;START

ORG

0030H

START:MOV SP, #60H


MOV P0, #0FFH

;30H
;
;P0

;-------------------------------------------------MAIN:CLR P0.0
CALL DELAY
SETB P0.0

;P0.00LED
;
;P0.01P0.0

38

D6

D5

X1
GND

P0.0
P0.1
89S51 P0.2
P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

5
6
7
8

+5

9
8
7
6
5
4
3
2
1

RST

EA

40

VCC

C3
10uF
R1 10k

31

+5

D4
D2
.

CLR P0.1
CALL DELAY

;P0.10LED
;

SETB P0.1

;P0.11P0.1

CLR P0.2

;P0.20LED

CALL DELAY

SETB P0.2

;P0.21P0.2

CLR P0.3

;P0.30LED

CALL DELAY

SETB P0.3

;P0.31P0.3

CLR P0.4

;P0.40LED

CALL DELAY

SETB P0.4

;P0.41P0.4

CLR P0.5

;P0.50LED

CALL DELAY

SETB P0.5

;P0.51P0.5

CLR P0.6

;P0.60LED

CALL DELAY

SETB P0.6

;P0.61P0.6

CLR P0.7

;P0.70LED

CALL DELAY
SETB P0.7
SJMP MAIN

tyw

;
;P0.71P0.7
;MAIN

;----------------------------------------DELAY:MOV R0, #250

;R0

D2:MOV R1, #250

;R1

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

SETB CLR P0.0-P0.7


P0
\ch3\led_horse.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

START:MOV SP, #60H


MOV P0, #0FFH

;
;P0

;---------------------------------------------------------MAIN:MOV P0, #0FEH ;P0.001


CALL DELAY
MOV P0, #0FDH

;
;P0.101
39

CALL DELAY
MOV P0, #0FBH
CALL DELAY
MOV P0, #0F7H
CALL DELAY
MOV P0, #0EFH
CALL DELAY
MOV P0, #0DFH
CALL DELAY
MOV P0, #0BFH
CALL DELAY
MOV P0, #7FH

tyw

;
;P0.201
;
;P0.301
;
;P0.401
;
;P0.501
;
;P0.601
;
;P0.701

CALL DELAY

SJMP MAIN

;MAIN

;------------------------------------------------------------DELAY:MOV R0, #250


D2:MOV R1, #250
D1:DJNZ R1, D1
DJNZ R0, D2

;R0
;R1
;R110D1
;R010D2

RET

END

MOV P0,#0FEHFEH0FE
H
H
0MOV P0,#7FH
70

P0 P0 MOV
P0,#0AAHMOV P0,#10101010BMOV P0,#170#0AAH
#10101010B #170

\ch3\led_horse.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

START:MOV SP,#60H
MOV P0,#0FFH

;
;P0

;----------------------------------------------------------MAIN:MOV P0,#11111110B
CALL DELAY
MOV P0,#11111101B
CALL DELAY
MOV P0,#11111011B
CALL DELAY
MOV P0,#11110111B

;P0.001
;
;P0.101
;
;P0.201
;
;P0.301

40

CALL DELAY
MOV P0,#11101111B
CALL DELAY
MOV P0,#11011111B
CALL DELAY
MOV P0,#10111111B
CALL DELAY
MOV P0,#01111111B

tyw

;
;P0.401
;
;P0.501
;
;P0.601
;
;P0.701

CALL DELAY

SJMP MAIN

;MAIN

;----------------------------------------------------DELAY:MOV R0,#250

;R0

D2:MOV R1,#250

;R1

D1:DJNZ R1,D1

;R110D1

DJNZ R0,D2

;R010D2

RET

END

111

P0
#11111110B0#11111101B
RL A RR A

\ch3\led_horse.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;************************
START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV A, #0FEH

MOV R3, #07H

;****************************
MAIN:MOV P0, A
RL A
CALL DELAY

;AP0
;A1
;

DJNZ R3, MAIN

;R310MAIN

MOV R3, #07H

;R37

SJMP MAIN
;*************************
DELAY:MOV R0, #250

;R0

D2:MOV R1, #250

;R1

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

41

RET

END

tyw

\ch3\led_horse_two.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

START:MOV SP, #60H

MOV P0, #0FFH

;P0

;-------------------------------------------------MAIN:CLR P0.0

;P0.00LED

CLR P0.7

;P0.70LED

CALL DELAY

SETB P0.0

;P0.01P0.0

SETB P0.7

;P0.71P0.7

CLR P0.1

;P0.10LED

CLR P0.6

;P0.60LED

CALL DELAY

SETB P0.1

;P0.11P0.1

SETB P0.6

;P0.61P0.6

CLR P0.2

;P0.20LED

CLR P0.5

;P0.50LED

CALL DELAY

SETB P0.2

;P0.21P0.2

SETB P0.5

;P0.51P0.5

CLR P0.3

;P0.30LED

CLR P0.4

;P0.40LED

CALL DELAY

SETB P0.3

;P0.31P0.3

SETB P0.4

;P0.41P0.4

CLR P0.2

;P0.20LED

CLR P0.5

;P0.50LED

CALL DELAY

SETB P0.2

;P0.21P0.2

SETB P0.5

;P0.51P0.5

CLR P0.1

;P0.10LED

CLR P0.6

;P0.60LED

CALL DELAY

SETB P0.1

;P0.11P0.1

SETB P0.6

;P0.61P0.6

SJMP MAIN

;MAIN

;-----------------------------------------

42

DELAY:MOV R0, #250

tyw

;R0

D2:MOV R1, #250

;R1

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

MOM P0,#01111110B

\ch3\led_horse_two.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

START:MOV SP, #60H

MOV P0, #0FFH

;P0

;-------------------------------------------------------MAIN:MOV P0, #01111110B


CALL DELAY
MOV P0, #10111101B
CALL DELAY
MOV P0, #11011011B
CALL DELAY
MOV P0, #11100111B
CALL DELAY
MOV P0, #11011011B
CALL DELAY
MOV P0, #10111101B

;P0.00P0.701

;
;P0.10P0.601
;
;P0.20P0.501
;
;P0.30P0.401
;
;P0.20P0.501
;
;P0.10P0.601

CALL DELAY

SJMP MAIN

;MAIN

;----------------------------------------------------DELAY:MOV R0, #250

;R0

D2:MOV R1, #250

;R1

D1:DJNZ R1, D1
DJNZ R0, D2

;R110D1
;R010D2

RET

END

43

P0
tyw

P0

LED

3.3 LED
3-2
\ch3\led_wanneng.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;*********************************************
START:MOV SP,#60H

;60H

MOV P0,#0FFH

;P0FFH255

MOV R2,#00H

;R20

;----------------------------------------------------------MAIN:MOV A,R2
MOV DPTR,#TAB

;R2A
;DPTR#TAB

MOVC A,@A+DPTR ;ADPTR


;A
MOV P0,A

;P0

INC R2

;R21

CALL DELAY

;DELAY

CJNE R2,#72,MAIN ;R272MAIN


MOV R2,#00H

;R20

SJMP MAIN

;MAIN

;----------------------------------------------------DELAY:MOV R0,#250

;R0

D2:MOV R1,#250

;R1

D1:DJNZ R1,D1

;R110D1

DJNZ R0,D2
RET

;R010D2
;

;*************************************************
TAB:
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DB 0FFH,0FFH,00FH,0FFH,0FFH,000H,0FFH,0FFH
DB 0FFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB 0FEH,0FFH,0FEH,0FDH,0FBH,0F7H,0EFH,0DFH
DB 0BFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB 0FEH,0FFH,0FCH,0F3H,0CFH,03FH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,03FH
DB 0FCH,0F3H,0CFH,03FH,0FFH,03FH,0CFH,0F3H

44

DB 0FCH,0FFH,0F0H,000H,0FFH,000H,000H,0FFH

tyw

;*********************************************************
END

DBDB
ROM 8
TAB 72 ROM
ROM
ROM
MOV 30H,#11H 11H 30H 30H
RAM 30H 11H
11H
0! MOVC A,@A+DPTR MOVC
ROM A ROM
A A DPTR
A@ A DPTR A
A MOV A,R0 R0 A R0
MOV R0,#00H R0 0DPTR
MOV DPTR,#TAB DPTR TAB
A+DPTR DPTR TAB
A 0FEH
A MOV P0,A P0
0FDH INC R0
R0 1 R0 1 CJNE R0,#72,MAIN
R0 72 MAIN
MOV R0,#00H R0 1 72
MAIN MOV A,R0 R0 1 A A
1 MOVC A,@A+DPTR 0FDH 72
R0 0
MOVC A,@A+DPTR

DPTR
TAB A TAB
A

45

tyw

46

tyw

4
LED

4.1 LED
LED
LED

LED 4-1
LED 8 7

LED 8
LED +5V
8
LED
4-2

4-2

4-1

4.2 LED
LED 0.30.50.81.01.21.5
1.82.33.04.05.0 1.0 1.21.5 1.8
3 2V
0.8 5V 1.02.3 12V 3.0
LED
47

tyw
R LED R=(VCCVLED)/ILED
VCC +5V
VLED LED 2VILED 120mA
R
LED 10mA 89S51 I/O
20mA LED 89S51
I/O LED
LED

4.3 LED
4-3 89S51 LED LED
0 abcde f g h P0.0P0.5
P0.6 P0.7 \ch4\smg_one.flv
4.7k

9
8
7
6
5
4
3
2
1

EA

R2
R3
R4
R5
R6
R7
R8
R9

1
2
3
4
5
6
7
8

DS1
DPY
a
a
b
c f
b
g
d
e e
c
d
f
dp
g
dp

Y1
12M
C1
30pF

+5

19
20

18

X2

5
6
7
8

39
38
37
36
35
34
33
32

COM

10K

P0.0
RST U1 P0.1
P0.2
89S51 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

X1
GND

R1

VCC

C3
10uF

31

40

+5

C2
30pF

4-3

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;----------------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

;----------------------------------------------------------MAIN:MOV P0,#11000000B
CLR

P2.7;

SJMP $
END

;P0.0P0.50P0.6P0.71

;4-3
;
;

48

tyw

4.4 LED
ED

P0 09
4-3 4-1

0
4-1

dp

C0H

3FH

F9H

06H

A4H

5BH

B0H

4FH

99H

66H

92H

6DH

82H

7DH

F8H

07H

80H

7FH

90H

6FH

FFH

00H

49

tyw

4.

89S51 P0P1P2 P3
4-3

a
I/O

4-4 a
I/O 74HC573
P0 74HC573
P0 74HC573
P1.0 P1.1 74HC573
74HC573
74HC573
a
b
c
d
e
f
g
dp

1
2
3
4
5
6
7
8
9

a
b
c
d
e
f
g
dp

DPY
a
a
b
c f
b
g
d
e e
c
d
f
dp
g
dp
COM

1
2
3
4
5
6
7
8
9

+5V
1
11

P1.0
D0
D1
D2
D3
D4
D5
D6
D7

2
3
4
5
6
7
8
9

DPY
a
a
b
c f
b
g
d
e e
c
d
f
dp
g
dp
COM

+5V
U1
OC
C

VCC
GND

1D
2D
3D
4D
5D
6D
7D
8D

1Q
2Q
3Q
4Q
5Q
6Q
7Q
8Q

20
10
19
18
17
16
15
14
13
12

+5

1
11
a
b
c
d
e
f
g
dp

D0
D1
D2
D3
D4
D5
D6
D7

74HC573

2
3
4
5
6
7
8
9

U2
OC
C

VCC
GND

1D
2D
3D
4D
5D
6D
7D
8D

1Q
2Q
3Q
4Q
5Q
6Q
7Q
8Q

74HC573

P1.1
P0.0~P0.7

4-4

50

20
10
19
18
17
16
15
14
13
12

+5

tyw

4.6

8
ah
COM

4-5 P0 P2 PNP 8550


COM P2.7 0 PNP
COM
P2.6 0 PNP COM
8 LED
P2.0P2.7 0

SM410364 LED
8 LED
COM
4-5 8 PNP 8550P0
8 470 P2 8 4.7K P0 8
10K
4.7k
RP1

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

9
8
7
6
5
4
3
2
1

+5

a b c d e f g dp U2

C1
30pF
C2
30pF

18
Y1
12M
19
20

X2

X1
GND

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

8550

4.7K

Q1

Q2

Q3

Q4
8550

Q5

Q6

12

COM4

11

10

COM1 COM2 COM3


9

R10
R11
R12
R13
R14
R15
R16
R17

COM4
12

28
27
26
25
24
23
22
21

COM1 COM2 COM3


11

R1
10K

a b c d e f g dp U3

470

10

C3
10uF

P0.0
P0.1
P0.2
P0.3
P0.4
RST
P0.5
P0.6
U1
P0.7
89S51
EA
VCC

R2
R3
R4
R5
R6
R7
R8
R9

31
40

+5

39
38
37
36
35
34
33
32

Q7

Q8
8550
+5

4-5

19781219

\ch4\smg_birthday.flv

51

tyw

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;----------------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P2,#0FFH

;P2

;----------------------------------------------------------MAIN:MOV P0,#0F9H
CLR P2.7
CALL DELAY

;1F9HP0
;P2.70
;

SETB P2.7

;P2.71

MOV P0,#90H

;990HP0

CLR P2.6

;P2.60

CALL DELAY

SETB P2.6

;P2.61

MOV P0,#0F8H

;7F8HP0

CLR P2.5

;P2.50

CALL DELAY
SETB P2.5
MOV P0,#80H
CLR P2.4
CALL DELAY

;
;P2.51
;880HP0
;P2.40
;

SETB P2.4

;P2.41

MOV P0,#0F9H

;1F9HP0

CLR P2.3

;P2.30

CALL DELAY

52

SETB P2.3

;P2.31
tyw

MOV P0,#0A4H

;2A4HP0

CLR P2.2

;P2.20

CALL DELAY

SETB P2.2

;P2.21

MOV P0,#0F9H

;1F9HP0

CLR P2.1

;P2.10

CALL DELAY
SETB P2.1
MOV P0,#90H
CLR P2.0
CALL DELAY
SETB P2.0
SJMP MAIN

;
;P2.11
;990HP0
;P2.00
;
;P2.01
;MAIN

;----------------------------------------------------DELAY:MOV R0,#10

;R0

D2:MOV R1,#20

;R1

D1:DJNZ R1,D1

;R110D1

DJNZ R0,D2

;R010D2

RET

END

4.7 0-99

LED 099
\ch4\smg_count1.flv

4-5 2 LED

099 01299

09 ROM
MOVC A,@A+DPTR P0
35 35 10 3 5
3 5 RAM 0
9 3 5 P0 35

COUNT

EQU

30H

;RAM30HCOUNT

SHIWEI

EQU

31H

;RAM31HSHIWEI

GEWEI

EQU

32H

;RAM32HGEWEI

53

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

tyw

;-------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P2,#0FFH

;P2

MOV DPTR, #TAB

;DPTRTAB

MOV COUNT, #0

;COUNT

MOV SHIWEI, #0
MOV GEWEI, #0

;SHIWEI
;GEWEI

;----------------------------------------------------MAIN:CALL PROCESS
CALL DISPLAY
SJMP MAIN

;PROCESS
;DISPLAY
;MAIN

;------------------------------PROCESS-------------PROCESS:INC COUNT
MOV A,COUNT

;COUNT1
;COUNTA

CJNE A ,#100,JIXU
MOV COUNT ,#0
JIXU:MOV A, COUNT
MOV B, #10
DIV AB

;COUNT100JIXU
;COUNT0
;COUNTA
;B10
;ABAB

MOV SHIWEI, A

;SHIWEI

MOV GEWEI , B

;GEWEI

RET

;------------------------------DISPLAY------------------DISPLAY:MOV A, SHIWEI
MOVC A, @A+DPTR

;SHIWEIA
;

MOV P0, A

;P0

CLR P2.7

;P2.70

CALL DELAY
SETB P2.7

;
;P2.71

MOV A, GEWEI

;GEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.6

;P2.60

CALL DELAY
SETB P2.6

;
;P2.61

RET
;-----------------------------------------------DELAY:MOV R0, #250

;R0

D2:MOV R1, #250

;R1

D1:DJNZ R1, D1

;R110D1

54

DJNZ R0, D2
RET

;R010D2

tyw

;----------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H
END

;56789

EQU

RAM
128 32 R0R7 16
80
EQU
COUNT
EQU
30H 30H
COUNT COUNT 30H MOV 30H,#10 MOV
COUNT ,#10
4-6
PC 0000H
TAB MOV
DPTR,#TAB

PROCESS
DISPLAY MAIN

PC

55

tyw

4-6

4-3 4-5
ABCDEFGHCOM

4 4-7

4-7

4-5
COM DIG
COM DIG COM
ABH

56

4-5
tyw

P2 P2

CALL DELAY

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;----------------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P2,#0FFH

;P2

;----------------------------------------------------------MAIN:MOV P0,#0F9H

;1F9HP0

CLR P2.7

;P2.70

SETB P2.7

;P2.71

MOV P0,#90H

;990HP0

CLR P2.6

;P2.60

SETB P2.6

;P2.61

MOV P0,#0F8H

;7F8HP0

CLR P2.5

;P2.50

SETB P2.5

;P2.51

MOV P0,#80H
CLR P2.4
SETB P2.4

;880HP0
;P2.40

;P2.41

MOV P0,#0F9H

;1F9HP0

CLR P2.3

;P2.30

SETB P2.3

;P2.31

MOV P0,#0A4H

;2A4HP0

CLR P2.2

;P2.20

SETB P2.2

;P2.21

MOV P0,#0F9H

;1F9HP0

CLR P2.1

;P2.10

SETB P2.1
MOV P0,#90H

;P2.11
;990HP0

CLR P2.0

;P2.00

57

SETB P2.0

;P2.01

SJMP MAIN

tyw

;MAIN

END

19781219

\ch4\smg_birthday_one.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;----------------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P2,#0FFH

;P2

;----------------------------------------------------------MAIN:MOV P0,#0F9H
CLR P2.7

;P2.70

CALL DELAY
SETB P2.7
MOV P0,#90H

;1F9HP0

;
;P2.71

;990HP0

CLR P2.6

;P2.60

CALL DELAY

SETB P2.6

;P2.61

MOV P0,#0F8H

;7F8HP0

CLR P2.5

;P2.50

CALL DELAY

SETB P2.5

;P2.51

MOV P0,#80H
CLR P2.4
CALL DELAY

;880HP0
;P2.40

SETB P2.4

;P2.41

MOV P0,#0F9H

;1F9HP0

CLR P2.3

;P2.30

CALL DELAY

SETB P2.3

;P2.31

MOV P0,#0A4H

;2A4HP0

CLR P2.2

;P2.20

CALL DELAY

SETB P2.2

;P2.21

MOV P0,#0F9H

;1F9HP0

CLR P2.1

;P2.10

CALL DELAY

58

SETB P2.1
MOV P0,#90H

;P2.11
;990HP0

CLR P2.0
CALL DELAY
SETB P2.0
SJMP MAIN

tyw

;P2.00

;
;P2.01
;MAIN

;----------------------------------------------------DELAY:MOV R0,#255

;R0

D2:MOV R1,#255

;R1

D1:DJNZ R1,D1

;R110D1

DJNZ R0,D2
RET
END

;R010D2
;

099 990

PROCESS INC COUNT DEC COUNT


COUNT 99 MOV COUNT,#0 MOV COUNT,#99
PROCESS 99 0
PROCESS:INC COUNT
MOV A,COUNT

;COUNT1
;COUNTA

CJNE A ,#100,JIXU
MOV COUNT ,#0

;COUNT100JIXU
;COUNT0

PROCESS:DEC COUNT
MOV A,COUNT

;COUNT1
;COUNTA

CJNE A ,#0,JIXU

;COUNT100JIXU

MOV COUNT ,#99

;COUNT0

********************************************************************

0999
0999 COUNT RAM
COUNT 255 INC COUNT
255
C
099

DISPLAY PROCESS COUNT

;----------------------------------------------------MAIN:CALL PROCESS
XIANSHI:CALL DISPLAY

;PROCESS
;DISPLAY
59

tyw

DJNZ R2,XIANSHI

;R210XIANSHI

MOV R2,#100

;R20,R2100

SJMP MAIN

;MAIN

;------------------------------------------------------DELAY:MOV R0, #50

;R0

D2:MOV R1, #20

;R1

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

4.8

C1

VCC

103
C2

U2
DS1

3 dp
5 g
10 f
1 e
2 d
4 c
7 b
11 a

COM1 COM2 COM3 COM4

MAX7219

4-8 7219

60

VCC
ISET
DOUT
segdp
segg
segf
sege
segd
segc
segb
sega

10uF

DIN
CLK
LOAD
DIG0
DIG1
DIG2
DIG3
DIG4
DIG5
DIG6
DIG7
GND
GND

19
18
24
22
17
15
21
23
20
16
14

U1

12

P2.0
P2.1
P2.2

1
13
12
2
11
6
7
3
10
5
8
9
4

R1
9.53k

16
8

LCLK
OE
VCC
GND

R1
R2
R3
R4
R5
R6
R7
R8

15
1
2
3
4
5
6
7
9

330

COM1 COM2 COM3 COM4

74HC595
14
11
10
P1.0

12
13
VCC
16
8

DS

U2

SCLK
MR
LCLK
OE
VCC
GND

tyw

11 a
7 b
4 c
2 d
1 e
10 f
5 g
3 dp

O0
O1
O2
O3
O4
O5
O6
O7
Q7

15
1
2
3
4
5
6
7
9

74HC595

4-9 74HC595

61

12
13

SCLK
MR

O0
O1
O2
O3
O4
O5
O6
O7
Q7

11
10

U1

DS

P1.1

14

12

P1.2

tyw

5


5-1
K1K2K3 K4
4.7k

K1
K2
K3
K4

5
6
7
8

+5

39
38
37
36
35
34
33
32

9
8
7
6
5
4
3
2
1

31
EA

P0.0
P0.1
89S51 P0.2
P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

18

R10 R11R12 R13


10K
10K

U1

R2
R3
R4
R5
R6
R7
R8
R9

+5

470

D8
D7

D6

D5
D3
D1

D4
D2

X1
GND

10K

RST

Y1
12M
C1
30pF

19
20

VCC

R1

X2

C3
10uF

40

+5

C2
30pF

5-1 LED

5.1 LED
K1 K2 P0.0 P0.7 LED

62

tyw

5.1.1

5-1 I/O
I/O
I/O 51 P1

5.1.2
1
5-2 ROM 0000H

P0 P1 P1.4 P1.5
K1 K2
K1
K2

ROM0000H
P0
P1

K1

P0.0
LED

K2

P0.7
LED

5-2 LED

2
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;------------------------------------------------START:MOV SP, #60H

;
63

MOV P0, #0FFH

;P0

MOV P1, #0FFH

;P1

tyw

;-------------------------------------------------MAIN:JNB P1.4,LED0

;P1.4LED0

JNB P1.5,LED7

;P1.5LED1

SJMP MAIN
LED0:CPL P0.0

;MAIN
;P0.0

SJMP MAIN

;MAIN

LED7:CPL P0.7

;P0.7

SJMP MAIN

;MAIN

END

3
JNB P1.4,LED0 CPL P0.0

JNB P1.4,LED0 P1.4


LED0

P0.0 P1.4

JNB P1.4,LED0
MAIN:JNB P1.4,LED0
JNB P1.5,LED7JNB bit,

rel bit
LED0 MAIN
RAM
20H 0 JNB 00H, LED0 LED0
128
rel rel

CPL P0.0 P0.0

CPL bit; bit bit


RAM 20H
0 CPL 00H
5-2
P1.4 P1.5
K1 K2
MAIN:JNB P1.4,LED0

;P1.4LED0

JNB P1.5,LED7

;P1.5LED1

SJMP MAIN

LED K1
LED0
LED0:CPL P0.0

;P0.0

SJMP MAIN

;MAIN

MAIN K1 K2

\ch5\key.flv

64

tyw

5.1.3

5-3

510ms

5-3

5.2

RS

10ms

10ms

5-4

65

tyw

5-4

P1.4
K1 P0.0 LED 5-1
5-5

66

tyw

ROM0000H

;-----------------------------------------STARTMAIN

60HI/O

;-----------KEY------------
KEY

;--------PROCESS-----

PROCESS

5-5

2
BIAOZHI1 BIT

00H

;0BIAOZHI1

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P1,#0FFH

;P1

CLR BIAOZHI1

;----------------------------------------------------MAIN:CALL KEY
CALL PROCESS
SJMP MAIN

;
;
;MAIN

;-------------------------------------------------KEY:JNB P1.4,LED0

;P1.4LED0

67

FANHUI:RET
LED0:CALL DELAY
JB P1.4,FANHUI

tyw

;
; P1.4FANHUI

WAIT:JNB P1.4,WAIT

;P1.4

SETB BIAOZHI1

;BIAOZHI11P1.4

RET

;-----------------------------------------------PROCESS:JB BIAOZHI1,RUN0

;BIAOZHI11RUN0

RET

;1

RUN0:CPL P0.0

;P0.0

CLR BIAOZHI1

;BIAOZHI1

RET

;-------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

3
BIAOZHI1 BIT 00H
RAM 20H 2FH 16
16 8
8 0 1 0 1
0 1
BIAOZHI1 BIT 00H 00H
20H D0 BIT EQU BIT
EQU
CLR BIAOZHI1 00H
20H D0 0

5.2.1 CALLRET
KEY PROCESS
RET

KEY BIAOZHI1 1
1
0
KEY
RET CALL

68

RET
tyw
CALL RET RET
RET
RET

CALL
RET

5.2.2 RETSJMP
RET SJMP LJMP
?
LJMP

CALL LCALL RET PC SP


CALL

RET (
) PC PC

CALL RET
RET SJMP ,
RET SJMP PP, SJMP PP RET
CALL PROCESS
BIAOZHI1 BIT

00H

ORG 0000H

;0BIAOZHI1
;
69

SJMP START

;START

ORG 0030H

;30H

tyw

;------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P1,#0FFH

;P1

CLR BIAOZHI1

;----------------------------------------------------MAIN:CALL KEY
PP:CALL PROCESS
SJMP MAIN

;
;
;MAIN

;-------------------------------------------------KEY:JNB P1.4,LED0
FANHUI:SJMP PP
LED0:CALL DELAY
JB P1.4,FANHUI
WAIT:JNB P1.4,WAIT

;P1.4LED0
;PP
;
; P1.4FANHUI
;P1.4

SETB BIAOZHI1
SJMP PP

;BIAOZHI11P1.4
;PP

;-----------------------------------------------PROCESS:JB BIAOZHI1,RUN0

;BIAOZHI11RUN0

RET

;1

RUN0:CPL P0.0

;P0.0

CLR BIAOZHI1

;BIAOZHI1

RET

;-------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

5.2.3 CALLRET

LED
CALL 2 RET
2
RET SJMP SJMP 2
KEY,
255 0 RAM

70

SJMP MOV SP,#60H 60H


62H
tyw

BIAOZHI1 BIT

00H

;0BIAOZHI1

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P1,#0FFH

;P1

CLR BIAOZHI1

;----------------------------------------------------MAIN:CALL KEY
PP:CALL PROCESS
SJMP MAIN

;
;
;MAIN

;-------------------------------------------------KEY:JNB P1.4,LED0
MOV SP ,#60H
FANHUI:SJMP PP
LED0:CALL DELAY
JB P1.4,FANHUI

;P1.4LED0
;
;PP
;
; P1.4FANHUI

WAIT:JNB P1.4,WAIT

;P1.4

SETB BIAOZHI1

;BIAOZHI11P1.4

MOV SP ,#60H
SJMP PP

;
;PP

;-----------------------------------------------PROCESS:JB BIAOZHI1,RUN0

;BIAOZHI11RUN0

RET

;1

RUN0:CPL P0.0

;P0.0

CLR BIAOZHI1

;BIAOZHI1

RET

;-------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

SJMP RET

CALL RET

LED
71

LED
tyw
LED

BIAOZHI1 BIT

00H

;0BIAOZHI1

BIAOZHI2 BIT

01H

;1BIAOZHI1

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;------------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV P1,#0FFH

;P1

CLR BIAOZHI1

CLR BIAOZHI2

;----------------------------------------------------MAIN:CALL KEY

CALL PROCESS
SJMP MAIN

;
;MAIN

;-------------------------------------------------KEY:JNB P1.4,LED0
JNB P1.5,LED7
FANHUI:RET
LED0:CALL DELAY

;P1.4LED0
;P1.5LED7
;
;

JB P1.4,FANHUI

; P1.4FANHUI

JNB P1.4,$

;P1.4

SETB BIAOZHI1

;BIAOZHI11P1.4

RET

LED7:CALL DELAY

JB P1.5,FANHUI

; P1.5FANHUI

JNB P1.5,$

;P1.5

SETB BIAOZHI2

;BIAOZHI21P1.5

RET

;-----------------------------------------------PROCESS:JB BIAOZHI1,RUN0

;BIAOZHI11RUN0

JB BIAOZHI2,RUN7

;BIAOZHI21RUN7

RET

;1

RUN0:CPL P0.0

;P0.0

CLR BIAOZHI1

;BIAOZHI1

RET

RUN7:CPL P0.7

;P0.7

CLR BIAOZHI2

;BIAOZHI2

RET

;-------------------------------------------DELAY:MOV R0, #50

;R050
72

tyw

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

5.3
LED

5.3.1

K1 P2.0 0, K2 P2.0
1

\ch5\key_smg_two.flv

1
5-6 4
P0 P2
LED

4.7k

9
8
7
6
5
4
3
2
1

+5

40
31

a b c d e f g dp U2

K1
K2
K3
K4
C1
30pF

5
6
7
8
18
Y1
12M
19

P1.4
P1.5
P1.6
P1.7
X2

X1

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

8550

4.7K

Q1

Q2

Q3

Q5

Q6

12

9
Q4
8550

COM4

11

COM1 COM2 COM3


10

COM4
12

R10
R11
R12
R13
R14
R15
R16
R17

COM1 COM2 COM3


11

28
27
26
25
24
23
22
21

a b c d e f g dp U3

470

10

R2
R3
R4
R5
R6
R7
R8
R9

Q7

Q8
8550
+5

89S51
20

C2
30pF

R1
10K

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

39
38
37
36
35
34
33
32

10K

RST

GND

VCC
EA

C3
10uF U1
+5

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

+5

5-6

K1 RAM 40H
0 C0H K2
1 F9H
P0

73

tyw

ROM0000H

KEY

5-4

DISPLAY

5-7

3
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;------------------------------------------------START:MOV SP, #60H

MOV 40H,#0FFH

;FFH

MOV P0, #0FFH

;P0

CLR P2.0

;P2.0

;----------------------------------------------------MAIN:CALL KEY

CALL DISPLAY

SJMP MAIN

;MAIN

;-------------------------------------------------KEY:JNB P1.4,K1

;P1.4K1

JNB P1.5,K2

;P1.5K2

FANHUI:RET
K1:CALL DELAY

;
;

JB P1.4,FANHUI

; P1.4FANHUI

JNB P1.4,$

;P1.4

MOV 40H,#0C0H

;C0H40HC0H0

RET

K2:CALL DELAY

JB P1.5,FANHUI

; P1.5FANHUI

JNB P1.5,$

;P1.5

MOV 40H,#0F9H

; F9H40HF9H1

RET

;---------------------------DISPLAY--------------------DISPLAY:MOV P0,40H

;40HP0

RET

;-------------------------------------------74

DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

tyw

;R010D2

RET

END

5.3.2
0
K1 1 K2 1
\ch5\key_smg_count.flv

1
5-6

2
5-8
COUNT 0

COUNT COUNT

SHIWEI GEWEI
P0 COUNT

ROM0000H

START

60H
COUNT0

KEY

K1
COUNT1K2
COUNT1
5-4

CHUFA

DISPLAY

COUNT10
COUNT
COUNT

P0

75

5-8

tyw

3
COUNT

EQU

30H

;RAM30HCOUNT

SHIWEI

EQU

31H

;RAM31HSHIWEI

GEWEI

EQU

32H

;RAM32HGEWEI

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;-----------------------------START----------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV COUNT,#0

;COUNT0

MOV DPTR,#TAB

;DPTR

;------------------------------MAIN------------MAIN:CALL KEY

CALL CHUFA

CALL DISPLAY

SJMP MAIN

;MAIN

;------------------------------KEY------KEY:JNB P1.4,K1

;P1.4K1

JNB P1.5,K2

;P1.5K2

FANHUI:RET

K1:CALL DELAY

JB P1.4,FANHUI

; P1.4FANHUI

JNB P1.4,$

;P1.4

INC COUNT

;COUNT1

RET

K2:CALL DELAY

JB P1.5,FANHUI
JNB P1.5,$

; P1.5FANHUI
;P1.5

DEC COUNT

;COUNT1

RET

;-------------------------CHUFA--------------CHUFA:MOV A, COUNT

;COUNTA

MOV B, #10

;B10

DIV AB

;ABAB

MOV SHIWEI, A

;SHIWEI

MOV GEWEI , B

;GEWEI

RET

;------------------------DISPLAY----------------DISPLAY:MOV A, SHIWEI
MOVC A, @A+DPTR
MOV P0, A

;SHIWEIA
;
;P0

CLR P2.7

;P2.70
76

;
tyw

CALL DELAY
SETB P2.7

;P2.71

MOV A, GEWEI

;GEWEIA

MOVC A, @A+DPTR

MOV P0, A
CLR P2.6

;P0
;P2.60

CALL DELAY

SETB P2.6

;P2.61

RET
;-------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

;-------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H
END

;56789
;

COUNT 1 1 COUNT 10
SHIWEI GEWEI SHIWEI GEWEI
TAB P0

5.3.3

KEY JNB P1.4,$ P1.4

5.3.4

77

tyw

DISPLAY

;-------------------------------------------------KEY:JNB P1.4,K1
JNB P1.5,K2
FANHUI:RET

;P1.4K1
;P1.5K2
;

K1:CALL DELAY
JB P1.4,FANHUI
PAN1:JNB P1.4,DIS1
INC COUNT
RET

;
; P1.4FANHUI
;P1.4DIS1
;COUNT1
;

K2:CALL DELAY

JB P1.5,FANHUI

; P1.5FANHUI

PAN2:JNB P1.5,DIS2
DEC COUNT
RET

;COUNT1
;

DIS1:CALL DISPLAY
SJMP

;P1.5DIS2

PAN1

DIS2:CALL DISPLAY
SJMP PAN2

;
;PAN1
;
;PAN1

5.3.5

MOV COUNT ,#0 COUNT 0


78

yw
t
5
COUNT 0 1 COUNT
8 1 255 255 PROCESS 10 25
5 25 SHIWEI 5 GEWEI
25 5 TAB 25
10 25

FFH P0 5

COUNT COUNT
255 0 COUNT

;-------------------------------------------------KEY:JNB P1.4,K1
JNB P1.5,K2
FANHUI:RET
K1:CALL DELAY
JB P1.4,FANHUI
PAN1:JNB P1.4,DIS1
MOV A,COUNT

;P1.4K1
;P1.5K2
;
;
; P1.4FANHUI
;P1.4DIS1
;COUNTA

CJNE A,#255,JIXU

;A255JIXU

SJMP FANHUI

;FANHUI

JIXU:INC COUNT
RET
K2:CALL DELAY

;COUNT1
;
;

JB P1.5,FANHUI

; P1.5FANHUI

PAN2:JNB P1.5,DIS2

;P1.5DIS2

MOV A,COUNT

;COUNTA

CJNE A,#0,JIXU1

;A255JIXU1

SJMP FANHUI

;FANHUI

79

JIXU1:DEC COUNT

;COUNT1

RET

DIS1:CALL DISPLAY
SJMP

tyw

PAN1

;PAN1

DIS2:CALL DISPLAY

SJMP PAN2

;PAN1

K1
100

COUNT COUNT 100


B A B 10 A B

BAIWEI
;-------------------------CHUFA--------------CHUFA:MOV A, COUNT

;COUNTA

MOV B, #100

;B100

DIV AB

;ABAB

MOV BAIWEI, A

;BAIWEI

MOV A , B

;BA

MOV B,#10

;B10

DIV AB

;AB, AB

MOV SHIWEI,A

;ABAIWEI

MOV GEWEI,B

;BGEWEI

RET

5.4

9
8
7
6
5
4
3
2
1

+5
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

K1
K2
K3
K4
K5
K6
K7
K8

5-9

2
80

tyw

S1

S2

S3

S4

P1.4

0
S5

1
S6

2
S7

3
S8

P1.5

4
S9

5
S10

6
S11

7
S12

P1.6

8
S13

9
S14

10
S15

11
S16

P1.7
P1.0
P1.1
P1.2
P1.3

5-10

3 A/D
+5

10k
1

2
15k

3
10k

4
5.6k

5
3.3k

5-11 A/D

81

2.2k

ADC

tyw

6
/

8051 // T0 T18052
// T2
/ T0 T1

6.1 /
/

6.1.1 /

/ T0
T1

123

82

tyw

6.1.2 /

18
19 12

1 0 1
P3.4 P3.5 T0
P3.4 T1 P3.5
TMOD

6.1.3 /
/
1
1 60 1 60 1

P3.4 P3.5

83

tyw

6.2 /

6.2.1 TH0TL0 TH1TL1


/ 1
TH0TL0 TH1TL1 TH0 TL0 / T0 8
8 TH1 TL1 / T1 8 8
/ 16 065535 65536
6-1 /
TH0/1(8)
D15

D14

D13

D12

D11

TL0/1(8)
D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

6.2.2 /TMOD
/
TOMD
TMOD
6-2

/TMOD

D7

D6

D5

D4

D3

D2

D1

D0

GATE

C/T

M1

M0

GATE

C/T

M1

M0

T1

T0

TMOD RAM 89H 4 /


T1 4 / T0 T0 T1
TMOD 4 / T0
1GATE
GATE=0 / GATE TCON
TR0 TR0=0 / T0 TR0=1 /
T0
GATE=1 / T0 TCON TR0
P3.2 TR0=1
/ P3.2
84

T1 GATE T0 GATE 1
tyw
P3.3 TCON TR1

2C/T
C/T T0 C/T=0 T0
TH0 TL0 16 12
12M TH0 TL0 16
1 1
C/T=1 T0 TH0 TL0 16
P3.4 TH0 TL0 16
1 TMOD 4 C/T=0 T1 C/T=1
T1 P3.5
C/T=0 / C/T=1 /
T0 TCON TR0 1 T0
TCON TR0 0 TCON TR0 /

3M1M0
M1 M0 0 1 4 4 T0
TH0 TL0 16 6-3
6-3

M1M0TH0TL016

M1

M0

TH0TL016

TH0TL013TL03081918192

TH0TL01606553565536
TH0TL08TH0TL0

121TH0TL0TL0

T0T1T0TH0TL08TH0

3
TL0

4 0 1
0 2 TH0 TH0 TL0
TL0 TL0 1
/ T1 2
/ T0 2
3 / T0T1 3 T0
TH0 TL0 8 TH0 TL0
/ T0 3 / T1
2 T1 TCON
TR1 TF1 / T0 8 TH0 TCON
TR0 TF0 T0 8 TL0
/ T0 TMOD TMOD
SETB CLR TMOD 1
0 MOV TMOD T0
85

yw
0MOV TMOD,#00000000B MOV TMOD,#00H MOV TMOD,#0T0t
1MOV TMOD,#00000001B MOV TMOD,#01H MOV
TMOD,#1T0 1MOV TMOD,#00000101B MOV
TMOD,#05H MOV TMOD,#5

6.2.3 /TCON
/ TCON 6-4 4 / T0 T1
4
6-4

/TCON

D7

D6

D5

D4

D3

D2

D1

D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

T1

T0

1TR0
T0 TMOD
TH0 TL0
1 TR0 TR0=1 T0 TH0 TL0
1 TR0=0 T0 TH0 TL0
1 TR0 T0 TR0 1 0 SETB TR0
TR0 1 CLR TR0 TR0 0 MOV TCON,#00010000B
TR0 1
2TF0
/ T0 TF0 1
0
TF0 1
TF0 0CLR TF0
T0 TF0
0 0

TF1 TR1 / T1 TF0 TR0

6.2.4 IE

86

tyw

6-5
6-5 IE
D7

D6

D5

D4

D3

D2

D1

D0

EA

ET2

ES

ET1

EX1

ET0

EX0

8051 5 /
T0 T1 P3.2 P3.3 8052
8051 T2 51
5

IE CPU
IE
1EX0
EX0=1(SETB EX0) P3.2
RETI
EX0=0(CLR EX0) P3.2
CPU

P3.2
2ET0
ET0=1(SETB ET0) CPU / T0
ET0=0(CLR ET0) CPU
/ T0
3EX1
EX1=1(SETB EX1) P3.3 CPU
EX1=0(CLR EX1) P3.3
CPU
4ET1
ET1=1(SETB ET1) CPU / T1
ET1=0(CLR ET1)/

87

T1
tyw

5ES
ES=1(SETB ES) CPU
ES=0(CLR ES)

6EA
EA EA

5 EA 1(SETB EA)
EA 0(CLR EA)

6.3

6.4
/ T0 T1 0 1
T0 0 1 2

50ms LED

6.4.1 50msLED
1
6-1

88

4.7K

RST

31

9
8
7
6
5
4
3
2
1

EA

C3
10uF

VCC

40

+5

P0.0
P0.1
89S51 P0.2
P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

R1

D1

+5

19
20

18

X2

5
6
7
8

39
38
37
36
35
34
33
32

X1
GND

R2 10k

tyw

C1
Y1
30pF 12MHz

C2
30pF

6-1 LED

2
6-2
SP LED P0.0
TH0 TL0 1 CPU
TF0 1 1 50ms
P0.0 TF0 LED
TH0 TL0TMODTCON

(1) 8TH0MOV TH0, #3CH


(2) 8TL0MOV TL0, #0B0H
(3) TMOD4C/T0
1TMOD4M1M001
MOV TMOD ,#00000001B
(4)1TCONTR01
SETB

TR0MOV TCON, #00010000B

89

tyw

ROM0000H

SP

START

TH0TL0TMODTCON

1JBC TF0,
50ms

1150ms
150ms

Y
CPL P0.0

CPL P0.0
50ms

6-2 50ms

3
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;-------------------------------------------START:MOV SP, #60H

MOV P0, #0FFH

;P0

MOV TH0,#3CH

;8TH03CH

MOV TL0,#0B0H

;8TL0B0H

MOV TMOD,#00000001B ;C/T0,M1M0011


MOV TCON,#00010000B ;TR010
;---------------------------------------------MAIN:JBC TF0,LED0 ;TF01LED0TF00
SJMP MAIN

;MAIN

LED0:MOV TH0,#3CH
MOV TL0,#0B0H

; 8TH03CH
;8TL0B0H

CPL P0.0

;P0.0

SJMP MAIN

;MAIN

END

90

tyw

8 TH0 8 TL0
50ms

TH0 TL0

50ms
12M 12 1M 1
1 0 1 16
065535 65536 65536
50ms 50000 65536-50000=15536
3CB0H
8 3CH TH0 8 B0H TL0
50000 50000
TF0 TF0 0 1
50ms LED0 LED P0.0
LED 50ms TH0 TL0
50ms 50ms

=2 -
X 13 016 18 23
=12/ 12M 1

6-3

91

tyw

6-3

51

6.4.2 50msLED
1
6-2 \ch6\led_timer0.flv

2
6-4
SP LED P0.0
CPU
TH0 TL0 1
CPU TF0

RETI
TH0 TL0TMODTCON IE

(1) 8TH0MOV TH0, #3CH


92

(2) 8TL0MOV TL0, #0B0H

tyw

(3) TMOD4C/T0
1TMOD4M1M001
MOV TMOD ,#00000001B
(4)1TCONTR01
SETB

TR0MOV TCON, #00010000B

(5) T0T0IEET01
IEEA1
SETB ET0 SETB EA MOV IE ,#10000010B
0
CPU
TF0 CPU

ROM0000H

START

SP
TH0
TL0TMODTCONIE

SJMP MAIN

TH0TL0

P0.0

MAIN

MAIN
LED0000BH
LED0

TH0TL0
50ms

P0.0
CPL P0.0

CPL P0.0

RETI

RET

RETI

6-4 50ms

3
ORG 0000H

SJMP START

;START
93

ORG 000BH

;0

AJMP LED0

;LED0

ORG 0030H

;30H

tyw

;------------------ ------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;
;P0

MOV TH0,#3CH

;8TH03CH

MOV TL0,#0B0H

;8TL0B0H

MOV TMOD,#00000001B ; C/T0,M1M0101


MOV TCON,#00010000B ;TR010
SETB ET0

;IEET010

SETB EA

; IEEA1

;--------------------------------------------------MAIN:SJMP MIAN

;-------------------------------------------LED0:MOV TH0,#3CH
MOV TL0,#0B0H
CPL P0.0

; 8TH03CH
;8TL0B0H
;P0.0

RETI

END

4
ROM 0000H
SJMP START START MAIN
CPU
3CB0H 1 1CPU
ROM 000BH 000BH AJMP LED0
LED0 RETI
MAIN MAIN 50ms
LED0

5
MAIN ROM
000BH 000BH

CPU CPU
5 CPU CPU
5 CPU
CPU 6-6

94

tyw

6-6

CPU
P3.2

0003H

TCONIE0

/T0

000BH

TCONTF0

P3.3

0013H

TCONIE1

/T1

001BH

TCONTF1

0023H

SCONTIRI

MAIN MAIN
LED0 CPU T0
000BH AJMP LED0 LED0
REIT
0 ROM 000BH
P3.3 0013H
000BH AJMP LED0
LED0 LED0
TIMER0 RETI
RETI
REIT

REIT RETI
RET CALL ACALL LCALL

AJMP
AJMP LED0 LED0 SJMP
LJMPSJMP 127
128 AJMP 2K LJMP 64K
LJMP
B

6.4.3 PK

4
30
4 4
4
95

tyw
30

CPU

96

tyw

6.4.4

65536 1 12M 65536


LED 1
1 LED 1 LED

1
6-2 \ch6\led_timer0_long.flv

65536
12M 65536 1
50ms 50ms RAM 1 20
1 LED LED
20 50ms
LED 1 6-5

3
ORG 0000H

;
97

SJMP START

;START

ORG 000BH

;0

AJMP LED0

;LED0

ORG 0030H

;30H

tyw

;------------------------------START:MOV SP, #60H


MOV P0, #0FFH
MOV 30H, #0

;
;P0
;30H0

MOV TH0,#3CH

;8TH03CH

MOV TL0,#0B0H

;8TL0B0H

MOV TMOD,#00000001B ; C/T0,M1M0101


MOV TCON,#00010000B ;TR010
SETB ET0

;IEET010

SETB EA

; IEEA1

;-----------------------------------------------------MAIN:SJMP MAIN

;-------------------------------LED0:INC

30H

MOV A, 30H
CJNE A,#20,JIXU
MOV 30H,#0
CPL P0.0
JIXU:MOV TH0,#3CH

;30H1
;30HA
;A20JIXU
;30H0
;P0.0
; 8TH03CH

MOV TL0,#0B0H

;8TL0B0H

RETI

END

98

yw

t
ROM0000H

START

SP
TH0
TL0TMODTCONIE

SJMP MAIN

MAIN

RAM30H

30H

20?

MAIN
LED0000BH
LED0

RAM30H
50ms
1
20
120
1

P0.0

CPL P0.0

P0.0
CPL P0.0

TH0TL0

RETI

TH0TL0
50ms

RETI

RET
6-5 1

4
ROM 0000H SJMP START START
MAIN CPU
3CB0H 1 1
50ms CPU ROM
000BH 000BH AJMP LED0 LED0 30H
1 20 20 50ms 1
CPL P0.0 20 JIXU
50ms 1
LED 1 2 5
30H 255

5
5 ORG 0030H 30H

99

8 MOV 30H, #0 30H 0 30H


tyw
ROM RAM 30H
ROM 30H RAM ROM
30H RAM 30H

RAM

MOV
SETB
IE/
TCON SETB
MOV TH0TL0
TMOD MOV
A

6.4.5

1
6-6 K1 1K2
1K3 1K4 1

1 P1.4P1.5P1.6 P1.7

24P0
P2P0470
10KP0

100

tyw
9
8
7
6
5
4
3
2
1

+5

K1
K2
K3
K4
C1
30pF

5
6
7
8
18
Y1
12M
19

8550

4.7K

Q1

Q2

1
2
3
4
5
6
7
8

Q3

Q5

Q6

12

9
Q4
8550

COM4

11

COM1 COM2 COM3


10

COM4
12

R10
R11
R12
R13
R14
R15
R16
R17

COM1 COM2 COM3


11

28
27
26
25
24
23
22
21

a b c d e f g dp U3

470

Q7

Q8
8550
+5

20

C2
30pF

R1
10K

R2
R3
R4
R5
R6
R7
R8
R9

10

10K

P0.0
P0.1
P0.2
P0.3
U1 P0.4
89S51 P0.5
P0.6
P0.7
P1.4
P1.5
P2.7
P1.6
P2.6
P1.7
P2.5
X2
P2.4
P2.3
P2.2
P2.1
X1
P2.0
RST

a b c d e f g dp U2
39
38
37
36
35
34
33
32

VCC
EA

+5

GND

C3
10uF

40
31

1
2
3
4
5
6
7
8

+5

6-6

1 1 60 1
60 1 24
T0 TIMER0

DISPLAY

KEY
123006

0606 PROCESS
10

START MAIN

6-7

OK

101

tyw
T0
TIMER0

ROM0000H

START

2050

50ms

CPU

!!!

KEY

PROCESS

2050

DISPLAY

YES

RETI

(b)

(a)

6-7

3\ch6\clock_timer0.flv
; RAM40HSECOND

SECOND

EQU

40H

MINUTE

EQU

41H

; RAM41HMINUTE

HOUR

EQU

42H

; RAM42HHOUR

SECONDGEWEI

EQU

43H

; 43HSECONDGEWEI

SECONDSHIWEI

EQU

44H

; 44HSECONDSHIWEI

MINUTEGEWEI

EQU

45H

; 45HMINUTEGEWEI

MINUTESHIWEI

EQU

HOURGEWEI

EQU

HOURSHIWEI

EQU

ORG 0000H

46H
47H
48H

; 46HMINUTESHIWEI
; 47HHOURGEWEI
; 48HHOURSHIWEI

SJMP START

;START

ORG 000BH

;0

AJMP TIMER0

;TIMER0

ORG 0030H

;30H

;---------------START-----------------------------START:MOV SP, #60H

102

NO

tyw

MOV SECOND, #0

;SECOND0

MOV MINUTE, #0

;MINUTE0

MOV HOUR , #12

;HOUR12

MOV DPTR , #TAB

;DPTRTAB

MOV 30H, #0

;30H02050ms

MOV TH0,#3CH

;8TH03CH

MOV TL0,#0B0H

;8TL0B0H

MOV TMOD,#00000001B ; C/T0,M1M0101


MOV TCON,#00010000B ;TR010
SETB ET0

;IEET010

SETB EA

; IEEA1

;-----------------------MAIN----------------------------MAIN:CALL KEY
CALL PROCESS
CALL DISPLAY
SJMP

MAIN

;KEY
;PROCESS
;DISPLAY
;MAIN

;------------------------------KEY------------------KEY: JNB P1.4,HOURJIA


JNB P1.5,HOURJIAN

; P1.4HOURJIA
; P1.5HOURJIAN

JNB P1.6,MINUTEJIA

; P1.6MIMUTEJIA

JNB P1.7,MINUTEJIAN

; P1.7MIMUTEJIAN

FANHUI:RET

HOURJIA:CALL DELAY

;()

JB P1.4,FANHUI

; P1.4FANHUI()

JNB P1.4,$

;P1.4

INC

HOUR

RET

;1
;

HOURJIAN:CALL DELAY

;()

JB P1.5,FANHUI

; P1.5FANHUI()

JNB P1.5,$

;P1.5

DEC HOUR
RET

;1
;

MINUTEJIA:CALL DELAY
JB P1.6,FANHUI

;()
; P1.6FANHUI()

JNB P1.6,$
INC MINUTE
RET

;P1.6
;1
;

MINUTEJIAN:CALL DELAY

;()

JB P1.7,FANHUI

; P1.7FANHUI()

JNB P1.7,$

;P1.7

DEC MINUTE
RET

;1
;

;-------------------PROCESS----------------------PROCESS:MOV A, SECOND

;SECONDA

103

MOV B, #10
DIV

;B10

AB

tyw

;ABAB

MOV SECONDSHIWEI , A

;SECONDSHIWEI

MOV SECONDGEWEI , B

;SECONDGEWEI

MOV A, MINUTE

;MINUTEA

MOV B, #10

;B10

DIV

AB

;ABAB

MOV MINUTESHIWEI , A

;MINUTESHIWEI

MOV MINUTEGEWEI , B

;MINUTEGEWEI

MOV A, HOUR

;HOURA

MOV B, #10
DIV

;B10

AB

;ABAB

MOV HOURSHIWEI , A

;HOURSHIWEI

MOV HOURGEWEI , B

;HOURGEWEI

RET

;-----------------DISPLAY-------------DISPLAY:MOV A, HOURSHIWEI

;A

MOVC A, @A+DPTR ;A+DPRTA


MOV P0, A
CLR

P2.7

CALL

DELAY

SETB

P2.7

MOV

;P2.7
;
;P2.7

A, HOURGEWEI ;A

MOVC A,@A+DPTR
MOV

P0, A

CLR

P2.6

CALL

;P0

DELAY

;A+DPRTA
;P0
;P2.6
;

SETB

P2.6

;P2.6

MOV

P0, #0BFH

;P0BFH

CLR

P2.5

;P2.5

CALL

DELAY

SETB

P2.5

MOV

A, MINUTESHIWEI ;A

MOVC

A,@A+DPTR ;A+DPRTA

MOV
CLR

P0, A
P2.4

CALL

DELAY

SETB

P2.4

;
;P2.5

;P0
;P2.4
;
;P2.4

MOV

A, MINUTEGEWEI ;A

MOVC

A,@A+DPTR ;A+DPRTA

MOV
CLR

P0, A
P2.3

CALL

DELAY

SETB

P2.3

;P0
;P2.3
;
;P2.3

104

MOV
CLR

;P0BFH
tyw

P0, #0BFH
P2.2

;P2.2

CALL

DELAY

SETB

P2.2

MOV

A, SECONDSHIWEI ;A

MOVC

A,@A+DPTR ;A+DPRTA

MOV

P0, A

CLR

P2.1

CALL

DELAY

SETB

P2.1

;
;P2.2

;P0
;P2.1
;
;P2.1

MOV

A, SECONDGEWEI

;A

MOVC

A,@A+DPTR ;A+DPRTA

MOV

P0, A

CLR

P2.0

CALL

DELAY

SETB

P2.0

;P0
;P2.0
;

RET

;P2.0
;

;-----------------------------------------------TIMER0:PUSH A
INC

;A

30H

MOV A, 30H
CJNE A,#20,JIXU
MOV 30H,#0
INC

SECOND

MOV A,SECOND

;30H1
;30HA
;A20JIXU
;30H2030H0
;SECOND1
;SECONDA

CJNE A, #60, JIXU


MOV SECOND, #0

;A60JIXU
;SECOND0

INC

MINUTE

;MINUTE1

MOV

A, MINUTE

;MINUTEA

CJNE
MOV

A, #60, JIXU
MINUTE, #0

;A60JIXU
;MINUTE0

INC

HOUR

;HOUR1

MOV

A, HOUR

;HOURA

CJNE
MOV
JIXU: POP

A, #24, JIXU
HOUR, #0
A

;A24JIXU
;HOUR0
;A

MOV TH0,#3CH

;8TH03CH

MOV TL0,#0B0H

;8TL0B0H

RETI

;------------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #10

;R110

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

105

;
tyw

RET

;---------------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H

;TAB01234

DB 92H ,82H ,0F8H,80H ,90H


END

;56789
;

4
PROCESS DISPLAY ,
PROCESS
DISPLAY

MOV A, SECOND

;A

MOV B, #10

;B10

DIV AB

;ABAB

MOVC A, @A+DPTR

; A+DPRTA

MOV

P0, A

;P0

CLR

P2.1

;P2.1

CALL DELAY

SETB P2.1

;P2.1

MOV

A, B

;BAA

MOVC A, @A+DPTR

; A+DPRTA

MOV

P0, A

;P0

CLR

P2.1

;P2.0

CALL DELAY

SETB P2.1

;P2.0

ROM

60
60 24 9
6

60

106

50ms
tyw

MOVC A,@A+DPTR A P0
50ms
A, P0
MOV P0, A A

RAM
A PUSH A
A POP A A
PUSH POP

K4
5
5.3.5

0
59 1
1 60 1
1 24

K1 JNB P1.4, $ P1.4


K1
50ms
JNB P1.4,$ JNB
P1.4,$ K1

6.5 DELAY

107

CPU
tyw
CPU CPU
CPU CPU
CPU
CPU

6.6

6.6.1

I/O

6.6.2

6.6.3

108

tyw

7
/

51 / T0 T1 T0
T1 T1

7.1 /T1
T1 P3.5
T0 P3.4

/ T1

7.1.1 T1

T1

1
7-1

HK_2000A 312V
5V

P3.5

8 TL1
255 8 TH1
7-2
109

tyw

9
8
7
6
5
4
3
2
1

+5

a b c d e f g dp U2

+5
C1
30pF
C2
30pF

20

GND

31
40
18

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

EA
VCC
X2

Y1
12M
19

X1

8550

4.7K

Q1

Q2

COM1 COM2 COM3

Q3

Q4
8550

Q5

COM4

Q6

12

R10
R11
R12
R13
R14
R15
R16
R17

COM4

11

28
27
26
25
24
23
22
21

COM1 COM2 COM3

10

RST

P3.5

R1
10K

a b c d e f g dp U3

470

12

15
uF

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

R2
R3
R4
R5
R6
R7
R8
R9

11

89S51

39
38
37
36
35
34
33
32

10

U1

+5

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

+5

Q7

7-1

ROM0000H

START

60H
/T11
00

CHUFA

TL110

DIV AB

DISPLAY

P0

7-2

3\ch7\xinlv_timer1.flv
SHIWEI

EQU

31H

;RAM31HSHIWEI

GEWEI

EQU

32H

;RAM32HGEWEI

ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;-----------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;
;P0

MOV DPTR,#TAB

;DPTR

MOV TL1,#0

;TL10

MOV TMOD ,#01010000B;T11


SETB TR1

;T1

;---------------------------------------------------MAIN:CALL CHUFA

;
110

Q8
8550
+5

CALL DISPLAY

SJMP MAIN

;MAIN

tyw

;-------------------------CHUFA--------------CHUFA:MOV A, TL1
MOV B, #10
DIV AB
MOV SHIWEI, A
MOV GEWEI , B
RET

;TL1A
;B10
;ABAB
;SHIWEI
;GEWEI
;

;------------------------DISPLAY--------------------DISPLAY:MOV A, SHIWEI
MOVC A, @A+DPTR

;SHIWEIA
;

MOV P0, A

;P0

CLR P2.1

;P2.10

CALL DELAY
SETB P2.1

;
;P2.11

MOV A, GEWEI

;GEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.0

;P2.00

CALL DELAY
SETB P2.0

;
;P2.01

RET
;-------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

;-------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H
END

;56789
;

4
TMOD C/T 1 / T1
8 8
1

255/ T1
8 TH1 8 TL1 8 TL1
TL1 /
1
7.1.3

111

tyw

7.1.2

P3.5

P3.5 7-3

a b c d e f g dp U2

+5
C1
30pF
C2
30pF

20
31
40
18
Y1
12M
19

8550

4.7K

Q1

Q2

COM1 COM2 COM3

Q3

Q4
8550

Q5

COM4

Q6

12

COM4

11

R10
R11
R12
R13
R14
R15
R16
R17

COM1 COM2 COM3

10

28
27
26
25
24
23
22
21

a b c d e f g dp U3

470

R2
R3
R4
R5
R6
R7
R8
R9

12

R1
10K

39
38
37
36
35
34
33
32

11

15

P1.0

uF

P0.0
89S51
P0.1
P0.2
P3.5
P0.3
P0.4
RST
P0.5
P0.6
P0.7
GND
P2.7
EA
P2.6
VCC P2.5
X2
P2.4
P2.3
P2.2
P2.1
X1
P2.0

10

89S51

U1
+5

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

9
8
7
6
5
4
3
2
1

+5

Q7

Q8
8550
+5

7-3

P1.0

\ch7\xinlv_moni.flv
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;-----------------------------------------------------START:MOV SP, #60H

;---------------------------------------------------MAIN:SETB P1.0

;P1.0

CALL DELAY

CLR

P1.0

;P1.0

CALL

DELAY

SJMP MAIN

;MAIN

;-------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

112

tyw
1
MOV SP, #60H

SP
;-------------------------------------------------DELAY:MOV R0, #50

;R050

D3:MOV R1, #100

;R1100

D2:MOV R2, #100

;R2100

D1:DJNZ R2, D1

;R210D1

DJNZ R1, D2

;R110D2

DJNZ R0, D3

;R010D3

RET

2
555 7-4 1
3 P3.5

C1
10nF
C2

VCC

DIS
THR U1 Q
NE555
TRIG

VO

GND

30M 7
6
2

R2

72M

CVol

R1

VCC

10nF

7-4 555

3 GND

P3.5

4 T0
/ T0 0.5 500ms
P1.0 1
P3,5 / T1
7-5 7-6
\ch7\xinlv_timer0_timer1.flv

113

tyw

a b c d e f g dp U2

uF
C1
R1
10K 30pF
C2
30pF

18
Y1
12M
19

X2

X1

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

8550

4.7K

Q1

Q2

7-5

7-6 T0

114

Q3

Q4
8550

Q5

COM4

Q6

12

COM1 COM2 COM3


11

R10
R11
R12
R13
R14
R15
R16
R17

COM4

10

28
27
26
25
24
23
22
21

COM1 COM2 COM3

P3.5
GND
EA
VCC
RST

12

15
20
31
40
9

a b c d e f g dp U3

470

11

+5

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

R2
R3
R4
R5
R6
R7
R8
R9

10

+5

P1.0

39
38
37
36
35
34
33
32

U1
1

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

9
8
7
6
5
4
3
2
1

+5

Q7

Q8
8550
+5

tyw

SHIWEI

EQU

31H

;RAM31HSHIWEI

GEWEI

EQU

32H

;RAM32HGEWEI

ORG 0000H

SJMP START

;START

ORG 000BH

;T0

AJMP TIMER0
ORG 0030H

;TIMER0
;30H

;-----------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

MOV DPTR,#TAB

;DPTR

MOV 30H,#0

;30H030H50ms

MOV TL1,#0

;TL10

MOV TMOD ,#01010001B;T11;T0


MOV TH0,#3CH

;TH03CH

MOV TL0,#0B0H

;TL0B0H

SETB TR0

;T0

SETB TR1

;T1

SETB ET0

;T0

SETB EA

;---------------------------------------------------MAIN:CALL CHUFA

CALL DISPLAY

SJMP MAIN

;MAIN

;-------------------------CHUFA--------------CHUFA:MOV A, TL1
MOV B, #10
DIV AB

;TL1A
;B10
;ABAB

MOV SHIWEI, A

;SHIWEI

MOV GEWEI , B

;GEWEI

RET

;------------------------DISPLAY--------------------DISPLAY:MOV A, SHIWEI
MOVC A, @A+DPTR

;SHIWEIA
;

MOV P0, A

;P0

CLR P2.1

;P2.10

CALL DELAY
SETB P2.1

;
;P2.11

MOV A, GEWEI

;GEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.0

;P2.00

CALL DELAY

;
115

SETB P2.0

;P2.01
tyw

RET
;---------------------------T0----------TIMER0:PUSH A

;A

INC 30H

;30H1

MOV A, 30H

;30HA

CJNE A,#10,FANHUI

;A10FANHUI

MOV 30H,#0

;30H0

CPL P1.0

;P1.0

FANHUI:POP A
RETI

;A
;

;-------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

;-------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H
END

;56789
;

99

7.1.3

60
\ch7\xinlv_wanzheng.flv

1
7-1

2
/ T0 T1/ T1
/ T0 60 60
T1 CLR TR1 T0 (CLR TR0)
TL1 T0

T0 T1
116

tyw
TL1
7-7 .

ROM0000H
60H
/T11
00T0
1

START

CHUFA

TL1
DIV AB

DISPLAY

P0

T0

T0
A
N

201

Y
1

11

N
60

Y
T0T1

60

60T0T1

7-7

3
XINLVGEWEI

EQU

31H

;RAM31HXINLVGEWEI

XINLVSHIWEI

EQU

32H

;RAM32HXINLVSHIWEI

XINLVBAIWEI

EQU

33H

;RAM33HXINLVBAIWEI

MIAO

EQU

34H

; RAM34HMIAO

MIAOGEWEI

EQU

35H

;RAM35HMIAOGEWEI

MIAOSHIWEI

EQU

36H

;RAM36HMIAOSHIWEI

ORG 0000H

SJMP START

;START

ORG 000BH

;T0
117

;TIMER0
tyw

AJMP TIMER0
ORG 0030H

;30H

;-----------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

MOV DPTR,#TAB

;DPTR

MOV 30H,#0

;30H030H50ms

MOV TL1,#0

;TL10

MOV MIAO,#0

;0

MOV TMOD ,#01010001B;T11;T0


MOV TH0,#3CH

;TH03CH

MOV TL0,#0B0H

;TL0B0H

SETB TR0

;T0

SETB TR1

;T1

SETB ET0

;T0

SETB EA

;---------------------------------------------------MAIN:CALL CHUFA

CALL DISPLAY

SJMP MAIN

;MAIN

;-------------------------CHUFA--------------CHUFA:MOV A, TL1

;TL1A

MOV B, #100

;B100

DIV AB

;ABA()B

MOV XINLVBAIWEI, A

;XINLVBAIWEI

MOV A , B

;BA

MOV B, #10

;B10

DIV AB

;ABAB

MOV XINLVSHIWEI, A

;AXINLVSHIWEI

MOV XINLVGEWEI ,B

;BXINLVGEWEI

MOV A, MIAO

;A

MOV B, #10

;B10

DIV AB
MOV MIAOSHIWEI, A
MOV MIAOGEWEI, B
RET

;ABAB
;A()MIAOSHIWEI
;B()MIAOGEWEI
;

;------------------------DISPLAY--------------------DISPLAY:MOV A, MIAOSHIWEI
MOVC A, @A+DPTR

;MIAOSHIWEIA
;

MOV P0, A

;P0

CLR P2.7

;P2.70

CALL DELAY
SETB P2.7

;
;P2.71

MOV A, MIAOGEWEI

;MIAOGEWEIA

118

MOVC A, @A+DPTR

MOV P0, A

;P0

tyw

CLR P2.6

;P2.60

CALL DELAY

SETB P2.6

;P2.61

MOV A, XINLVBAIWEI

;XINLVBAIWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.2

;P2.20

CALL DELAY

SETB P2.2

;P2.21

MOV A, XINLVSHIWEI

;XINLVGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.1

;P2.10

CALL DELAY

SETB P2.1

;P2.11

MOV A, XINLVGEWEI

;XINLVGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.0

;P2.00

CALL DELAY

SETB P2.0

;P2.01

RET
;---------------------------T0----------TIMER0:PUSH A

;A

INC 30H

;30H1

MOV A, 30H

;30HA

CJNE A,#20,FANHUI

;A20FANHUI

MOV 30H,#0

;30H0

INC MIAO

;1

MOV A, MIAO

;A

CJNE A,#60,FANHUI

;60FANHUI

CLR TR0

;(60)T0

CLR TR1

;T1

FANHUI:POP A
RETI

;A
;

;-------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #100

;R1100

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

;--------------------------

119

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H
END

tyw

;56789
;

\ch7\xinlv_wanmei.flv
;-------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #10

;R110

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

7.2

7.2.1

7.2.2

7.2.3 100

100
100
120

121

tyw

tyw

8
P3.2 P3.3 

51 / T0 T1
P3.2 P3.3
P3.2 P3.3

8.1

6.2.4

P3.2 P3.3
122

tyw

P3.2 P3.3

8-1

123

tyw

8-1

P3.2 P3.3

P3.2 P3.3

124

tyw

8.2
51 P3.2 P3.3 I/O
LED CPU
CPU P3.2 P3.3
P3.2 P3.3
IE TCON

8.2.1

P3.2 P3.3

8.2.2 IE
P3.2 P3.3

IE IE 8-1
8-1 IE
D7

D6

D5

D4

D3

D2

D1

D0

EA

ET2

ES

ET1

EX1

ET0

EX0

1EX0
EX0=1(SETB EX0) P3.2
RETI
EX0=0(CLR EX0) P3.2
CPU

P3.2 CPU
TCON IE0 1
2EX1
EX1=1(SETB EX1) P3.3 CPU
EX1=0(CLR EX1) P3.3
CPU
EX0 EX1 CPU P3.2 P3.3

6EA
EA EA

125

tyw
P3.2 P3.3 EA 1(SETB EA)
EA 0(CLR EA)

8.2.3 TCON
P3.2 P3.3

TCON 8-2
8-2

TCON

D7

D6

D5

D4

D3

D2

D1

D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

T1

T0

P3.3

P3.2

1IT0
IT0=1(SETB IT0) P3.2
IT0=0(CLR IT0) P3.2
2IE0
IE0 P3.2
IT0 1 CPU
IE0 0 P3.2 0
IT1 IE1 IT0TE0 P3.3

8.2.4
CPU CPU
P3.2
ROM 0003H P3.2 CPU
0003H 8-3
P3.2
CPU 0003

126

tyw

8-3

CPU

P3.2

0003H

TCONIE0

/T0

000BH

TCONTF0

P3.3

0013H

TCONIE1

/T1

001BH

TCONTF1

0023H

SCONTIRI

8.3 LED

!!!

8.3.1 LED
LED P3.2
P0.7 P0.7 LED

1
8-2 P3.2
P3.2 GND
4.7k

10K

18

39
38
37
36
35
34
33
32

9
8
7
6
5
4
3
2
1

EA
U1

X2

12

P0.0
P0.1
P0.2
89S51 P0.3
P3.2/INT0
P0.4
P0.5
P0.6
P0.7
RST

X1
GND

Y1
12M
C1
30pF

19
20

R1

VCC

C3
10uF

31

40

+5

C2
30pF

8-2 P3.2 LED

127

R9
470

D1

+5

tyw

8-3
P3.2 P3.2
LED
P0.7

ROM0000H

START

P3.2
P3.2
LED

MAIN:SJMP
MAIN
P3.2

P3
.2

P3.2

P3.2CPU

0003H

P3.2

P3.2

P0.7

P0.7P0.7LED
LED

RETIP3.2

8-3 P3.2 LED

3\ch8\P3.2_didianping.flv
ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INTERRUPT0
ORG 0030H

;INTERRUPT0P3.2
;30H

;------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

CLR IT0

;P3.2

SETB EX0

;0P3.2CPU

SETB EA

;------------------------------------------------MAIN:SJMP MAIN

;MAIN

;-----------------------P3.2------INTERRUPT0:CPL P0.7

;P0.7

128

RETI

END

tyw

4
P0.7 LED
: P3.2 GND

CPU

CPU CPU

LED

\ch8\P3.2_didianping_delay.flv
ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INTERRUPT0
ORG 0030H

;INTERRUPT0P3.2
;30H

;------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH
CLR IT0

;60H
;P0
;P3.2

SETB EX0

;0P3.2CPU

SETB EA

;------------------------------------------------MAIN:SJMP MAIN

;MAIN

;-----------------------P3.2------INTERRUPT0:CPL P0.7

;P0.7

CALL DELAY

;DELAY

RETI

;--------------------------------------------DELAY:MOV R0, #250

;R0250

D2:MOV R1, #250

;R1250

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

END

129

CPU
tyw
P3.2 P3.2
P3.2 CPU P3.2

\ch8\P3.2_didianping_en.flv
ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INTERRUPT0
ORG 0030H

;INTERRUPT0P3.2
;30H

;------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

CLR IT0

;P3.2

SETB EX0

;0P3.2CPU

SETB EA

;------------------------------------------------MAIN:SETB EX0
NOP

;0P3.2CPU
;

CLR

EX0

;0 CPUP3.2

CALL

DELAY

;P3.2

SJMP MAIN

;MAIN

;-----------------------P3.2------INTERRUPT0:CPL P0.7
RETI

;P0.7
;

;--------------------------------------------DELAY:MOV R0, #250

;R0250

D2:MOV R1, #250

;R1250

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET
END

;
;

EX0 P3.2
P3.2 NOP
P3.2 SETB EX0(CLR EX0),
CPU
NOP 1 P3.2

8.3.2 LED
P3.2
7.1.2
130

555
tyw
P3.2 GND
8-2 8-3
\ch8\P3.2_led_clk.flv
ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INTERRUPT0
ORG 0030H

;INTERRUPT0P3.2
;30H

;------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

SETB IT0

;P3.2

SETB EX0

;0P3.2CPU

SETB EA

;------------------------------------------------MAIN:SJMP MAIN

;MAIN

;-----------------------P3.2------INTERRUPT0:CPL P0.7

;P0.7

RETI

END

P3.2 P3.2
P3.2
CPU
12

8.3.3 LED
LED P3.2 P3.3
LED

1
8-4 P3.2 P3.3 GND
LED P0.0 P0.7

2
8-5
P3.2 P3.3
LED
P3.2
P0.0 P3.3 P0.7

131

tyw

4.7k
40

31

+5

12
13

EA

9
8
7
6
5
4
3
2
1
R2

R9

470

470

+5
D8

D1

X1
GND

10K

P0.0
P0.1
89S51 P0.2
P0.3
P3.2/INT0
P0.4
P3.3/INT1
P0.5
P0.6
P0.7
RST

39
38
37
36
35
34
33
32

Y1
12M
C1
30pF

19
20

X2

R1

18

C3
10uF

VCC

U?

C2
30pF

8-4 P3.2 P3.3 P0.0 P0.7

8-5 P3.2 P3.3 LED

132

3\ch8\P3.2_P3.3_led.flv

tyw

ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INTERRUPT0

;INTERRUPT0P3.2

ORG 0013H

;P3.3

AJMP INTERRUPT1

;INTERRUPT1P3.3

ORG 0030H

;0030H

;------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

CLR IT0

;P3.2

SETB EX0

;0P3.2CPU

CLR IT1

;P3.3

SETB EX1

;1P3.3CPU

SETB EA

;------------------------------------------------MAIN:SJMP MAIN

;MAIN

;-----------------------P3.2------INTERRUPT0:CPL P0.0

;P0.0

CALL DELAY

;DELAY

RETI

;-----------------------P3.3------INTERRUPT1:CPL P0.7

;P0.7

CALL DELAY

;DELAY

RETI

;--------------------------------------------DELAY:MOV R0, #250

;R0250

D2:MOV R1, #250

;R1250

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2
;

RET

END

4
P0.0 P0.7

P3.2
CPU P3.2
P3.2 CPU P3.3

133

tyw

P3.3
P0.7

IP IP

8.3.4 IP

P3.2
/ T0P3.3 / T1
IP
IP 8-4
PX0: 0P3.2 0 1
PT0: T00 1
PX1: 1P3.3 0 1
PT1: T10 1
PS: 0 1
1
1 1 1
PS 1SETB
PS PX0 1SETB PX0
P3.2 T0 P3.3
T1

134

tyw

8-4 IP
D7

D6

D5

D4

D3

D2

D1

D0

PS

PT1

PX1

PT0

PX0

P3.2 P3.3 LED


P3.2
P0.0
CLR PX0
P3.3 SETB PX1 CPU
P3.3 P3.3
P0.7

\ch8\p3.2_p3.3_jiaohuanjibie.flv
ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INTERRUPT0

;INTERRUPT0P3.2

ORG 0013H

;P3.3

AJMP INTERRUPT1

;INTERRUPT1P3.3

ORG 0030H

;0030H

;------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

CLR IT0

;P3.2

SETB EX0

;0P3.2CPU

CLR IT1

;P3.3

SETB EX1

;1P3.3CPU

SETB EA

;------------------------------------------------MAIN:SJMP MAIN

;MAIN

;-----------------------P3.2------INTERRUPT0:CPL P0.0
CLR

PX0

;P0.0
;0P3.2

SETB PX1

; 1P3.3

CALL DELAY

;DELAY

RETI

;-----------------------P3.3------INTERRUPT1:CPL P0.7
CLR

PX1

;P0.7
;1P3.3

SETB PX0

; 0P3.2

CALL DELAY

;DELAY

RETI

;--------------------------------------------DELAY:MOV R0, #250

;R0250
135

D2:MOV R1, #250

;R1250

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

tyw

END

P3.2 P3.3 GND


LED

8.3.5

8.3.5

P3.2 P3.3

P3.2
P3.3 P0.0
P0.7 LED LED

T0 T1 60ms P0.3 P0.5


P3.2 P3.3 P3.2
P3.3 P0.3 P0.5
136

P0.0 P0.7 , P0.0 P0.7


tyw

1
8-6 .
4.7k
31

40

+5

18

9
8
7
6
5
4
3
2
1

EA

X2

12
13

39
38
37
36
35
34
33
32

R2

470

R5

470

R7

470

R9

470

+5
D0
D3
D5
D7

X1
GND

10K

P0.0
RST
P0.1
89S51 P0.2
P0.3
P3.2/INT0
P0.4
P3.3/INT1
P0.5
P0.6
P0.7

Y1
12M
C1
30pF

19
20

R1

VCC

U?
C3
10uF

C2
30pF

8-6 P3.2 P3.3

2
8-7

8-7 T0T1 P3.2P3.3

3\ch8\p3.2_p3.3_clk.flv
ORG 0000H

SJMP START

;START

137

tyw

ORG 0003H

;P3.2

AJMP INTERRUPT0

;INTERRUPT0P3.2

ORG 000BH

;T0

AJMP TIMER0

;TIMER0T0

ORG 0013H

;P3.3

AJMP INTERRUPT1

;INTERRUPT1P3.3

ORG 001BH

;T1

AJMP TIMER1

;TIMER1T1

ORG 0030H

;0030H

;------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

MOV TMOD ,#00010001B;T0T11


MOV TH0,#15H
MOV TL0,#0A0H
MOV TH1,#15H
MOV TL1,#0A0H

;T0815H
;T18A0H
;T0815H
;T18A0H

SETB TR0

;T0

SETB TR1

;T1

SETB ET0

;T0

SETB ET1

;T1

SETB IT0

;P3.2

SETB EX0

;0P3.2CPU

SETB IT1

;P3.3

SETB EX1

;1P3.3CPU

SETB EA

;------------------------------------------------MAIN:SJMP MAIN

;MAIN

;-----------------------P3.2------INTERRUPT0:CPL P0.0
RETI

;P0.0
;

;-----------------------P3.3------INTERRUPT1:CPL P0.7
RETI

;P0.7
;

;-----------------------T0------TIMER0:CPL P0.3
MOV TH0,#15H
MOV TL0,#0A0H
RETI

;P0.3
;T0815H
;T18A0H
;

;----------------------- T1------TIMER1:CPL P0.5


MOV TH1,#15H
MOV TL1,#0A0H
RETI

;P0.5
;T0815H
;T18A0H
;

138

END

tyw

4
LED
60 MAIN

P3.2 P3.3
LED P3.2 P3.3
LED

P3.2 P3.3 LED

P3.2 P3.3
GND

P3.2 P3.3

P3.2 P3.3

8.3.6
P3.2 P3.3

P3.2 P3.3 INT0 INT1


P3.2
CPU INT1 T0T1 INT0
CPU
INT0INT1

8.3.7 P3.2 P3.3 LED


P3.2 P3.3

P3.2 P3.3 CPU CPU

CPU
P3.2
P3.2 CPU

139

tyw

8.4
7.1.1
INT0P3.2

1
8-8 P3.2
4.7k

9
8
7
6
5
4
3
2
1

+5

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

+5
a b c d e f g dp U2

R1
10K

C1
30pF
C2
30pF

8550

Q1

Q2

Q3

Q4
8550

Q5

Q6

12

11

10

R10 4.7K
R11
R12
R13
R14
R15
R16
R17

COM1 COM2 COM3 COM4


9

28
27
26
25
24
23
22
21

COM1 COM2 COM3 COM4


12

R2 470
R3
R4
R5
R6
R7
R8
R9

11

C3
10uF

39
38
37
36
35
34
33
32

10

+5

U1 P0.0
P0.1
89S51
P0.2
12
P3.2 P0.3
P0.4
31
EA
P0.5
40
VCC P0.6
P0.7
9
RST
P2.7
P2.6
18
X2
P2.5
P2.4
Y1
P2.3
12M
P2.2
19
X1
P2.1
20
GND P2.0

a b c d e f g dp U3

Q7

Q8
8550
+5

8-8 P3.2

2
INT0

1
8-9

140

tyw

ROM0000H
60H
T01

START

CHUFA
.2
P3

DISPLAY

T0

Y
1

60

T0

T0
A
2011
160
60T0
0
A

8-9

3\ch8\xinlv_p3.2.flv
XINLVGEWEI

EQU

31H

;RAM31HXINLVGEWEI

XINLVSHIWEI

EQU

32H

;RAM32HXINLVSHIWEI

XINLVBAIWEI

EQU

33H

;RAM33HXINLVBAIWEI

MIAO

EQU

34H

; RAM34HMIAO

MIAOGEWEI

EQU

35H

;RAM35HMIAOGEWEI

MIAOSHIWEI

EQU

36H

;RAM36HMIAOSHIWEI

XINLVSHU

EQU

37H

;37HXINLVSHU()

ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INT0

;INT0

141

ORG 000BH

;T0

AJMP TIMER0
ORG 0030H

tyw

;TIMER0
;30H

;-----------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

MOV DPTR,#TAB

;DPTR

MOV 30H,#0

;30H030H50ms

MOV XINLVSHU,#0

;XINLVSHU0

MOV MIAO,#0

;0

MOV TMOD ,#00000001B;T0,1


MOV TH0,#3CH

;TH03CH

MOV TL0,#0B0H

;TL0B0H

SETB TR0

;T0

SETB ET0

;T0

SETB EX0

;P3.2

SETB IT0

;P3.2

SETB EA

;---------------------------------------------------MAIN:CALL CHUFA

CALL DISPLAY

SJMP MAIN

;MAIN

;-------------------------CHUFA--------------CHUFA:MOV A, XINLVSHU

;XINLVSHUA

MOV B, #100

;B100

DIV AB

;ABA()B

MOV XINLVBAIWEI, A

;XINLVBAIWEI

MOV A , B

;BA

MOV B, #10

;B10

DIV AB

;ABAB

MOV XINLVSHIWEI, A

;AXINLVSHIWEI

MOV XINLVGEWEI ,B

;BXINLVGEWEI

MOV A, MIAO

;A

MOV B, #10

;B10

DIV AB
MOV MIAOSHIWEI, A
MOV MIAOGEWEI, B
RET

;ABAB
;A()MIAOSHIWEI
;B()MIAOGEWEI
;

;------------------------DISPLAY--------------------DISPLAY:MOV A, MIAOSHIWEI
MOVC A, @A+DPTR

;MIAOSHIWEIA
;

MOV P0, A

;P0

CLR P2.7

;P2.70

CALL DELAY

142

SETB P2.7

;P2.71
tyw

MOV A, MIAOGEWEI

;MIAOGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.6

;P2.60

CALL DELAY

SETB P2.6

;P2.61

MOV A, XINLVBAIWEI

;XINLVBAIWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.2

;P2.20

CALL DELAY

SETB P2.2

;P2.21

MOV A, XINLVSHIWEI

;XINLVGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.1

;P2.10

CALL DELAY

SETB P2.1

;P2.11

MOV A, XINLVGEWEI

;XINLVGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.0

;P2.00

CALL DELAY

SETB P2.0

;P2.01

RET
;---------------------------T0----------TIMER0:PUSH A

;A

INC 30H

;30H1

MOV A, 30H

;30HA

CJNE A,#20,FANHUI

;A20FANHUI

MOV 30H,#0

;30H0

INC MIAO

;1

MOV A, MIAO

;A

CJNE A,#60,FANHUI

;60FANHUI

CLR TR0

;(60)T0

CLR EX0

;0

FANHUI:POP A
RETI

;A
;

;---------------------------P3.2-------INT0:INC XINLVSHU

;XINLVSHU1

RETI

;-------------------------------------------------DELAY:MOV R0, #50

;R050

143

D2:MOV R1, #10

;R110

D1:DJNZ R1, D1

tyw

;R110D1

DJNZ R0, D2

;R010D2

RET

;-------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H
END

;56789
;

8.5

8.5.1

8-10 L293
P3.0P1.0P1.1P3.1P1.2P1.3 P3.0P1.0P1.1 293
3 6 1P3.1P1.2P1.3 293 11 14
2 293 1 ENA 9 ENB
ENA 293 1
ENA 293 1
2 ENB 2 8-5 293
H
L
VCC
144

w
5V VDD 12V ty12V
293
298

2
P1.0
1
P3.0
7
P1.1

IN1
ENA
IN2

VSS
VS

16
8

VDD
VCC

OUT1

U1 OUT2
L293N
10
P1.2
9
P3.1
15
P1.3

11

OUT3

14

OUT4

4
5
12
13

IN3
ENB
IN4

8-10
8-5

L293N

EN AB

IN1IN3

IN2IN4

IN1 IN2
H

IN3 IN4

8-11
RPR220

R3 R3 R3
0 R3 LM324 2 LM324 2
0V LM324 3 3
0V LM324 LM324

R3 R3 R3
2 3 3
1

1 1
1

145

tyw

+5

R1
10k

+5
R5
220

11

GND

U1A
3
P3.2

+5
3

GND

4
R3
1M

LM324

U2
C

E
RPR220

1
2
GND

+5

+5
GND
R2
10k

+5

U1B
P3.3

+5
5

GND

U3

R
2

6
R4
1M

LM324

GND

RPR220

GND

8-11

P3.2 P3.3
8-11 1 7 P3.2 P3.3

8-12

146

tyw

8-12

3\ch8\car_xunji.flv
QIANJIN

EQU

31H

;RAM31HQIANJIN

ZUOZHUAN

EQU

32H

;RAM32HZUOZHUAN

YOUZHUAN

EQU

33H

;RAM33HYOUZHUAN

TINGZHI

EQU

34H

; RAM34HTINGZHI

ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INT00
ORG 0013H
AJMP INT11
ORG 0030H

;INT0
;P3.3
;INT1
;30H

;-----------------------------------------------------START:MOV SP, #60H

;60H

MOV TINGZHI,#11111111B;P1
MOV QIANJIN,#11110101B;8-10
MOV ZUOZHUAN,#11110111B;
MOV YOUZHUAN,#11111101B;
MOV P1,TINGZHI

147

SETB EX0

;P3.2

SETB P3.0

;293ENA

SETB P3.1

;293ENB

SETB IT0

;P3.2

SETB EX1

;P3.3

SETB IT1

;P3.3

SETB EA

tyw

;---------------------------------------------------MAIN:MOV P1,QIANJIN
SJMP MAIN

;P1293
;MAIN

;----------------P3.2-------INT00:MOV P1,YOUZHUAN
WAIT0:JNB P3.2,WAIT0

;
;P3.2
;WAIT0

RETI

;----------------P3.3-------INT11:MOV P1,ZUOZHUAN
WAIT1:JNB P3.3,WAIT1

;
;P3.3
;WAIT1

RETI

END

4
CPU P1
QIANJIN CPU CPU
P3.2 P3.3 CPU
(P3.2 P3.3
) CPU 293
293
CPU CPU

CPU
PCON
PCON 8-6 IDL
1CPU
CPU IDL 1 CPU
CPU CPU
293 CPU
MOV PCON#01H
PCON

148

tyw

8-6 PCON
D7

D6

D5

D4

SMOD

D3

D2

D1

D0

GF1

GF0

PD

IDL

QIANJIN

EQU

31H

;RAM31HQIANJIN

ZUOZHUAN

EQU

32H

;RAM32HZUOZHUAN

YOUZHUAN

EQU

33H

;RAM33HYOUZHUAN

TINGZHI

EQU

34H

; RAM34HTINGZHI

ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INT00
ORG 0013H
AJMP INT11
ORG 0030H

;INT0
;P3.3
;INT1
;30H

;-----------------------------------------------------START:MOV SP, #60H

;60H

MOV TINGZHI,#11111111B;P1
MOV QIANJIN,#11110101B;8-10
MOV ZUOZHUAN,#11110111B;
MOV YOUZHUAN,#11111101B;
MOV P1,TINGZHI

SETB EX0

;P3.2

SETB P3.0

;293ENA

SETB P3.1

;293ENB

SETB IT0

;P3.2

SETB EX1

;P3.3

SETB IT1

;P3.3

SETB EA

;---------------------------------------------------MAIN:MOV PCON,#01H
SJMP MAIN

;PCONIDL1CPU
;CPU
;SJMP MAINCPU
;MAINMOV PCON,#01CPU

;----------------P3.2-------INT00:MOV P1,YOUZHUAN
WAIT0:JNB P3.2,WAIT0

;
;P3.2
;WAIT0

MOV P1,QIANJIN
RETI

;
;

;----------------P3.3-------INT11:MOV P1,ZUOZHUAN
WAIT1:JNB P3.3,WAIT1

;
;P3.3
;WAIT1
149

MOV P1,QIANJIN

tyw

RETI

END

P1 P1
CLR P3.1 293
ENB 8-5
CLR P3.0

P3.0 P3.1 1 293 ENA ENB

;----------------P3.2-------INT00:CLR P3.1

;,293ENB

WAIT0:JNB P3.2,WAIT0

;P3.2
;WAIT0

SETB P3.1

;,293ENB

RETI

;----------------P3.3-------INT11: CLR P3.0

;,293ENA

WAIT1:JNB P3.3,WAIT1

;P3.3
;WAIT1

SETB P3.0

;,293ENA

RETI

8.5.2

1
RP1
4.7k

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

9
8
7
6
5
4
3
2
1

+5

a b c d e f g dp U2

C1
30pF
C2
30pF

18
Y1
12M
19
20

X2

X1
GND

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

8550

4.7K

Q1

8-13
150

Q2

Q3

Q4
8550

Q5

Q6

12

COM4

11

COM1 COM2 COM3


10

R10
R11
R12
R13
R14
R15
R16
R17

COM4

28
27
26
25
24
23
22
21

COM1 COM2 COM3

12

R1
10K

a b c d e f g dp U3

470

11

C3
10uF

R2
R3
R4
R5
R6
R7
R8
R9

10

31
40

39
38
37
36
35
34
33
32

+5

P0.0
EA
P0.1
VCC P0.2
P0.3
P0.4
RST
P0.5
P0.6
U1
P0.7
89S51

Q7

Q8
8550
+5

tyw

8-13

2
INT0P3.2
INT1P3.3 T0

1 1
8-14 CPU

CPU

START

P3.3

P3.2

T0

Y
1

8-14

3
151

QIANJIN

EQU

31H

;RAM31HQIANJIN
tyw

ZUOZHUAN

EQU

32H

;RAM32HZUOZHUAN

YOUZHUAN

EQU

33H

;RAM33HYOUZHUAN

TINGZHI

EQU

34H

MIAO

EQU

35H

;RAM35HMIAO

MIAOSHIWEI EQU

36H

;RAM36HMIAOSHIWEI,

MIAOGEWEI

37H

;RAM37HMIAOGEWEI,

WUSHIMSCISHU

EQU

EQU

38H

;RAM34HTINGZHI

;38HWUSHIMSCISHU50

ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INT00

;INT0

ORG

;T0

000BH

AJMP TIMER0

;TIMER0

ORG 0013H

;P3.3

AJMP INT11

;INT1

ORG 0030H

;30H

;-----------------------------------------------------START:MOV SP, #60H

;60H

MOV TINGZHI,#11111111B;P1
MOV QIANJIN,#11110101B;8-10
MOV ZUOZHUAN,#11110111B;
MOV YOUZHUAN,#11111101B;
MOV P1,TINGZHI

SETB P3.0

;293ENA

SETB P3.1

;293ENB

MOV MIAO,#0

;0

MOV WUSHIMSCISHU,#0 ;500


MOV DPTR,#TAB

;DPTRDPTRTAB

MOV TMOD,#00000001B ;T01


MOV TH0,#3CH

;3CH

MOV TL0,#0B0H

;B0H

SETB ET0

SETB TR0

;T0

SETB EX0

;P3.2

SETB IT0

;P3.2

SETB EX1

;P3.3

SETB IT1

;P3.3

SETB EA

;---------------------------------------------------MAIN:MOV P1,QIANJIN

;P1293

CALL CHUFA

CALL DISPLAY;

SJMP MAIN

;MAIN

152

;------------------------------PROCESS-------------CHUFA:MOV A, MIAO

tyw

;MIAOA

MOV B, #10

;B10

DIV AB

;ABAB

MOV MIAOSHIWEI, A

;MIAOSHIWEI

MOV MIAOGEWEI , B

;MIAOGEWEI

RET

;------------------------------DISPLAY------------------DISPLAY:MOV A, MIAOSHIWEI

;MIAOSHIWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.7

;P2.70

CALL DELAY

SETB P2.7

;P2.71

MOV A, MIAOGEWEI

;MIAOGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.6

;P2.60

CALL DELAY

SETB P2.6

;P2.61

RET
;----------------P3.2-------INT00:MOV P1,YOUZHUAN

WAIT0:JNB P3.2,WAIT0

;P3.2
;WAIT0

RETI

;----------------P3.3-------INT11:MOV P1,ZUOZHUAN

WAIT1:JNB P3.3,WAIT1

;P3.3
;WAIT1

RETI

;--------------------T0---------------------------TIMER0:PUSH ACC
INC

;A

WUSHIMSCISHU

;WUSHIMSCISHU1

MOV A, WUSHIMSCISHU
CJNE A,#20,JIXU

;WUSHIMSCISHUA
;A20JIXU

MOV WUSHIMSCISHU,#0
INC

MIAO

JIXU: POP

ACC

MOV TH0,#3CH

;WUSHIMSCISHU20
;MIAO1
;A
;8TH03CH

MOV TL0,#0B0H

;8TL0B0H

RETI

;-----------------------------------------------DELAY:MOV R0, #25

;R0

153

D2:MOV R1, #25


D1:DJNZ R1, D1
DJNZ R0, D2
RET

;R1

tyw

;R110D1
;R010D2
;

;----------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H

;56789

END

8.5.3

DISPLAY

CPU

;----------------P3.2-------INT00:MOV P1,YOUZHUAN
WAIT0:CALL DISPLAY
JNB P3.2,WAIT0

;
;
;P3.2
;WAIT0

RETI

;----------------P3.3-------INT11:MOV P1,ZUOZHUAN
WAIT1:CALL DISPLAY
JNB P3.3,WAIT1

;
;
;P3.3
;WAIT1

RETI

CPU
INT0 CPU INT0
CPU 1
T0
CPU

154

tyw

T0 8.3.4
IP

MOV IP,#02H

; T0

CPU
CPU

MIAO
MIAO

;----------------P3.2-------INT0:MOV P1,YOUZHUAN
WAIT0:CALL CHUFA
CALL DISPLAY
JNB P3.2,WAIT0

;
;
;
;P3.2
;WAIT0

RETI

;----------------P3.3-------INT1:MOV P1,ZUOZHUAN
WAIT1:CALL CHUFA
CALL DISPLAY
JNB P3.3,WAIT1

;
;
;
;P3.3
;WAIT1

RETI

8.5.4
2006

10

8-15
155

tyw
9
8
7
6
5
4
3
2
1

+5

+5

R18

+5

10K

9
K1

C3
10uF

R1
10K

28
27
26
25
24
23
22
21

8550

R10 4.7K
R11
R12
R13
R14
R15
R16
R17

Q1

Q2

Q3

Q4 8550

Q5

Q6

12

COM4

11

COM1 COM2 COM3


10

Y1
12M
19

COM4

C2
30pF

COM1 COM2 COM3

12

18

a b c d e f g dp U3

470

11

C1
30pF

R2
R3
R4
R5
R6
R7
R8
R9

10

31
40
20

P0.0
P0.1
P0.2
EA
P0.3
VCC P0.4
GND P0.5
P0.6
U1
X2
P0.7
89S51
P2.7
P2.6
X1
P2.5
P2.4
P1.4
P2.3
P2.2
RST
P2.1
P2.0
P3.5

a b c d e f g dp U2
39
38
37
36
35
34
33
32

+5

1
2
3
4
5
6
7
8

15

1
2
3
4
5
6
7
8

+5

Q7

Q8
8550
+5

8-15

2
8.5.2
T0 INT0(P3.2)
INT1(P3.3)
8-15 P3.5 P3.5
T1
TL1
T1 TH1TL1 FFH
P3.5 T1

8-16

T0 T1 INT0 INT1
INT0 INT1

INT0 INT1

156

tyw

8-16

3
QIANJIN

EQU

31H

;RAM31HQIANJIN

ZUOZHUAN

EQU

32H

;RAM32HZUOZHUAN

YOUZHUAN

EQU

33H

;RAM33HYOUZHUAN

TINGZHI

EQU

34H

MIAO

EQU

35H

;RAM35HMIAO

MIAOSHIWEI EQU

36H

;RAM36HMIAOSHIWEI,

MIAOGEWEI

37H

;RAM37HMIAOGEWEI,

WUSHIMSCISHU

EQU

EQU

38H

;RAM34HTINGZHI

;38HWUSHIMSCISHU50

157

TIEPIANSHULIANG EQU 39H;39HTEIPIANSHULIANG,


tyw
ORG 0000H
SJMP ANJIAN

;
;ANJIAN

ORG 0003H

;P3.2

AJMP INT0

;INT0

ORG

;T0

000BH

AJMP TIMER0

;TIMER0

ORG 0013H

;P3.3

AJMP INT1

;INT1

ORG 002BH

;T1

AJMP TIMER1

;TIMER1

ORG 0030H

;30H

ANJIAN:JB P1.4,ANJIAN

;P1.4K1ANJIAN

;-----------------------------------------------------START:MOV SP, #60H

;60H

MOV TINGZHI,#11111111B;P1
MOV QIANJIN,#11110101B;8-10
MOV ZUOZHUAN,#11110111B;
MOV YOUZHUAN,#11111101B;
MOV P1,TINGZHI

SETB P3.0

;293ENA

SETB P3.1

;293ENB

MOV MIAO,#0

;0

MOV TIEPIANSHULIANG,#0;0
MOV WUSHIMSCISHU,#0 ;500
MOV DPTR,#TAB

;DPTRDPTRTAB

MOV TMOD,#01010001B ;T01T11


MOV TH0,#3CH

;3CH

MOV TL0,#0B0H

;B0H

MOV TH1,#0FFH

;FFH

MOV TL1,#0FFH

;FFH

SETB ET0

;T0T0

SETB ET1

;T1T1

SETB TR0

;T0

SETB TR1

;T1

SETB EX0

;P3.2

SETB IT0

;P3.2

SETB EX1

;P3.3

SETB IT1

;P3.3

MOV IP,#0AH

;T0T1

SETB EA

;---------------------------------------------------MAIN:MOV P1,QIANJIN
CALL CHUFA

;P1293
;

158

CALL DISPLAY;
SJMP MAIN

tyw

;MAIN

;------------------------------PROCESS-------------CHUFA:MOV A, MIAO
MOV B, #10
DIV AB

;MIAOA
;B10
;ABAB

MOV MIAOSHIWEI, A

;MIAOSHIWEI

MOV MIAOGEWEI , B
RET

;MIAOGEWEI
;

;------------------------------DISPLAY------------------DISPLAY:MOV A, MIAOSHIWEI

;MIAOSHIWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.7

;P2.70

CALL DELAY

SETB P2.7

;P2.71

MOV A, MIAOGEWEI

;MIAOGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.6

;P2.60

CALL DELAY

SETB P2.6

;P2.61

MOV A,TIEPIANSHULIANG;A10
MOVC A ,@A+DPTR

MOV P0, A

;P0

CLR P2.0

;P2.00

CALL DELAY

SETB P2.0

;P2.01

RET
;----------------P3.2-------INT0:MOV P1,YOUZHUAN
WAIT0:CALL CHUFA
CALL DISPLAY
JNB P3.2,WAIT0

;
;
;
;P3.2
;WAIT0

RETI

;----------------P3.3-------INT1:MOV P1,ZUOZHUAN
WAIT1:CALL CHUFA
CALL DISPLAY
JNB P3.3,WAIT1

;
;
;
;P3.3
;WAIT1

RETI

;--------------------T0----------------------------

159

TIMER0:PUSH A
INC

;A

WUSHIMSCISHU

;WUSHIMSCISHU1

MOV A, WUSHIMSCISHU
CJNE A,#20,JIXU

;WUSHIMSCISHUA
;A20JIXU

MOV WUSHIMSCISHU,#0
INC
JIXU: POP

MIAO
A

tyw

;WUSHIMSCISHU20
;MIAO1
;A

MOV TH0,#3CH

;8TH03CH

MOV TL0,#0B0H

;8TL0B0H

RETI

;--------------------T1---------------------------TIMER1:INC TIEPIANSHULIANG ;1
MOV TH1,#0FFH

;FFH

MOV TL1,#0FFH

;FFH

RETI

;-----------------------------------------------DELAY:MOV R0, #25


D2:MOV R1, #25
D1:DJNZ R1, D1
DJNZ R0, D2
RET

;R0
;R1
;R110D1
;R010D2
;

;----------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H
END

;56789
;

4
T1

T1 P3.5 T1
1 TH1 TL1 FFH P3.5
T1 CPU
T1 T0 CPU TIMER1
TIEPIANSHULIANG 1
1 T1

T1 T1
P3.5

8.5.5

8-17 ABC D
160

P3.2
tyw
ABC D
P3.2
P1.0P1.1P1.2 P1.3

8-17

8.6

1
P3.2

161

tyw

51

9.1
51

9.1.1
9-1 9-2

9-1

9-2

162

tyw

9.1.2

0 8
1
CPU
0 1

ASCII
120 /s 10 1200

MARK1

CPU
51

9.1.3

,51

9.2

8 8 8

163

tyw

9.351
51 P3.1 P3.0P3.1 P3.0

SCONTMODTH1
TL1TCONPCON
IE

9.3.1 SCON

SCON 98H 8
SETBCLR MOV


9.1 SCON
D7

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0SM1 9.2
4

164

tyw

9.2
SM0SM1

Fosc/12

10 UART

11 UART

Fosc/64 fosc/32

1 0
0 8 8 TXD
RXD

MOV SBUFA TXD RXD


SBUF 8 TI=1TI

RI=0 SCON REN 1


TXD RXD A RI
RI

2 1
1 10 1 08
1 10 1 2
52

MOV SBUFAA TXD


8 TI=1TI

REN=1 RXD 1 0
RB8 RI
CPU RI

3 2
2 11 1 09 1
11
9 9

9
0 1 1
165

tyw
2 Fosc/64 fosc/32
PCON
SMOD
1 fosc/32 0 Fosc/64

TXD 11 9 SCON
TB8 /
CPU SBUF
TI

REN=1 RXD 1 0
0 9 RI=0 SM2=0
9 RB88 RI
RI
RXD 1 0

4 3
3 2 11 2
2
2
SM2 0 1REN 1
TB8 9 RB8 9 TI
TI=1 SBUF
SBUF RI RI=1
SBUF SBUF 99H

9.3.2 T1

1 3
T1
TH1TL1 0FDH 3
11.0592 3.255us
11000000/3.255=307219.66 SMOD=0 9600
1 2 8

166

tyw

9.3.3

9600
6
1. 1 2 MOV TMOD,#20H
2 1
MOV TL1,#0fdH
MOV TH1,#0fdH
3 1 (TCON)SETB TR1
4
MOV SCON,#50H
5. SMOD MOV PCON,#00H
6. IE
SETB ES
SETB EA

9.4 51
51 CPU
TI RI CPU

CPU

9.4.1

PO LED
PO LED 9-3

1
RP1
4.7k

+5
40

40

31

+5

31

RP1
4.7k

12
13

Y1
C2
12M
30pF

C1
30pF

Y1
12M
C1
30pF

9-3
167

9
8
7
6
5
4
3
2
1

EA
X1
GND

12
13

VCC

VCC

EA

P3.2
P3.3

R1
10K

19
20

R1
10K

89S51

P0.0
RST
P0.1
U1
P0.2
89S51 P0.3
P0.4
P0.5
P0.6
P3.2
P0.7
P3.3
X2

D1

RST

C3
10uF
9

18

D3

C3
10uF
9

X2

D2

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

18

D4

D5

39
38
37
36
35
34
33
32

GND
X1

D6

R2 470
R3
R4
R5
R6
R7
R8
R9

20
19

D7

1
2
3
4
5
6
7
8
9

U1
+5
D8

C2
30pF

39
38
37
36
35
34
33
32

R2
R3
R4
R5
R6
R7
R8
R9

+5

470
D7
D5
D3
D1

D8
D6
D4
D2

tyw

1
TI 1 SBUF
SBUF RI 1 SBUF
9-4

9-4

3\ch9\tongxin_two.flv
;LED
ORG 0000H
SJMP START ;ORG 0023H
ORG 0030H
START:
MOV TMOD,#20H ;12
MOV TH1,#0FDH ;80FDH9600
MOV TL1,#0FDH ;80FDH9600
SETB TR1

;1

MOV SCON,#50H ;110REN=1


MOV PCON,#00H ;SMOD=0
MOV DPTR,#TAB ;
MOV R0,#0

SETB TI

;TI1

MAIN:
JBC TI,SEND

;TI1SENDTI

SJMP MAIN

;
168

tyw

SEND:
MOV A,R0

;A

MOVC A,@A+DPTR;A
MOV SBUF,A

MOV P0,A

;LED

CALL DELAY

;LED

INC R0

;1

CJNE R0,#8,MAIN;LOOP,
MOV R0,#0

;1

SJMP MAIN

DELAY:

MOV R1,#255
D1: MOV R2,#200
DJNZ R2,$
DJNZ R1,D1
RET
TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH;
END
;****************************************************************
;P0LED
ORG 0000H
SJMP START
ORG 0030H
START:
MOV TMOD,#20H ;12
MOV TH1,#0FDH ;80FDH9600
MOV TL1,#0FDH ;80FDH9600
SETB TR1

;1

MOV SCON,#50H ;110REN=1


MOV PCON,#00H ;SMOD=0
MAIN:
JBC RI,RCV

;RI1RCV

SJMP MAIN

RCV:
MOV A,SBUF

MOV P0,A

;P0

SJMP MAIN

END

4
SETB TITI
1
TI 1
TI TI 1
T1 1

169

TI 1, TI 1

tyw
MOV SBUF,A

1 JBC TI
1 JBC RI JBC
JBC TI RI 1
1 0
TI RI 0
1
TI RI 0

MOV SBUF ,A MOV A,SBUF,


B MOV SBUF ,B
A SBUF
A MOV SBUF,A
B MOV A,SBUF A MOV B,A A
B

9.4.2
ORG 0023H
ES CPU EA
CPU
9.4.1

LED
ORG 0000H
SJMP MAIN
ORG 0023H

SJMP SERIAL ;SERIAL


ORG 0030H
MAIN:
MOV TMOD,#20H ;12
MOV TH1,#0FDH ;80FDH9600
MOV TL1,#0FDH ;80FDH9600
SETB TR1

;1

MOV SCON,#50H ;110REN=1


MOV PCON,#00H ;SMOD=0
SETB ES

SETB EA

;CPU

MOV DPTR,#TAB ;
MOV R0,#0

;1

SETB TI

;11TI0
170

tyw

LOOP:
SJMP LOOP

SERIAL:
MOV A,R0

;
;A

MOVC A,@A+DPTR;
MOV SBUF,A

MOV P0,A

;LED

CALL DELAY
INC R0

;LED
;1

CJNE R0,#8,RT;RT,
MOV R0,#0

RT: RETI

;RETI

DELAY:

MOV R1,#255
D1: MOV R2,#200
DJNZ R2,$
DJNZ R1,D1
RET
TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
END
P0LED
ORG 0000H
SJMP MAIN
ORG 0023H

SJMP SERIAL ;SERIAL


ORG 0030H
MAIN:
MOV TMOD,#20H ;12
MOV TH1,#0FDH ;80FDH9600
MOV TL1,#0FDH ;80FDH9600
SETB TR1

;1

MOV SCON,#50H ;110REN=1


MOV PCON,#00H ;SMOD=0
SETB ES

SETB EA

;CPU

LOOP:
SJMP LOOP

SERIAL:
CLR RI

MOV A,SBUF

MOV P0,A

;P0

RETI

END

171

tyw
P0 LED
LED
LED LED

LED

9.5
PC
PC -12V+12 V+5 V 0 V
PC
MAX232
9-5
9 COM1 P3.0 P3.1 P3.0
P3.1 COM1
USB
DB1

+5

C4
1uF

U1

R2IN

8
13
T2OUT 7
14
1
3
2
15
+

R2 IN
VCC
R1 IN R2 OUT
T2OUT R1OUT
T1 OUT T2 IN
C1+
T1 IN
C1 C2+
V+
C2 GND
VMAX232CPE

16
9
12
10
11
4
5
6
+

1
6
2 T2OUT
7
3 R2IN
8
4
+ C1
9
1uF
5

C5
0.1u

RXD1
TXD1

P3.0
P3.1
+ C2
1uF

C3
1uF

+5
9-5

9.5.1 PC

HK_2000A
312V
0 P3.2
1 0
1 1
1
9-6
9-7

172

tyw

4.7k

9
8
7
6
5
4
3
2
1

+5

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

+5
a b c d e f g dp U2

+5
31
21
20

P3.0
P3.1

10
11

EA
VCC
GND
P3.0
P3.1

8550

R10 4.7K
R11
R12
R13
R14
R15
R16
R17

28
27
26
25
24
23
22
21

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

Q1

Q2

Q3

Q4
8550

DB1

+5
1
6
2 T2OUT
7
3 R2IN
8
4
+ C1
9
1uF
5

R2IN

C4
1uF

8
13
T2OUT 7
14
1
3
2
15
+

U4
R2 IN
VCC
R1 IN R2 OUT
T2OUT R1OUT
T1 OUT T2 IN
C1+
T1 IN
C1 C2+
V+
C2 GND
VMAX232CPE

16
9
12
10
11
4
5
6

Q5

Q6

12

COM4

11

COM1 COM2 COM3


10

COM4

COM1 COM2 COM3

12

11

U1 P0.0
89S51 P0.1
P0.2
P3.2
P0.3
P0.4
RST
P0.5
P0.6
P0.7

a b c d e f g dp U3

470

R2
R3
R4
R5
R6
R7
R8
R9

10

12

uF

39
38
37
36
35
34
33
32

+5

Q7

Q8
8550
+5

C5
0.1u

RXD1
TXD1

P3.0
P3.1
+ C2
1uF

C3
1uF

+5

9-6

XINLVGEWEI

EQU

31H

;RAM31HXINLVGEWEI

XINLVSHIWEI

EQU

32H

;RAM32HXINLVSHIWEI

XINLVBAIWEI

EQU

33H

;RAM33HXINLVBAIWEI

MIAO

EQU

34H

; RAM34HMIAO

MIAOGEWEI

EQU

35H

;RAM35HMIAOGEWEI

MIAOSHIWEI

EQU

36H

;RAM36HMIAOSHIWEI

XINLVSHU

EQU

37H

;37HXINLVSHU()

ORG 0000H

SJMP START

;START

ORG 0003H

;P3.2

AJMP INT0

;INT0

ORG 000BH

;T0

AJMP TIMER0
ORG 0030H

;TIMER0
;30H

;-----------------------------------------------------START:MOV SP, #60H


MOV P0, #0FFH

;60H
;P0

MOV DPTR,#TAB

;DPTR

MOV 30H,#0

;30H030H50ms

MOV XINLVSHU,#0

;XINLVSHU0

MOV MIAO,#0

;0

MOV TMOD,#21H

;0112
173

MOV SCON,#50H

;1REN=1

MOV PCON,#00H

;SMOD=0

MOV TH0,#4CH

;084CH

MOV TL0,#00H

;0800H

MOV TH1,#0FDH

;1

MOV TL1,#0FDH

;1

SETB TR1

;1

SETB TR0

;T0

SETB ET0

;T0

SETB EX0

;P3.2

SETB IT0

;P3.2

SETB EA

tyw

;---------------------------------------------------MAIN:CALL CHUFA

CALL DISPLAY

SJMP MAIN

;MAIN

;-------------------------CHUFA--------------CHUFA:MOV A, XINLVSHU

;XINLVSHUA

MOV B, #100

;B100

DIV AB

;ABA()B

MOV XINLVBAIWEI, A

;XINLVBAIWEI

MOV A , B

;BA

MOV B, #10

;B10

DIV AB

;ABAB

MOV XINLVSHIWEI, A

;AXINLVSHIWEI

MOV XINLVGEWEI ,B

;BXINLVGEWEI

MOV A, MIAO
MOV B, #10
DIV AB
MOV MIAOSHIWEI, A
MOV MIAOGEWEI, B
RET

;A
;B10
;ABAB
;A()MIAOSHIWEI
;B()MIAOGEWEI
;

;------------------------DISPLAY--------------------DISPLAY:MOV A, MIAOSHIWEI
MOVC A, @A+DPTR

;MIAOSHIWEIA
;

MOV P0, A

;P0

CLR P2.7

;P2.70

CALL DELAY
SETB P2.7

;
;P2.71

MOV A, MIAOGEWEI

;MIAOGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.6

;P2.60

CALL DELAY

174

SETB P2.6

;P2.61
tyw

MOV A, XINLVBAIWEI

;XINLVBAIWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.2

;P2.20

CALL DELAY

SETB P2.2

;P2.21

MOV A, XINLVSHIWEI

;XINLVGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.1

;P2.10

CALL DELAY

SETB P2.1

;P2.11

MOV A, XINLVGEWEI

;XINLVGEWEIA

MOVC A, @A+DPTR

MOV P0, A

;P0

CLR P2.0

;P2.00

CALL DELAY

SETB P2.0

;P2.01

RET
;---------------------------T0----------TIMER0:PUSH A

;A

INC 30H

;30H1

MOV A, 30H

;30HA

CJNE A,#20,FANHUI

;A20FANHUI

MOV 30H,#0

;30H0

INC MIAO

;1

MOV A, MIAO

;A

CJNE A,#60,FANHUI

;60FANHUI

CLR TR0

;(60)T0

CLR EX0

;0

MOV A, XINLVSHU

;A

MOV SBUF,A

;PC

FANHUI:POP A
RETI

;A
;

;---------------------------P3.2-------INT0:INC XINLVSHU

;XINLVSHU1

RETI

;-------------------------------------------------DELAY:MOV R0, #50

;R050

D2:MOV R1, #10

;R110

D1:DJNZ R1, D1

;R110D1

DJNZ R0, D2

;R010D2

RET

175

;--------------------------

tyw

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;TAB01234


DB 92H ,82H ,0F8H,80H ,90H

;56789

END

9-7

9.5.2

9-5 9-8
ENAENBP1.0 P1.1 P1.2 P1.3
9-3
P1
0A 05
00

P1.0
P1.1

2
1
7

IN1
ENA
IN2

OUT1

U1 OUT2
L293N
10
P1.2
9
15
P1.3

IN3
ENB
IN4

OUT3
OUT4

4
5
12
13

+5

VSS
VS

16
8

VDD
VCC

176

3
6
11
14

M
M

tyw

9-8
9-3 L293N
EN AB

IN1IN3

IN2IN4

IN2IN4

IN1IN3

ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1
MOV SCON,#50H
MOV PCON,#00H
LOOP:
JBC RI,RCV
SJMP LOOP
RCV:
MOV A,SBUF
MOV P1,A
SJMP LOOP
END

9-9

177

tyw

9.6

PC PC

PC

9.6.1

A/D
TLC2543ADC0832
PC , PC VBVC

9.6.2
AD590

DS18B20

178

tyw

10
KeilC51

51

51

KEIL C
KEIL

10.1 KeiluVision2
uVision2 IDE Keil software

10-1 Keil

179

tyw

10.1.1 Keil

KeilKeil
http://www.zlgmcu.com/KeilC51/keil_website.asp
Keilhttp://www.keil.comEval 2K
2k
Eval Vision
Full Vision Full Vision

10-2 Keil

keil .txt
setup keil SN
setup setup
10-3

10-3 Keil

180

Next 10-4 Eval Version


tyw
Full Version

10-4

10-5 C Keil

10-5

Next 10-6
Nex

181

tyw

10-6

10.1.2 Keil
Keil uV2

Keil uVision2 Keil


Keil Keil
1
Project

ProjectNewProject
10-7

182

tyw

10-7

10-8

10-8 ATMEL AT89S51


10-9 51
keil
C

STARTUP.A51
keil C 10-10

10-9

2
FileNew
FileSave
main
C
.C

10-10 STARTUP.A51
/************P0.0****************************************/
include <reg51.h>

//,51
183

#define uchar unsigned char

//#defineunsigned charuchar

#define uint unsigned int

//#defineunsigned int

tyw

uint

/********************************************************************/
void delay(unsigned int i)

//

{
unsigned int j;

//

for(;i>0;i--)

//for

for(j=0;j<1000;j++) ;

//for

}
/**********************************************/
void main()

//main

{
while(1)

//while

{
P0=0XFE;
delay(100);
P0=0XFF;
delay(100);

// P0.0=0
//
// P0.0=1
//

}
}

Target1
Source Group 1 10-11
Add File GroupSource Group1 10-12
Add
main.c main.c
Close

10-11

Source Group 1
184

tyw

10-12

Add
Close

uVision IDE Target 1 option for


Target Target 1 10 output
10-13 Create HEX File 16

10-13 Output
185

ty
4
10-14

10-14

0Error(s),0
Warning(s)
10-15 STARTUP.A51 main.c
68 code=68 RAM 9 (data=9)
RAM 0 (xdata=0)led HEX

10-15

10.2 C
51 C
51

C
51 C

C
C

/***************************************************************/
#include <reg51.h>

//

#define uchar unsigned char


#define uint unsigned int
186

/************************************************************/

tyw

uchar Fun1(uchar );

//

int Fun2(uint );

//

/******************************11*******************************/
uchar Fun1(uchar i)

//

{
. ;

//

}
/******************************22******************************/
int Fun2(uint j)

//

{
. ;

//

}
/******************************************************************/
main()
{
1.;

//

2.;
}

#include <reg51.h>

?
#includereg51.h
reg51.h reg51.h 51
P0TMOD

51 C
reg51.h
#include reg51.h

C
C main()
main

uchar Fun1()uchar
Fun1 {}
C

10-16 C main()

main() uchar Fun1(uchar i);


int Fun2(uint j);, main()
C

187

tyw

#include <reg51.h>
uchar Fun1(uchar );
int Fun2(uint j);
/*************************/

main()//main
{

While(1) //
{
1.;
2.;
}
}
/*********11******/
uchar Fun1(uchar i)
{
. ;//
//
}
/
********22*************/
int Fun2(uint j)
{
. ;//
//
}

1(Fun1)

2(Fun2)

.
.
N

10-16

10.3
10.2

max_value

keil

10-1 ANSIC

188

tyw

10-1 ANSIC

auto

break

case

switch

char

const

continue

default

switch

do

do.while

double

else

if..else

enum

extern

float

for

for

goto

goto

if

if..else

int

long

register

cpu

return

short

signed

sizeof

static

struct

swicth

switch

typeof

union

unsigned

void

volatile

while

while do.while

C51 10-2

189

tyw

10-2 C51

bit

sbit

sfr

sfr16

16

data

51

bdata

51

idata

51

pdata

51

xdata

51

code

51

interrupt

reentrant

using

CPU

10.4

51 RAM 128

51 C51

190

tyw

10.4.1 C51
C C

10-17 C

10-17 C

10.4.2

191

ty
1
100x0a 0x0A C
10C 0x
P0
LED
3-2
#include <reg51.h>
#define LED7

0X7F

// LED70X7F

void main()
{ wile(1)
{
P0=LED7;

C //

//P0=0X7F;

}
}

keil led.hex
LED #define LED7 0X7F
LED7 LED7 0X7F define C
P0=0X7F P0.7 LED

LED7
7 LED 7 P0=LED7
LED7
0 LED #define LED7 0X7F #define
LED7 0xfe LED7 0xfe
2

hourminutesec 3 3
20h21h22h

hour

equ

20h

minute

equ

21h

sec

equ

22h

C

char i;int j; i j
1
2
i=20

192

tyw

10.4.3

C 3
1 09 237-568
20 0
2
1
0
07 0224 224 28 +28 +48 =148-024
-24-20
30X0x 09A
1
0
F af 0X2A 216 +1016 =42-0X23 -23
-35
2

i=10
10 Keil C int i

8
0

8
0

int long unsigned

short long signed


unsigned KEIL C short short int long
KEIL C 4 int
2
2 signed unsigned signed
unsigned int
2
065535 unsigned
long int 4 065535
10-3
10-3

/byte

/bit

16

int

-32768~+32767

16

short

-32768~+32767

32

long

-2147483648~+2147483647

16

unsigned int

0~65535

16

unsigned short

0~65535

32

unsigned long

0~4294967295

193

tyw

int i,j;

/*ij*/

long a,b;

/*ab*/

unsigned int x;
unsigned long int y;

/*x*/
/*y*/

10.4.4

charchar i,j; i,j


i=a; j=b;
ASCII
ASCII char c=a;
c a a ASCII 97 c
c 97int i=97;
i 16 c 8 i
255 C

51 8 16 8
8 char
ASCII 1

unsigned
-128+127 unsigned 0255
char a,b;
/*ab-128+127*/
unsigned char x;
/*x0255*/
char int unsigned
PC

194

tyw

10.4.5

adc0832

float float i, i
4 32

0.0019.999 19999
1000

10.4.6Keil
C 51 Keil

1
bit bit startmark,
startmark01
51 0x200x2F 16
8 128 0x000x7F

Startmark bit 00hstartmark equ 00h

startmark
20h 0

2 sfr
<reg51.h>reg51.h
C
10-18
sfr P0=0x80,sfr16 DPTR=0x82
sfr 8 sfr16 16

195

tyw

10-18 reg51.h

3 sbit
P0.0C P0.0
sbit P0_0=P0^0 P0.0
P0_0 P0.0 P0.0
led
/*LED*/
#include <reg51.h>
//P0.0

sbit P0_0=P0^0;

void delay(unsigned int i) //


{
unsigned int j;

//

for(;i>0;i--)

//for

for(j=0;j<1000;j++) ;

//for

}
void main()
{
while(1)
{
P0_0=P0_0;
delay(100);

//
//

}
}

10.4.7

RAM
FLASH ROM

ROM

196

ty
1
FLASH ROM
MOVC
C

ROM

C
;
ORG 0000H

SJMP START

;START

ORG 0030H

;30H

;*********************************************
START:MOV SP,#60H

;60H

MOV P0,#0FFH

;P0FFH255

MOV R2,#00H

;R20

;----------------------------------------------------------MAIN:MOV A,R2
MOV DPTR,#TAB

;R2A
;DPTR#TAB

MOVC A,@A+DPTR ;ADPTR


;A
MOV P0,A

;P0

INC R2

;R21

CALL DELAY

;DELAY

CJNE R2,#8,MAIN ;R28MAIN


MOV R2,#00H

;R20

SJMP MAIN

;MAIN

;----------------------------------------------------DELAY:MOV R0,#250

;R0

D2:MOV R1,#250

;R1

D1:DJNZ R1,D1

;R110D1

DJNZ R0,D2
RET

;R010D2
;

;*************************************************
TAB: DB 11111110B 11111101B,11111011B,11110111B
DB 11101111B,11011111B,10111111B,01111111B
END

TAB
P0.7P0.0 LED

movc a,@a+dptr TAB


ROM C

197

tyw

/*C*/
#include <reg51.h>
void delay(unsigned int i); //

unsigned char code dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


//flash rom
void main(void)
{ unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{ P0=dis[i];

//flash romP0

delay(10);

//

}
}
}
void delay(unsigned int i)
{
unsigned int j;
for(;i!=0;i--)

//forforfor

for(j=3000;j!=0;j--) // for
;
}

dis[]
TAB
unsigned char
code KEIL
code
tab 10-19
dis[] C:0x0045[]
0x0045 Address C:0x0045
8 0XFE
0XFD

10-19

198

code

tyw

dis[0]=0x55;

2
51
128 52 256 52
0x800xff 128 RAM
SFR 128 0x200x2F

3
c51 data
idata
bdata
/*data*/
#include <reg51.h>
void delay(unsigned int i);
unsigned char data dis[118];
void main(void)
{ unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P0=dis[i];
delay(10);
}
}
}

10-20 118
118 118
128 Output Window 128
128
118 128
118119
129

10-20

bdata bdata
199

0x200x2F 16
tyw
1617
/*bdata*/
#include <reg51.h>
void delay(unsigned int i);
unsigned char bdata dis[16]={ };//16
void main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P0=dis[i];
delay(10);
}
}
}

C51
pdata xdata
pdata 256 P2
P0 8
256
C
unsigned char pdata a;

a=0x01
xdata 64KB
unsigned int xdata i;

10-4 KEIL C51

10-4

KEIL C51

data

128

bdata

16 0x200x2f

idata

256 128

pdata

256 MOVX @Ri

xdata

64K MOVC

code

ROM 64K MOVC @ A+DPTR

200

@ DPTR

tyw

10.4.8 typedef

typedef
a,b,
int a,b;
int int integer
typedef
typedef int INTEGER
INTEGER int

INTEGER a,b;

int a,b;
typedef
typedef

typedef tupedef

#define typedef typedef

201

tyw

11

11.1
C

sizeof

11.1.1
: C ===
=
mov

C
x=10;
/ 10 */
x=y=12; / 12 y x*/

202

tyw
== ==
= =

11.1.2

+
-
*
/
%
C

10/3
3 1
10%3 1

1 2
a+b/(x+y)C

-*/%

11.1.3
++--

++
--
1 1 ++ii++- -jj- -++i i++
i 1++ i 1
++i- -i i+1 i-1 i i++ i- -
i i+1 i-1
printf

printf C
/**/
#include <reg51.h>
#include <stdio.h>

//printf
203

tyw

#define uint unsigned int


main()
{ uint x,y,z;
/**************************************************/
SCON=0x50;

//1,

TMOD=0x20;

//128-bit

PCON=0x00;

//

TL1=0xfd;
TH1=0xfd;

//9600

TI=1;

//TI 1,

TR1=1;

// T1

/************************************************************/
x=8;
y=8;
z=++x;
printf("\n %d %d %d",y,z,x); //8 9 9%d-
/****************************************************************/
x=8;
y=8;
z=x++;
printf("\n %d %d %d",y,z,x);//8 8 9
/********************************************************************/
x=8;
y=8;
z=--x;
printf("\n %d %d %d",y,z,x);//8 7 7
/*******************************************************************/
x=8;
y=8;
z=x--;
printf("\n %d %d %d",y,z,x);//8 8 7
/*****************************************************************/
while(1);

//

C printf()
TMOD=0x20 MOV
TMOD,#20H printf()<stdio.h>
C

204

tyw

11.1.4

ifwhileif while

6
>

<

> =

<=

= =

! =

4 4
2

1 2
x>yx+y>z
0 1 0
1
/**/
#include <reg51.h>
#include <stdio.h>
#define uint unsigned int
main()
{ uint x,y,z;
/****************************************************/
SCON=0x50;

//1,

TMOD=0x20;

//128-bit

PCON=0x00;

//

TL1=0xfd;
TH1=0xfd;

//9600

TI=1;

//TI 1,

TR1=1;

// T1

/**************************************************************/
x=8;
y=9;
z=x>y;
printf(" %d",z); // 0
/***************************************************************/
z=x<y;
printf(" %d",z); //1
/*************************************************************/
z=x>=y;
printf(" %d",z); //0
/***************************************************************/
205

tyw

z=x<=y;
printf(" %d",z); //1

/************************************************************************
******************/
z=x==y;
printf(" %d",z); //0
/************************************************************************
******************/
z=x!=y;
printf(" %d",z); //1
/************************************************************************
******************/
while(1);
}

x+y>z,x+y>z

11.1.5

||
&&

1 && 2
1 || 2

1 0
2 1
1 2 0

1 1 2 0

206

&&||tyw
/**/
#include <reg51.h>
#include <stdio.h>
#define uint unsigned int
main()
{ uint x,y,z;
/**************************************************/
SCON=0x50;

//1,

TMOD=0x20;

//128-bit

PCON=0x00;

//

TL1=0xfd;
TH1=0xfd;

//9600

TI=1;

//TI 1,

TR1=1;

// T1

/***********************************************************/
x=8;
y=9;
z=x||y;
printf(" %d",z);//1
/***********************************************************/
x=8;
y=0;
z=x||y;
printf(" %d",z);//1
/***********************************************************/
x=0;
y=9;
z=x||y;
printf(" %d",z);//1
/***********************************************************/
x=0;
y=0;
z=x||y;
printf(" %d",z);//0
/************************************************************/
x=8;
y=9;
z=x&&y;
printf(" %d",z);//1
/***********************************************************/
x=8;
y=0;
z=x&&y;

207

tyw

printf(" %d",z);//0
/***********************************************************/
x=0;
y=9;
z=x&&y;
printf(" %d",z);//0
/***********************************************************/
x=8;
y=0;
z=!x;
printf(" %d",z);//0
/***********************************************************/
x=8;
y=0;
z=!y;
printf(" %d",z);//1
/***********************************************************/
while(1);

//

11.1.6
SETB CLR C
C
C 6

P1=P1|0X01
P1.0 1P1=P1&0XFE P1.0 0

<<>>&|
11-1
11-1
x

x&y

x|y

x^y

1 2

a=0x55(01010101),b=0x0f00001111
a&&b
1
a&b
00000101

208

a||b
a|b
!a
a
a^b
a<<2

1
tyw
01011111
0
10101010
01011010
010101000

1
2&
&& a b a=0x4b
b=0xc8 a&&b 1 a&b 0x48
&& 0 1&

3^ 1
0 0101 1100 1001.
4<<>>0

11.1.7
=
+=
>>=
-=
&=
*=
|=
/=
^=
%=
=
<<=


i+=5; i 5 I j<<=1; j
j

11.1.8
C

12
0 1
0 2
209

max=(a>b)?a:b max
tyw
a>b
a maxa>b a b b
max

11.1.9
C C C

101
101
101
101
101
C
*
&

=*
=&

11.1.10
c

(float) a
a
(int) x+y x+y
(int) x+y
xy

(int) x x float int


x x float
x=3.6i=(int)x x 3.6 i 3

210

tyw

char
int
unsigned
float
float
char int
int float
11-2
11-2

( )

- > .

++

- -

&

sizeof

/ %
+

<<

>>

>=

>

<=

<

= =

!=

&

&&

8
9

10
11

211

12
13

14

15

op=

tyw

11.2C51

11.2.1

11.2.2

212

if if swith/case
tyw

1 if
if
if
if
if()

11-1 if 1

: if-else
if()
1
else
2

1 2

11-2 if 2

:if-else-if
if
if-else-if

if(1)
1
else if(2)
2

213

tyw

else if(3)
3

else if(m)
m
else

if
n if-else-if 11-3

11-3 if 3
/*if*/
/*LED*/
/*P1.4P1.5P1.6P1.74P08LED*/
#include <reg51.h>
int main(void)

===

{
while(1)

//while(1)

/******&******************/
{
if((P1&0X10)==0)
P0=0XFE;

//P1.4
//P1.0

else if((P1&0X20)==0) //P1.5


P0=0XFD;

//P1.1

else if((P1&0X40)==0) //P1.6


P0=0XFB;

//P1.2

else if((P1&0X80)==0) //P1.7


P0=0XF7;
else

//P1.3
//P0=0XFF;

214

P0=0XFF;

//P00XFF818LED

tyw

}
}

2 switch
switch
switch()
{
case1: 1;
case2: 2;
-----------------------casen: n;
default
: n+1;
}


case case default

case case
break break switch
switch(){
case 11Break;
case 22Break;
case 33Break;
-----------------------case nnBreak;
default
: n+1;
}

case

switch LED P0

\ch11\led_horse.flv
/*switch*/
#include <reg51.h>
#define uchar unsigned char //uchar unsigned char
#define uint unsigned int

//uint unsigned int

/***************************************************/
void DelayMs(uint i)
{
uint j;
215

for (;i!=0;i--)

//for

tyw

{
for (j=100;j!=0;j--);

//for

}
}
/********************************************************************
iBreak

*********************************************************************/
void Ledlight(uchar i)
{
switch(i)
{
case 0:P0=0x01; break;

//LEDP0.0

case 1:P0=0x02; break;

//LEDP0.1

case 2:P0=0x04; break;

//LEDP0.2

case 3:P0=0x08; break;

//LEDP0.3

case 4:P0=0x10; break;

//LEDP0.4

case 5:P0=0x20; break;

//LEDP0.5

case 6:P0=0x40; break;

//LEDP0.6

case 7:P0=0x80; break;

//LEDP0.7

default:break;

//

}
}
int main(void)
{
uchar i;

//255

while(1)

//while

{
for(i=0;i<8;i++)

//fori07

{
Ledlight(i);

//

DelayMs(100);

//

}
}
}

DelayMs main(void) i

for C for
for

216

11.2.3

tyw

C51

CPU

1 goto goto
goto , goto goto
:
goto

goto goto if
,
goto
goto goto
goto

goto goto ,

2 while
while
while()

217

tyw

11-4 while

while while
0
0
while While {}

while(1) P0=0X00;
1 0
P0=0X00

char i, j;
i=3;
j=5
while(j>i)
{
P0=0X00;
j=j-1;
}

i j 3 5
j>i j>i
j 1j 3 j>i

\ch11\led_while.flv
/*while0*/
/*LED*/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
/************************************************************/

218

tyw

void DelayMs(uint i)
{
uint j;
for (;i!=0;i--)
{
for (j=100;j!=0;j--);
}
}
void main(void)
{

uchar i=10;

//iLED

P0=0X55;

//P0LED

while(i--)

//i

{
P0=P0;

//P0

DelayMs(100);

//DelayMs()

if (i==0)

//LED if i

i=10;

// i 10

3 do-while
do-while :
do

while()
while
do-while
11-5

11-5 do while

while do {} while
do {} while
/*do {} while0
LED*/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
/************************************************************/
void DelayMs(uint i)
219

tyw

{
uint j;
for (;i!=0;i--)
{
for (j=100;j!=0;j--);
}
}
void main(void)
{

uchar i=10;

//iLED

P0=0X55;

//P0LED

//i
do
{
P0=P0;

//P0

DelayMs(100);

//DelayMs()

if (i==0)

//LED if i

i=10;

// i 10

} while(i--); //

4 for
C for :
for(123)
for
11
220
3
05
33
42
5for
11-6

220

tyw

for

11-6 for

for
for()
,

:
for(i=1; i<=100; i++) sum=sum+i;
i 1, i 100, sum=sum+i;, i
1, , i>100 , sum=sum+i ;
while
i=1;
whilei<=100
{
sum=sum+i;
i++;
}
for while
1
while2
{
3
}

for
1
2()
3(),,

1
221

1
tyw
2
2
3
3
for while
/**/
#include <reg51.h>
#define uchar unsigned char
#define uint

unsigned int

/**********************************************************/
void delay500(void)
{
uint

i;

for(i=3000;i>0;i--)//i3000i>0i--
;
}
/************************************************************/
main()
{
uchar j;
P1=0X00;
while(1)
{
for(j=200;j>0;j--)
{
P1=P1;
delay500();

//1KHz
//500us

}
for(j=200;j>0;j--)
{
P1=P1;
delay500();

//500Hz
//1ms

delay500();
}
}
}

main
j P0 0x00
while 1 while for
1K 500HZ CPU
P1 P1=P1 P1
CPU delay500
for CPU i 0

222

tyw
for

goto while do-while


for while do-while
while do-while for
1

5 break continue
1break
break break switch ,
switch switch break switch
,
break do-whileforwhile ,
, break if
11-7
while(1)
{
if(2) break;

}
break

{}

:1.break if-else
2., break

2continue
continue continue
forwhiledo-while , if ,
11-8
while(1)
{
if(2)

continue

continue;

while
1

223

tyw

break

while

11-7 break

11-8 continue

224

tyw

12
C51


(char)(int)(float)C
C51

12.1

12.1.1

225

tyw

[]

unsigned char a[10];


aunsigned char
[ ]

a 10

unsigned int i,j,k;


unsigned char a[10];
i=a[0];j=a[1];k=a[2]; 1
[n]
n 0 a[10] 10 0
9
4 4
4 i i=a[3]

unsigned char dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


dis
{ }
12-1

226

9
8
7
6
5
4
3
2
1

EA

R2
R3
R4
R5
R6
R7
R8
R9

+5

470

D8
D7
D5
D3

D6
D4
D2

D1

Y1
12M
C1
30pF

19
20

18

39
38
37
36
35
34
33
32

X1
GND

P0.0
RST U1 P0.1
P0.2
89S51 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7
X2

5
6
7
8

31

40
9

10K

VCC

C3
10uF
R1

tyw

4.7k

+5

C2
30pF

12-1

\ch12\led_horse.flv
/*P08LED
disP0
*/
#include <reg51.h>
void delay(unsigned int i); //delay()delay()
unsigned char dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{unsigned char i;
while(1){
for(i=0;i<8;i++)
{P0=dis[i];

for i
1 P0=dis[i];

P0

delay(10);
}
}
}
void delay(unsigned int i)
{
unsigned int j;

for(;i!=0;i--)
for(j=3000;j!=0;j--);
}

12.1.2
x,y

227

tyw

[] []

unsigned char b[3][3];


unsigned char b

3 3

int display[2][3]={{0,1,2},{3,4,5}};

int display[2][3]={ 0,1,2,3,4,5};

{ }

int display[2][3]={{1},{3}};

:
int display[2][3]={{0,1,2},{3,4,5}}; 2 2 i
i=display[1][1] i=display[2][2][] 0

228

tyw
12-1
\ch12\shuzu_twoled.flv
/*disP0
P0.0P0.7LED*/
#include <reg51.h>
void delay(unsigned int ); //
/*****************************************************************************/
//5840
*****************************************************************************/
unsigned char dis[5][8]=

40

{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}

128 40

,{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}

,{0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff}
,{0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}
,{0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f}
while

};

/***********************************************************************/
while
void main(void)
{}

{unsigned char i;
unsigned char j;
while(1)
{
P0=dis[0][0]; //P0
delay(10);

//

P0=dis[4][7]; //P0
delay(10);

//

}
}
/*********************************************************************/
void delay(unsigned int i)
{

for

unsigned int j;

for(;i!=0;i--)

for(j=3000;j!=0;j--)
;
}

/*********************************************************************/

12-1
LED P0

\ch12\led_erweishuzu.flv
#include <reg51.h>

229

void delay(unsigned int ); //

tyw

/*****************************************************************************/
5840
*****************************************************************************/
unsigned char dis[5][8]=
{
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
,{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}
,{0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff}
,{0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}
,{0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f}
};
/***********************************************************************/
void main(void)
for i j

{unsigned char i;

dis

unsigned char j;

for for

while(1)

{
for(j=0;j<5;j++)
for(i=0;i<8;i++)

P0=dis[j][i]; //
delay(10);
}
}
}
/*********************************************************************/
void delay(unsigned int i)
{
unsigned int j;
for(;i!=0;i--)
for(j=3000;j!=0;j--);
}
/*********************************************************************/

40 LED
unsigned char dis[5][8] 5 8
{}
P0=dis[j][i]; for
i j dis
P0 P0 led

230

tyw

12.2

12.2.1

12-2 char a
b p 12-2 a b p
a 0X05 0XAA b
0X07 0X55 p 0X09
0X05

12-2

*
*

char *p;
char a=100;
p=a;
//
a 100
p a 100 a
a p a
231

p
tyw
&
*
( a 0X05 )
char *p;
char b;
char a=0XAA;
p=&a;
b=*p;
p 0X05b 0XAA
p a b a 0XAA
a 0X05 a 0X05a
0X05 0XAA p=&a a
p 0X05 P b=*p b
0XAA b=*p p
0X05 b 0X05
0XAA b

* char

*p *p

*p p
p

12.2.2 LED

P0
12-3
4.7k

10K

18

39
38
37
36
35
34
33
32

9
8
7
6
5
4
3
2
1

EA

X2

5
6
7
8

P0.0
RST U1 P0.1
P0.2
89S51 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

R2
R3
R4
R5
R6
R7
R8
R9

Y1
12M
C1
30pF

C2
30pF

12-3
// LED
232

+5

470

X1
GND

R1

19
20

C3
10uF

VCC

40

31

+5

D8
D7
D5
D3
D1

D6
D4
D2

tyw

#include <reg51.h>
void delay(unsigned int);//

/*******************************************************************/
unsigned char dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{unsigned char i,*p; //ip
while(1)
{
p=&dis[0];

//0xfep

for(i=0;i<8;i++) // 8
{
P0=*p;

//P0

p++;

//1

delay(10);

//

}
}
}
/*********************************************************************/
void delay(unsigned int i)
{
unsigned int j;
for(;i!=0;i--)
for(j=3000;j!=0;j--)
;
}

dis[]
P0
*p while
p=&dis[0];dis[0]&dis[0]
for *p
p++
p=&dis[0]; p=dis;p

12.2.3
09
12-4

233

31

9
8
7
6
5
4
3
2
1

EA

39
38
37
36
35
34
33
32

R2
R3
R4
R5
R6
R7
R8
R9

1
2
3
4
5
6
7
8

DS1
DPY
a
a
b
c f
b
g
d
e e
c
d
f
dp
g
dp

X1
GND

X2

5
6
7
8

P0.0
RST U1 P0.1
P0.2
89S51 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

COM

40
9

10K

VCC

C3
10uF
R1

tyw

4.7k

+5

C1
30pF

+5

19
20

18

Y1
12M

C2
30pF

12-4

\ch12\smg_shuzu.flv
#include <reg51.h>
void delay(unsigned int); //
/******************************************************************************
0123456789
******************************************************************************/
unsigned char data dis[]={0xc0,0xf9,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void main(void)
{unsigned char i,*p;
while(1)
{
p=dis;

//p

for(i=0;i<9;i++)
{
P0=*p++;

//1

P2=0xfe;

//P2.0

delay(10);

//

}
}
}
/*********************************************************************/
void delay(unsigned int i)
{
unsigned int j;
for(;i!=0;i--)
for(j=3000;j!=0;j--)
;
}

09
dis[] 09
234

P0
tyw
P0=*p++;
P0=*p++; P0=*p; p++;

12.2.4
\ch12\led_erweishuzu.flv
#include <reg51.h>
void delay(unsigned int ); //
//*******40***********
unsigned char dis[5][8]=
{
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
,{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}
,{0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff}
,{0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}
,{0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f}
};
/***********************************************************************/
void main(void)
{unsigned char i;
unsigned char j;
unsigned char *p;//
while(1)
{ p=&dis[0][0];

//0

for(j=0;j<5;j++) //5
for(i=0;i<8;i++) //8
{
P0=*p++;

//1

delay(10);

//

}
}
}
/********************************************************************/
void delay(unsigned int i)
{
unsigned int j;
for(;i!=0;i--)
for(j=3000;j!=0;j--);
}
/********************************************************************/

p=&dis[0][0];
&
235

&dis[0][0] dis
tyw

12.3

12.3.1

charint

struct
{}

struct student

int num;

char name[5];
;

char sex;
int age;
float score;

};

student

struct student
{

int num;

char name[5];
stu
char sex;

int age;

236

float score;
};

struct student stu;

struct student
{
int num;
char name[5];
char sex;
int age;
float score;
}stu;

struct

{
int num;
char name[5];
char sex;
int age;
float score;
}stu

tyw

stu

12.3.2
12-5
#include < reg51.h >
#include < intrins.h > // _nop_()
#include < stdio.h >

// printf()

#define uchar unsigned char


#define uint

unsigned int

void delay(int ms)

//

{
uchar i;
while(ms--)

//while(ms--)ms10

{
for(i=0;i<250;i++) //for250
{
_nop_();

//nop

_nop_();
_nop_();
_nop_();
}
237

tyw

}
}
/***********************************/
struct student //structstudent
{
int num;

//num

char name[5];//name[5]
char sex;

//sex

int age;

//age

float score; //score


}stu[3]={
//stu[3]
//3
{1001,"wxh",'m',23,78.5}, //1
{1002,"lxh",'f',25,87.6},

//2

{1003,"fhg",'m',27,94.8}, //3
};
/*******************************************************************/
void main(void)
{
SCON=0x50;

//1,

TMOD=0x20;

//128-bit

PCON=0x00;

//

TL1=0xfd;
TH1=0xfd;

//189600
//189600

TI=1;

//TI 1,

TR1=1;

//T1

while(1)
{
uchar i;
for(i=0;i<3;i++)

//3PC

printf("%d %s %c %d %f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score);
// printf()
delay(500);

//

}
}

238

tyw

12-5

stu[3] 3

PC printf()
stdio.h #i nclude <stdio.h> keil
:\Keil\C51\INC\STDIO.H extern int printf
(const char
*, ...);extern STDIO.H int
printf
printf("%d %s %c %d %f\n",.);%d %s
%c %f
stu[i].num,stu[i].sex,stu[i].age,stu[i].score
i for 02 123
.

12.3.3
#include < reg51.h >
#include < intrins.h > // _nop_()
#include < stdio.h >

// printf()

#define uchar unsigned char


#define uint

unsigned int

void delay(int ms)

//

{
uchar i;
while(ms--)

//while(ms--)ms10

{
for(i=0;i<250;i++) //for250
{
_nop_();

//nop
239

tyw

_nop_();
_nop_();
_nop_();
}
}
}
/***********************************/
struct student //structstudent
{
int num;

//num

char name[5];//name[5]
char sex;

//sex

int age;

//age

float score; //score


}stu[3]={
//stu[3]
//3
{1001,"wxh",'m',23,78.5}, //1
{1002,"lxh",'f',25,87.6},

//2

{1003,"fhg",'m',27,94.8}, //3
};
/*******************************************************************/
void main(void)
{
SCON=0x50;

//1,

TMOD=0x20;

//128-bit

PCON=0x00;

//

TL1=0xfd;

//189600

TH1=0xfd;

//189600

TI=1;

//TI 1,

TR1=1;

//T1

while(1)
{
uchar i;
struct student *p; //
p=stu;
for(i=0;i<3;i++)
/**************************************************************************
3
*************************************************************************/
printf("%d %s %c %d %f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score);
delay(500); //

240

tyw

printf(\n); //
for(i=0;i<3;i++)
{

/**************************************************************************
//3
*************************************************************************/
printf("%d %s %c %d %f\n",(*p).num,(*p).name,(*p).sex,(*p).age,(*p).score);
p++;
}
delay(500); //
while(1);

//

}
}

12-6

12-7

12.3.2

struct student *p
p=stu(*p).num stu[i].num
12-6 12-7
printf("%d %s %c %d %f\n",p->num,p->name,p->sex,p->age,p->score)
printf("%d %s %c %d %f\n",(*p).num,(*p).name,(*p).sex,(*p).age,(*p).score)

12-7 p++
p

1 p ++
1 0x30
p =stu p 0x30 p ++ p 0x31
241

ty w

12.4

union

{
}

union led

//

{
uint i;

//i

uchar ch[2];

//ch[2]

}flash;

//flash

unionled
i ch flash

12.4.1
#include < reg51.h >
#include < intrins.h >
#define uchar unsigned char
#define uint

unsigned int

/***********************************************************************************/
void delay(int ms)
{

uchar i;

242

while(ms--)

//while

tyw

{
for(i=0;i<250;i++) //for
{
_nop_();

//<intrins.h>

_nop_();
_nop_();
_nop_();
}
}
}
/***********************************************************************
unionledi
chflash
*******************************************************************************************/
union led

//

{
uint i;

//i

uchar ch[2];

//ch[2]

}flash;

//flash

void main(void)
{

uchar i;
flash.i=0x55aa;

//flashi

while(1)
{
for(i=0;i<8;i++)
{
P0=flash.ch[0];

//flashch0X55

delay(100);
P0=flash.ch[1];

//flashch0Xaa

delay(100);
}
}
}

243

12-8

tyw

flash
i ch[2] i
0x55aaflash.i=0x55aa for flash ch[2]
P0 keil 12-8
flash

12.4.2 TCL2543
TLC2543 12 AD
11 11 12-9 CLK
___

DIN DOUT CS
TLC2543 2.5V TL431 TLC2543
TLP521

2543 2004

TLC2543
TLC2543 12-10 I/O

244

tyw
.
RP1
4.7K

1
2
3
4
5

+5V1
C1

100uF/16V

U1
UP_AN01
UP_AN12
UP_AN23
4
5
6
7
8
9
10
SGND1

+5V1 U3
3
C

C2

104

SGND1

AIN1
AIN2
AIN3
AIN4
AIN5
AIN6
AIN7
AIN8
AIN9
GND

VCC
EOC
CLK
DIN
DOUT
CS
RES+
RESAIN11
AIN10

TLC2543

4
E
+5V1TLP521

U2
20
19
18
17
16
15
14 VZ1
13
SGND1
12
11

+5V1
DW100
TL431

R1
2K

SGND1

16
15
14
13
12
11
10
9

VCC GND
2004

+5V1

1
2
3
4
5
6
7
8

R2
510

2 R6

R7
510

VCC
R8

+5V1U6

510
VCC
2543_DOUT

TLP521-1

R9
1K

12-9 TLC2543

12-10 TLC2543 12
/***********************12TLC2543*******************************/
#define uchar unsigned char
#define uint unsigned int
bdata uchar ab; //abRAM
sbit abit0=ab^0;sbit abit1=ab^1;sbit abit2=ab^2;sbit abit3=ab^3; //ab
sbit abit4=ab^4;sbit abit5=ab^5;sbit abit6=ab^6;sbit abit7=ab^7;//
sbit

ad43_cs=P1^3;

//TLC2543P1.3

sbit

clk43=P1^0;

//TLC2543P1.0

sbit

din43=P1^1;

//TLC2543P1.1

sbit

dout43=P1^4;

//TLC2543P1.4

/************************** TLC2543************************************/
245

2543_CS

510
VCC

TLP521
+5V1U5

TLP521-1
R3
SGND1 4.7K SGND1

VCC
1

U4

R4
4.7K R5
4.7K

C3
104

2543_DIN

2543_CLK

int AD_2543(uchar n)

//n

tyw

{
data uchar i,j;

//

idata union{

//

uchar ch[2];

/*ch[0]ch[1]*/

uint i;

/*ich

}u;

//u

clk43=0;

//0

ad43_cs=0;

//

ab=n<<4;

//n

for(j=0;j<10;j++);

//

for(i=0;i<8;i++)

//82543ab

{
din43=abit7;

//2543

ab<<=1;

//

abit0=dout43;

//2543ab

clk43=1;

//2543ab

for(j=0;j<10;j++);

//

clk43=0;

//

for(j=0;j<10;j++);

//

}
u.ch[0]=ab;

//u.ch[0]

ab=0;

//ab

for(i=0;i<4;i++)

//

{
ab<<=1;

//

abit0=dout43;

//2543ab0

clk43=1;

//2543ab

for(j=0;j<10;j++);

//

clk43=0;

//

for(j=0;j<10;j++);

//

}
u.ch[1]=ab<<4;

//abu.ch[1]

u.i>>=4;

// u.iu.i12

ad43_cs=1;

//

return u.i;

//

}
void main(void)
{
uint adc;

//abc

adc= AD_2543(0x00); //

I/O TLC2543 TLC2543 SPI


246

51
tyw

TLC2543 TLC2543 ab

12
u ch[2]
i ch[0] i 8
ch[1] i 8
i

247

tyw

13
51 

51 4 I/0 2 16 /
52 3 /2 1
C

13.1I/O
4 I/O I/O 8 32

4 I/O P0P1P2P3 8
P0 8 P0.0 P0.7 I/O
I/O P0
I/O P3
P3.0P3.1 P3.2P3.3 P3.4P3.5
P3.6P3.7 I/O

13.1.1
LED
LED
LED
LEDGaASP

PN
13-1

248

ty
5
R

RFUFIF
F UF LED IF LED
P0 8 LED 470
5 13-1
LED P0 0 LED

13-1

mA

mA

LED

50

10

2.3

LED

50

10

1.5

LED

50

10

LED

50

10

2.3

4.7k

18

9
8
7
6
5
4
3
2
1

EA

X2

5
6
7
8

39
38
37
36
35
34
33
32

R2
R3
R4
R5
R6
R7
R8
R9

+5

470
D7

D8
D6

D5

D4

D3
D1

D2

X1
GND

10K

P0.0
RST U1 P0.1
P0.2
89S51 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7

Y1
12M

19
20

R1

VCC

C3
10uF

31

40

+5

C1
30pF

C2
30pF

13-1

/*****************/
/***************************************************************/
#include < reg51.h >
#include < intrins.h >
/**********************************************************/
#define uchar unsigned char
#define uint unsigned int
/*************************************************************/
249

tyw

void delay(int ms)


{
uchar i;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();

//<intrins.h>

_nop_();
_nop_();
_nop_();
}
}
}
void main()
{
while(1)
{
uchar i,led=0xfe;

//iled

for(i=0;i<8;i++)
{
P0=led;

//P0

led=(led<<1)|0x01; //
delay(100);

//

}
}
}

led=(led<<1)|0x01led
0xfe P0
LED P0=led P0.0 LED
LED led=(led<<1)|0x01 led
0x01, led P0

13.1.2
09
LED
4
13-2 P0
P2 8
8550PNP 5 4
com 4.7k P2
5
250

tyw

RP1
4.7k

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

9
8
7
6
5
4
3
2
1

+5

a b c d e f g dp U2

89S51

C1
30pF

18
Y1
12M
19

C2
30pF

20

X2

X1
GND

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

8550

4.7K

Q1

Q2

Q3

Q4
8550

Q5

COM4

Q6

12

COM1 COM2 COM3


11

R10
R11
R12
R13
R14
R15
R16
R17

COM4

10

28
27
26
25
24
23
22
21

COM1 COM2 COM3

RST
U1

12

R1
10K

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

11

C3
10uF

EA
VCC

a b c d e f g dp U3

470

10

31
40

R2
R3
R4
R5
R6
R7
R8
R9

+5

39
38
37
36
35
34
33
32

Q7

Q8
8550
+5

13-2

1977 8 6 1977-8-6
bir[8]
'-'

Table[10] 10
Table P0 P2
'-''-' 0xbf
2 5 0xbf P0

#include < reg51.h >


#include < intrins.h >
#define uchar unsigned char
#define uint unsigned int
uchar bir[8]={1,9,'-',7,7,'-',8,6}; //'-'
uchar Table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//
/****************************************************************/
void delay(int ms)
{
uchar i;
while(ms--)
{
for(i=0;i<50;i++)
{
_nop_();

//<intrins.h>

_nop_();
_nop_();
_nop_();
}

251

tyw

}
}
void main(void)
{ while(1)
{
uchar i,dis=0x7f;

//

for(i=0;i<8;i++)
{
if(i==2||i==5)
P0=0xbf;

//25"-"
//"-"0xbf

else
P0=Table[bir[i]];
P2=dis;

//P0
//

dis=(dis>>1)|0x80;//1
delay(1);

//
//

}
}
}

13.1.3

I/O 13-3
P1 10k
4.7k

4.7k

9
8
7
6
5
4
3
2
1

+5
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

K1
K2
K3
K4
K5
K6
K7
K8

13-3

4 P1.4P1.7 P1

10ms N N= 1

252

N= 2
tyw

13-45
\ch13\count_09999.flv
/**********0000-9999************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar Table[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
//
uchar Data[4]={0,0,0,0};//
uint CNT=0;

//

uchar Key_Up;

//

uchar Key_Down;

//

/***************************************************************/
void DelayMs(uint i)
{
uint j;

//

for (;i!=0;i--)
{
for (j=500;j!=0;j--){;} //for
}
}
/**********************************************************/
void Display(uchar *p)

//P

{
uchar i,sel=0xF7;

//i0~3sel

for(i=0;i<4;i++)
{
P2=sel;

//sel

P0=Table[p[i]];

//P0

DelayMs(1);

//1

sel=(sel>>1)|0x80;//11
}
}
/************************************************************/
void Process(uint i,uchar *p)
{
p[0]=i/1000;

//ip[0]

i=i%1000;

//i1000i

p[1]=i/100;

//ip[1]

i=i%100;

//i100i

p[2]=i/10;

//ip[2]

i=i%10;

//i

253

//ip[3]

p[3]=i;

tyw

}
/************************************************************/
void Get_Key(void)
{
while((P1&0X10)==0) //
{
Key_Up=1;

//n

Display(Data);

//

}
while((P1&0X20)==0) //
{
Key_Down=1;

//n

Display(Data);

//

}
}
/****************************************************************/
void main(void)
{
while(1)
{
Get_Key();

//

if(Key_Up==1)

//1

{
if(CNT!=9999) //CNT9999CNT1
{
CNT=CNT+1;
Key_Up=0; //1
}
}
if(Key_Down==1)

//1

{
if(CNT!=0)

//CNT0CNT1

{
CNT=CNT-1;
Key_Down=0; //1
}
}
Process(CNT,Data); //CNTData
Display(Data);

//Data

}
}

254

tyw

while

=1

13-4

while

while
1

13-5

0000-9999 P1.4 1 P1.5


1 Get_Key() while((P1&0X10)==0)
P1.4 P1.4 P1&0X10)==0
N Key_Up=1 1
1
/*************0000-9999************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit

K3 = P1^5;

sbit

K4 = P1^4;

uchar Table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//
uchar Data[4]={0,0,0,0};//
uint CNT=0;//
255

/*************************************************************/
tyw
void delayms(uchar ms)
{ uchar i;
while(ms--)
{ for(i = 0; i < 120; i++);}

}
/***************************************************************/
void Display(uchar *p) //P
{
//i 0~3 sel

uchar i,sel=0xF7;
for(i=0;i<4;i++)
{
P2=sel;

//sel

P0=Table[p[i]];

//P0

delayms(1);

//

sel=(sel>>1)|0x80;

//11

}
}
/***************************************************************/
void Process(uint i,uchar *p)
{
p[0]=i/1000;

//ip[0]

i=i%1000;

//i1000i

p[1]=i/100;

//ip[1]

i=i%100;

//i100i

p[2]=i/10;

//ip[2]

i=i%10;

//i

p[3]=i;

//ip[3]

}
/***************************************************************/
void Horse(uchar i)
{
switch(i)

//

{
case 0x01:

//1K3CNTCNT99991

if(CNT!=9999) CNT++;break; //breakHorse


case 0x02:

//2K4CNTCNT01

if(CNT!=0) CNT--;break;
default:break;

//breakHorse

//defaultbreakHorse

}
}
/***********************************************/
uchar keyscan(void)

256

tyw

{
uchar key=0x00;

//key

key=key|K4;

//K4key

key<<=1;

//1

key=key|K3;

//K3key

return(key);

//key=0x0f;key!=0x0f;

}
/******************************************************/
void keyproc(void)
{
uchar key1;
key1=keyscan();

//key1

if(key1!=0x03)

//key10x03

{
delayms(12);

//12

key1=keyscan();//key1
if(key1!=0x03)

//key10x03

{
/****************************/
while(keyscan()!=0x03) Display(Data);
Horse(key1);

//

}
}
}
/*****************************************************************/
void main(void)
{
while(1)

//while

{
keyproc();

//

Process(CNT,Data); //CNT
Display(Data);

//Data

}
}

13-6
257

tyw

P1.4~P1.7

10ms

13-7

N keyproc()
keyscan()
key=0x00 key=key|K4 K4
P1.4 key P1.4 K4
0x01 key key<<=1 key=0x02 key=key|K3
K3 P1.5 P1.5 key P1.5 K3
0x03 return(key) keyscan() if
0x03
10 0x03

13.2

258

tyw

13.2.1

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

/****************************50*****************************/
interrupt 110interrupt
using 11using
timer00
************************************************************************************/
void timer0(void) interrupt 1 using 1
{
P0=~P0;

//P0

TH0=0x3C;

//8

TL0=0xB0;

//8

}
/*****************************************************************************/
void main(void)
{
P0=0XFF;

//P00xffP0

TMOD=0X01; //0116
TH0=0X3C; //8
TL0=0XB0; //8
ET0=1;

//0

EA=1;

//CPU

TR0=1;

//0

while(1)
{
;

//

}
}

0
TMOD=0X01 0 116 0~65535
65536 12M 1us 65536 us 65.536
51

5000 1000
4000 1000 4000
50ms 50 ms
65.536 msTH0=0X3C; TL0=0XB0; 16

259

8 8 TH0 8 TL0
tyw8

TH0TL0
0

15536 65536-15536=50000
50 ms ET0=1CPU
EA=1
TR0=1 CPU CPU

CPU
0 0x000b c
void timer0(void) interrupt 1 using 1
{

timer0
interrupt 1 interrupt 1 1
0 04 0 0 1 1
using 1 1 51 4
R0R7 P0

CPU

//+
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7;
/*******************************************************************/
void delayms(unsigned char ms)
{
uchar i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
/****************************50************************
interrupt 110interrupt
using 11using
timer00
******************************************************************************/
void timer0(void) interrupt 1 using 1
{
260

tyw

P0=~P0;
TH0=0x4c;
TL0=0x00;
}
void beep(void)
{
BEEP=~BEEP;//P3.7
delayms(5);

//

}
/*******************************************************************/
void main(void)
{
TMOD=0X01; //0116
ET0=1;

//

EA=1;

//CPU

TH0=0X4C; //500X4C
TL0=0X00; //0X00
TR0=1;

//0

while(1)
{
beep();
}
}

13.2.2
50ms
1
50ms count
1 count 20 1
20 1 P0

//
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7;//
uchar count;

//

/*******************************************************************/
void delayms(unsigned char ms)
{
uchar i;
while(ms--)
{
261

tyw

for(i = 0; i < 120; i++);


}
}
/****************************50***********************/
interrupt 110interrupt
using 11using
timer00
******************************************************************************/
void timer0(void) interrupt 1 using 1
{
count++;

//50mscount1

if(count!=20) //count201
{
TH0=0x4c;

//

TL0=0x00;
}
else

//count201P0count

{
P0=~P0;
count=0;
}
}
void beep(void)
{
BEEP=~BEEP;
delayms(5);
}
/*****************************************/
void main(void)
{
TMOD=0X01; //0116
ET0=1;

//

EA=1;

//CPUCPU

TH0=0X4C; //500X4C
TL0=0X00; //0X00
TR0=1;

//

while(1)
{
beep();

//beep()

}
}

262

13.2.3

tyw

555

HK_2000A 13-8
1
0-99
312V
P3.5

13-8
100-99
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/****************************************************************************/
void delayms(unsigned char ms)
{
uchar i;
while(ms--)
{
for(i = 0; i < 120; i++);//for
}
}
void display(void)
{if(TL1==100)

//100

TL1=0;
P0=dis[TL1/10];

//

P2=0xfd;
delayms(2);
P0=dis[TL1%10]; //
P2=0xfe;
delayms(2);
}
263

/*******************************************************************************/
tyw
void main(void)
{
P0 = 0xff;
P2 = 0xff;
TMOD = 0x50;

//11, 16

TH1 = 0;

//00

TL1 = 0;
TR1 = 1;

//

while(1)
{
display();

//

}
}

13.3
51 0
0X0003 1 0X0013
0-99
0 P3.2
1 P3.3 0
0 count 100 count 1
75 75
//00-99
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep=P3^7;
uchar count;
unsigned char dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
/*********************************************************************/
void BEEP(void)
{ uchar i;
for(i=0;i<10;i++)
{

264

beep=~beep; //

tyw

delayms(1);
}
delayms(5);
}
/*****************************************************************/
void ex0(void) interrupt 0 using 0
{
if(count==100)

//count=100

{
count=0;
}
else

//100count1

count++;
}
void display(void)
{
P0=dis[count/10]; //countP0
P2=0xfd;

//

delayms(2);
P0=dis[count%10];
P2=0xfe;
delayms(2);
}
/***********************************************************************/
void main(void)
{ P0 = 0xff;
P2 = 0xff;
IT0 = 1;

//IT0=1IT0=0

EX0 = 1;
EA = 1;
while(1)
{if(count>75) BEEP(); //75
display();
}
}

13.4
PC
PC

1 0 8
1

265

tyw
bpsbits per second51
1 2 52 2
1103006001200180024004800960014.4Kbps
19.2Kbps28.8Kbps33.6Kbps56Kbps 9600bps 9600

10 1 8 1
1200b/s 1200/(1+8+1)=120
PC PC avr terminal

13-9

13-10

//PC
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar sin[]=
{
0x7F,0x8B,0x98,0xA4,0xB0,0xBB,0xC6,0xD0,0xD9,0xE2,0xE9,0xEF,0xF5,0xF9,0xFC
,0xFE,0xFE,0xFE,0xFC,0xF9,0xF5,0xEF,0xE9,0xE2,0xD9,0xD0,0xC6,0xBB,0xB0,0xA4,
0x98,0x8B,0x7F,0x73,0x66,0x5A,0x4E,0x43,0x38,0x2E,0x25,0x1C,0x15,0x0F,0x09,0
x05,0x02,0x00,0x00,0x00,0x02,0x05,0x09,0x0F,0x15,0x1C,0x25,0x2E,0x38,0x43,0x
4E,0x5A,0x66,0x73,0x7F
};
/*****************************************************************/
void es0(void) interrupt 4 using 1
{static uchar i;//
SBUF=sin[i];
i++;

//
//
266

tyw

if(i==63) i=0; //64


TI=0;

//

}
void main(void)
{
SCON=0x50;

//1 \(REN=1)

TMOD=0x20;

//12

TH1=0xFD;

//9600

TL1=0xFD;
PCON=0x00;

//SMOD=0

TR1=1;

//

ES=1;

//

EA=1;

//CPU

TI=1;

//1

while(1)
{
;

//

}
DB1

+5

C4
1uF

C5
0.1uF

U4
8
13
T2OUT 7
14
1
3
2
15
+
R2IN

R2 IN
VCC
R1 IN R2 OUT
T2OUT R1OUT
T1 OUT T2 IN
C1+
T1 IN
C1 C2+
V+
C2 GND
VMAX232CPE

16
9
12
10
11
4
5
6
+

1
6
2 T2OUT
7
3 R2IN
8
4
+ C1
9
1uF
5

RXD1
TXD1

P3.0
P3.1
+ C2
1uF

C3
1uF

+5

13-11 PC

PC 13-11

PC PC
PC
13-12 5
P3.1P3.0

led[]

267

tyw

13-12
//
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//
/*****************************************************************************/
void delay(uchar ms)
{
uchar j;
while(ms--)
{
for(j=0;j<250;j++)
{
;

//

}
}
}
/************************************0***************************************/
void es0(void) interrupt 4 using 0
{static uchar i; //i
delay(100);

//led

if(TI==1)

//TI11

{
SBUF=led[i]; //
i++;

//1

if(i==8) i=0; //i8


TI=0;

//TI

}
if(RI==1)

//RI1

{
P0=SBUF;

//P0
268

RI=0;

tyw

//

}
}
/*****************************************************************************/
void main(void)
{
SCON=0x50; //1(REN=1)
TMOD=0x20; //12
TH1=0xFD; //9600
TL1=0xFD;
PCON=0x00; //
TR1=1;

//1

ES=1;

//

EA=1;

//CPU

TI=1;

//TI

while(1)
{
delay(250) ;
}
}

13.5
51

13.5.1
1
13-13
RP1
4.7k

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

9
8
7
6
5
4
3
2
1

+5

a b c d e f g dp U2

R1
10K

C3
10uF

+5

8550

4.7K

Q1

Q2

Q3

Q4
8550

Q5

Q6

12

COM4

11

COM1 COM2 COM3


10

R10
R11
R12
R13
R14
R15
R16
R17

COM4

28
27
26
25
24
23
22
21

COM1 COM2 COM3

12

5
6
7
8
20
9

K1
K2
K3
K4

a b c d e f g dp U3

470

11

10K

P0.0
P0.1
P0.2
P0.3
P0.4
U1
P0.5
89S51
P0.6
P1.4
P0.7
P1.5
P1.6
P2.7
P1.7
P2.6
GND P2.5
RST
P2.4
P2.3
P2.2
P2.1
P2.0
EA
VCC

R2
R3
R4
R5
R6
R7
R8
R9

10

31
40

39
38
37
36
35
34
33
32

+5

Q7

13-13

2
/************************51*************************/
269

Q8
8550
+5

#include <reg51.h>

//51

tyw

#include <intrins.h> // _nop_();


/********************************************************/
#define uchar unsigned char
#define uint unsigned int
/***************************P1.4~P1.74********************/
sbit

K1 = P1^4;

sbit

K2 = P1^5;

sbit

K3 = P1^6;

sbit

K4 = P1^7;

/************************************************************************************
discode[]data2[]
data1[]
************************************************************************************/
uchar discode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar data2[6]={0,0,0,0,0,0};
uchar data1[3]={0,0,0};

//

uchar count;//050ms2050*20=1
/**************************************************************************

************************************************************************************/
void delayms(unsigned char ms);
void display(void);
void process(void);
uchar keyscan(void);
void Horse(uchar i);
/*************************************************************************************
data2[]
**************************************************************************************/
void process(void)
{
data2[0]=data1[0]/10; //
data2[1]=data1[0]%10; //
data2[2]=data1[1]/10; //
data2[3]=data1[1]%10; //
data2[4]=data1[2]/10; //
data2[5]=data1[2]%10; //
}
/************************************************************************/
void display(void)
{
uchar i=0xdf,j;
for(j=0;j<6;j++)
{

270

P0=discode[data2[j]]; //P0
P2=i;

//

i=(i>>1)|0x80;

//

delayms(2);

tyw

//

}
}
/******************************50****************************/
void timer0(void) interrupt 1 using 1
{
count++;

//50ms01

if (count==20)

//20

{count=0;

//

data1[2]++;
if (data1[2]==60)

//1
//60

{
data1[2]=0;

//

data1[1]++;

//1

if(data1[1]==60)

//60

{
data1[1]=0;

//

data1[0]++;

//1

if(data1[0]==24) data1[0]=0; //24


}
}
}
else

//1

TH0=0x4c;

//8

TL0=0x00;

//8

}
/*************************************************************************/
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++); //for
}
}
/********************************************************/
uchar keyscan(void)
{
uchar key=0x00;

//

key=key|K4;

//K4

key<<=1;

//1K3

271

key=key|K3;

//K3

key<<=1;

//1K2

key=key|K2;

//K2

key<<=1;

//1K1

key=key|K1;

//K1

tyw

return(key);//key=0x0f;key!=0x0f;
}
/***************************************************************************/
void Horse(uchar i)

//

{
switch(i)
{
case 0x0e:

//K11

data1[0]++;
if(data1[0]==24) data1[0]=0;break; //24
case 0x0d:

//K21

data1[0]--;
if(data1[0]==255) data1[0]=23;break; //25523
case 0x0b:

//K31

data1[1]++;
if(data1[1]==60) data1[1]=0; break; //60
case 0x07:

//K41

data1[1]--;
if(data1[1]==255) data1[1]=59;break; //25559
default:break;}

//switch

}
/*******************************************************************/
void keyproc(void)
{
uchar key1;
key1=keyscan();

//key1

if(key1!=0x0f)

//key10x0f

{
delayms(12);

//10ms

key1=keyscan();

//key1

if(key1!=0x0f)

//key10x0f

{
while(keyscan()!=0x0f) display();
Horse(key1);}

//

}
}
/**************************************************************************/
void main(void)
{

272

TMOD=0X01;

//01

ET0=1;

//

EA=1;

//

TH0=0X4C;

//8

TL0=0X00;

//8

TR0=1;

//0

tyw

while(1)
{
keyproc();

//

process();

//

display();

//

}
}

13.5.2
13-13
/***************************51*************************/
#include <reg51.h>

//51

#include <intrins.h> // _nop_();


/**********************************************************/
#define uchar unsigned char
#define uint unsigned int
/***************************P1.4~P1.74*********************/
sbit K1 = P1^4;
sbit K2 = P1^5;
sbit K3 = P1^6;
sbit K4 = P1^7;
/**************************************************************************************
discode[]data2[]
data1[]
******************************************************************************************/
uchar discode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar data2[6]={0,0,0,0,0,0};
uchar data1[3]={0,0,0};//hour min sec
uchar count;//050ms2050*20=1
/***********************************************************************************

***************************************************************************************/
void delayms(unsigned char ms);
void display(uchar *p2);
void process(uchar *p1,uchar *p2);
uchar keyscan(void);
void Horse(uchar i);
273

/********data2[]*************/
tyw
void process(uchar *p1,uchar *p2)
{

*p2++

*p2++=*p1/10;

//

*p2++=*p1++%10;

//

*p2=*p1/10; p2++

*p2++=*p1/10;

//

*p2++=*p1++%10;

//

*p2++=*p1/10;

//

*p2=*p1%10;

//

}
/*****************************************************************/
void display(uchar *p2)
{
uchar i=0xdf,j;
for(j=0;j<6;j++)
{
P0=discode[*p2++];
P2=i;
i=(i>>1)|0x80;
delayms(2);
}
}
/****************************50************************/
void timer0(void) interrupt 1 using 1
{
count++;
if (count==20)
{count=0;
data1[2]++;
if (data1[2]==60)
{
data1[2]=0;
data1[1]++;
if(data1[1]==60)
{
data1[1]=0;
data1[0]++;
if(data1[0]==24) data1[0]=0;
}
}
}
else
TH0=0x4c;
TL0=0x00;

274

tyw

}
/********************************************************************/
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
/***************************************************/
uchar keyscan(void)
{
uchar key=0x00;
key=key|K4;
key<<=1;
key=key|K3;
key<<=1;
key=key|K2;
key<<=1;
key=key|K1;
return(key);//key=0x0f;key!=0x0f;
}
/*********************************************************************/
void Horse(uchar i)
{
switch(i)
{
case 0x0e:
data1[0]++;
if(data1[0]==24) data1[0]=0;break;
case 0x0d:
data1[0]--;
if(data1[0]==255) data1[0]=23;break;
case 0x0b:
data1[1]++;
if(data1[1]==60) data1[1]=0; break;
case 0x07:
data1[1]--;
if(data1[1]==255) data1[1]=59;break;
default:break;}
}
/***********************************************************/
void keyproc(void)

275

tyw

{
uchar key1;
key1=keyscan();
if(key1!=0x0f)
{
delayms(12);
key1=keyscan();
if(key1!=0x0f)
{
while(keyscan()!=0x0f) display(data2);
Horse(key1);}
}
}
/*******************************************************************/
void main(void)
{
TMOD=0X01;
ET0=1;
EA=1;
TH0=0X4C;
TL0=0X00;
TR0=1;
while(1)
{
keyproc();
process(data1,data2);
display(data2);
}
}

13.5.3
C

1
13-14

276

tyw
9
8
7
6
5
4
3
2
1

+5

a b c d e f g dp U2

+5
C1
30pF
C2
30pF

20
31
40
18
Y1
12M
19

GND
EA
VCC
X2

X1

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

R10
R11
R12
R13
R14
R15
R16
R17

8550

4.7K

Q1

COM4

Q2

COM1 COM2 COM3

Q3

Q4
8550

Q5

COM4

Q6

12

28
27
26
25
24
23
22
21

COM1 COM2 COM3

11

RST

10

P3.5

R1
10K

a b c d e f g dp U3

470

12

15
uF

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

R2
R3
R4
R5
R6
R7
R8
R9

11

89S51

39
38
37
36
35
34
33
32

10

U1

+5

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

+5

Q7

Q8
8550
+5

13-14

2
:
/******************************************************************************************
1

*******************************************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1 = P1^4;
sbit K2 = P1^5;
uint time;

//1200=1

uchar count;

//

uchar sec;

//

uchar sc;

//202050=1000ms=1s

uchar key_s, key_v;


/****************************************************************************/
bit scan_key();
void keyscan(void);
void proc_key();
void display(void);
uchar data dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delayms(unsigned char ms);
/******************************************************************************/
void main(void)
{ P0 = 0xff;

//

P2 = 0xff;
TMOD = 0x51;

//01, 16,1,16

277

TH0 = 0x4c;

//80x4c,800

TL0 = 00;

//50

TH1 = 00;

//00

tyw

TL1 = 00;
IE = 0x82;

//timer0EA=1;ET0=1

TR0 = 0;

//

TR1 = 0;

//

key_v = 0x03;

//

while(1)
{
keyscan();
display();
}
}
void keyscan(void)
{
if(scan_key())

//scan_key()00

{
delayms(10);

//

if(scan_key())//00
{key_v = key_s; //key_v
proc_key();

//

}
}
}
void display(void)
{
P0=dis[TL1/10];
P2=0xfd;
delayms(2);
P0=dis[TL1%10];
P2=0xfe;
delayms(2);
P0=dis[sec/10];
P2=0X7F;
delayms(2);
P0=dis[sec%10];
P2=0XBF;
delayms(2);
}
bit scan_key()
{
key_s = 0x00;
key_s |= K2;

278

tyw

key_s <<= 1;
key_s |= K1;

return(key_s ^ key_v); //00


//0
}
void proc_key(void)
{
if((key_v & 0x01) == 0)

//K1

{
TR0=1;

//0

TR1=1;

//1

}
else if((key_v & 0x02) == 0)//K2
{
TR0=0;

//0

TR1=0;

//1

}
}
void timer0() interrupt 1 //50ms0
{

time++;

//1

sc++;
if(sc==20) {sec++;sc=0;}//11
if(time==1200)

//120050=60s,

{
time=0;

//time0

TR0=0;

//

TR1=0;

//

}
else

//1

{ TH0 = 0x4c;

//8

TL0 = 0x00;
}
}
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}

279

tyw

14

51 

51 51
44
LED ADC0832 AD590 DAC0832 AD590
MAX531

14.144
44 4 4
P1.4~P1.7 P1.0~P1.3 14-1

P1 0X0F P1
temp=temp&0x0F 4 temp 0XF0
4 1
key=0 key=1 key=2 key=3
P1 0XF0 P1 temp=temp&0xF0 temp
0XF0 1
key=key+0
key=key+4 key=key+8 key=key+12 key

S1

S2

S3

S4

P1.4

0
S5

1
S6

2
S7

3
S8

P1.5

4
S9

5
S10

6
S11

7
S12

P1.6

8
S13

9
S14

10
S15

11
S16

P1.7
P1.0
P1.1
P1.2
P1.3

14-1

/*****************************************************************************/
280

/*

*/ tyw

/*

*/

/*****************************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, //0,1,2,3,4,5,6
0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//7,8,9,A,B,C,D,E,F,sbit BEEP = P3^7;

//

uchar dis_buf;

//

uchar temp;
uchar key;

//

void beep();

//

void delay0(uchar x);

//x*0.14MS

/********************************* *********************************/
void delay(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)
{;}
}
}
/*****************************************************************/
void keyscan(void)
{
P1=0x0F;

//

delay(1);
temp=P1;
temp=temp&0x0F;

//P1
//44

temp=~(temp|0xF0); //41
if(temp==1)

//10

key=0;
else if(temp==2)

//21

key=1;
else if(temp==4)

//32

key=2;
else if(temp==8)

//43

key=3;
else
key=16;
P1=0xF0;

//
//

delay(1);
temp=P1;

//P1

281

temp=temp&0xF0;

//44

temp=~((temp>>4)|0xF0);
if(temp==1)

//1+0

key=key+0;
else if(temp==2)

//2+4

key=key+4;
else if(temp==4)

//3+8

key=key+8;
else if(temp==8)

//4+12

key=key+12;
else
key=16;

//"-"

dis_buf=table[key];//
}
/***************************************************************/
void key_down(void)
{
P1=0xF0;

//

if(P1!=0xF0)

//P10xf0

keyscan();

//dis_buf

beep();

//

while(P1!=0xF0);

//

}
}
/*******************************************************************/
void beep()
{
unsigned char i;
for (i=0;i<180;i++)
{
delay0(6);
BEEP=!BEEP;

//BEEP

}
BEEP=1;

//

delay(250);

//

}
/*********************************************************************/
void delay0(uchar x)

//x*0.14MS

{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}

282

tyw

tyw

}
}
/***********************************************************************/
void main(void)
{
P0=0xFF;

//P0

P2=0xFF;

//P2

key

dis_buf=0xBF;

//"-"

switch(key)

while(1)

{case 0: P0=0X00;break;

case 1: P0=0X55;break;
Key_down();

P0 = dis_buf; //
P2 = 0xfe ;
delay(2);
}
}

14.2 LED

LED

LED 14-2 1616


74LS138 74HC595

14.2.174LS138
74LS138
CBA G1G2AG2BG1 G2AG2B
Y0~Y7 14-1
LED
P2.3P2.2P2.1P2.0 P2.4 P2.4=1
LED P2.4=0 P2.3=0
0~7 P2.3=1 8~15
14-2 74HC595
LED

283

tyw

14-1 74ls138

G1

G2AG2B

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

14-2
P2.4

P2.3

P2.2

P2.1

P2.0

0~7 1 74LS138

10

8~15 2 74LS138

11

12

13

14

15

284

74LS138

tyw

14.2.274HC595

74HC595 CMOS TTL JEDEC 74HC595


8
SCLK LCLK

DSQ7 8
OE
1

14-3

SCLK

LCLK

OE

MR

DS

Q7

Q0~ Q7

NC

OE

Q6

NC

H -> Q0--> Q1-->... Q6--> Q7Q7

NC

Q0~ Q7

Q6

Q0 ~ Q7

Z NC

14-4
Q0Q7

GND

Q7

MR

SCLK

LCLK

285

OE

DS

VCC

+5

tyw

Q1
8550
Q2
Q3
Q4
Q5

Q14
Q15

RES1

14

DS

U5
Q16

74HC595

U6 74HC595

LCLK
OE
Q7

Q13

SCLK
MR

Q12

12
13
9

Q11
RESS

11
10

Q10

LCLK
OE
Q7
DS

Q9

Q8

12
13
9
14

U2 74LS138

15
14
13
12
11
10
9
7

Q7

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

P2.3
P2.4

4
5
6

Y0
Y1
Y2
Y3
Y4
G2AY5
G2BY6
G1 Y7

Q6

15
1
2
3
4
5
6
7
15
1
2
3
4
5
6
7

P2.0
P2.1
P2.2

A
B
C

15
14
13
12
11
10
9
7

O0
O1
O2
O3
O4
O5
O6
O7
O0
O1
O2
O3
O4
O5
O6
O7

+5 1
2
3

Y0
Y1
Y2
Y3
Y4
G2AY5
G2BY6
G1 Y7

SCLK
MR

4
5
6

A
B
C

11
10

1
2
3

U4
LEDDPY

U3

U1 74LS138

P0.0
P2.7
+5
P0.0

14-2

14.2.3LED

14-3

/*****************************************************************************
** 8 16
* 8-3 1616 B1~B32

******************************************************************************/

286

tyw

14-3
#include <reg51.h>

//51

#include <intrins.h>

// _nop_();

#define uchar unsigned char


#define uint unsigned int
#define BLKN 2

//

sbit SDATA_595=P0^0;

//

sbit SCLK_595 =P2^7;

//

sbit RCK_595 =P0^2;

//

sbit G_74138 =P2^4;

//

uchar data dispram[32]; //


uchar temp;
void delay(uint );
uchar code Bmp[][32]=
{ { 0x10,0x10,0x08,0x20,0x04,0x48,0x3F,0xFC,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
0x21,0x08,0x3F,0xF8,0x21,0x00,0x01,0x04,
0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00},//

{0x00,0x80,0x20,0x80,0x20,0x80,0x20,0x80,
0x20,0x84,0x3F,0xFE,0x20,0x00,0x20,0x00,
0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,
0x20,0x40,0x20,0x40,0x40,0x40,0x80,0x40},//

{0x10,0x00,0x10,0x10,0x11,0xF8,0x11,0x10,
0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,
0x55,0x10,0x51,0x10,0x91,0x10,0x11,0x10,
0x11,0x12,0x12,0x12,0x14,0x0E,0x18,0x00},//

{0x01,0x00,0x02,0x00,0x04,0x10,0x1F,0xF8,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,

287

0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10},//

{0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,
0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x84,0xFF,0xFE,0x01,0x00,
0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00},//

{0x03,0xF8,0x40,0x10,0x30,0xA0,0x10,0x48,
0x03,0xFC,0x02,0x48,0xF2,0x48,0x13,0xF8,
0x12,0x48,0x12,0x48,0x13,0xF8,0x12,0x48,
0x12,0x68,0x2A,0x50,0x44,0x06,0x03,0xFC} //
};
/*********************************************************************/
void delay(uint dt)
{
uchar bt;
for(;dt;dt--)
for(bt=0;bt<255;bt++);
}
/********************74HC595*********************/
void WR_595(void)
{

uchar x;
for (x=0;x<8;x++)
{
temp=temp<<1;
SDATA_595=CY;
SCLK_595=1;

//

_nop_();
_nop_();
SCLK_595=0;
}
}
/***********************************************************************/
void main(void)
{ uchar i,k;
TMOD = 0x01;

//T01

TH0 = 0xFC;

//1ms

TL0 = 0x66;
IE = 0x82;

//0

TR0=1;

//

P2=0XF0;

//

while(1)
{ for(k=0;k<6;k++)

//""

288

tyw

tyw

{
for(i=0;i<32;i++)
{

dispram[i]= Bmp[k][i];//dispram[32]
}
delay(1500);

//

}
}
}
/*****************dispram[32]*******************/
void led_dis(void) interrupt 1 using 1
{
uchar i,j=BLKN;
TH0 = 0xFC;

//1ms

TL0 = 0x66;
i=P2;

//

i=++i & 0x0f;

//1416

do{
j--;
temp = ~dispram[i*BLKN+j];//
WR_595();

//

}while(j);
G_74138=1;

//

P2 &= 0xf0;

//

RCK_595 = 1;

//

P2 |=i;

//

RCK_595 = 0;

//

G_74138=0;

//

14.3 ADC0832

ADC0832

14.3.1ADC0832
ADC0832 8 A/D

289

ty
ADC0832 A/D

1
2
3
4

ADC0832
18
2 A/D

CS VREF(vcc)
CH0
CLK
CH1
DO
GND ADC0832 DI

8
7
6
5

3 TTL/CMOS
45V 0~5V

14-4 ADC0832

5 250KHZ 32S
6 15mW
78P14PDIPPICC
8 0C to +70C 40C to +85C
2
1CS
2CH0 0 IN+/-
3CH1 1 IN+/-
4GND 0
5DI
6DO
7CLK
8Vcc/REF

3
ADC0832 4 CSCLKDODI
DO DI DO DI
ADC0832 CS CLK DO/DI
A/D CS
CLK
DO/DI DI 1 DI
23 DI 2
14-5 10 CH0
11 CH1
00 CH0 IN+CH1 IN-
01 CH0 IN-CH1 IN+
3 DI DO/DI
DO 4 DO DATA7

290

ty
DO 11 DATA0
11

DATA0 8 19 A/D
CS
14-5

SGL/DIF

ODD/SIGN

IN+

IN-

IN-

IN+

14-5 ADC0832

ADC0832 0~5V 8
19.53mV IN+ IN-
IN+ IN- IN-
IN+ 00H

14.3.2
0~5V 10K
ADC0832 +5V8 0~255 256
5/256=0.019V
14-6 .

291

tyw
+5
+5
C11

104
8
GND P10 7
P11 6
5

U5

ADC0832

VCC
CLK
DO
DI

CS
CH0
CH1
GND

R1
10k

1 P34
2
3
4

14-6

/********************************************************************************/
/*

*/

/* 5V

*/

/* 0.00V

5.00V

0.02V5/256

*/

/********************************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ch0 0x02

//0

#define ch1 0x03

//1

sbit AD_CS = P3^4;

//

sbit AD_CLK= P1^0;

//

sbit AD_DI = P1^1;

//

sbit AD_DO = P1^1;

//DIDOP1.1

sbit ACC0=ACC^0;

//

sbit ACC1=ACC^1;

//

sbit Dot=P0^7;

//

uchar tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xff};
uchar col_sel[3]={0xdf,0xbf,0x7f};
uchar dis[3]={0x00,0x00,0x00};

// 0 1 2 3 4
//5 6 7 8 9
//

//3

uchar temp;
/*********************************************************************/
void delay(int ms)
{
int i;
while(ms--)
{
for(i = 0; i< 250; i++)

292

tyw

{
_nop_();

//intrins.h

_nop_();
_nop_();
_nop_();
}
}
}
/******************************ADC***********************************/
ADC_start()
{
AD_CS=1;

//

_nop_();
AD_CLK=0;
_nop_();
AD_CS=0;

//CS0

_nop_();
AD_DI=1;

//DI1

_nop_();
AD_CLK=1;

//

_nop_();
AD_DI=0;

//DI

_nop_();
AD_CLK=0;
_nop_();
}
/*********************************************************************************/
/*AD

*/

/*

*/

/*********************************************************************************/
uchar ADC_read(uchar mode) //
{

uchar i;
ADC_start();

//

ACC=mode;

//

AD_DI=ACC1;

//1DI=1DI=0

AD_CLK=1;

//

_nop_();
AD_DI=0;

//DI

AD_CLK=0;
_nop_();
AD_DI=ACC0;

//0DI=00DI=11

AD_CLK=1;

//

_nop_();
AD_DI=1;

//DI

293

AD_CLK=0;

//

AD_CLK=1;

//

tyw

ACC=0;
for(i=8;i>0;i--) //8
{
AD_CLK=0;

//

ACC=ACC<<1;
ACC0=AD_DO;

//DO

_nop_();
_nop_();
AD_CLK=1;
}
AD_CS=1;

//CS=1

return(ACC);
}
/***************************** ******************************************/
/* 1610

*/

/* (da_data*5)/255=ad_data/51

*/

/********************************************************************************/
void data_process(uchar ad_data)
{
dis[2]=ad_data/51;

//dis[2]

temp=ad_data%51;

//

temp=temp*10;

//

dis[1]=temp/51;

//dis[1]

temp=temp%51;
temp=temp*10;

//

dis[0]=temp/51;

//dis[0]

}
/************************************************************************/
void display(void)
{
uchar i;
for(i=0;i<3;i++)
{
P0=tab[dis[i]];

//P0

if(i==2){Dot=0;} //
P2=col_sel[i];

//P2

delay(1);

//11

P2=0xff;

//

}
}
/*************************************************************************/
void main(void)

294

tyw

uchar acq,i;
while(1)
{
acq=ADC_read(ch0); //0
for(i=0;i<10;i++)
{
data_process(acq);//
display();

//

}
}
}

14.4 AD590
1

VCC

AD590

.
VOUT

AD590

DS18B20
10K

AD590 ,
-55150+4V30V(-273),
1, 1A , 25, Io=(273+25)=298A
10K Vout 14-6
14-6 10K

10K V

273

2.73

10

283

2.83

30

303

3.03

50

323

3.23

70

343

3.43

90

363

3.63

100

373

3.73

295

tyw

14.4.1
+5
C11
104

U5

8
GND P10 7
P11 6
5

ADC0832

VCC
CLK
DO
DI

1 P34
2
3
4

CS
CH0
CH1
GND

J4
1
2
CON2

R5

+5
-12

R11

10K
-12

50K

UA741

6
3

R20
20K

R3
1K

+12
R19
2K
GND

U12

R9

2
6

10K
UA741

4
1

10K

1
R18
9K

U11

R8

5
R4
1K

6
UA741
7

4
1

U10
2

U9
ad590

4
1

-12

+12

R21
50K

+12

GND
GND

-12

14-7

AD590 I=(273+T)A(T ), R19 R18R19


10K 1 V1= (273+T)A 10K= (2.73+T/100)V
1 ADC0832
ADC0832 R18R19
20 R18R19 I=(273+T)A=293A
ADC0832, ADC0832 R18R19
1

2 V2=V1= (273+T)A 10K= (2.73+T/100)V

0~100 2.73 V ~3.73 V


0V ~5V
0 V2=V1=2.73V R21 V4 0V
V6=-5V4=0V

296

14-7

ADC

tyw

10K V

273

2.73

10

283

2.83

30

303

3.03

50

323

3.23

70

343

3.43

90

363

3.63

100

373

3.73

V2
V4
12
=
+
R8 R20 + R21
R5

.1

V4 V6
=
..2
R9
R11
R8 = R9 = R5 = 10 K R20 = 20 K R11 = 50 K 1

V2

120
= V 4 R = R20 + R21 ....3
R

T=0V2=V1=2.73V R21 V4 = 0V V2

120
120
= V 4= 0 V2 =
= 2.73V
R
R

R=43.95K V2 2.73 = V4
R9 R11 2 V6 = 5V4 .....4
V6 = 5(V2 2.73)V ...5
T=0

V2=2.73VV6=0V

T=100V2=3.73VV6=5V

14.4.2
     AD590 ADC0832 14-7
20
ADC0832
acq=ADC_read(ch1);acq ,
acq=acq/51; acq ,/
,,
acq=acq%51

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char

297

tyw

#define uint unsigned int


#define ch0 0x02

//0

#define ch1 0x03

//1

sbit AD_CS = P3^4;

//

sbit AD_CLK= P1^0;

//

sbit AD_DI = P1^1;

//

sbit AD_DO = P1^1;

//DIDOP1.1

sbit ACC0=ACC^0;

//

sbit ACC1=ACC^1;

//

sbit Dot=P0^7;

//

uchar tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xff};

// 0 1 2 3 4
//5 6 7 8 9

uchar bit_sel[5]={0x7f,0xbf,0xdf,0xef,0xf7}; //
uchar dis[5]={0x00,0x00,0x00,0x00,0x00};
//3
uint temp;
/*********************************************************************/
void delay(int ms)
{
int i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();

//intrins.h

_nop_();
_nop_();
_nop_();
}
}
}
/******************************ADC***********************************/
ADC_start()
{
AD_CS=1;

//

_nop_();
AD_CLK=0;
_nop_();
AD_CS=0;

//CS0

_nop_();
AD_DI=1;

//DI1

_nop_();
AD_CLK=1;

//

_nop_();

298

AD_DI=0;

//DI

tyw

_nop_();
AD_CLK=0;
_nop_();
}
/*********************************************************************************/
/*AD

*/

/*

*/

/*********************************************************************************/
uchar ADC_read(uchar mode) //
{

uchar i;
ADC_start();

//

ACC=mode;

//

AD_DI=ACC1;

//1DI=1DI=0

AD_CLK=1;

//

_nop_();
AD_DI=0;

//DI

AD_CLK=0;
_nop_();
AD_DI=ACC0;

//0DI=00DI=11

AD_CLK=1;

//

_nop_();
AD_DI=1;

//DI

AD_CLK=0;

//

AD_CLK=1;

//

ACC=0;
for(i=8;i>0;i--) //8
{
AD_CLK=0;

//

ACC=ACC<<1;
ACC0=AD_DO;

//DO

_nop_();
_nop_();
AD_CLK=1;
}
AD_CS=1;

//CS=1

return(ACC);
}
/***************************** ******************************************/
/* 1610

*/

/********************************************************************************/
void data_process(uint ad_data)
{
dis[0]=ad_data/10000; //dis[0]

299

tyw

temp=ad_data%10000;

//

dis[1]=temp/1000;

//dis[1]

temp=temp%1000;

//

dis[2]=temp/100;

//dis[2]

temp=temp%100;

//

dis[3]=temp/10;

//dis[3]

dis[4]=temp%10;

//dis[4]

}
/************************************************************************/
void display(void)
{
uchar i;
for(i=0;i<5;i++)
{
P0=tab[dis[i]];

//P0

if(i==2){Dot=0;} //
P2=bit_sel[i];

//P2

delay(1);

//11

P2=0xff;

//

}
}
/*************************************************************************/
void main(void)
{

uchar i;

float adv;

uint adc;
while(1)
{
adv=ADC_read(ch1);

//1

adv=adv/51;

//adv*5/255=adv/51

adv=adv*20;

//

adv=adv*100;

//100

adc=(uint)adv;

//adc

for(i=0;i<10;i++)
{
data_process(adc);//
display();

//

}
}
}

300

tyw

14.5 DAC0832
DAC0832 8 D/A
14-8 14-9 DAC0832

1
2
3
4
5
6
7
8
9
10

CS
VCC
WR1
ILE
GND
WR2
DI3
XFER
DI2
DI4
DI1
DI5
DI0(LSB)
DI6
VREG DI7(MSB)
RFB
IOUT2
GND
IOUT1

20
19
18
17
16
15
14
13
12
11

14-8 DAC0832

14-9 DAC0832

14.5.1DAC0832
DAC0832 8 1us1LSB
+10~-10V+5~+15V TTL 14-9
DAC0832
ILE DAC XFER ILE
CS WR1 1
WR1

XFER WR2
8 DAC
WR2
DAC

14.5.2

D7D0
ILE

CS
WR1

XFER

TTL 90ns

ILECS WR1 0 D7D0

301

tyw

WR2

DAC XFER 0WR2


DAC

Iout1

1 Iout

Iout2

Iout2+Iout1

Rfb

Rfb

Vref

Vref -10 V+10 V

VCC

Vcc +5V+15V

AGND

DGND

14.5.3

DAC0832

1
1
255 0 255 2550832

2
0 1 255 0 0832

3
0 1 255 255 255
1 00832
4
512 8
DAC0832

302

tyw

+5 C13

10K

10K
6

Vout

7
U3B
LM324

-12 C12

+5

11

R1

104GND
R
10

104GND
3

R3

1
U3A
LM324

5.1K

1
2
3
4
P0.3
5
P0.2
6
P0.1
7
P0.0
8
+5
9
10

2
C14

R2

+5

GND104 +12

U2
CS
WR1
AGND
DI3
DI2
DI1
DI0
VREF
RFB
GND

VCC
ILE
WR2
XFER
DI4
DI5
DI6
DI7
IOUT2
IOUT1

20
19
18 WR
17 CS
16
15
14
13
12
11

P2.7
P0.4
P0.5
P0.6
P0.7

DAC0832

14-10

2
14-10 a Va

Va = D

V REF
256

D 0255VREF 5V Va=0~5V

V+=V- =0V i+=i-=0A b

Va 0 5 0 0 Vout
+
=
R3
R1
R2
R1 = R2 = 15 K R3 = 7.5 K Vout = (5 + 2Va ) Va=0~-5V
Va=0 Vout = 5V Va=-5 Vout = +5V
14-8
Data

a Va

Vout

0V

-5 V

128

-2.5 V

0 V

255

-5 V

+5 V

3
DAC0832
#include<reg51.h>
#include<absacc.h>
/*******************************DAC0832************************/
#define DAC0832 XBYTE[0x7fff]
#define uchar unsigned char
void sin[128]=
{
0x7F,0x85,0x8B,0x92,0x98,0x9E,0xA4,0xAA,0xB0,0xB6,0xBB,0xC1,0xC6,0xCB,
0xD0,0xD5,0xD9,0xDD,0xE2,0xE5,0xE9,0xEC,0xEF,0xF2,0xF5,0xF7,0xF9,0xFB,
0xFC,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFC,0xFB,0xF9,0xF7,0xF5,0xF2,
0xEF,0xEC,0xE9,0xE5,0xE2,0xDD,0xD9,0xD5,0xD0,0xCB,0xC6,0xC1,0xBB,0xB6,
0xB0,0xAA,0xA4,0x9E,0x98,0x92,0x8B,0x85,0x7F,0x79,0x73,0x6C,0x66,0x60,

303

0x5A,0x54,0x4E,0x48,0x43,0x3D,0x38,0x33,0x2E,0x29,0x25,0x21,0x1C,0x19,
tyw
0x15,0x12,0x0F,0x0C,0x09,0x07,0x05,0x03,0x02,0x01,0x00,0x00,0x00,0x00,
0x00,0x01,0x02,0x03,0x05,0x07,0x09,0x0C,0x0F,0x12,0x15,0x19,0x1C,0x21,
0x25,0x29,0x2E,0x33,0x38,0x3D,0x43,0x48,0x4E,0x54,0x5A,0x60,0x66,0x6C,
0x73,0x79}
/*********************************************************************/
void delay(uchar s)
{
while(s--);
}
/***************************************************************/
/* */
void saw(void)
{
uchar i;
for (i=0;i<255;i++)
{
DAC0832=i;
}
}
/*****************************************************************/
void square(void)
{
DAC0832=0x00; //0x00DAC0832
delay(0x10);

//

DAC0832=0xff; //0xffDAC0832
delay(0x10);

//

}
/***************************************************************/
void trap(void)
{
uchar i;
for(i=0;i<255;i++)
DAC0832=i;

//0~254

DAC0832=255; //255
delay(10);

//

for(i=255;i>0;i--)
DAC0832=i;

//255~1

}
/**************************************************************/
void sina(void)
{
uchar i;
for(i=0;i<128;i++)

304

tyw

DAC0832=sin[i];
}
/***********************************************************************/
void main(void)
{ uchar i;
while(1)
{
/**************************************************************/
for(i=0;i<255;i++)
saw();
/****************************************************************/
for(i=0;i<255;i++)
square();
/**************************************************************/
for(i=0;i<255;i++)
trap()
/**************************************************************/
for(i=0;i<255;i++)
sina()
}
}

14.6 MAX531

MAX531

14.6.1MAX531
MAX531 12 R
2R CMOS , 260A
1 2

1/
2
3 2.048V

305

1
2
3
4
5
6
7

4 INL1/2LSB
5VSSVDD
6
7

MAX531
BIPOFF RFB
DIN
VDD
CLR
VOUT
SCLK
VSS
CS REFOUT
DOUT REFIN
DGND AGND

14
13
12
ty11w
10
9
8

14-11 MAX531

14.6.2MAX531
MAX531 14 DIP 14-9
14-9

BIOFF

AGND

DIN

REFIN

CLR

10

REFOUT

2.048

SCLK

11

VSS

CS

12

VOUT

DAC

DOUT

13

VDD

DGND

14

RFB

____

CS SCLK DIN D/A VOUT


____

CS SCLK
VOUT SCLK SCLK SCLK 16
DIN 12 4 MSB DOUT
____

D/A CS 12 DAC
DOUT 12 25sMAX531 16
DAC DAC
000H DAC
DAC 800H DAC 000H
REFOUT REFIN

14-12 MAX531

306

tyw

14-13 MAX531

Max531

1
BIPOFFRFB VOUT
1 REFOUT=2.048V FFFH DAC
2.048VOUT 2.048V 0~2.048V
BIPOFF RFB VOUT
2 REFOUT=2.048V FFFH DAC
2.048 2 VOUT 4.096V 0~4.096V

MAX531
12 VOUT

VDD

REFIN
REFOUT

RFB

14

MAX531
BIPOFF
DGND
AGND

VOUT

12 VOUT

11

DGND
AGND

VOUT

9
10
C1
33uF
1
7
8

VSS

VDD

1
14

11

7
8

REFIN
BIPOFF
REFOUT
RFB

VSS

9
10
C1
33uF

13

+5

13

+5

0 ~ -5V

0 ~ -5V

aGain=+1

bGain=+2
14-14 MAX531

14-10 0~ VREFIN
Gain=+1

111 111 111

VREFIN

4095
4096

100 000 001

VREFIN

2049
4096

307

100 000 000

VREFIN

2048

=+VREFIN

4096
0111 111 111

VREFIN

tyw

2
2047
4096

000 000 001

VREFIN

4096
000 000 000

0V

Gain=+2
14-11 0~ 2VREFIN

111 111 111

+2VREFIN

4095
4096

100 000 001

+2VREFIN

2049
4096

100 000 000

+2VREFIN

2048

=+VREFIN

4096
0111 111 111

+2VREFIN

2047
4096

000 000 001

+2VREFIN

1
4096

000 000 000

0V

DGND
AGND

RFB
VOUT

14
12 VOUT

11

7
8

REFIN
REFOUT
BIPOFF

VSS

9
10
C11
33uF

VDD

13

+5

-5V

14-15 MAX531

BIPOFF REFOUT ,
MAX531
V+ = V i+ = i = 0 A R1R2 V+ =

308

V REF + VOUT

VOUT = 2V+ V REF V REF = REFOUT = 2.048V


VOUT = 2V+ 2.048

w
V+ =ty
0V

VOUT = 2.048V V+ = 2.048V VOUT = +2.048V

14-12 -VREFIN~+VREFIN

111 111 111

+VREFIN

2047
2048

100 000 001

+VREFIN

1
2048

100 000 000

0V

0111 111 111

-VREFIN

1
2048

000 000 001

-VREFIN

2047
2048

000 000 000

-VREFIN

2048

=-VREFIN

2048

14.6.3
P1.7 MAX531
5V 14-16
MAX531 2 4.096V
5V

14-17~20
+5 C2
9
10
+ C1
33uF
1
8
7

+12
U?
Vout

R2 10K

R3 10K

14
12

REFIN VDD
REFOUT
U1 SCLK
MAX531 DIN
CS
BIPOFF
AGND
GND
VSS
RFB
VOUT

1
4

UA741
-12
R1 50K

14-16

309

13
4
2
5

11

104
P1.0
P1.1
P1.2

tyw

#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
/*********************************************************************/
sbit DATA=P1^1;

//

sbit CS=P1^2;

//

sbit SCK=P1^0;

//

uchar flag=0,key1=0;

//flagkey1

/*********************************************/
uint code sin[256]=
{
0x7FF,0x831,0x863,0x896,0x8C8,0x8FA,0x92B,0x95D,0x98E,0x9C0,0x9F1,0xA21,
0xA51,0xA81,0xAB1,0xAE0,0xB0F,0xB3D,0xB6A,0xB98,0xBC4,0xBF0,0xC1C,0xC46,
0xC71,0xC9A,0xCC3,0xCEB,0xD12,0xD38,0xD5E,0xD83,0xDA7,0xDCA,0xDEC,0xE0D,
0xE2E,0xE4D,0xE6C,0xE89,0xEA5,0xEC1,0xEDB,0xEF5,0xF0D,0xF24,0xF3A,0xF4F,
0xF63,0xF75,0xF87,0xF97,0xFA6,0xFB4,0xFC1,0xFCD,0xFD7,0xFE0,0xFE8,0xFEF,
0xFF5,0xFF9,0xFFC,0xFFE,0xFFE,0xFFE,0xFFC,0xFF9,0xFF5,0xFEF,0xFE8,0xFE0,
0xFD7,0xFCD,0xFC1,0xFB4,0xFA6,0xF97,0xF87,0xF75,0xF63,0xF4F,0xF3A,0xF24,
0xF0D,0xEF5,0xEDB,0xEC1,0xEA5,0xE89,0xE6C,0xE4D,0xE2E,0xE0D,0xDEC,0xDCA,
0xDA7,0xD83,0xD5E,0xD38,0xD12,0xCEB,0xCC3,0xC9A,0xC71,0xC46,0xC1C,0xBF0,
0xBC4,0xB98,0xB6A,0xB3D,0xB0F,0xAE0,0xAB1,0xA81,0xA51,0xA21,0x9F1,0x9C0,
0x98E,0x95D,0x92B,0x8FA,0x8C8,0x896,0x863,0x831,0x7FF,0x7CD,0x79B,0x768,
0x736,0x704,0x6D3,0x6A1,0x670,0x63E,0x60D,0x5DD,0x5AD,0x57D,0x54D,0x51E,
0x4EF,0x4C1,0x494,0x466,0x43A,0x40E,0x3E2,0x3B8,0x38D,0x364,0x33B,0x313,
0x2EC,0x2C6,0x2A0,0x27B,0x257,0x234,0x212,0x1F1,0x1D0,0x1B1,0x192,0x175,
0x159,0x13D,0x123,0x109,0x0F1,0x0DA,0x0C4,0x0AF,0x09B,0x089,0x077,0x067,
0x058,0x04A,0x03D,0x031,0x027,0x01E,0x016,0x00F,0x009,0x005,0x002,0x000,
0x000,0x000,0x002,0x005,0x009,0x00F,0x016,0x01E,0x027,0x031,0x03D,0x04A,
0x058,0x067,0x077,0x089,0x09B,0x0AF,0x0C4,0x0DA,0x0F1,0x10A,0x123,0x13D,
0x159,0x175,0x192,0x1B1,0x1D0,0x1F1,0x212,0x234,0x257,0x27B,0x2A0,0x2C6,
0x2EC,0x313,0x33B,0x364,0x38D,0x3B8,0x3E2,0x40E,0x43A,0x466,0x494,0x4C1,
0x4EF,0x51E,0x54D,0x57D,0x5AD,0x5DD,0x60E,0x63E,0x670,0x6A1,0x6D3,0x704,
0x736,0x768,0x79B,0x7CD};
/*********************************************************************/
void delay(uint i)
{
unsigned int j;
for(;i!=0;i--)
for(j=20;j!=0;j--);
}
/*******************************dac0832*******************************/
void output(uint dat)
{

310

tyw

uchar i=12;
CS=0;

//

while(i--)

//12DA12

{
if(dat&0x0800) DATA=1;//121
else
DATA=0;
SCK=1;

//

_nop_();
_nop_();
SCK=0;

//

_nop_();
_nop_();
dat=dat<<1;

//

}
CS=1;

//

}
/*****************************************************************/
void square(void)
{
output(0x0fff); //0x0fff max5314.096V
delay(50);

//

output(0x0000); //0x0000 max5310V


delay(50);

//

}
/***************************************************************/
void saw(void)
{
uint i;
for(i=0;i<0x1000;i++)
{
output(i); //i0~0xfff
}
}
/***************************************************************/
void trigle(void)
{
uint i;
for(i=0;i<0x0fff;i++)
output(i); //i0~0x0ffe
for(i=0x0fff;i>0;i--)
output(i); // i0x0fff~0x0001
}
/***************************************************************/

311

tyw

void keyscan()
{

while((P1&0x80)==0) //(P1&0x80)==0P1.7
key1=1;

//key1=1

}
/***********************************************************************/
void main()
{
uint i;
while(1)
{
keyscan();
if(key1==1)

//
//key1==1flag1flag==4

{
flag++;

//

if(flag==4) flag=0;//40
key1=0;

//

}
switch(flag)

//flag

{
case 0:{for(i=0;i<256;i++) output(sin[i]);keyscan();}break;
//flag==0
case 1: saw(); keyscan(); break;

//flag==1

case 2: square();keyscan(); break;

//flag==2

case 3: trigle();keyscan(); break;


}
}
}

14-17

312

//flag==3

tyw

14-18

14-19

313

tyw

14-20

314

tyw

15   
RTX51

RTX51

15.1RTX51


WINDOWS

RTX51
RTX51

315

tyw

15.2

CPU

RTX51uc/os-VxWorksLinux WinCE
51 RTX51
ROMRAM 51
uc/os- 51
51 51
RTX51
RTX51 Keil 80C51
Real Time Operation System, RTOSRTX51 RTX51 Full RTX51 Tiny
316

RTX51 Full 4 256


tyw
RTX51 Tiny RTX51 Full
900 51 RTX51 Tiny
16

RTOS
RTX51 Full
RTX51 Tiny
Keil RTX51 Tiny

RTX51 Tiny
RTX51 Tiny RTX51 Tiny

15.3

1
1 15-1

1
4.7k

9
8
7
6
5
4
3
2
1

+5

40
31

a b c d e f g dp U2

K1
K2
K3
K4
C1
30pF

5
6
7
8
18
Y1
12M
19

P1.4
P1.5
P1.6
P1.7
X2

X1

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

8550

4.7K

Q1

Q2

Q3

Q5

Q6

12

9
Q4
8550

COM4

11

COM1 COM2 COM3


10

COM4
12

R10
R11
R12
R13
R14
R15
R16
R17

COM1 COM2 COM3


11

28
27
26
25
24
23
22
21

a b c d e f g dp U3

470

10

R2
R3
R4
R5
R6
R7
R8
R9

Q7

Q8
8550
+5

89S51
20

C2
30pF

R1
10K

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

39
38
37
36
35
34
33
32

10K

RST

GND

VCC
EA

C3
10uF U1
+5

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

+5

15-1

2
15-2
count 0
count
count
317

qianweibaiweishiwei gewei
tyw
P0
COUNT

main()

count0

count=0

KEY()

K6
count1K7count
1

process()

count
qianwei
baiweishiweigewei

display()

qianweibaiweishiweigewei
P0

15-2

3
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit

k6 = P1^6;

//k6P1.6

sbit

k7 = P1^7;

//k7P1.7

uchar Table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//
uchar qianwei,baiwei,shiwei,gewei;//4count
uint count=0;//
uint i=0;//icountcount
//***********************/
void display(void);

//

void process(uint i);

//

void key(void);

//

/*************************************************************/
void delayms(uchar ms)
{

uchar i;
while(ms--)
{
for(i = 0; i < 120; i++);
}

318

/***************************************************************/

tyw

void display(void) //P


{
P2=0xf7;

//P2.3

P0=Table[qianwei];

//TableP0

delayms(1);

//

P2=0xfb;

//P2.2

P0=Table[baiwei];

//TableP0

delayms(1);

//

P2=0xfd;

//P2.1

P0=Table[shiwei];

//TableP0

delayms(1);

//

P2=0xfe;

//P2.0

P0=Table[gewei];

//TableP0

delayms(1);

//

P2=0xff;

//P2"1"

}
/***************************************************************/
void process(void)
{
qianwei=i/1000;

//iqianwei

i=i%1000;

//i1000i

baiwei=i/100;

//ibaiwei

i=i%100;

//i100i

shiwei=i/10;

//ishiwei

i=i%10;

//i

gewei=i;

//igewei

}
/******************************************************/
void key(void)
{
bit key_jia=0,key_jian=0;

//

while((1&k6)==0) key_jia=1;

//k6 key_jia=1

while((1&k7)==0) key_jian=1;

//k6 key_jian=1

if (key_jia==1)

//1

{
key_jia=0;

//0count1count++

if (count!=9999)
count++;
i=count;

//count9999
//count1
//counti

}
if (key_jian==1)

//1

{
key_jian=0;

//0count1count--

319

if (count!=0)
count--;
i=count;

//count0

tyw

//count1
//counti

}
}
/*****************************************************************/
void main(void)
{
count=0;

//count0

while(1)

//while

{
key();

//

process();

//count

display();

//count

}
}

main()

display()
k6
while((1&k6)==0) key_jia=1 1
key_jia=1

display() key()
while((1&k7)==0) key_jian=1;while((1&k6)==0) key_jia=1;

while((1&k7)==0) { key_jian=1; display(); }while((1&k6)==0) { key_jia=1; display(); }


while (1&k7)==0 (1&k6)==0
{ }

320

yw
RTX51 t
RTX51

CPU

RTX51
RTX51 Tiny

15.4
RTX51

#include <reg51.h>
#include <rtx51tny.h>
#define uchar unsigned char
#define uint unsigned int
sbit

k6 = P1^6;

//k6P1.6

sbit

k7 = P1^7;

//k7P1.7

uchar Table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//
uchar qianwei,baiwei,shiwei,gewei;//4count
uint count=0;//
uint i=0;//icountcount
/*****************************0********************************/
initial()

_task_ 0

//0

{
os_create_task(1);

//1

os_create_task(2);

//2

os_create_task(3);

//3

os_delete_task(0);

//0

}
/******************************************************/
key()

_task_ 1

//1count

{
bit key_jia=0,key_jian=0;

//

while(1)
{
while((1&k6)==0) key_jia=1;

//k6 key_jia=1

while((1&k7)==0) key_jian=1;

//k6 key_jian=1

if (key_jia==1)

//1

{
key_jia=0;

//0count1count++
321

//count9999
tyw

if (count!=9999)
count++;

//count1

i=count;

//counti

os_send_signal(2);

//22

}
if (key_jian==1)

//1

{
key_jian=0;

//0count1count--

if (count!=0)

//count0

count--;

//count1

i=count;

//counti

os_send_signal(2); //22
}
os_wait(K_TMO,3,0);

//

}
}
/***************************************************************/
process()

_task_

//2process()count

{
while(1)
{
qianwei=i/1000;

//iqianwei

i=i%1000;

//i1000i

baiwei=i/100;

//ibaiwei

i=i%100;

//i100i

shiwei=i/10;

//ishiwei

i=i%10;

//i

gewei=i;

//igewei

os_wait1(K_SIG);

//

}
}
/***************************************************************/
display()

_task_

//3display()count

{
while(1)
{
P2=0xf7;
P0=Table[qianwei];

//P2.3
//TableP0

os_wait(K_TMO,1,0);
P2=0xfb;
P0=Table[baiwei];

//P2.2
//TableP0

os_wait(K_TMO,1,0);
P2=0xfd;

//P2.1

322

P0=Table[shiwei];

//TableP0

tyw

os_wait(K_TMO,1,0);
P2=0xfe;

//P2.0

P0=Table[gewei];

//TableP0

os_wait(K_TMO,1,0);
P2=0xff;
}
}

15.4.1 main()
main()
main() RTX51
main() main()
key() key() _task_ 1
process() process() _task_ 2 display
display() _task_ 3

_task__task_123

_task_
_task_
1
2

3 RTX51 Tiny, RTX51


Full RTX51 Tiny 16 _task_
0 15

_task__task_process()
_task_ 2process()
_task_
_task_

main()

0
/*****************************0********************************/
initial()

_task_ 0

{
os_create_task(1);
os_create_task(2);
os_create_task(3);
os_delete_task(0);
}

323

15.4.2

tyw

os_create_task(1) os_delete_task(0)

0 os_create_task(n) 12 3
0initial()
0 0
os_delete_task(0)
0 os_delete_task(0) 0
0 ROM
ROM 0
os_create_task(0)
0

15.4.3
0
1key() 2process()
3display()

CPU CPU

CPU

while(1)

//while

{
key();

//

process();

//count

display();

//count

324

CPU
tyw

CPU

RTX51 Tiny (Conf_tny.a51 15-3 ) INT_CLOCK


TIMESHARING INT_CLOCK
,TIMESHARING
INT_CLOCK 10000
10ms TIMESHARING=1 10ms
TIMESHARING=2 20msTIMESHARING=5
50ms

15-3 Conf_tny.a51

INT_CLOCK ,
INT_CLOCK 10000
10ms 10ms
INT_CLOCK 10000
10ms 12M
1 INT_CLOCK 10000 10ms
TIMESHARING

CPU

CPU

CPU

325

RTX51 Tiny os_wait os_wait


tyw

char

os_wait(unsigned char event_sel,


unsigned

char ticks,

unsigned int dummy);

//event_sel
//ticksevent_sel
//dummyRTX51 TinyRTX51

os_wait event_sel
K_IVLK_SIG K_TMO

K_IVL
K_SIG
K_TMO

os_wait(K_TMO,1,0)
delay()
delay() CPU delay()CPU
RTX51 Tiny os_wait(K_TMO,1,0)
CPU CPU
os_wait(K_TMO,1,0)
os_wait(K_TMO,1,0)CPU CPU
CPU
os_wait(K_TMO,1,0) os_wait(K_TMO,1,0)

/***************************************************************/
display()

_task_

//3display()count

{
while(1)
{
P2=0xf7;
P0=Table[qianwei];

//P2.3
//TableP0

os_wait(K_TMO,1,0);
P2=0xfb;
P0=Table[baiwei];

//P2.2
//TableP0

os_wait(K_TMO,1,0);
P2=0xfd;
P0=Table[shiwei];

//P2.1
//TableP0

os_wait(K_TMO,1,0);
P2=0xfe;
P0=Table[gewei];

//P2.0
//TableP0

os_wait(K_TMO,1,0);
P2=0xff;
}
}

16 16 16

326

CPU
tyw
CPU

CPU

CPU

os_wait(K_TMO,1,0)

15.4.4 RTX51Tiny
1os_wait
os_wait
char

os_wait(unsigned char event_sel,


unsigned

char ticks,

unsigned int dummy);

//event_sel
//ticksevent_sel
//dummyRTX51 TinyRTX51

2os_wait1
os_wait1
char

os_wait1 (unsigned char event_sel );

//event_sel

os_wait1 os_wait event_sel


K_SIG CPU

PWM

os_wait1K_SIG

process()
key() process()
os_wait1(K_SIG);
os_send_signal(2)

3os_send_signal
os_send_signal
char

os_send_signal (unsigned char task_id );

//task_idl
327

os_send_signal
tyw

1 key() os_send_signal(2), 2
process() 2
process() os_wait1K_SIG
os_send_signal(2)

4isr_send_signal
isr_send_signal
char

os_send_signal (unsigned char task_id );

//task_idl

os_send_signal os_send_signal
isr_send_signal

5os_create_task
os_create_task
char

os_create_task (unsigned char task_id );

//task_idl

task_idtask_id 015
READY
_task_ ID ID
0 123
initial()

_task_ 0

{
os_create_task(1);
os_create_task(2);
os_create_task(3);
os_delete_task(0);
}

_task_ key() 1
/******************************************************/
key()

_task_ 1

//1count

{
bit key_jia=0,key_jian=0;

//

while(1)
{

6os_delete_task
os_delete_task
char

os_delete_task (unsigned char task_id );

//task_idl

task_idtask_id 015

os_create_tasktask_id

process()
os_wait1(K_SIG) os_send_signal(2)

328

os_create_task(2) os_delete_task(2)
tyw
os_delete_task(2)
os_create_task(2)
/******************************************************/
key()

_task_ 1

//1count

{
bit key_jia=0,key_jian=0;

//

while(1)
{
while((1&k6)==0) key_jia=1;

//k6 key_jia=1

while((1&k7)==0) key_jian=1;

//k6 key_jian=1

if (key_jia==1)

//1

{
key_jia=0;

//0count1count++

if (count!=9999)

//count9999

count++;

//count1

i=count;

//counti

os_create_task(2);

//22

}
if (key_jian==1)

//1

{
key_jian=0;

//0count1count--

if (count!=0)

//count0

count--;

//count1

i=count;

//counti

os_create_task(2);

//22

}
os_wait(K_TMO,3,0);

//

}
}
/***************************************************************/
process()

_task_

//2process()count

{
while(1)
{
qianwei=i/1000;

//iqianwei

i=i%1000;

//i1000i

baiwei=i/100;

//ibaiwei

i=i%100;

//i100i

shiwei=i/10;

//ishiwei

i=i%10;

//i

gewei=i;

//igewei

os_delete_task(2);

//2

329

tyw

}
}

7os_wait2
os_wait2
char

os_wait2(unsigned char event_sel,


unsigned

//event_sel

char ticks,

//ticksevent_sel

os_wait os_wait
os_wait

8os_running_kask_id
os_running_kask_id
char

os_running_kask_id (void )

015

0002
/***************************************************************/
process()

_task_

//2process()count

{ unsigned char i;
while(1)
{
i=os_running_task_id();

//

qianwei=i/1000;

//iqianwei

i=i%1000;

//i1000i

baiwei=i/100;

//ibaiwei

i=i%100;

//i100i

shiwei=i/10;

//ishiwei

i=i%10;

//i

gewei=i;

//igewei

os_wait1(K_SIG);

//2

}
}

15.4.5
RTX51

RTX51 Tiny

330

tyw

15-4

RTX51
1. 52
2. rtx51tny.h #include <rtx51tny.h>
3. Target1 Options for
TargetTarget1, 15-5 Target Operating
RTX-51 Tiny 15-6

Conf_tny.a51 INT_CLOCK 1000 TIMESHARING 2 15-7

15-5 Options for TargetTarget1

331

tyw

15-6 RTX-51 Tiny

15-7 INT_CLOCK TIMESHARING

INT_CLOCK 100TIMESHARING 1
INT_CLOCK 500 TIMESHARING 1
INT_CLOCK 10000TIMESHARING 5

RTX51
0 os_wait
0
INT_CLOCK 0 INT_CLOCK 50000
12 0 50ms
display() os_wait(K_TMO,1,0) 50ms

332

os_wait(K_TMO,20,0) 1
tyw
2000 INT_CLOCK 2000
os_wait(K_TMO,n,0) INT_CLOCK os_wait(K_TMO,n,0)
INT_CLOCKn
INT_CLOCKTIMESHARING
INT_CLOCK TIMESHARING CPU
INT_CLOCK 500 INT_CLOCK
0 500
0 CPU 0

CPU
0 INT_CLOCK
INT_CLOCK

333

tyw

1 P080H

2 P190H

3 P2A0H
4 P3B0H
P0~P3 0
SETBCLR setb p0.0
5 SP81H
PUSH

SP SPSP
SP 07H
PUSH 08H 1
08H SP 1 08H
1 R0

6 DPL82H
7 DPH83H
DPDR DPHDPL 8 DPH
DPL 8 DPTR FLASH ROM
DPTR DPHDPL

8 PCON87H
D7

D6

D5

D4

D3

D2

D1

D0

SMOD

PD

IDL

1SMOD SMOD=1SMOD=0
2PDPD=0PD=1
3IDLIDL =0IDL =1
9 TMOD89 H
GATE

C/T

M1

M0

GATE

T1

C/T

M1

M0

T0

GATEGATE=1/ TR1TR0 INT0INT1


GATE=0 TR1TR0
C/TC/T=0C/T=1
M1M0: 0 0
0TLX 5 THX 8 13
0 1 1TLX THX 16
1 0 2 TLX THX TLX
1 1 3 T0 8 T1
10/ 0 TL08BH

11/ 0 TH08DH

334

/ 0 16 TL0 8 TH0 8
tyw
/ 0 1
CPU CPU

12/ 1 TL18AH

13/ 1 TH18CH

/ 1 16 TL1 8 TH1 8
/ 1 1
CPU CPU
1 2
14 TCON88H
D7

D6

D5

D4

D3

D2

D1

D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TF10 1 0
TR10 1 0 GATE=0TR10=1 T10
TR10=0 INT10=0 T10 GATE=1TR1
0=1 INT10=1 T10
IE10 10
0
IT10 10 1 0IT10=1
IT10=0
15 SCON98H
D7

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0SM1
SM0 SM1

8 I/O

Fosc/12

10

11

Fosc/32 Fosc/64

11

SM2 0 SM2 0 1 SM2=1


RI 1 2 3 SM2=1 9 RB8=0
RI 1
REN 1 0
TB8 9
RB8 1 SM2=0RB8 23 9
TI
RI
335

16 SBUF99H
tyw
SBUF
SBUF 99H MOV SBUF, A
MOV A, SBUF
17 IEA8H
D7

D6

EA

D5

D4

D3

D2

D1

D0

ET2

ES

ET1

EX1

ET0

EX0

EAEA=0EA=1
IE.6
ET2/ 2 0 1
ES 0 1
ET10/ 10 0 1
EX10 10 0 1
IP
19 PSWD0H
D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

F1

CY
MCS-51 8 28 0-255
255 CY 79H+87H01111001+01010111=1
000000001 CY
AC
D3 D4 /AC=1
F0

RS1RS0
0 -3 RS1RS0
8
R0-R7CPU
0V
0V=1
MOV A#80HADD A#90H 1 10H A 0V=1
P
A 1 P=1 P=0
58H010110001 P=1
PC

20. ACCE0H
ACC
51
21 BF0H
B MUL AB A
B 8 B 8 A DIV AB A
B A B B
336

tyw

B MCS-51

Rn

RAM

RAM

ROM

MOV A,Rn

MOV A,direct

MOV A,@Ri

MOV A,#data

MOV Rn,A

MOV Rn,direct

MOV Rn,#data

MOV direct,A

MOV direct,Rn

MOV
direct,direct2

MOV direct,@Ri

MOV direct,#data

MOV @Ri,A

MOV @Ri,direct

MOV @Ri,#data

MOV DPTR,#data16

16

MOVX A,@DPTR

RAM

MOVX A,@Ri

RAM

MOVX @DPTR,A

RAM

MOVX @Ri,A

MOVC A,@A+DPTR

+
ROM

+ ROM

MOVC A,@A+PC

337

SP 1

POP direct

SP 1

XCH A,Rn

XCH A,direct

XCH A,@Ri

XCHD A,@Ri

SWAP A

ADD A,Rn

ADD A,direct

ADD A,@Ri

ADD A,#data

ADDC A,Rn

ADDC A,direct

ADDC A,@Ri

ADDC A,#data

SUBB A,Rn

SUBB A,direct

SUBB A,@Ri

SUBB A,#data

INC A

INC Rn

INC direct

INC @Ri

INC DPTR

tyw

PUSH direct

338

ty1w

DEC A

DEC Rn

DEC direct

DEC @Ri

MUL AB

A B B 8 A 8

DIV AB

A B A, B

DA A

A BCD

ANL A,Rn

ANL A,direct

ANL A,@Ri

ANL A,#data

ANL direct,A

ANL direct,#data

ORL A,Rn

ORL A,direct

ORL A,@Ri

ORL A,#data

ORL direct,A

ORL direct,#data

XRL A,Rn

XRL A,direct

XRL A,@Ri

XRL A,#data

XRL direct,A

XRL direct,#data

CLR A

CPL A

RL A

A 1

RLC A

A 1

RR A

A 1

RRC A

A 1

AJMP addr11

2k

LJMP addrl16

ROM 64k

SJMP re1

128 127

339

+
ROM

tyw

JZ re1

JNZ re1

CJNE
A,direct,re1

CJNE A,#data,re1

CJNE
Rn,#data,re1

CJNE
@Ri,#data,re1

DJNZ Rn,re1

1 0

DJNZ direct,re1

1 0

ACALL addr11

2k

LCALL addr16

64k

RET

RETI

NOP

A=0?

JMP @A+DPTR

1
0

CY

Bit

MOV C,bit

MOV bit,C

CLR C

CLR bit

SETB C

SETB bit

ANL C,bit

ANL C,/bit

ORL C,bit

ORL C,/bit

CPL C

CPL bit

JC re1

JNC re1

JB bir,re1

JNB bit,re1

JBC bit,re1

340

C51 

tyw

Keil C

ctype.h
1bit isalnum(char c)
c 1
2bit isalpha(char c)
c 1
3bit iscntrl(char c)
c (0..31 127) 1
4bit isdigit(char c)
c l
5bit isgraph(char c)
c (33127) l
6bit islower(char c)
c l
7bit isprint(char c)
c (32..127) 1
8bit ispunct(char c)
c () l
9bit isspace(char c)
c (0x090x0D 0x20) 1
10bit isupper(char c)
c l
11bit isxdigit(char c)
c 1
12char toascii(char c)
c ASCII
13char toint(char c)
c 09AF
0 15
14char tolower(char c)
c c
15char_tolower(char c)
MACRO c c
16char toupper(char c)
c c
17char_toupper(char c)
MACRO c c

P1.4 test ,
0-3 4-7 0-3 4-7
341

tyw

#include <REGX51.H>
#include <STDIO.H>
#include <ctype.h>
char test[]="a33b3ii89 i4";

//

int i0=0;
/**********/
void delay(void)
{
unsigned char i,j;
for(i=0;i<96;i++)
for(j=0;j<255;j++);
}
/************/
void main(void)
{
P0=0xff;//
while(1)
{
if(P1_4==0)
{
delay();
if(P1_4==0)
{
while(P1_4==0);

//

if(isalpha(test[i0]))
P0=0xF0;
if(isdigit(test[i0]))
P0=0x0F;
if(isspace(test[i0]))
P0=0xff;
if(i0<=11)i0++;
else
i0=0;
}
}
}
}

stdioh

1char_getkey(void)

342

2char getchar(void)
tyw
_getkey
3char putchar(char c)
c
void puts(char *str)
\noutput stream
5int print(const char *fmtstr[,arg1,arg2,])
fmtstr

%c
ASCII
%d

%i

%u

%x

%s
\n
6char *gets(char *str,int len)
getchar str\0
len
7int scanf(const char *fmtstr[,arg1 address,arg2 address,])
fmtstr
8 signed char ssanf(char *str,char flash *fmtstr[,arg1 address,arg2
address,])
scanf str
9int sprintf(char *buffer,const char *fmtstr[,arg1,arg2,])
fmtstr buffer
printf
10char ungetchar(char c)
input stream
11int vprintf(const char *fmtstr,char*argptr)
fmtstr output stream
printf argptr
12int vsprintf(char *buffer,const char*fmtstr,char*argptr)
fmtstr, buffer
printf argptr

stdlib.h
float atof(void*str)
str
nt atoi (void*str)
str
3long atoll(void*str)
343

str
tyw
void *calloc(unsigned int num,unsigned int len)
num len

void free (void xdata *p)


p memory pool
void init_mempool(void xdata *p,unsigned int size)

void *malloc (unsigned int len )


len
int rand (void)
032767
void srand (int seed)
ran
0void *realloc (void sdata *p,unsigned int size)
size p

11unsignetd long strtod (const char *string ,char **p)


str string
12long strtor (const char *string,char **p,unsigned char base)
str string base

13unsigned long strtoul(const char *string,char **p,unsigned char base)


str string
base

P1.4 032767

#include <REGX51.H>
#include <STDIO.H>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
int i0=0;
int a;
uint x;
uint wan;
uint qian;
uint bai;
uint shi;
uint ge;
char shu[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint d)
{

344

tyw

unsigned char i,j;


for(i=0;i<d;i++)
for(j=0;j<255;j++);
}

void display(void)
{
for(x=0;x<=4;x++)
{
P0=shu[ge];
P2=0xfe;
delay(5);

P0=shu[shi];
P2=0xfd;
delay(5);

P0=shu[bai];
P2=0xfb;
delay(5);

P0=shu[qian];
P2=0xf7;
delay(5);

P0=shu[wan];
P2=0xef;
delay(5);
}
}
void main(void)
{
P0=0xff;
P2=0x00;
while(1)
{
display();
if(P1_4==0)
{
delay(30);
if(P1_4==0)
{
while(P1_4==0)
display();

345

tyw

a=rand();
wan=a/10000;
a=a%10000;
qian=a/1000;
a=a%1000;
bai=a/100;
a=a%100;
shi=a/10;
ge=a%10;
}
}
}
}

math.h
1char cabs(char x)
x
2. int abs(int x)
x
3. long labs(long x)
x
4. float fabs(float x)
x
5. float sqrt(float x)
x
6. float floor(float x)
x
7. float ceil(float x)
x
8. float fmod(float x,fload y)
x y
9. float modf(float x,float *ipart)
x ipart

10. float exp(float x)


e**x
11. float log(float x)
x
12. float log10(float x)
x 10
13float pow(float x,float y)
x**y
14float sin(float x)
346

sin(x) x
15float cos(float x)
cos(x) x
16float tan(float x)
tan(x) x
17float sinh(float x)
sinh(x) x
18float cosh(float x)
cosh (x) x
19float tanh(float x)
tanh (x) x
20float asin(float x)
asin(x) x -1 1
21float acos(float x)
acos(x) x -1 1
22float atan(float x)
atan(x)
23float atan2(float x,float y)
atan(y/x)

81 P1.4

#include <REGX51.H>
#include <STDIO.H>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
int i0=0;
int a;
uint x;
uint wan;
uint qian;
uint bai;
uint shi;
uint ge;
char shu[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint d)
{
unsigned char i,j;
for(i=0;i<d;i++)
for(j=0;j<255;j++);
}
void display(void)
{

347

tyw

tyw

for(x=0;x<=4;x++)
{
P0=shu[ge];
P2=0xfe;
delay(5);

P0=shu[shi];
P2=0xfd;
delay(5);

P0=shu[bai];
P2=0xfb;
delay(5);

P0=shu[qian];
P2=0xf7;
delay(5);

P0=shu[wan];
P2=0xef;
delay(5);
}
}
void main(void)
{
P0=0xff;
P2=0x00;
while(1)
{
display();
if(P1_4==0)
{
delay(30);
if(P1_4==0)
{
while(P1_4==0)
display();
a=sqrt(81);
wan=a/10000;
a=a%10000;
qian=a/1000;
a=a%1000;
bai=a/100;
a=a%100;

348

tyw

shi=a/10;
ge=a%10;
}
}
}
}

string.h
1.char *strcat(char *str1,char *str2)
str2 str1 str1
2.char *strncat(char *str1,char *str2,int n)
str2 n str1 str1
3.char *strchr(const char *str,char c)
str c NULL
4.char *strrchr(const char *str,char c)
str c NULL
5.int strpos(const char *str,char c)
str c -1
6. int strrpos(const char *str,char c)
str c -1
7. char *strcmp(char *str1,char *str2)
str1 str2 str1str2 0 str1str2
0 str1str2 0
8. char *strcmp(char *str1,char *str2,int n)
str1 str2 n str1str2 0
str1str2 0 str1str2 0
9. char *strcpy(char *dest,char *src)
scr dest
10. char *strcpy(char *dest,char *src,int n)
scr n dest
11. int strspn(char *str,char *set)
str set set
str str
12. int strcspn(char *str,char *set)
str set
str str
13.char*strpbrk(char*str,char*set)
str set
str NULL
14. char*strpbrk(char*str,char*set)
str set
str NULL
15.int strlen (char*str)
str 0255
349

16.void*memcpy(void*dest,void*src,int n)
tyw
scr n dest dest
17.void*memcpy(void*dest,void*src,charc,int n)
scr dest c NULL n
dest+n+1
18.void*memmove(void*dest,void*src,int n)
scr n dest dest
19.void*memchr(void*buf,unsigned char c,int n)
buf n c c NULL
20.void *memset(void *buf,unsigned char c,int n)
buf n c buf

P1.4 aa

#include <REGX51.H>
#include <STDIO.H>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
int i0=0;
int a;
uint x;

char aa[]="hello";
uint wan;
uint qian;
uint bai;
uint shi;
uint ge;
char shu[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint d)
{
unsigned char i,j;
for(i=0;i<d;i++)
for(j=0;j<255;j++);
}

void display(void)
{
for(x=0;x<=4;x++)
{
P0=shu[ge];
P2=0xfe;
delay(5);

350

tyw

P0=shu[shi];
P2=0xfd;
delay(5);
P0=shu[bai];
P2=0xfb;
delay(5);
P0=shu[qian];
P2=0xf7;
delay(5);
P0=shu[wan];
P2=0xef;
delay(5);
}
}
void main(void)
{
P0=0xff;
P2=0x00;
while(1)
{
display();
if(P1_4==0)
{
delay(30);
if(P1_4==0)
{
while(P1_4==0)
display();
a=strlen(aa);
wan=a/10000;
a=a%10000;
qian=a/1000;
a=a%1000;
bai=a/100;
a=a%100;
shi=a/10;
ge=a%10;
}
}
}
}

intrins.h
1.unsigned char_chkfloat_(float val)

351

val
2.unsigned char_crol_(unsigned char c,unsigned
c b
3.unsigned char_cror_(unsigned char c,unsigned
c b
4.unsigned char_irol_(unsigned char c,unsigned
i b
5.unsigned char_iror_(unsigned char c,unsigned
i b
6.unsigned char_lrol_(unsigned char c,unsigned
l b
7.unsigned char_lror_(unsigned char c,unsigned
l b
8.void _nop_(void)
8051 NOP
9.bit _testbit_(bit b)
8051 JBC b

P0 8 LED

tyw
char b)
char b)
char b)
char b)
char b)
char b)

#include <reg51.h>
#include <intrins.h>

void delayms(unsigned char ms)


//
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
main()
{
unsigned char LED;
LED = 0xfe;
P0 = LED;
while(1)
{
delayms(250);
LED = _crol_(LED,1);

// 1 LED

P0 = LED;
}
}

352

tyw
absacc.h
#define CBYTE ((unsigned char volatile code *) 0)
#define DBYTE ((unsigned char volatile data *) 0)
#define PBYTE ((unsigned char volatile pdata *) 0)
#define XBYTE ((unsigned char volatile xdata *) 0)
8051
CBYTE CODE DBYTE DATA PBTYE XDATA MOVX @R0 XBYTE
XDATA MOVX @DPTR
#define CWORD ((unsigned int volatile code *) 0)
#define DWORD ((unsigned int volatile data *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)
unsigned int
8051

14.5.3

353

tyw

D.1

1910

1912 4 15

1503
SOS 18
40
705

1906 1965 1948 J.W.H.


W.B.

D.2

7805

D.2.1
D-1 abc

354

d
tyw

(b)

(d)

(c)
D-1

D.2.2
NPN PNP
ab

aNPN

bPNP

D-2

PN

D.2.3
NPN PNP NPN

355

yw
b e C bt
VCC VBB

D-3

IE,
IC
1-10% VBB
IB

IB
IC IC IB
N

D.2.4

1
IB 0 IC=IB IC 0

356

VCC iC uCE=VCC-iCRC
uCE
tyw
0.7V
iB iC

UCEUBE

ICSIBSUCES

UCEUCES

iC=iB

3
iC iB iB iC
iC iB uCE
IB

D.3

357

tyw

D.3.1
1
NPN

Vi=0

(vi0)

NPN

RC

RB
VCC
VBB

D-4

VBB Rb VBE 0.7V

0.2V IB
2
:
IB= (VCC-VBE)/Rb
IC=*IB
-VCE= VCC-IC*RC
VCC RC

358

tyw
+

C1
NPN

RC

uo.

RB

RL

ui

VCC

VBB

D-5

C1 C2

Vi C1 VBE
vBE, iB ,Vi iB
iC iB
iC iB Rc iC vCE

359

tyw

D-6

4
1

VCC

360

tyw

2
Ui Ii
Ri Ui
Us
3 Ro Ro
Ro RL Uo
D.3.2

1
+12

R2
1.24M
C1

C2

Q1
9013

+
u i=27mV
-

R1
5.1K

220uF

+
uo

220uF

D-7

D-8

D-7
2.
D-9
5V
+12

R2
3.9k

R1
100

+
+
ui
-

Q1
9013

uo
-

D-9
361

D-10

D-11
tyw
PNP
5V
0V

P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

Q2

Q3

Q4

Q5

Q6

Q7

D-11

362

DIG4

DIG3
8

8550 Q1
4.7K
R1
R2
R3
R4
R5
R6
R7
R8

DIG2

A
B
C
D
E
F
G
DP
DIG1
12

DIG4
6

DIG3
8

DIG2
9

U3

12

DIG1

A
B
C
D
E
F
G
DP

U2

11
7
4
2
1
10
5
3

470 R9
R10
R11
R12
R13
R14
R15
R16
11
7
4
2
1
10
5
3

P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0

Q8
+5

tyw

E.1

10
1965
CPU

E.2

Auo
rid
ro 0

363

tyw

K CMRR

0
0

1.5V

E.3

E.3.1
1
A B 0 v = v +
B A
0V
0 R1 R f

ui 0 0 u0
=
R1
RF

u o =

Rf
R1

ui

364

Vo Vi
tyw

E-1 E-2

SGND

+12
R1
3.9k
3
R2

U1A
1

3.9k
11

+
ui
-

+
uo
-

LM324

SGND

-12
RF

SGND

7.8k

E-1

E-2

2
E-3 Vi B Vo
Rf A Vo= (1 +

Rf
R1

)u i

Rf R1 Vo
(1 +

Rf
R1

)i

E-3 E
-4

E-3

E-4

365

E.3.2

tyw

1. 0V 50%

+12

U1A

+
ui
-

+
uo
-

SGND

11

LM324

-12

SGND

SGND

E-5

E-6

2.+2.5V 33.3%

+12

+
ui
-

1
2

R1
3.9K

SGND

U1A

R2
3.9K

LM324
11

+5

-12

+
uo
SGND

SGND

E-7

E-8

366

tyw

F
1

781278057912

G-1
C1C6 C2C7
7812 7912 7812 7912 12V
-12V 12V 7805 7805
5V
1
1N4007
D8

1N4007

DIODE

+ C1
470u

C6
104

7805

+12
3

+ C3
470u

1
2

+5

Vin

+5V

C8
104

3
+ C5
470u

R2
C10 1K
104

D10
LED

J1

1N4007
D2

+12V

T1

Vin

GND

7812

D5

GND

D1

CON2
D3

D6

1N4007
D4

1N4007
D7

1N4007

1N4007

TRANS5
+ C4
470u

U2
7912

C7
104
2

GND

+ C2
470u

R1
2K

D9
LED

C9
104
-12

Vin

-12V

F-1 12V5V -12V

2 LM317
LM317 1.5A 1.2537V
R1RP1 1.25V
R1RP1 RP1 RP1
R1 3.5mALM317
2W 2002004mm3 15WVD1(IN4002)
ICVD2(IN4002)

C2 IC C3 IC
1.2537V 1.5A
1N4002
Vin

D1
4

28~

3A/50V

TRANS1

C1
2200uF/50V

R1

VD1
1N4002
C4
100uF/50V

C2
0.33uF

1.25V-37V
RP1
5.1K

220~

T1

+Vout
ADJ

U1 LM317

C3
10uF/50V

F-2 LM317

367

tyw

G
G-1 5%

1.0

1.1

1.2

1.3

1.5

1.6

1.8

2.0

2.2

2.4

2.7

3.0

3.3

3.6

3.9

4.3

4.7

5.1

5.6

6.2

6.8

7.5

8.2

9.1

10

11

12

13

15

16

18

20

22

24

27

30

33

36

39

43

47

51

56

62

68

75

82

91

100

110

120

130

150

160

180

200

220

240

270

300

330

360

390

430

470

510

560

620

680

750

820

910

1k

1.1 k

1.2 k

1.3 k

1.5 k

1.6 k

1.8 k

2 k

2.2 k

2.4 k

2.7 k

3 k

3.2 k

3.3 k

3.6 k

3.9 k

4.3 k

4.7 k

5.1 k

5.6 k

6.2 k

6.6 k

7.5 k

8.2 k

9.1 k

10 k

11 k

12 k

13 k

15 k

16 k

18 k

20 k

22 k

24 k

27 k

30 k

33 k

36 k

39 k

43 k

47 k

51 k

56 k

62 k

68 k

75 k

82 k

91 k

100 k

110 k

120 k

130 k

150 k

160 k

180 k

200 k

220 k

240 k

270 k

300 k

330 k

360 k

390 k

430 k

470 k

510 k

560 k

620 k

680 k

750 k

820 k

910 k

1M

1.1 M

1.2 M

1.3 M

1.5 M

1.6 M

1.8 M

2 M

2.2 M

2.4 M

2.7 M

3 M

3.3 M

3.6 M

3.9 M

4.3 M

4.7 M

5.1 M

5.6 M

6.2 M

6.8 M

7.5 M

8.2 M

9.1 M

10 M

15 M

22 M

G-2 1%

10

10.2

10.5

10.7

11

11.3

11.5

11.8

12

12.1

12.4

12.7

13

13.3

13.7

14

14.3

14.7

15

15.4

15.8

16

16.2

16.5

16.9

17.4

17.8

18

18.2

18.7

19.1

19.6

20

20.5

21

21.5

22

22.1

22.6

23.2

23.7

24

24.3

24.7

24.9

25.5

26.1

26.7

27

27.4

28

28.7

29.4

30

30.1

30.9

31.6

32.4

33

33.2

34

34.8

35.7

36

36.5

37.4

38.3

39

39.2

40.2

41.2

42.2

43

43.2

44.2

45.3

46.4

47

47.5

48.7

49.9

51

51.1

52.3

53.6

54.9

56

56.2

57.6

59

60.4

61.9

62

63.4

64.9

66.5

68

68.1

69.8

71.5

73.2

75

75.5

76.8

78.7

80.6

82

82.5

84.5

86.6

88.7

90.9

91

93.1

95.3

97.6

100

102

105

107

110

113

115

118

120

121

124

127

130

133

137

140

143

147

150

154

158

160

162

165

169

174

178

180

182

187

191

196

200

205

210

215

220

221

226

232

237

240

243

249

255

261

267

270

274

280

287

294

300

301

309

316

324

330

332

340

348

350

357

360

365

374

383

390

392

402

412

422

430

432

368

yw
t523

442

453

464

470

475

487

499

510

511

536

549

560

562

565

578

590

604

619

620

634

649

665

680

681

698

715

732

750

768

787

806

820

825

845

866

887

909

910

931

953

976

1 k

1.02 k

1.05 k

1.07 k

1.1 k

1.13 k

1.15 k

1.18 k

1.2 k

1.21 k

1.24 k

1.27 k

1.3 k

1.33 k

1.37 k

1.4 k

1.43 k

1.47 k

1.5 k

1.54 k

1.58 k

1.6 k

1.62 k

1.65 k

1.69 k

1.74 k

1.78 k

1.8 k

1.82 k

1.87 k

1.19 k

1.96 k

2 k

2.05 k

2.1 k

2.15 k

2.2 k

2.21 k

2.26 k

2.32 k

2.37 k

2.4 k

2.43 k

2.49 k

2.55 k

2.61 k

2.67 k

2.7 k

2.74 k

2.8 k

2.87 k

2.94 k

3.0 k

3.01 k

3.09 k

3.16 k

3.24 k

3.3 k

3.32 k

3.4 k

3.48 k

3.57 k

3.6 k

3.65 k

3.74 k

3.83 k

3.9 k

3.92 k

4.02 k

4.12 k

4.22 k

4.32 k

4.42 k

4.53 k

4.64 k

4.7 k

4.75 k

4.87 k

4.99 k

5.1 k

5.11 k

5.23 k

5.36 k

5.49 k

5.6 k

5.62 k

5.76 k

5.9 k

6.04 k

6.19 k

6.2 k

6.34 k

6.49 k

6.65 k

6.8 k

6.81 k

6.98 k

7.15 k

7.32 k

7.5 k

7.68 k

7.87 k

8.06 k

8.2 k

8.25 k

8.45 k

8.66 k

8.8 k

8.87 k

9.09 k

9.1 k

9.31 k

9.53 k

9.76 k

10 k

10.2 k

10.5 k

10.7 k

11 k

11.3 k

11.5 k

11.8 k

12 k

12.1 k

12.4 k

12.7 k

13 k

13.3 k

13.7 k

14 k

14.3 k

14.7 k

15 k

15.4 k

15.8 k

16 k

16.2 k

16.5 k

16.9 k

17.4 k

17.8 k

18 k

18.2 k

18.7 k

19.1 k

19.6 k

20 k

20.5 k

21 k

21.5 k

22 k

22.1 k

22.6 k

23.2 k

23.7 k

24 k

24.3 k

24.9 k

25.5 k

26.1 k

26.7 k

27 k

27.4 k

28 k

28.7 k

29.4 k

30 k

30.1 k

31.9 k

31.6 k

32.4 k

33 k

33.2 k

33.6 k

34 k

34.8 k

35.7 k

36 k

36.5 k

37.4 k

38.3 k

39 k

39.2 k

40.2 k

41.2 k

42.2 k

43 k

43.2 k

44.2 k

45.3 k

46.4 k

47 k

47.5 k

48.7 k

49.9 k

51 k

51.1 k

52.3 k

53.6 k

54.9 k

56 k

56.2 k

57.6 k

59 k

60.4 k

61.9 k

62 k

63.4 k

64.9 k

66.5 k

68 k

68.1 k

69.8 k

71.5 k

73.2 k

75 k

76.8 k

78.7 k

80.6 k

82 k

82.5 k

84.5 k

86.6 k

88.7 k

90.9 k

91 k

93.1 k

95.3 k

97.6 k

100 k

102 k

105 k

107 k

110 k

113 k

115 k

118 k

120 k

121 k

124 k

127 k

130 k

133 k

137 k

140 k

143 k

147 k

150 k

154 k

158 k

160 k

162 k

165 k

169 k

174 k

178 k

180 k

182 k

187 k

191 k

196 k

200 k

205 k

210 k

215 k

220 k

221 k

226 k

232 k

237 k

240 k

243 k

249 k

255 k

261 k

267 k

270 k

274 k

280 k

287 k

294 k

300 k

301 k

309 k

316 k

324 k

330 k

332 k

340 k

348 k

357 k

360 k

365 k

374 k

383 k

390 k

392 k

402 k

412 k

422 k

430 k

432 k

442 k

453 k

464 k

470 k

475 k

487 k

499 k

511 k

523 k

536 k

549 k

560 k

562 k

576 k

590 k

604 k

619 k

620 k

634 k

649 k

665 k

680 k

681 k

698 k

715 k

732 k

750 k

768 k

787 k

806 k

820 k

825 k

845 k

866 k

887 k

909 k

910 k

931 k

953 k

976 k

1.0 M

1.5 M

2.2 M

369

tyw

H
H-1 1N

URM/V

IF/A

IFSM/A

UF/V

IR/A

/kHz

30

1.5

75

1N4000

25

1N4001

50

1N4002

100

1N4003

200

1N4004

400

1N4005

600

1N4006

800

1N4007

1000

1N5100

50

1N5101

100

1N5102

200

1N5103

300

1N5104

400

1N5105

500

1N5106

600

1N5107

800

1N5108

1000

1N5200

50

1N5201

100

1N5202

200

1N5203

300

1N5204

400

1N5205

500

1N5206

600

1N5207

800

1N5208

1000

1N5400

50

1N5401

100

1N5402

200

1N5403

300

1N5404

400

1N5405

500

1N5406

600

1N5407

800

1N5408

1000

DO-41

DO-15

100

10

150

0.8

10

370

DO-27

tyw
H-2

IN 2CW2DW

IZ/mA

IZM/mA

-4

CTV/(10 /)

UZ/V

RZ/

IN748

3.84.0

100

IN752

5.2~5.7

35

IN753

5.88~6.12

IN754

6.3~7.3

15

IN754

6.66~7.01

15

IN755

7.07~7.25

IN757

8.9~9.3

20

IN962

9.5~11.9

25

IN962

10.9~ 11.4

12

IN963

11.9~12.4

35

IN964

13.5~14.0

35

IN964

12.4~14.1

10

IN969

20.8~23.3

35

2CW50

1.0~2.8

50

-9

83

2CW51

2.5~3.5

60

-9

71

2CW52

3.2~4.5

70

-8

55

2CW53

4.0~5.8

50

-6~4

41

2CW54

5.5~6.5

30

-3~5

38

2CW55

6.2~7.5

15

2CW56

7.0~8.8

15

27

2CW57

8.5~9.5

20

26

2CW58

9.2~10.5

25

23

2CW59

10~11.8

30

20

2CW60

11.5~12.5

40

19

2CW62

13.5~17

60

9.5

14

2CW63

16~19

70

9.5

13

2CW64

18~21

75

10

PZ/W

20
0.5

DO-35E

10
5.5

10

33

ED-1

0.25

EA

DO-41

11
5

2CW65

20~24

80

10

2CW66

23~26

85

10

2CW67

25~28

90

10

2CW68

27~30

95

10

2CW69

29~33

95

10

371

10

H-3

PCM

ICM

U(BR)CEO

ICEO

UCE(sat)

/mW

/mA

/V

/mA

/V

28

39

300

100

18

0.05

0.3

54
72

97

132

9012

64

78

600

500

25

0.5

0.6

96

118

144

9013

64

78

400

500

25

0.5

0.6

96

118

144

9014

60

60

300

100

18

0.05

0.3

100

200

400
0.5

9015
A
B
C

310
600

Cob/pF

150

3.5

NPN

150

PNP

150

NPN

TO-92

150

50

NPN

18

0.05

100

PNP

100

200
400

9016
310

9018
8050

60

fT/MHz

60
100

9017

hfE

9011

tyw

9011~901880508550

1000

25

20

100

12

100

12

1500

25

0.05

0.3

28~97

500

0.5

28~72

600

0.5

28~72

700

85~300

100

8550

NPN

NPN
PNP

372

tyw

H-4 3CTMCR2N

IF/A

IH/mA

0.1

0.4~20

UDRM
URRM/V

3CT021~3CT024

UF/V

UG/V

IG/mA

0.01~10
1.5

0.2

3CT031~3CT034

0.01~15
1.5

0.4~30
0.3

0.01~20

3CT041~3CT044
0.5
3CT051~3CT054

0.5~30

0.05~20

20~1000

TO-72
1.2
1

0.8~30

0.01~30

3CT061~3CT064
3CT101

3CT103

3CT104

10

3CT105
3CT107

MCR102
MCR103
MCR100-3~MCR100-8
2N1595

50~1400

2.5
50

20

100

50

200

3~30

TO-92

5~70

TO-48
TO-48

3.5

TO-48
8~150

TO-48

0.2

TO-92

25
50
0.8

0.8

1.6

3.0

100~800
50

2N1596

100

2N1597

200

2N1598

300

2N1599

400

373

10

TO-36

H-5

tyw

LM7800CLM7900C

ST/mV/
V

mV

mA

LM7805

4.8~5.2

2.0

50

35

7.3

0.6

LM7812

11.5~12.5

2.0

120

35

14.6

1.5

LM7815

14.4~15.6

2.0

150

35

17.7

1.2

LM7905

-4.8~-5.2

1.1

15

-35

0.4

LM7912

-11.5~-12.5

1.1

-40

1.5

-0.8

TO-3

LM7915

-14.4~-15.6

1.1

-40

1.5

-1.0

TO-220

TO-3

TO-220

I0
1.0A

I0=1.0A

I0

5mAI01A

Tj=25

1.0A

H-6

LM117/217/317 LM137/237/337

UIMAX-UO/V

UO/V

SU(UO)/mV

SI(UO)/mV

IADJ /A

IOMIN/mA

LM117/217

40

1.25~37

0.01

0.3

100

3.5

LM317

40

1.25~37

0.01

0.5

100

3.5

LM137/237

40

-1.25~-37

0.01

0.3

65

2.5

LM337

40

-1.25~-37

0.01

0.3

65

2.5

10mAIO

3V|UI-UO|

Imax

40V
UO5V

374

UI-UO=40V

TO-3

TO-220

H-7

tyw

A/D

AD570

AD571

10

AD572

12

25s

ADC1131

14

12s

ADC1130

14

25s

ADC84-12

ADC-85-12

ADC85C-12

ADC60-12

MAS12/10/8

2/1.5/1s

ADC1130

14

ADC1131
AD7550 13
AD7570 10

AD7550 13
AD7574

AD7550
AD7574

AD7571
AD574

AD578

ADC0808/0809/0816
CA3300D

CA3306D CA3318CE

MATV-0820

MATV-0816

HAS0802

MAH-1001-5

375

H-8 D/A

AD7523

AD7533

10

AD559

AD1408

DAC

0800

DAC

0802

DAC

0832

DAC

1208

12

DAC

1210

12

DAC

1220

DAC

1222

DAC

1230

DAC

1231

ADPAC

80

AD565

12

200ns

AD566

12

200ns

AD562

12

1.5s

AD563

12

1.5s

DAC1108

12 /10 /8 150/50/25s

HDS

12 /10 /8

50/25/25s

DAC113616 DAC113818

AD75248 AD75412 AD754616 AD75212

AD7524

AD7542 AD7522

376

tyw

I
I.1

51

I-1

I-2

I-2
377

tyw

I-3

tyw

E-MAILfhg2002@126.com QQ976586545
1LED

2LED

10

11

5 LED

12

13

7 14

378

J MCS-51

tyw

MCS-51

51

51 51
QQ57096504
fhg2002@126.com

J-1

MCS-51

379


[1]
[2]
[3]
[4]
[5]
[6]
[7]

tyw

. [M]. 2007.
. C [M]. 2006.
. 51 C51 [M]. 2002.
. [M]. 2009.
. 8051 [M]. 2005.
. C [M]. 2002.
. C [M].
2006.
[8] . [M]. 2001.
[9] ARMLinx [M]. 2008.

380

You might also like