external memories and ports - ecpe.nu.ac.th 05.pdf · 74ls373 d0 3 d1 4 7 8 d2 d3 q0 q1 q2 q3 2 5 6...
TRANSCRIPT
EXTERNAL MEMORIES
AND PORTS
1
External Ports
โดยใช้ Internal Port (P0 – P3)
In P1=0xFF;
. . . .
HELLO= P1;
Out P1=0x4B;
#define relay P1
relay = 0x01; // TURNON
relay = 0x00; // TURNOFF
relay = relay | 0x01; // TURNON
relay = relay & 0xFE; // TURNOFF
2
x
x
x
x
x
x
x
1Relay ON
Data Bus
Port
x
x
x
x
x
x
x
0Relay OFF
Data Bus
Port
External Ports
โดยใช้ External Port
#define IMAGE1 XBYTE [0x0000]
IMAGE1 = 0x01; // TURNON
IMAGE1 = 0x00; //TURN OFF
3
Relay ON
Data Bus
x
x
x
x
x
x
x
1
Buffer
A15CE
การต่อขยาย Port ด้วย 82554
A1 A0 Port
0 0 A
0 1 B
1 0 C
1 1 Control
การต่อขยาย Port ด้วย 82555
การต่อขยาย Port ด้วย 82556
การขยายพอร์ทส าหรับติดต่ออุปกรณ์ภายนอกต้องใช้พื้นที่และสัญญาณเหมือนกับการติดต่อ
หน่วยความจ า RAM ภายนอก
Mode 0 ท างานในลักษณะของอินพุตหรือเอาท์พุตปรกติประกอบด้วย Port A, Port B,
Port C บน และ Port C ล่าง แต่ละ port สามารถโปรแกรมให้เป็น input หรือ
Output ได้ บิตที่ กลุ่ม ความหมาย
D0 B พอร์ท C ล่าง1 = อินพุต 0 = เอาต์พุต
D1 B พอร์ท B
1 = อินพุต 0 = เอาต์พุต
D2 B เลือกโหมด0 = โหมด 0 1 = โหมด 1
D3 A พอร์ท C บน1 = อินพุต 0 = เอาต์พุต
D4 A พอร์ท A
1 = อินพุต 0 = เอาต์พุต
D5
D6
A เลือกโหมด 00 = โหมด 0
01 = โหมด 1 1x = โหมด 2
D7 โหมดเซทแอคทีฟ1 = แอคทีฟ
การต่อขยาย Port ด้วย 82557
Mode 1 ใช้งาน Port A หรือ Port B เป็น Input /Output แบบที่มี Handshake
ขา กรณีที่เป็นอินพุต กรณีที่เป็นเอาต์พุต
PC0 INTRB INTRB
PC1 IBFB OBFB
PC2 STBB ACKB
PC3 INTRA INTRA
PC4 STBA I/O
PC5 IBFA I/O
PC6 I/O ACKA
PC7 I/O OBFA
อุปกรณ์ภายนอก
PA0- PA7
PC7
PC6
OBF
ACK
PB0- PB7
PC2
PC1
STB
IBF
Data Out
Data In
8255
RD
WR
INTR
Data Bus
CPU
การต่อขยาย Port ด้วย 8255
Mode 2 เป็นอินพุต/เอาท์พุต 2 ทิศทาง แบบมีสัญญาณตรวจสอบเฉพาะ Port A เท่านั้นที่สามารถก าหนดให้ท างานใน Mode 2 นี้ได้
8
ขา ความหมาย
PC0 I/O
PC1 I/O
PC2 I/O
PC3 INTRA
PC4 STBA
PC5 IBFA
PC6 ACKA
PC7 OBFA
การต่อขยาย Port ด้วย 82559
การต่อขยาย Port ด้วย 8255
รูปแบบของ Control Word ของ 8255A สองแบบ
Bit MSB เป็น ‘1ก าหนด Mode การท างานของ Port ต่างๆ
การจัด port A, B และ C ให้เป็น Input Mode 0
1 0 0 1 1 0 1 1
การจัด port A และ B ให้เป็น Input Mode 1
1 0 1 1 1/0 1 0 x
การจัด Port B เป็น Mode 1 Input, Port A เป็น Mode 0 Output, Port C บน เป็น Input,
Port C Bit 3 เป็น Output
1 0 0 0 1 1 1 0
Bit MSB เป็น ‘0’ เป็นการ Bit Set /Reset ของ Output ที่ Port C เมื่อใช้ Mode 1, 2
Set Bit 3 ของ Port C
0 0 0 0 0 1 1 1
10
การต่อขยาย Port ด้วย 8255
การต่อ 8255A เข้ากับ Port ของ MCS-51 โดยตรง
11
int a, b, c;
void main(void)
{
P2^4=0;/* Chip select*/
P2^2=1;P2^3=1;/*Control*/
P0=0x80; /*ก าหนดคา่ใน control reg*/
P2^2=0;P2^3=0;/*Port A*/
P2^1=0; /*WR=1*/
P0 = 0xfe;/*ส่งค่า*/
…..}
การต่อขยาย Port ด้วย 8255
การต่อโดยการมอง 8255A เป็นหน่วยความจ าภายนอก
12
#define PORT_A XBYTE [0x0000]
#define PORT_B XBYTE [0x0001]
#define PORT_C XBYTE [0x0002]
#define CON XBYTE [0x0003]
Void main(void)
{CON=0x80; //ก าหนดคา่ใน control
reg
PORT_A= 0xff;
PORT_B = 0xfe;
…..}
การต่อขยาย Port ด้วย 825513
#define PORT_A XBYTE [0x0000]
#define PORT_B XBYTE [0x0001]
#define PORT_C XBYTE [0x0002]
#define CON XBYTE [0x0003]
void main (void)
{CON=0x80; //ก าหนดคา่ใน control reg
PORT_A= 0xff;
PORT_B = 0xfe;
…..}
การต่อโดยการมอง 8255A เป็นหน่วยความจ าภายนอก
External Ports14
A15 A14 A13 Chip0 0 0 82550 0 1 Buffer 10 1 0 Buffer 20 1 1 Buffer 31 0 0 LCD
8255 A12 A11Port A 0 0Port B 0 1Port C 1 0Control 1 1
LCD A12 A11Write Command 0 0Write Data 0 1Read Command 1 0Read Datal 1 1
Microcontroller
Buffer 1
Buffer 2
RAM
8x2k
Data Bus
Decoder
Buffer 3
8255
LCD
A11
A12
A13
A14
A15
A11
A12
CE CS
CE
CE
CE
E
A0-A10 D0-D7
A11
A12
8x7-SegmentData
Decoder
D0-D2
VccLED0
LED1
LED2
LED3
RWRS
E
Vcc
External Ports15
Chip A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
RAM x x x x 0 0 0 0 0 0 0 0 0 0 0 0
x x x x 0 1 1 1 1 1 1 1 1 1 1 1
8255 Port A 0 0 0 0 0 x x x x x x x x x x x
Port B 0 0 0 0 1 x x x x x x x x x x x
Port C 0 0 0 1 0 x x x x x x x x x x x
Control 0 0 0 1 1 x x x x x x x x x x x
Buffer 1 0 0 1 x x x x x x x x x x x x x
Buffer 2 0 1 0 x x x x x x x x x x x x x
Buffer 3 0 1 1 x x x x x x x x x x x x x
LCD W C 1 0 0 0 0 x x x x x x x x x x x
W D 1 0 0 0 1 x x x x x x x x x x x
R C 1 0 0 1 0 x x x x x x x x x x x
R D 1 0 0 1 1 x x x x x x x x x x x
Address1 Address2 Address5 Address60000H 1000H 4000H 8000H07FFH 17FFH 47FFH 8700H0000H 0400H 0500H 0001H0800H 0C00H 0D00H 0801H1000H 1400H 1500H 1001H1800H 1C00H 1D00H 1801H2000H 3000H 2001H 3001H4000H 5000H 4001H 5001H6000H 7000H 6001H 7001H8000H 8400H8800H 8C00H9000H 9400H9800H 9C00H
External Ports16
Microcontroller
Buffer 1
Buffer 2
RAM
8x2k
Data Bus
Decoder
Buffer 3
8255
LCD
A12
A13
A14
A15
A0A1CE
CS
CE
CE
CE
E
A0-A10D0-D7
A0A1
8x7-SegmentData
Decoder
D0-D2
VccLED0
LED1
LED2
LED3
RW
RS
E
Chip AddressRAM
8255 Port APort BPort CControl
Buffer 1Buffer 2Buffer 3LCD W C
W DR CR D
External Ports
ตัวอย่าง โปรแกรมท าให้ LED0 กับ LED 3 ที่ต่อกับ Buffer 3 ติด
#define IMAGE1 XBYTE [0x_ _ _ _]
IMAGE1 = 0x06; // TURNON
ตัวอย่าง โปรแกรมเขียนข้อมูล 08H จากหน่วยความจ า RAM ภายนอก
Address ที ่_ _ _ _
#define IMAGE1 XBYTE [0x_ _ _ _]
IMAGE1 = 0x08;
ตัวอย่าง โปรแกรมส่งค่า 3BH ไปออกที่ 8255 Port B
#define IMAGE1 XBYTE [0x_ _ _ _]
IMAGE1 = 0x3B;
17
ตัวอย่าง โปรแกรมท าให้ 7-segment หลักแรกติดเป็น
เลข 0
#define IMAGE1 XBYTE [0x_ _ _ _]
#define IMAGE2 XBYTE [0x_ _ _ _]
IMAGE1 = 0x3F;
IMAGE2 = 0x00;
External Ports18
P1.01
P1.12
3P1.2
4P1.3
A0/P0.0
A1/P0.1
A2/P0.2
A3/P0.3
39
38
37
36
8051
P1.45
P1.56
7P1.6
8P1.7
A4/P0.4
A5/P0.5
A6/P0.6
A7/P0.7
35
34
33
32
A8/P2.0
A9/P2.1
A10/P2.2
A11/P2.3
21
22
23
24
INT012
INT113
14T0
15T1
TXD11
RXD10
A12/P2.4
A13/P2.5
A14/P2.6
A15/P2.7
25
26
27
28
RESET
X2
18
X1
19
31EA/VP
PSEN29
D03
D14
7D2
8D3
Q0
Q1
Q2
Q3
2
5
6
9
D413
D514
17D6
18D7
Q4
Q5
Q6
Q7
12
15
16
19
74LS373
D03
D14
7D28D3
Q0
Q1
Q2
Q3
2
5
6
9
D413
D514
17D618D7
Q4
Q5
Q6
Q7
12
15
16
19
CLK11
GND10
A-HC374
VCC16
A1
2B3C
Y015
14Y1
E36
74LS138
E25 E14
Y213
Y312
Y411
Y5 10
Y7 7Y6
9
A010
A19
8A2
7A3
D0
D1
D2
D3
11
12
13
15
A46
A55
4A6
3A7
D4
D5
D6
D7
16
17
18
19
GND14
62256
A825
A924
21A1023A11
CE20
D034
D133
32D2
31D3
VCC
PA1
PA2
PA3
39
38
37
18
A09
A18
33RESET
6CS
PC5
PC6
PC7
GND
12
11
10
7
8255
PB0
PB1
PB2
PB3
19
20
21
22
PB5
PB6
PB7
PC0
23
24
23
14
5RD
36WR
PC1
PC2
PC3
PC4
15
16
17
13
D430
D529
28D6
27D7
PA4
PA5
PA6
PA7
19
20
21
22
PB42A12
2
A1326
1A14
VCC28
RD22
WR27
LE11
GND10
OE1
8GND
ALE/P30
20GND
40VCC
9
20VCC
20VCC
B018
B117
16B215B3
A0
A1
A2
A3
2
3
4
5
B414
B513
12B611B7
A4
A5
A6
A7
6
7
8
9
A-HC245
E19
20VCC 1DIR
10GND
D03
D14
7D28D3
Q0
Q1
Q2
Q3
2
5
6
9
D413
D514
17D618D7
Q4
Q5
Q6
Q7
12
15
16
19
CLK11
GND10
A-HC374
OE1 20
VCC
A15
B14
13C12D
74LS145
8GND
1201
OE1
C2
30pF
C1
30pF
+5V
+5V
+5V
+5V
+5VRP
10k
+5V
RD17
WR16
RD
WR
WR
RD
A9A10RES
RES
RD
WR
A15
A12
A13A14
A15
8255
8255
D0
D1D2
D3
D4D5
D6D7
SEG
SEG
23
34
45
56
67
79
810
911
16VCC
+5V
D0
D1D2
D3
D4D5
D6D7
DIG
DIG
LCD
Q1 357
R8 1k
R6 10
R1 330
R7 10k
LED
+5V
D0
7
D1
8 9D
21
0D
3
Vcc
2
D4
11
D5
12
13
D6
14
D7
LCD Module R/W5 A10
RS4 A9
E6GND
1V0
3
D0
D1D2D3D4
D5
D6
D7
BUF3 +5V
LCD
BUF3
+5V
10k
RP
10k
รูปแสดงวงจรตัวอย่างระบบ Microcontroller MCS-51 ซึ่งประกอบด้วย จอ LCD, 7-segment x 8, 8255 RAM 8x3k และ buffer 3 ตัว
External Memories19
ROM
ถ้า หรือ (Chip Enable) ถ้า มีสถานะเป็น High (ไม่ Active) วงจรภายในของ IC นี้ จะไม่ท างาน ถ้า หรือ (Output Enable) มีสถานะเป็น High (ไม่ Active) ขาสัญญาณ Data
Output ทั้งหมดจะมีสถานะเป็น High
Impedance การเลือกต าแหนง่ของข้อมูลภายใน ROM ท าโดยใช้สัญญาณที่ขา Address ทั้ง 11 เส้น (A0 –
A11) ซึ่งต าแหนง่ของข้อมูลทัง้หมดที่มีได้จะเป็น 2N (เมื่อ N เป็นจ านวนของขา Address) จากรูป จะได้จ านวนต าแหน่งของข้อมลูเป็น 211 =
2,048 (2K) ต าแหน่งๆ ละ 8 Bit (2K x 8
ROM)
E CE
G OE
External Memories20
RAMขาสัญญาณ (Chip Select) จะเป็นตัวควบคุมให้ RAM ท างานหรือไม่ท างาน (อ่าน / เขียน ข้อมูลได)้ ขาสัญญาณของ (Output Enable)
จะใช้ในการควบคุม RAM ให้อ่านข้อมูลออกมา และขาสัญญาณ (Write Enable) ใช้ในการควบคุมการเขียนข้อมูลเข้าสู่ RAM
CS
OE
WE
Accessing External Memory21
MCS-51P0P1
P3 P2
ALE
EAINTERNALROM LATCH
OE
RAMDATA
ADDR
WR
VCC
WR
PAGEBITES
I/ORD
0000H
เมื่อ MCS-51 อ่านข้อมูลจาก External Data Memory
เมื่อ MCS-51 เขียนข้อมูลเข้า External Data Memory
OE
OE WE
Connecting External Memories22
A0-A10 Address Inputs
Q0-Q7 Data Outputs
/P Chip Enable / Program
Output Enable
Vpp Program supply
Vcc Supply voltage
Vss Ground
Address Bus Memory
A15-A12 A11 - A8 A7 - A4 A3 - A0 Chip Address
xxxx x000 0000 0000 1 0000 0800 1000
xxxx x111 1111 1111 07FF 0FFF 17FF
P1.01
P1.12
3P1.2
4P1.3
A0/P0.0
A1/P0.1
A2/P0.2
A3/P0.3
39
38
37
36
RXD
TXD
ALE/P
10
11
30
8051
P1.45
P1.56
7P1.6
8P1.7
A4/P0.4
A5/P0.5
A6/P0.6
A7/P0.7
35
34
33
32
A8/P2.0
A9/P2.1
A10/P2.2
A11/P2.3
21
22
23
24INT0
12
INT113
14T0
15T1
A12/P2.4
A13/P2.5
A14/P2.6
A15/P2.7
25
26
27
28
RESET9
X218
X119
WR16
RD13
31EA/VP
PSEN29
D03
D14
7D2
8D3
Q0
Q1
Q2
Q3
2
5
6
9
D413
D514
17D6
18D7
Q4
Q5
Q6
Q7
12
15
16
19
LE1
74LS373
A08
A17
6A2
5A3
D0
D1
D2
D3
9
10
11
13
A44
A53
2A6
1A7
D4
D5
D6
D7
14
15
16
17
Vpp21
2716
A823
A922
19A10
OE13
E/P18
G20
Connecting External Memories23
Vpp21
2716
A823
A922
19A10
P1.01
P1.12
3P1.2
4P1.3
A0/P0.0
A1/P0.1
A2/P0.2
A3/P0.3
39
38
37
36
RXD
TXD
ALE/P
10
11
30
8051
P1.45
P1.56
7P1.6
8P1.7
A4/P0.4
A5/P0.5
A6/P0.6
A7/P0.7
35
34
33
32
A8/P2.0
A9/P2.1
A10/P2.2
A11/P2.3
21
22
23
24INT0
12
INT113
14T0
15T1
A12/P2.4
A13/P2.5
A14/P2.6
A15/P2.7
25
26
27
28
RESET9
X218
X119
WR16
RD13
31EA/VP
PSEN29
D03
D14
7D2
8D3
Q0
Q1
Q2
Q3
2
5
6
9
D413
D514
17D6
18D7
Q4
Q5
Q6
Q7
12
15
16
19
LE1
74LS373
OE13
OE13
A08
A17
6A2
5A3
D0
D1
D2
D3
9
10
11
13
A44
A53
2A6
1A7
D4
D5
D6
D7
14
15
16
17
E/P18
Address Bus Memory
A15-A12 A11 - A8 A7 - A4 A3 - A0 Chip Address
0000 0000 0000 0000 1 0000
0000 0111 1111 1111 07FF
Connecting External Memories24
Vpp21
2716
A823
A922
19A10
A08
A17
6A2
5A3
D0
D1
D2
D3
9
10
11
13
A44
A53
2A6
1A7
D4
D5
D6
D7
14
15
16
17
E/P18
Vpp21
2716
A823
A922
19A10
A08
A17
6A2
5A3
D0
D1
D2
D3
9
10
11
13
A44
A53
2A6
1A7
D4
D5
D6
D7
14
15
16
17
E/P18
Vpp21
2716
A823
A922
19A10
A08
A17
6A2
5A3
D0
D1
D2
D3
9
10
11
13
A44
A53
2A6
1A7
D4
D5
D6
D7
14
15
16
17
E/P
18
Vpp21
2716
A823
A922
19A10
P1.01
P1.12
3P1.2
4P1.3
A0/P0.0
A1/P0.1
A2/P0.2
A3/P0.3
39
38
37
36
RXD
TXD
ALE/P
10
11
30
8051
P1.45
P1.56
7P1.6
8P1.7
A4/P0.4
A5/P0.5
A6/P0.6
A7/P0.7
35
34
33
32
A8/P2.0
A9/P2.1
A10/P2.2
A11/P2.3
21
22
23
24INT0
12
INT113
14T0
15T1
A12/P2.4
A13/P2.5
A14/P2.6
A15/P2.7
25
26
27
28
RESET9
X218
X119
WR16
RD13
31EA/VP
PSEN29
D03
D14
7D2
8D3
Q0
Q1
Q2
Q3
2
5
6
9
D413
D514
17D6
18D7
Q4
Q5
Q6
Q7
12
15
16
19
LE1
74LS373
OE13
OE13
A08
A17
6A2
5A3
D0
D1
D2
D3
9
10
11
13
A44
A53
2A6
1A7
D4
D5
D6
D7
14
15
16
17
E/P18
A2
B3
74LS139
V04
5V1
E1
V26
V37
Address Bus Memory
A15-A12 A11 - A8 A7 - A4 A3 - A0 Chip Address
0000 0000 0000 0000 1 0000
0000 0111 1111 1111 07FF
0000 1000 0000 0000 2 0800
0000 1111 1111 1111 0FFF
0001 0000 0000 0000 3 1000
0001 0111 1111 1111 17FF
0001 1000 0000 0000 4 1800
0001 1111 1111 1111 1FFF
FFFF
2000 ไม่มี1FFF
1800 External ROM 4
17FF
1000 External ROM 3
0FFF
0800 External ROM 2
07FF
0000 External ROM 1