Hình 2.21: Dạng thứccủa thanh ghi MSR.
Tải bản đầy đủ - 0trang
46
OE: Overrun Error: (lỗi do thu đè): 1 – có hiện tượng thu đè (có thể do
CPU bị chậm), bit này bị xóa khi CPU đọc thanh ghi LSR.
PE: Parity Error (lỗi parity): 1 – có lỗi parity, bit này bị xóa khi CPU đọc
LSR.
FE: Framing Error (lỗi khung ): 1 – có lỗi khung, bit này bị xóa khi CPU
đọc thanh ghi LSR.
BI: Break Interrupt (có sự gián đoạn trong khi truyền): 1 – khi tín hiệu ở
đầu vào phần thu ở mức thấp lâu hơn thời gian dành cho một ký tự, bit này bị
xóa khi CPU đọc thanh ghi LSR.
THRE: Transmitter Holding Register Empty (thanh ghi giữ phát rỗng): 1 –
khi ký tự đã được truyền từ THR →TSR, bit này bị xóa khi CPU đưa ký tự tới
thanh ghi THR.
TSRE: transmitter Shift Register Empty (thanh ghi dịch phát rỗng): 1 – khi
một ký tự đã được phát đi, bit này bị xóa khi có một ký tự được chuyển từ
THR→TSR.
2.4.3. Các thanh ghi trong máy tính giao tiếp với UART8250A/ 16450:
Để giúp cho việc lập trình giao tiếp với các thiết bị bên ngoài qua cổng tuần
tự , máy tính định vị các địa chỉ thanh ghi trong máy để người lập trình thao tác
với UART.
- TD/RD Buffer Register (3F8h: COM1; 2F8h: COM2)
- Inrerupt Enable Register (3F9h; 2F9h )
- Interrupt Identification Register (3FAh; 2FAh )
- Line Control Register (3FBh; 2FBh )
- Modem Cotrol Register (3FCh; 2FCh )
- Line Status Register (3FDh; 2FDh )
- Modem Status regisret (3FEh; 2FEh )
47
Vì những tính năng ưu việt của 8250 nên ta chọn mạch UART 8250A
(16450) cho mạch thu phát bất đồng bộ.
2.5. Chọn chíp vi xử lý.
2.5.1. Vi xử lý AT89C51.
Vi xử lý AT89C51 được chế tạo bởi hãng ATMEL, về cơ bản nó có cấu tạo
bên trong, sơ đồ chân cũng như sử dụng tập lệnh tương thích với họ MCS_51
của hãng INTEL.
Các đặt điểm cơ bản của vi mạch AT89C51:
Đơn vị xử lý trung tâm 8 bit đã được tối ưu hóa để đáp ứng các chức năng
điều khiển.
Khối logic xử lý theo bit thuận tiện cho các phép toán Boole.
Bộ tạo dao động giữ nhịp bên trong (đến 12Mhz).
Tập lệnh rất phong phú.
GiaoCác
diện ngắt
nối tiếp có khả năng hoạt độngCác
songsự
cơng,
đồng
bộ (UART).
kiện
cần
ngồi
đếm
16 (32) đườngNguồ
dẫn vào/ra haiRAM
hướng và từng hướng có thể được định địa chỉ
nội
một cách tách biệt. n
SF
ngắt
Rưu tiên.
trong
Năm nguồn ngắt
với hai mức
Time
Time
128
Điều
Có thể mở
rộng bộ nhớ chương trình (ROM)r bên
ngồi
0
rlên
1 đến 64KB.
byte
khiể
RAM
Có thể mởn rộng dung lượng
bộ nhớ dữ liệu (RAM) bên ngoài lên đến
ngắt
64KB.
Hai bộ đếm/định
CPU thời 16 bit.
Bộ nhớ EEPROM nội 4KB.
Q
Bộ
Quả
Por
Porcó thểPor
Dung lượng bộ nhớ RAM nội,
nhiều nhất
lên đếnPor
128 byte.Cổng
dao
nuản
lý lý t0
t2
t1
t3
nối tiếp
bus
bus
động
2.5.2. Cấu trúc của bộ vi xử lý AT89C51 (Hình 2.23).
AL
XTAL
Địa chỉ Địa chỉ
1,2 PSE E thấp/dữ cao
N
liệu
48
Hình 2.23: Cấu trúc của bộ vi xử lý AT89C51
- Bốn bank thanh ghi.
- Con trỏ ngăn xếp (SP: Stack Pointer) cũng như con trỏ dữ liệu (DPTR:
Data Pointer) để định địa chỉ cho bộ nhớ dữ liệu bên ngồi.
Ngồi ra còn có: Bộ đếm chương trình (PC: Program Counter), bộ giải mã
lệnh, bộ điều kiển thời gian và logic.
Đơn vị xử lý trung tâm nhận trực tiếp xung nhịp từ bộ tạo dao động được
lắp thêm vào, linh kiện phụ trợ có thể là một khung dao động bằng vật liệu gốm
hoặc một cộng hưởng bằng thạch anh. Ngồi ra, còn có khả năng đưa một tín
hiệu giữ nhịp từ bên ngồi vào. Chương trình đang chạy có thể cho dừng lại nhờ
một khối logic ngắt ở bên trong. Các nguồn ngắt có thể là: các biến cố ở bên
ngồi, sự tràn bộ đếm / định thời hoặc cũng có thể là giao diện nối tiếp. Bộ vi xử
49
lý AT89C51 có 4KB EEPROM nội cho phép người dùng có thể lập trình và xóa
bằng điện. Đây cũng là ưu điểm mạnh nhất của vi mạch này so với các họ vi xử
lý khác, nó cho phép đơn giản được phần cứng trong các ứng dụng nhỏ mà
khơng cần sử dụng ROM ngồi như khi dùng các họ khác. Ngồi ra nó còn cung
cấp 128 byte RAM nội để có thể xắp xếp dữ liệu và thông tin điều khiển.
Bộ vi xử lý AT89C51 chứa hai bộ định thời 16 bit, chúng cũng có thể được
dùng như là bộ đếm các sự kiện. Ngồi ra nó còn có 4 cổng (PORT) rộng 8 bit,
độc lập với nhau, các cổng này có thể được sử dụng cho những mục đích rất đa
dạng: Khi vi xử lý làm việc với bộ nhớ chương trình ngồi, cổng P0 dùng để
truyền nửa dưới của các địa chỉ nhớ được sử dụng giống như dùng cho các dữ
liệu 8 bit. Sau đó cổng P2 sẽ điển ra quá trình xuất ra nửa trên của các địa chỉ 8
bit. Cổng P1 và P3 có chứa mỗi cổng một cổng vào ra 8 bit, có thể sử dụng được
cho những mục đích điều khiển khác nhau. ở cổng P3 còn có thêm các đường
dẫn điều khiển dùng để trao đổi với một bộ nhớ bên ngoài, để đấu nối giao diện
nối tiếp cũng như các đường dẫn ngắt bên ngoài.
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ,
làm việc độc lập với nhau. Bằng cách đấu nối các bộ đệm thích hợp, ta có thể
hình thành một cổng nối tiếp RS_232 đơn giản. Tốc độ truyền qua cổng nối tiếp
có thể được đặt trong một vùng rộng và được ấn định bằng một bộ định thời.
2.5.2. Sự sắp xếp chân ra:
Cấu hình chân và vỏ thông dụng nhất của AT89C51 là DIP 40 (Dual In
39
21
P 0 . 0kiện
/ A D 0 như hình
P 2 . 0 2.24
/A 8
Package). Sơ đồ bố trí chân
3 8 linh
2: 2
P 0 .1 /A D 1
P 2 .1 /A 9
3
3
3
3
3
3
7
6
5
4
3
2
1
2
3
4
5
6
7
8
19
18
9
31
P
P
P
P
P
P
0
0
0
0
0
0
.2
.3
.4
.5
.6
.7
P
P
P
P
P
P
P
P
1
1
1
1
1
1
1
1
.0
.1
.2
.3
.4
.5
.6
.7
/A
/A
/A
/A
/A
/A
D
D
D
D
D
D
XTA L1
XTA L2
R S T
E A /V P P
A T89C 51
2
3
4
5
6
7
P
P
P
P
P
P
2
2
2
2
2
2
.2
.3
.4
.5
.6
.7
/A
/A
/A
/A
/A
/A
1
1
1
1
1
1
0
1
2
3
4
5
P 3 .0 /R XD
P 3 .1 /T XD
P 3 .2 /IN T O
P 3 .3 /IN T 1
P 3 .4 /T O
P 3 .5 /T 1
P 3 .6 /W R
P 3 .7 /R D
P S E N
A L E /P R O G
2
2
2
2
2
2
3
4
5
6
7
8
1
1
1
1
1
1
1
1
0
1
2
3
4
5
6
7
29
30
50
Hình 2.24: Sơ đồ bố trí chân linh kiện AT89C51
1)
Port 0: Là port hai chức năng trên các chân 32 – 39. Khi sử dụng bộ
nhớ trong thì nó như là một port I/O ( P0.0 → P0.7). Khi sử dụng bộ nhớ ngồi
thì nó đóng vai trò như một bộ MUX địa chỉ/ data:
A0→A7
MUX
AD0→AD7
D0→D7
Trong nửa chu kỳ đầu A0 →A7, trong nửa chu kỳ sau D0 → D7
2) Port 1: Là một port I/O trên các chân 1 – 8 (P1.0→ P1.7) nó chỉ được
dùng để giao tiếp với các thiết bị ngồi và khơng có các chức năng khác.
3) Port 2: Là một port cổng dụng kép trên các chân 21 – 28. Khi sử dụng
bộ nhớ trong thì nó như là một port I/O đa dụng (P2.0→P2.7), khi sử dụng bộ
nhớ ngồi thì port 2 chính là byte cao của các đường địa chỉ (A8→A15).
4) Port 3: Chiếm các chân từ 10 đến 17, ngồi chức năng chính là một I/O
port đa dụng (P3.0→P3.7), mỗi chân của port 3 còn có các chức năng khác nhau,
độc lập.
Bảng 4: Chức năng các chân port 3.
Chân
P3.0
P3.1
P3.2
P3.3
Ký hiệu
RXD
TXD
INT 0
INT 1
Mô tả
Ngõ vào cổng SIO (giao tiếp nối tiếp)
Ngõ ra cổng SIO
Ngõ vào interrupt 0
Ngõ vào interrupt 1
51
P3.4
P3.5
T0
T1
Ngõ vào CK ngoài timer 0
Ngõ vào CK ngoài timer 1
P3.6
WR
Xung WR ghi bộ nhớ ngoài
P3.7
RD
Xung RD đọc bộ nhớ ngồi
2) PSEN: (Program Store Enable): Chân 29, tích cực mức thấp trong chu
kỳ nhận lệnh, chỉ báo data trên dus là mã lệnh.
Trong trường hợp sử dụng bộ nhớ chương trình trong thì PSEN khơng tích
cực.
MCU
PSEN OE
ROM
6) ALE: (Address Latch Enable )
Chân 30, tích cực mức cao trong nửa chu kỳ đầu chỉ báo dữ liệu trên port
chính là địa chỉ byte thấp A0 ÷ A7.
P0
MCU
AD0 ÷ AD7
P2
7)
ALE
A8÷ A15
D
Q
A0
÷ A7
Chốt 8
bit
G
EA (External Acess): Chân 31, cho phép chọn bộ nhớ chương
trình trong hay ngồi.
+ EA = 0 : MCU sử dụng bộ nhớ chương trình ngồi
+ EA = 1: MCU sử dụng bộ nhớ chương trình trong.
8) RST (Reset):
52
Ngõ vào RST trên chân 9 là ngõ Reset của 8951, khi ngõ này lên mức cao
(trong ít nhất hai chu kỳ máy) các thanh ghi bên trong 8951 được đặt ở các giá
trị như bảng 5.
Bảng 5: Ngõ vào RST.
Thanh ghi
Đếm chương trình PC
Nội dung
0000H
Tích luỹ A
00H
B
00H
PSW
00H
SP
07H
DPTR
0000H
Port 0-3
FFH
IP
XXX00000B
IE
0XX00000B
Các thanh ghi định thời
00H
SCON
00H
SBUF
00H
PCON (HMOS)
0XXXXXXXB
PCON (CMOS)
0XXX0000B
9) Cấp dao động: 8951 có một bộ dao động trên chip, nó thường được nối
với thạch anh giữa hai chân18 và 19 và các tụ giữ, tần số thạch anh thông
thường là 12MHz.
10) Cấp nguồn: 8951 vận hành với nguồn đơn +5V. Vcc được nối vào chân
40 và Vss (GND) được nối vào chân 20.
2.5.3. Tổ chức bộ nhớ của AT89C51:
89C51 có bộ nhớ theo cấu trúc Harvard: có những vùng nhớ riêng biệt cho
chương trình và dữ liệu. Cả chương trình và dữ liệu đều có thể ở bên trong, tuy
nhiên chúng có tthể được mở rộng bằng các thành phần bên ngoài lên tới 64Kb
bộ nhớ chương trình và 64 Kb bộ nhớ dữ liệu.
53
Bộ nhớ bên trong bao gồm EEPROM và RAM trên chip, RAM trên chip
bao gồm nhiều phần: phần lưu trữ đa dụng, phần địa chỉ hóa từng bit, các bank
thanh ghi và các thanh ghi chức năng đặt biệt:
Bộ nhớ RAM bên trong:
7Fh
...
30h
2Fh
...
20h
1Fh
...
18h
17h
...
10h
0Fh
...
08h
07h R7
...
00h R0
sử dụng tự do và ngăn xếp
các địa chỉ bit 0 . . . 7Fh
bank thanh ghi 3
bank thanh ghi 2
bank thanh ghi 1
bank thanh ghi 0
+ Vùng RAM đa dụng: Địa chỉ từ 30H÷ 7FH, chỉ truy xuất byte, khơng
truy xuất bit được, có thể định địa chỉ trực tiếp hoặc gián tiếp.
+Vùng RAM định vị bit: Địa chỉ từ 20H÷ 2FH, chứa 128 bit từ
00H÷ 7FH, cho phép truy xuất trực tiếp tên bit.
+ Vùng bank thanh ghi: địa chỉ từ 00H÷ 1FH bao gồm bốn bank thanh ghi
ký hiệu từ R0 đến R7, trong chương trình phải khai báo bank thanh ghi tích cực
hiện hành thông qua bit RS1, RS0 nằm trong thanh ghi PSW.
2.5.4. Các thanh ghi chức năng đặc biệt: (SFRS)
Vùng RAM nội địa chỉ từ 80H–FFH, trong vùng này bố trí khoảng 21 thanh
ghi đặc biệt , phụ trách một chức năng nào đó của MCU.
54
1) Thanh ghi PSW (Program status Word): Thanh ghi từ trạng thái
chương trình ở địa chỉ D0H chứa các cờ (các bit chức năng) trạng thái của hệ
thống:
Bảng 6: Chức năng thanh ghi PSW
Bit
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
Ký hiệu
Địa chỉ
CY
AC
F0
RS1
D7H
D6H
D5H
D4H
RS0
D3H
OV
P
D2H
D1H
D0H
Ý nghĩa
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Bit 1 chọn bank thanh ghi
Bit 0 chọn bank thanh ghi
00 : bank 0
01 : bank 1
10 : bank 2
11 : bank 3
Cờ tràn
Dự trữ
Cờ parity chẵn
2) Thanh ghi B: Địa chỉ F0H, truy xuất bit, ngồi chức năng là thanh ghi
đa dụng còn tham gia vào 2 phép toán nhân và chia.
3)
Thanh ghi SP (Stack Poiter): Địa chỉ 81H, vùng ngăn xếp nằm trong
RAM nội về nguyên lý dung lượng tối đa là 128 byte. Trước khi cất vào stack
nội dung SP tăng lên 1 rồi mới cất (nội dung SP là con trỏ địa chỉ), khi lấy dữ
liệu ra khỏi stack nội dung SP giảm đi 1 sau khi lấy data.
4) Thanh ghi DPTR (Data Poiter): Sử dụng làm con trỏ địa chỉ bộ nhớ dữ
liệu ngoài.
Chia làm hai thanh ghi:
DPL (địa chỉ 82H) chứa byte thấp.
DPH (địa chỉ 83H) chứa byte cao.
5) Các thanh ghi cổng ngoại vi: Các lệnh liên quan đến xuất nhập ngoại vi
đều thông qua các thanh ghi cổng.
Port 0: Thanh ghi P0 (địa chỉ 80H)
55
Port 1: Thanh ghi P1 ( địa chỉ 90H)
Port 2: Thanh ghi P2 ( địa chỉ A0H)
Port 3: thanh ghi P3 (địa chỉ B0H)
6) Các thanh ghi timer: TMOD (địa chỉ 89H): Chọn mode làm việc timer.
TCON (địa chỉ 88H): điều khiển timer
TL0 (địa chỉ 8AH): byte thấp timer 0
TH0 (địa chỉ 8CH): byte cao timer 0
TL1 (địa chỉ 8BH): byte thấp timer 1
TH1 (địa chỉ 80H): byte cao của timer 1
7) Các thanh ghi SIO: SCON (98H): Khởi động mode và điều khiển SIO.
SBUF ( 99H): Chuyển dữ liệu từ nối tiếp thành song song và ngược lại.
8) Các thanh ghi phục vụ ngắt: Có 5 nguồn ngắt với 2 cấp ưu tiên:
+Thao tác trên thanh ghi IE (A 8H): Cho phép / cấm ngắt.
+Thao tác trên thanh ghi IP (B8H): Cấp ưu tiên ngắt.
9)Thanh ghi điều khiển công suất (PCON): Địa chỉ 87H, không truy xuất
bit được, các bit của thanh ghi này được dùng trong việc tác động lên tốc độ
baud (SMOD) trong truyền thông nối tiếp, đưa vi mạch vào mode tạm nghỉ hay
mode hạ nguồn.
2.5.5. Hoạt động của Timer:
1) Giới thiệu: 8951 có 2 bộ timer 16 bit on chip: Timer 0 và timer 1.
-
Đặt mode làm việc và điều khiển bằng mềm.
-
Các timer tương đương như là bộ đếm cứng.
-
Những thanh ghi phục vụ cho timer:
• Thanh ghi TMOD: Đặt mode làm việc
• Thanh ghi TCON: Điều khiển timer.
• TH0, TL0:Bộ timer 0
• TH1, TL1: Bộ timer 1
56
2) Thanh ghi TMOD: Có địa chỉ 89H, là thanh ghi 8 bit, đặc các mode làm
việc cho timer.
Tóm tắt thanh ghi TMOD:
Bảng 7: Tóm tắt thanh ghi TMOD.
Bit
7
Tên
Gate
Timer
1
Mơ tả
Bit cổng. Gate=1 timer chỉ đếm khi INT1=1
Bit chọn Timer/Counter. C/ T =1 counter đếm bẵng
6
C/ T
1
xung ck ngoài ngõ vào T1
5
4
3
2
1
M1
M0
Gate
C/T
M1
1
1
0
0
0
C/ T =0 timer, xung ck trong từ dao động nội
Bit 1 chọn mode
Bit 0 chọn mode
Bit cổng (timer 0)
Bit chọn timer/counter
Bit 1 chọn mode
0
M0
0
Bit 0 chọn mode
Bảng 8: Bảng chọn mode.
M1
0
0
1
1
M0
0
1
0
1
Mode
0
1
2
3
Mô tả
Timer 13 bit
Timer 16 bit
Timer 8 bit
Timer tách biệt
3) Thanh ghi TCON: Địa chỉ 88H , truy xuất bit được, là thanh ghi 8 bit
Bảng 9: Tóm tắt thtanh ghi TCON:
Bit
Ký hiệu
Địa chỉ
bit
Mô tả
Cờ báo tràn timer 1, phần cứng đặt
TCON.7
TF1
8FH
TF1=1 khi timer tràn, xóa bằng
mềm hoặc cứng.