Professional Documents
Culture Documents
51单片机自学笔记 387页 13.8m 高清书签版
51单片机自学笔记 387页 13.8m 高清书签版
51单片机自学笔记 387页 13.8m 高清书签版
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.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
ADPWM
3 51
32
51 87LPC
W78 DS87 GSM97
ATMEL 89S51 Flash ROM
13
tyw
51
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
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
22
tyw
2
2.1
51 2-1 TQFP PLCC TQFP
PLCC
DIP
2-2 40 DIP
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
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
00H
CLR RS0PSWRS00
1FH 32
CLR RS1PSWRS10
32
MOV R0,#22H R0 00H
22H
1
SETB RS0PSWRS01
8
SETB RS1PSWRS01
22H
PSW RS0RS1 0
0 R0R7 00H07H
8
27
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
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
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
;
;P0.7
CALL DELAY
SETB P0.7
;P0.7
CALL DELAY
;
34
SJMP MAIN
tyw
;MAIN
;R0
;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
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
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
;P0.0
;RAM40H100
;
SETB P0.0
; P0.0
;RAM40H200
CALL DELAY
SJMP MAIN
;MAIN
;R0
;R1
37
D1:DJNZ R1, D1
tyw
;R110D1
DJNZ R0, D2
;R010D2
RET
END
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
;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
;R0
;R1
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
END
SJMP START
;START
ORG 0030H
;30H
;
;P0
;
;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
;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
;P0
MOV A, #0FEH
;****************************
MAIN:MOV P0, A
RL A
CALL DELAY
;AP0
;A1
;
;R310MAIN
;R37
SJMP MAIN
;*************************
DELAY:MOV R0, #250
;R0
;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
;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
tyw
;R0
;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
;P0
;P0.00P0.701
;
;P0.10P0.601
;
;P0.20P0.501
;
;P0.30P0.401
;
;P0.20P0.501
;
;P0.10P0.601
CALL DELAY
SJMP MAIN
;MAIN
;R0
;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
;P0
INC R2
;R21
CALL DELAY
;DELAY
;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
;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
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
R10
R11
R12
R13
R14
R15
R16
R17
COM4
12
28
27
26
25
24
23
22
21
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
;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
;P0
MOV P2,#0FFH
;P2
;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
;R1
D1:DJNZ R1, D1
;R110D1
54
DJNZ R0, D2
RET
;R010D2
tyw
;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
;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
;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
;COUNT1
;COUNTA
CJNE A ,#100,JIXU
MOV COUNT ,#0
;COUNT100JIXU
;COUNT0
PROCESS:DEC COUNT
MOV A,COUNT
;COUNT1
;COUNTA
CJNE A ,#0,JIXU
;COUNT100JIXU
;COUNT0
********************************************************************
0999
0999 COUNT RAM
COUNT 255 INC COUNT
255
C
099
;----------------------------------------------------MAIN:CALL PROCESS
XIANSHI:CALL DISPLAY
;PROCESS
;DISPLAY
59
tyw
DJNZ R2,XIANSHI
;R210XIANSHI
MOV R2,#100
;R20,R2100
SJMP MAIN
;MAIN
;R0
;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
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
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
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
;
63
;P0
;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
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
;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
;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
;R050
;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
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
;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
;R050
;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
BIAOZHI1 BIT
00H
;0BIAOZHI1
ORG 0000H
SJMP START
;START
ORG 0030H
;30H
;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
;R050
;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
;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
;R050
72
tyw
;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
COM4
12
R10
R11
R12
R13
R14
R15
R16
R17
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
MOV 40H,#0FFH
;FFH
;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
;R050
;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
;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
;R1100
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
;56789
;
COUNT 1 1 COUNT 10
SHIWEI GEWEI SHIWEI GEWEI
TAB P0
5.3.3
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
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
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 /
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
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
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
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
;P0
MOV TH0,#3CH
;8TH03CH
MOV TL0,#0B0H
;8TL0B0H
;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
tyw
(3) TMOD4C/T0
1TMOD4M1M001
MOV TMOD ,#00000001B
(4)1TCONTR01
SETB
(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
;
;P0
MOV TH0,#3CH
;8TH03CH
MOV TL0,#0B0H
;8TL0B0H
;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
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
;
;P0
;30H0
MOV TH0,#3CH
;8TH03CH
MOV TL0,#0B0H
;8TL0B0H
;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
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
COM4
12
R10
R11
R12
R13
R14
R15
R16
R17
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
102
NO
tyw
MOV SECOND, #0
;SECOND0
MOV MINUTE, #0
;MINUTE0
;HOUR12
;DPTRTAB
MOV 30H, #0
;30H02050ms
MOV TH0,#3CH
;8TH03CH
MOV TL0,#0B0H
;8TL0B0H
;IEET010
SETB EA
; IEEA1
;-----------------------MAIN----------------------------MAIN:CALL KEY
CALL PROCESS
CALL DISPLAY
SJMP
MAIN
;KEY
;PROCESS
;DISPLAY
;MAIN
; 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
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
;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
;R050
;R110
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
105
;
tyw
RET
;---------------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H
;TAB01234
;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
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
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
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
;
;P0
MOV DPTR,#TAB
;DPTR
MOV TL1,#0
;TL10
;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
;R1100
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
;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
Q3
Q4
8550
Q5
COM4
Q6
12
COM4
11
R10
R11
R12
R13
R14
R15
R16
R17
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
;---------------------------------------------------MAIN:SETB P1.0
;P1.0
CALL DELAY
CLR
P1.0
;P1.0
CALL
DELAY
SJMP MAIN
;MAIN
;R050
;R1100
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
END
112
tyw
1
MOV SP, #60H
SP
;-------------------------------------------------DELAY:MOV R0, #50
;R050
;R1100
;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
R10
R11
R12
R13
R14
R15
R16
R17
COM4
10
28
27
26
25
24
23
22
21
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
;60H
;P0
MOV DPTR,#TAB
;DPTR
MOV 30H,#0
;30H030H50ms
MOV TL1,#0
;TL10
;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
;
;R050
;R1100
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
;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
;60H
;P0
MOV DPTR,#TAB
;DPTR
MOV 30H,#0
;30H030H50ms
MOV TL1,#0
;TL10
MOV MIAO,#0
;0
;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
;
;R050
;R1100
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
;--------------------------
119
tyw
;56789
;
\ch7\xinlv_wanmei.flv
;-------------------------------------------------DELAY:MOV R0, #50
;R050
;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
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
3\ch8\P3.2_didianping.flv
ORG 0000H
SJMP START
;START
ORG 0003H
;P3.2
AJMP INTERRUPT0
ORG 0030H
;INTERRUPT0P3.2
;30H
;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
;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
;R0250
;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
;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
;
;R0250
;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
;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
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
;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
;R0250
;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
\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
;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
;R0250
135
;R1250
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
tyw
END
8.3.5
8.3.5
P3.2 P3.3
P3.2
P3.3 P0.0
P0.7 LED LED
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
2
8-7
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
;60H
;P0
;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
;
;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
GND
P3.2 P3.3
P3.2 P3.3
8.3.6
P3.2 P3.3
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
28
27
26
25
24
23
22
21
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
;60H
;P0
MOV DPTR,#TAB
;DPTR
MOV 30H,#0
;30H030H50ms
MOV XINLVSHU,#0
;XINLVSHU0
MOV MIAO,#0
;0
;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
;R050
143
;R110
D1:DJNZ R1, D1
tyw
;R110D1
DJNZ R0, D2
;R010D2
RET
;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
;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
;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.2-------INT00:CLR P3.1
;,293ENB
WAIT0:JNB P3.2,WAIT0
;P3.2
;WAIT0
SETB P3.1
;,293ENB
RETI
;,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
R10
R11
R12
R13
R14
R15
R16
R17
COM4
28
27
26
25
24
23
22
21
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
;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
;DPTRDPTRTAB
;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
;R0
153
;R1
tyw
;R110D1
;R010D2
;
;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
Y1
12M
19
COM4
C2
30pF
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
;
;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
;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
;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
;R0
;R1
;R110D1
;R010D2
;
;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
2 1
1 10 1 08
1 10 1 2
52
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
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
;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
9.4.2
ORG 0023H
ES CPU EA
CPU
9.4.1
LED
ORG 0000H
SJMP MAIN
ORG 0023H
;1
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
;1
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
COM4
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
;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
;R050
;R110
D1:DJNZ R1, D1
;R110D1
DJNZ R0, D2
;R010D2
RET
175
;--------------------------
tyw
;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
10-4
10-5 C Keil
10-5
Next 10-6
Nex
181
tyw
10-6
10.1.2 Keil
Keil uV2
ProjectNewProject
10-7
182
tyw
10-7
10-8
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
//#defineunsigned charuchar
//#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
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>
//
/************************************************************/
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()
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
/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
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
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;
//
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
;P0
INC R2
;R21
CALL DELAY
;DELAY
;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
197
tyw
/*C*/
#include <reg51.h>
void delay(unsigned int 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
data
128
bdata
16 0x200x2f
idata
256 128
pdata
xdata
64K MOVC
code
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
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
//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
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
//P1.1
//P1.2
//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
/***************************************************/
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
//LEDP0.1
//LEDP0.2
//LEDP0.3
//LEDP0.4
//LEDP0.5
//LEDP0.6
//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
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
[]
a 10
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
[] []
3 3
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
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
{
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()
unsigned int
//
{
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
//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()
unsigned int
//
{
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
//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); //
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
//<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
R10
R11
R12
R13
R14
R15
R16
R17
COM4
10
28
27
26
25
24
23
22
21
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
//<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
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
//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
//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
//
}
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
//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
R10
R11
R12
R13
R14
R15
R16
R17
COM4
28
27
26
25
24
23
22
21
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
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
//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
***************************************************************************************/
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
Q3
Q4
8550
Q5
COM4
Q6
12
28
27
26
25
24
23
22
21
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
//
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;
//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();
//
//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
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
14-3
SCLK
LCLK
OE
MR
DS
Q7
Q0~ Q7
NC
OE
Q6
NC
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_();
//
sbit SDATA_595=P0^0;
//
//
//
//
{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;
//
//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
//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
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
//0
//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
301
tyw
WR2
Iout1
1 Iout
Iout2
Iout2+Iout1
Rfb
Rfb
Vref
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
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
VREFIN
4095
4096
VREFIN
2049
4096
307
VREFIN
2048
=+VREFIN
4096
0111 111 111
VREFIN
tyw
2
2047
4096
VREFIN
4096
000 000 000
0V
Gain=+2
14-11 0~ 2VREFIN
+2VREFIN
4095
4096
+2VREFIN
2049
4096
+2VREFIN
2048
=+VREFIN
4096
0111 111 111
+2VREFIN
2047
4096
+2VREFIN
1
4096
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
w
V+ =ty
0V
14-12 -VREFIN~+VREFIN
+VREFIN
2047
2048
+VREFIN
1
2048
0V
-VREFIN
1
2048
-VREFIN
2047
2048
-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);
//
//
}
/***************************************************************/
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
//flag==2
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
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
COM4
12
R10
R11
R12
R13
R14
R15
R16
R17
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 key(void);
//
/*************************************************************/
void delayms(uchar ms)
{
uchar i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
318
/***************************************************************/
tyw
//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;
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
_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
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
char
char ticks,
//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
char ticks,
//event_sel
//ticksevent_sel
//dummyRTX51 TinyRTX51
2os_wait1
os_wait1
char
//event_sel
PWM
os_wait1K_SIG
process()
key() process()
os_wait1(K_SIG);
os_send_signal(2)
3os_send_signal
os_send_signal
char
//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
//task_idl
os_send_signal os_send_signal
isr_send_signal
5os_create_task
os_create_task
char
//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
//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
//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
331
tyw
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
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
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
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
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
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>
// 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
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
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
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
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