Professional Documents
Culture Documents
1 D6 D5 D4 D3 D2 D1 D0
PA PCH Mode PB PCL
Mode 0: output 0: output 0: mode 0 0: output 0: output
00: mode 0 1: input 1: input 1: mode 1 1: input 1: input
01: mode 1
1X: mode 2
Nhoùm A Nhoùm B
1
Ghi chuù: PCH = PC7÷PC4, PCL = PC3÷PC0.
o Hoaït ñoäng BSR – Bit set/reset (D7 = 0):
0 X X X D3 D2 D1 D0
Bit
Choïn bit ôû port C set/reset
0: reset
1: set
- Hoaït ñoäng I/O cô baûn coù 3 mode:
o Mode 0: I/O ñôn giaûn.
o Mode 1: I/O coù baét tay.
o Mode 2: bus 2 chieàu.
2
Thieát keá 1
U1 U3 U6
1 39 D0 D0 3 2 A0 D0 34 4 J2
2 P1.0 P0.0/AD0 38 D1 D1 4 D0 Q0 5 A1 D1 33 D0 PA0 3 1
3 P1.1 P0.1/AD1 37 D2 D2 7 D1 Q1 6 A2 D2 32 D1 PA1 2 2
4 P1.2 P0.2/AD2 36 D3 D3 8 D2 Q2 9 A3 D3 31 D2 PA2 1 3
5 P1.3 P0.3/AD3 35 D4 D4 13 D3 Q3 12 A4 D4 30 D3 PA3 40 4
6 P1.4 P0.4/AD4 34 D5 D5 14 D4 Q4 15 A5 D5 29 D4 PA4 39 5
7 P1.5 P0.5/AD5 33 D6 D6 17 D5 Q5 16 A6 D6 28 D5 PA5 38 6
8 P1.6 P0.6/AD6 32 D7 D7 18 D6 Q6 19 A7 D7 27 D6 PA6 37 7
P1.7 P0.7/AD7 D7 Q7 D7 PA7 8
10 30 11 1 18 J3
11 P3.0/RXD ALE/PROG 21 A8 G OC PB0 19 1
12 P3.1/TXD P2.0/A8 22 A9 74LS373 A0 9 PB1 20 2
13 P3.2/INTO P2.1/A9 23 A10 A1 8 A0 PB2 21 3
14 P3.3/INT1 P2.2/A10 24 A11 A1 PB3 22 4
15 P3.4/TO P2.3/A11 25 A12 6 PB4 23 5
16 P3.5/T1 P2.4/A12 26 A13 CS PB5 24 6
17 P3.6/WR P2.5/A13 27 A14 PB6 25 7
P3.7/RD P2.6/A14 28 A15 PB7 8
29 P2.7/A15 35 14 J4
PSEN 19 RESET PC0 15 1
U2
31 XTAL1 A13 1 15 PC1 16 2
EA/VPP A14 2 A Y0 14 5 PC2 17 3
9 18 A15 3 B Y1 13 36 RD PC3 13 4
RST XTAL2 C Y2 12 WR PC4 12 5
AT89C51 Y3 11 PC5 11 6
6 Y4 10 PC6 10 7
+5V 4 G1 Y5 9 PC7 8
5 G2A Y6 7 8255
G2B Y7
74LS138
Thieát keá 2
U1 U3 U6
1 39 D0 D0 3 2 A0 D0 34 4 J2
2 P1.0 P0.0/AD0 38 D1 D1 4 D0 Q0 5 A1 D1 33 D0 PA0 3 1
3 P1.1 P0.1/AD1 37 D2 D2 7 D1 Q1 6 A2 D2 32 D1 PA1 2 2
4 P1.2 P0.2/AD2 36 D3 D3 8 D2 Q2 9 A3 D3 31 D2 PA2 1 3
5 P1.3 P0.3/AD3 35 D4 D4 13 D3 Q3 12 A4 D4 30 D3 PA3 40 4
6 P1.4 P0.4/AD4 34 D5 D5 14 D4 Q4 15 A5 D5 29 D4 PA4 39 5
7 P1.5 P0.5/AD5 33 D6 D6 17 D5 Q5 16 A6 D6 28 D5 PA5 38 6
8 P1.6 P0.6/AD6 32 D7 D7 18 D6 Q6 19 A7 D7 27 D6 PA6 37 7
P1.7 P0.7/AD7 D7 Q7 D7 PA7 8
10 30 11 1 18 J3
11 P3.0/RXD ALE/PROG 21 G OC PB0 19 1
12 P3.1/TXD P2.0/A8 22 74LS373 A0 9 PB1 20 2
13 P3.2/INTO P2.1/A9 23 A1 8 A0 PB2 21 3
14 P3.3/INT1 P2.2/A10 24 A1 PB3 22 4
15 P3.4/TO P2.3/A11 25 6 PB4 23 5
16 P3.5/T1 P2.4/A12 26 CS PB5 24 6
17 P3.6/WR P2.5/A13 27 PB6 25 7
P3.7/RD P2.6/A14 28 PB7 8
29 P2.7/A15 35 14 J4
PSEN 19 RESET PC0 15 1
U2
31 XTAL1 A5 1 15 PC1 16 2
EA/VPP A6 2 A Y0 14 5 PC2 17 3
9 18 A7 3 B Y1 13 36 RD PC3 13 4
RST XTAL2 C Y2 12 WR PC4 12 5
AT89C51 Y3 11 PC5 11 6
6 Y4 10 PC6 10 7
+5V 4 G1 Y5 9 PC7 8
5 G2A Y6 7 8255
G2B Y7
74LS138
3
VD1: Khôûi ñoäng 8255:
PA xuaát, PB xuaát, PC xuaát → Töø ñieàu khieån: 80h
PA xuaát, PB nhaäp, PC xuaát → Töø ñieàu khieån: 82h
PA xuaát, PB nhaäp, PC nhaäp → Töø ñieàu khieån: 8Bh
4
3.2 Giao tieáp vôùi LED 7 ñoaïn
Ñoaïn: p g f e d c b a
a
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
f b
Bit: D7 D6 D5 D4 D3 D2 D1 D0 g
e c
d p
5
Queùt LED
U1 R4 470x8 LED3 LED2 LED1
39 21 1 16 a a 7 a 7 a 7
38 P0.0/AD0 P2.0/A8 22 2 15 b b 6 A b 6 A b 6 A
37 P0.1/AD1 P2.1/A9 23 3 14 c c 4 B c 4 B c 4 B
36 P0.2/AD2 P2.2/A10 24 4 13 d d 2 C d 2 C d 2 C
35 P0.3/AD3 P2.3/A11 25 5 12 e e 1 D e 1 D e 1 D
34 P0.4/AD4 P2.4/A12 26 6 11 f f 9 E f 9 E f 9 E
33 P0.5/AD5 P2.5/A13 27 7 10 g g 10 F g 10 F g 10 F
32 P0.6/AD6 P2.6/A14 28 8 9 p p 5 G p 5 G p 5 G
A1
A2
A1
A2
A1
A2
P0.7/AD7 P2.7/A15 P P P
1 10
2 P1.0 P3.0/RXD 11
8
3
8
3
8
3
3 P1.1 P3.1/TXD 12
4 P1.2 P3.2/INTO 13
5 P1.3 P3.3/INT1 14
6 P1.4 P3.4/TO 15 A1015 A1015
R3 R2 R1 A1015
7 P1.5 P3.5/T1 16 Q1 Q2 Q3
8 P1.6 P3.6/WR 17
P1.7 P3.7/RD 10K 10K 10K
19 29 +5V
18 XTAL1 PSEN
9 XTAL2 30
RST ALE/PROG
31
EA/VPP
AT89C51
6
MOV TMOD,#06h ; counter 0, mode 2
MOV TH0,#0
SETB P3.0 ; ta('t ta^'t ca? ca'c LED
SETB P3.1
SETB P3.2
SETB P3.4 ; P3.4: input
SETB TR0 ; cho phe'p counter 0 cha.y
BEGIN: MOV A,TL0
LCALL BIN2BCD
; tra ba?ng, ddo^?i BCD -> LED 7 ddoa.n
MOV A,40h
MOVC A,@A+DPTR
MOV 40h,A
MOV A,41h
MOVC A,@A+DPTR
MOV 41h,A
MOV A,42h
MOVC A,@A+DPTR
MOV 42h,A
LCALL DISPLAY
SJMP BEGIN
DISPLAY:
MOV P2,40H ; LED1
CLR P3.0 ; ba^.t LED1 sa'ng
ACALL DELAY ; delay
SETB P3.0 ; ta('t LED1
BIN2BCD:
MOV B,#10 ; B=10
DIV AB ; chia cho 10
MOV 40h,B ; lu+u digit tha^'p
MOV B,#10 ;
DIV AB ; chia cho 10
MOV 41h,B ; lu+u digit tie^'p theo va`o 41h
MOV 42h,A ; lu+u digit cuo^'i va`o 42h
RET
; su+?a cho SV
DELAY: PUSH 7
PUSH 6
MOV R7,#10
LP2: MOV R6,#0FFh
LP1: DJNZ R6,LP1
DJNZ R7,LP2
POP 6
POP 7
RET
LED7SEG:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
DB 88H,0C6H,86H,8EH,82H,89H
END
7
Thieát keá 3 port xuaát ra LED
Ñòa chæ (8-bit): LED1: A0h
LED2: C0h
LED3: E0h
VD: Xuaát ra LED 7 ñoaïn ‘123’
ORG 0
MOV R0,#0A0h ; LED1
MOVX @R0,#0B0h
MOV R0,#0C0h ; LED2
MOVX @R0,#0A4h
MOV R0,#0E0h ; LED3
MOVX @R0,#0F9h
SJMP $
+5V
3 3 3
A2 8 A2 8 A2 8
A1 A1 A1
G
G
C
D
C
D
C
D
A
B
A
B
A
B
P
F
F
10
10
10
7
6
4
2
1
9
7
6
4
2
1
9
7
6
4
2
1
9
5
16
15
14
13
12
11
10
16
15
14
13
12
11
10
16
15
14
13
12
11
10
9
9
R4 R5 R6
470x8 470x8 470x8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
12
15
16
19
11
12
15
16
19
11
12
15
16
19
11
2
5
6
9
2
5
6
9
2
5
6
9
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
G
U2 74LS373 U3 74LS373 U4 74LS373 7402
OC
OC
OC
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
13
14
17
18
13
14
17
18
13
14
17
18
3
4
7
8
3
4
7
8
3
4
7
8
1
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
U1 U6
21 39 D0 D0 3 2 A0
22 P2.0/A8 P0.0/AD0 38 D1 D1 4 D0 Q0 5 A1
15
14
13
12
11
10
P2.1/A9 P0.1/AD1 D1 Q1
9
7
23 37 D2 D2 7 6 A2
24 P2.2/A10 P0.2/AD2 36 D3 D3 8 D2 Q2 9 A3
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
25 P2.3/A11 P0.3/AD3 35 D4 D4 13 D3 Q3 12 A4
26 P2.4/A12 P0.4/AD4 34 D5 D5 14 D4 Q4 15 A5 U5 74LS138
G2A
G2B
27 P2.5/A13 P0.5/AD5 33 D6 D6 17 D5 Q5 16 A6
G1
P2.6/A14 P0.6/AD6 D6 Q6
C
A
B
28 32 D7 D7 18 19 A7
P2.7/A15 P0.7/AD7 D7 Q7
10 30 11 1
1
2
3
6
4
5
11 P3.0/RXD ALE/PROG G OC
12 P3.1/TXD 1 A5
13 P3.2/INTO P1.0 2 74LS373 A6 +5V
14 P3.3/INT1 P1.1 3 A7
15 P3.4/TO P1.2 4
16 P3.5/T1 P1.3 5
17 P3.6/WR P1.4 6
P3.7/RD P1.5 7
29 P1.6 8
PSEN P1.7
9 19
RST XTAL1 18
31 XTAL2
EA/VPP
AT89C51
8
3.3 Giao tieáp vôùi baøn phím hex
COL 3
COL 0
COL 1
COL 2
U1
21 39
22 P2.0/A8 P0.0/AD0 38
23 P2.1/A9 P0.1/AD1 37
P2.2/A10 P0.2/AD2 SW0 SW1 SW2 SW3
24 36
25 P2.3/A11 P0.3/AD3 35
P2.4/A12 P0.4/AD4 ROW 0
26 34
27 P2.5/A13 P0.5/AD5 33
28 P2.6/A14 P0.6/AD6 32
P2.7/A15 P0.7/AD7 SW4 SW5 SW6 SW7
10 1 ROW 1
11 P3.0/RXD P1.0 2
12 P3.1/TXD P1.1 3
13 P3.2/INTO P1.2 4
P3.3/INT1 P1.3 SW8 SW9 SW10 SW11
14 5
15 P3.4/TO P1.4 6
P3.5/T1 P1.5 ROW 2
16 7
17 P3.6/WR P1.6 8
P3.7/RD P1.7
29 19 SW12 SW13 SW14 SW15
PSEN XTAL1 18
XTAL2 ROW 3
30 9
ALE/PROG RST
31
EA/VPP
AT89C51
0 1 2 3
4 5 6 7
8 9 A B
C D E F
READKB: PUSH 7
SCAN: MOV A,#11111110B ; col_0 -> GND
MOV R7,#0 ; R7 = i
CONT: MOV P1,A ; no^'i col i -> GND
MOV A,P1 ; ddo.c row
JNB ACC.4,ROW_0 ; xe't xem row na`o?
JNB ACC.5,ROW_1
JNB ACC.6,ROW_2
JNB ACC.7,ROW_3
RL A ; chua^?n bi. no^'i GND
INC R7 ; co^.t tie^'p theo
CJNE R7,#4,CONT ; la^`n luo+.t no^'i GND 4 co^.t
SJMP SCAN ; quay la.i que't tu+` co^.t 0
ROW_0: MOV A,R7 ; Row=0, Col=R7
9
ADD A,#0 ; A = 0 + R7
SJMP EXIT
ROW_1: MOV A,R7 ; Row=1, Col=R7
ADD A,#4 ; A = 4 + R7
SJMP EXIT
ROW_2: MOV A,R7 ; Row=2, Col=R7
ADD A,#8 ; A = 8 + R7
SJMP EXIT
ROW_3: MOV A,R7 ; Row=3, Col=R7
ADD A,#12 ; A = 12 + R7
EXIT: POP 7
RET
T7SEG: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,
DB 08H,03H,46H,21H,04H,0EH
END
3
U1 U2
U3A
39 1 18 6 TL082
P0.0/AD0 P1.0 DB0 +IN
8
38 2 17 7 R2
37 P0.1/AD1 P1.1 3 16 DB1 -IN 3 2
P0.2/AD2 P1.2 DB2 +
36 4 15 9 1 10K
35 P0.3/AD3 P1.3 5 14 DB3 VREF/2 2
P0.4/AD4 P1.4 DB4 R1 -
34 6 13 19
33 P0.5/AD5 P1.5 7 12 DB5 CLKR
1
P0.6/AD6 P1.6 DB6 10K
32 8 11 4
4
P0.7/AD7 P1.7 DB7 CLKIN
C1
21 10 EOC 5 2
P2.0/A8 P3.0/RXD INTR RD 150p
22 11 START 3 1
23 P2.1/A9 P3.1/TXD 12 WR CS
24 P2.2/A10 P3.2/INTO 13 ADC0804
25 P2.3/A11 P3.3/INT1 14
26 P2.4/A12 P3.4/TO 15
27 P2.5/A13 P3.5/T1 16
28 P2.6/A14 P3.6/WR 17
P2.7/A15 P3.7/RD
19 29
18 XTAL1 PSEN
9 XTAL2 30
RST ALE/PROG
31
EA/VPP
AT89C51
ADC0804 laø boä chuyeån ñoåi töông töï sang soá 8 bit.
Xeùt sô ñoà nhö hình:
- Ñieän trôû 10K vaø tuï 150pF noái vôùi ñaàu vaøo CLKR vaø CLKIN nhö hình → boä
phaùt xung nhòp beân trong taïo taàn soá hoaït ñoäng laø 640KHz.
- Moät laàn bieán ñoåi ñöôïc baét ñaàu baèng moät xung START (tích cöïc möùc thaáp) ngaén
haïn ôû ngoõ vaøo /WR. Sau thôøi gian bieán ñoåi khoaûng 100µs, ngoõ ra /INTR chuyeån
sang LOW baùo hieäu laø keát thuùc quaù trình bieán ñoåi (EOC – End of Conversion)
VD: Ñoïc AD töø port 1, löu vaøo oâ nhôù 40h vaø xuaát ra Port 2
;P1 <- D0-D7
;P3.0 <- /INTR
;P3.1 -> /WR
;P1 <- D0-D7
;P3.0 <- /INTR
;P3.1 -> /WR
ORG 0
MOV P1,#0FFH ;P1: input
SETB P3.0 ;P3.0: input
LOOP: CLR P3.1 ;pha't xung START
SETB P3.1
10
JB P3.0,$ ;cho+` bie^'n ddo^?i xong
MOV A,P1 ;ddo.c data va`o A
MOV 40h,A ;lu+u va`o o^ nho+' 40h
MOV P2,A ;xua^'t ra P2
SJMP LOOP
U2
2
U1
VCC
21 1 7
22 P2.0/A8 P1.0 2 8 D0
23 P2.1/A9 P1.1 3 9 D1
24 P2.2/A10 P1.2 4 10 D2
25 P2.3/A11 P1.3 5 11 D3
26 P2.4/A12 P1.4 6 12 D4 +5V
27 P2.5/A13 P1.5 7 13 D5
P2.6/A14 P1.6 D6
3
28 8 14
P2.7/A15 P1.7 D7 R1
39 10 4
38 P0.0/AD0 P3.0/RXD 11 5 RS 3 2 10K
37 P0.1/AD1 P3.1/TXD 12 6 R/W Contrast
36 P0.2/AD2 P3.2/INTO 13 EN
GND
35 P0.3/AD3 P3.3/INT1 14
34 P0.4/AD4 P3.4/TO 15
1
33 P0.5/AD5 P3.5/T1 16 LCD
32 P0.6/AD6 P3.6/WR 17
P0.7/AD7 P3.7/RD 1
29 19
PSEN XTAL1 18
30 XTAL2 9
ALE/PROG RST
31
EA/VPP
AT89C51
11
VD: Xuaát ra LCD chuoãi “Hello”
;P1=data pin
;P3.0 -> RS pin
;P3.1 -> R/W pin
;P3.2 -> E pin
RS EQU P3.0
RW EQU P3.1
E EQU P3.2
ORG 0
MOV A,#38H ;init. LCD 2 do`ng, ma tra^.n 5x7
ACALL CSTROBE
MOV A,#0CH ;LCD on, cursor on
ACALL CSTROBE
MOV A,#01H ;clear LCD
ACALL CSTROBE
MOV A,#06H ;cursor di.ch pha?i
ACALL CSTROBE
12
VD2: Ñoïc baøn phím Hex → xuaát ra LCD
;P1 = data/command pin
;P3.0 -> RS pin
;P3.1 -> R/W pin
;P3.2 -> E pin
;P2 -> Keypad
ORG 0
RS EQU P3.0
RW EQU P3.1
EN EQU P3.2
;command strobe
CSTROBE:
ACALL READY ;is LCD ready?
MOV P1,A ;xua^'t ma~ le^.nh
CLR RS ;RS=0: le^.nh
CLR RW ;R/W=0: ghi ra LCD
SETB EN ;EN=1 -> ta.o ca.nh xuo^'ng
CLR EN ;EN=0 ,cho^'t
RET
;data strobe
DSTROBE:
ACALL READY ;is LCD ready?
MOV P1,A ;xua^'t du+~ lie^.u ra P1
SETB RS ;RS=1: du+~ lie^.u
CLR RW ;R/W=0 ghi ra LCD
SETB EN ;EN=1 -> ta.o ca.nh xuo^'ng
CLR EN ;EN=0, cho^'t
RET
13
CONT: MOV P2,A ; no^'i col i -> GND
MOV A,P2 ; ddo.c row
JNB ACC.4,ROW_0 ; xe't xem row na`o?
JNB ACC.5,ROW_1
JNB ACC.6,ROW_2
JNB ACC.7,ROW_3
RL A ; chua^?n bi. no^'i GND
INC R7 ; co^.t tie^'p theo
CJNE R7,#4,CONT ; la^`n luo+.t no^'i GND 4 co^.t
SJMP SCAN ; quay la.i que't tu+` co^.t 0
ROW_0: MOV A,R7 ; Row=0, Col=R7
ADD A,#0 ; A = 0 + R7
SJMP EXIT
ROW_1: MOV A,R7 ; Row=1, Col=R7
ADD A,#4 ; A = 4 + R7
SJMP EXIT
ROW_2: MOV A,R7 ; Row=2, Col=R7
ADD A,#8 ; A = 8 + R7
SJMP EXIT
ROW_3: MOV A,R7 ; Row=3, Col=R7
ADD A,#12 ; A = 12 + R7
EXIT: POP 7
RET
DELAY: PUSH 6
PUSH 7
MOV R7,#0FFh
LP1: MOV R6,#0FFh
LP0: DJNZ R6,LP0
DJNZ R7,LP1
POP 7
POP 6
RET
END
14
4 Laäp trình hôïp ngöõ
4.1 Moät soá caáu truùc laäp trình
Nhaûy coù ñieàu kieän:
REPEAT: <action>
JUMP_if_not_<condition>,REPEAT
START: JUMP_if_not_<condition>,STOP
<action>
SJMP START
STOP: ...
JUMP_if_not_<condition>,ELSE
<action 1>
SJMP DONE
ELSE:
<action 2>
DONE:
15
Caáu truùc “case… of…”
case <var> of
val1: <action 1>
val2: <action 2>
val3: <action 3>
else: <action else>
end
CJNE <var>,<val1>,SKIP1
<action 1>
SJMP EXIT
SKIP1: CJNE <var>,<val2>,SKIP2
<action 2>
SJMP EXIT
SKIP2: CJNE <var>,<val2>,SKIP3
<action 3>
SJMP EXIT
SKIP3: CJNE <var>,<val2>,EXIT
<action else>
EXIT:
R4
470
40
U1 D1
39 21
VCC
38 P0.0/AD0 P2.0/A8 22
37 P0.1/AD1 P2.1/A9 23 LED
36 P0.2/AD2 P2.2/A10 24
35 P0.3/AD3 P2.3/A11 25
34 P0.4/AD4 P2.4/A12 26
33 P0.5/AD5 P2.5/A13 27
+5V 32 P0.6/AD6 P2.6/A14 28
P0.7/AD7 P2.7/A15
C3 10uF 1 10
2 P1.0 P3.0/RXD 11
3 P1.1 P3.1/TXD 12
4 P1.2 P3.2/INTO 13
5 P1.3 P3.3/INT1 14
R3 10K 6 P1.4 P3.4/TO 15
7 P1.5 P3.5/T1 16
8 P1.6 P3.6/WR 17
P1.7 P3.7/RD
9 29
C1 RST PSEN
19 30
XTAL1 ALE/PROG 31 +5V
GND
18 EA/VPP
30pF
12MHz XTAL2
C2 AT89C51
20
30pF
ORG 0
LOOP: SETB P2.0
ACALL DELAY
CLR P2.0
16
ACALL DELAY
SJMP LOOP
VD2: Nhaán SW1 (taïo caïnh xuoáng) → LED saùng moät luùc roài taét.
+5V
+5V
R4
470
40
U1 D1
39 21
VCC
38 P0.0/AD0 P2.0/A8 22
37 P0.1/AD1 P2.1/A9 23 LED
36 P0.2/AD2 P2.2/A10 24
35 P0.3/AD3 P2.3/A11 25
34 P0.4/AD4 P2.4/A12 26
33 P0.5/AD5 P2.5/A13 27
+5V 32 P0.6/AD6 P2.6/A14 28
P0.7/AD7 P2.7/A15 SW1
C3 10uF 1 10
2 P1.0 P3.0/RXD 11
3 P1.1 P3.1/TXD 12
4 P1.2 P3.2/INTO 13
5 P1.3 P3.3/INT1 14
R3 10K 6 P1.4 P3.4/TO 15
7 P1.5 P3.5/T1 16
8 P1.6 P3.6/WR 17
P1.7 P3.7/RD
9 29
C1 RST PSEN
19 30
XTAL1 ALE/PROG 31 +5V
GND
18 EA/VPP
30pF
12MHz XTAL2
C2 AT89C51
20
30pF
Pseudo code:
Repeat until P3.0 = 1
Repeat until P3.0 = 0
P2.0 = 0
Delay
P2.1 = 1
Assembly code:
ORG 0
SETB P3.0 ;P3.0: input
LOOP: JNB P3.0, LOOP
LOOP1: JB P3.0, LOOP1
CLR P2.0
ACALL DELAY
SETB P2.0
17
SJMP LOOP
DELAY: MOV R6, #0FFh
LP2: MOV R7, #0FFh
LP1: DJNZ R7, LP1
DJNZ R6, LP2
RET
18
OÂn taäp
Chöông 1: Khaùi nieäm cô baûn.
- Sô ñoà khoái moät heä vi xöû lyù toång quaùt.
- Boä nhôù: ROM (caùc loaïi?), RAM.
o Caùc chaân ñòa chæ: soá chaân ↔ dung löôïng.
o Caùc chaân döõ lieäu.
o Caùc chaân ñieàu khieån: RAM coù /OE vaø /WE, ROM chæ coù /OE. Trong
heä vi xöû lyù: /OE ↔ /RD, /WE ↔ /WR.
o Ñòa chæ chip nhôù = ñòa chæ laøm cho chaân /CS (/CE) tích cöïc → maïch
giaûi maõ ñòa chæ.
- Giaûi maõ ñòa chæ: toaøn phaàn, moät phaàn.
o Bus ñòa chæ coù 16-bit, chip nhôù coù n chaân ñòa chæ:
(16-n) ñöôøng tín hieäu ñöa vaøo maïch GMÑC → GM toaøn
phaàn,
ít hôn (16-n) ñöôøng tín hieäu ñöa vaøo maïch GMÑC → GM moät
phaàn.
o Maïch GMÑC: thöôøng duøng 74LS138, 74LS139, caùc coång Logic.
- Thieát keá port nhaäp (duøng 74LS244), port xuaát (duøng 74LS373).
19
o Thanh ghi SCON?
o Duøng Timer 1 ñeå taïo baud rate → xaùc ñònh trò naïp cho TH1?
o Xuaát moät kyù töï ra port noái tieáp?
o Nhaän moät kyù töï töø port noái tieáp?
- Ngaét:
o Thanh ghi IE, IP? Caùc bit: ITi?
o Baûng vector ngaét?
o Caáu truùc moät chöông trình coù söû duïng ngaét?
20
Toùm taét
Sinh vieân neân töï laäp baûng toùm taét:
- Coâng thöùc tính giaù trò naïp cho TH1 ñeå taïo baud rate cho port noái tieáp.
o SMOD = 0:
f osc
TH 1 = 256 −
384 × Baud
o SMOD = 1:
f osc
TH 1 = 256 −
192 × Baud
21
- Thanh ghi ñieàu khieån 8255 ôû mode 0:
22