Tải bản đầy đủ (.pdf) (10 trang)

Quá trình vận hành ứng dụng Kit dùng để chuyển đổi AC sang DC trong hệ thống chuyển mạch nguồn p5 pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (665.65 KB, 10 trang )

luôn là một chẵn. Ví dụ nếu ACC chứa 10101101B, P sẽ là 1. Bit Parity thường
được liên kết với chương trình truyền nối tiếp có sử dụng parity.
 Thanh ghi B
Thanh ghi B có đòa chỉ F0h, chủ yếu dùng với thanh ghi ACC trong các phép
toán nhân và chia. Lệnh MUL AB nhân các số 8 bit không dấu trong thanh ghi A
và B. Kết quả là một số 16 bit chứa trong thanh ghi ACC (byte thấp) và B (byte
cao). Lệnh DIV B chia thanh ghi ACC cho B. Kết quả thương số được lưu trong
thanh ghi ACC số dư được lưu trong thanh ghi B. Thanh ghi B cũng được dùng như
những thanh ghi khác và có thể truy xuất bit (đòa chỉ F0h đến F7h)
 Con trỏ ngăn chồng (stack pointer – SP)
Stack – pointer là một thanh ghi 8 bit có đòa chỉ 81H. Nó chứa đòa chỉ hiện
thời của đỉnh stack. Khi đẩy dữ liệu vào stack, SP tăng lên một giá trò, tiếp theo dữ
liệu được ghi vào stack. Khi lấy dữ liệu ra khỏi stack, dữ liệu được đọc ra trước sau
đó SP được giảm. Stack của 8051 nằm trong vùng RAM nội và có thể truy xuất
bằng đòa chỉ trực tiếp. 128 bytes đầu tiên đối với 8051/8031 và 256 bytes đối với
8052/8032 trong vùng RAM nội có thể dùng làm stack. Để tạo ra stack bắt đầu tại
60H, ta khởi động thanh ghi SP:
MOV SP, #5FH ;
Như vậy stack được giới hạn trong 32 bytes. Ta dùng giá trò 5FH vì SP sẽ
tăng lên 60H trước khi đẩy dữ liệu đầu tiên vào stack.
Khi lập trình ta không cần phải khởi động lại thanh ghi SP vì nó đã được
khởi động với giá trò khi reset. Thanh ghi SP chứa giá trò mặc đònh là 07H. Do đó
stack mặc đònh bắt đầu tại 08H. Nếu trình không khởi động lại stack thì các thanh
ghi 1, 2, 3 không thể sử dụng vì nó được dùng làm stack.
Stack được truy xuất một cách rõ ràng bằng các lệnh PUSH, POP để lưu trữ
tạm thời hay truy xuất dữ liệu. Nó cũng có thể được truy xuất ngầm khi có các lệnh
gọi đến chương trình con. Các lệnh ACALL, LCALL hay ngắt sẽ đẩy thanh ghi
đếm chương trình (PC) vào stack. Lệnh RET, RETI trả giá trò trong stack lại cho
PC.
 Con trỏ dữ liệu (DPTR)
Con trỏ dữ liệu dùng để truy xuất mã hay dữ liệu từ bộ nhớ ngoài và thanh


ghi 16 bit. Thanh ghi này gồm hai thanh ghi DPL (byte thấp, đòa chỉ 82H) và DPH
(byte cao, đòa chỉ 83H). Ba lệnh sau đây sẽ ghi giá trò 55H vào RAM ngoài tại đòa
chỉ 1000H.
MOV A, #55H;
MOV DPTR, #1000H;
MOV @DPTR, A;
 Các thanh ghi Port:
Các port của 8051 gồm có port 0 đòa chỉ 80H, port 1 đòa chỉ 90H, port 2 đòa
chỉ A0H, port 3 đòa chỉ B0H. Các port 0, 2 và 3 không được dùng để xuất nhập nếu
đang sử dụng bộ nhớ ngoài. Còn lại port 1 có thể dùng để xuất nhập (I/O).
Tất cả các port đều có thể dùng truy xuất bit. Điều này cung cấp cho vi điều
khiển khả năng giao tiếp rất mạnh. Ta có thể dùng chân P1.7 để đóng mở động cơ.
Chân P1.7 nối với transitor để lái một relay đóng mở động cơ. Lệnh SETB P1.7 mở
động cơ. Lệnh CLR P1.7 tắt động cơ.
Hai lệnh trên dùng toán tử dấu chấm để xác đònh đòa chỉ bit trong một byte.
 Các thanh ghi bộ đònh thời:
8051 có hai bộ đònh thời 16 bit. Timer 0 có đòa chỉ 8AH (TL0 byte thấp) và
8DH (TH1 byte cao). Ngoài bộ đònh thời còn có hai thanh ghi: thanh ghi điều khiển
TCON đòa chỉ 88H và thanh ghi xác đònh mode cho timer TMOD đòa chỉ 89H.
Trong đó chỉ có thanh ghi TCON truy xuất được từng bit.
 Các thanh ghi cổng nối tiếp:
8051 chứa cổng nối tiếp bên trong MCU để giao tiếp với các thiết bò nối tiếp
như thiết bò đầu cuối, modem v.v… Cổng nối tiếp gồm có hai thanh ghi: một thanh
ghi đệm SBUF là nạp dữ liệu để truyền đi. Đọc SBUF là nhận dữ liệu đã thu được
vào. Các mode truyền có thể được lập trình thông qua thanh ghi điều khiển cổng kế
tiếp. Thanh ghi này có thể truy xuất bit và có đòa chỉ 98H.
 Các thanh ghi ngắt:
8051 có 5 nguồn ngắt và hai mức ưu tiên. Các ngắt bò cấm khi reset hệ
thống. Các ngắt được cho phép thông qua thanh ghi IE có đòa chỉ 0AH. Các mức ưu
tiên cũng được set bởi thanh ghi IP tại đòa chỉ B8H. Cả hai thanh ghi này đều có thể

truy xuất bit.
IE có đòa chỉ A8H. Ngắt chỉ được chấp nhận khi thanh ghi này đã được lập
trình.
 Thanh ghi PCON (Power Control Register)
Thanh ghi PCON có đòa chỉ 87H, chứa các bits điều khiển linh tinh, được tóm
tắt trong bảng 4.4.
Bit SMOD nhân đôi tốc độ truyền nối tiếp ở các mode 1, 2 và 3. Các bit 4, 5, 6
không được đònh nghóa. Bit 3 và 2 là hai cờ được tùy ý trong lập trình ứng dụng.
Các bit PD (power down) và IDL (idle) đều có trong các họ IC MCS-51 nhưng
chỉ với IC dùng CMOS mà thôi.
Lệnh set bit IDL là lệnh được thi hành cuối cùng trước khi CPU vào chế độ idle.
Ở tín hiệu này chế độ xung clock được ngắt ra khỏi CPU, nhưng không ngắt ra khỏi
ngắt quãng, timer và cổng nối tiếp. Trạng thái CPU và nội dung các thanh ghi được
bảo toàn. Các chân của cổng song song được giữ ở mức trạng thái của chúng. ALE
và PSEN ở mức cao.
Các chế độ idle kết thúc khi có bất kỳ một ngắt nào hoặc reset hệ thống, đồng
thời bit IDL bò xóa.
+ Power down Mode

it
K
ý hiệu
Mô tả
S
OMD




G

F1
G
F0
P
D
I
DL
Tốc độ kép; khi được set, tốc độ truyền nối tiếp
được nhân đôi các chế độ 1,2,3.
Không được đònh nghóa
“nt”
“nt”
Cờ dùng cho mục đích tổng quát 1
Cờ dùng cho mục đích tổng quát 2
Power down, set mode power down. Chỉ thoát khi
reset
Idle mode, set mode idle. Thoát khi có ngắt hoặc
reset
Bảng 4.4 Tóm tắt thanh ghi PCON

Lệnh set bit PD là lệnh cuối cùng trước khi CPU chuyển sang mode
power down.
Ở chế độ này: (1) bộ dao động nội ngưng hoạt động, (2) các chức năng bò
dừng, (3) nội dung RAM nội được giữ ở mức logic của chún, (5) ALE và PSEN ở
mức thấp. Chỉ có thể thoát khỏi chế độ này khi reset hệ thống.
Khi ở chế độ power down, Vcc có thể giảm đến 2V. Lưu ý cần phải trả lại
mức áp 5V cho Vcc khi thoát khỏi chế độ power down.
VI – BỘ NHỚ NGOÀI
Mở rộng bộ nhớ là một khả năng quan trọng đối với vi điều khiển nhằm
tránh gặp bế tắc trong vấn đề thiết kế. Họ MCs-51 có thể mở rộng 64Kbs và bộ

nhớ mã lệnh 64Kbs dữ liệu. Các IC giao tiếp ngoại vi cũng có thể thêm vào để
tăng năng xuất nhập. Nó trở thành một phần của bộ dữ liệu ngoại và được giải mã
I/O như bộ nhớ.
Khi bộ nhớ ngoài được sử dụng, port 0 không được dùng làm cổng xuất
nhập. Nó trở thành bus dùng để phân kênh đòa chỉ và dữ liệu, ALE chốt nó như là
bytes thấp của bus đòa chỉ khi bắt đầu mỗi chu kỳ truy xuất bộ nhớ ngoài. Port 2
thường dùng làm byte cao của bus đòa chỉ.

Chu kỳ bộ nhớ


A0  A15 Đòa chỉ



D0  D7 Dữ liệu


(a) Không phân kênh (24 chân)

Chu kỳ bộ nhớ

AD8  AD15 Đòa chỉ



AD0  AD7 Đòa chỉ Dữ liệu

(b) Phân kênh (16 chân)
Hình 4.5 Phân kênh bus đòa chỉ và bus dữ liệu


Hình trên mô tả việc phân kênh và không phân kênh bus đòa chỉ và bus dữ
liệu. Nếu không phân kênh, với 16 chân đòa chỉ và 8 chân dữ liệu ta có 24 chân cho
bus đòa chỉ và bus dữ liệu. Trong khi đó nếu phân kênh, 8 chân dữ liệu được dùng
chung với 8 chân thuộc byte thấp của bus đòa chỉ nên chỉ có 16 chân cho bus đòa chỉ
và bus dữ liệu. Điều này có ý nghóa lớn trong việc chế tạo IC.
Thứ tự phân kênh như sau : ở nữa chu kỳ đầu, byte thấp của đòa chỉ xuất ra
port 0 và được chốt bằng ALE. Byte này được chốt ở bộ chốt trong suốt chu kỳ bộ
nhớ. Trong nữa chu kỳ tiếp theo port 0 là bus dữ liệu, có thể xuất nhập tùy ý.
Truy xuất bộ nhớ mã lệnh ngoài (External Code memory):
Bộ nhớ mã ngoài được đọc bằng tín hiệu PSEN (hình 4.6). Trong một chu kỳ
máy ALE tác động 2 lần và 2 bytes được đọc từ bộ nhớ chương trình. Giản đồ thời
gian của hoạt động này được gọi là chu kỳ lấy lệnh (hình 4.7).

Truy xuất bộ nhớ dữ liệu ngoài (External Code memory):
Đây là bộ nhớ chứa dữ liệu, thường là RAM và được truy xuất bởi tín hiệu
RD và WR. Dữ liệu này chỉ được truy xuất bằng lệnh MOVX thông qua thanh ghi
con trỏ dữ liệu DPTR, hoặc R0, R1.
RAM giao tiếp với 8051 giống như EPROM. Ngoại trừ chân RD được nối với
chân OE và chân WR được nối với chân W. Còn lại các bus dữ liệu và đòa chỉ nối
như EPROM. Với 16 đường đòa chỉ ta có thể có đến 64Kbs cho vùng nhớ dữ liệu.
Giản đồ thời gian của viêc đọc vùng nhó dữ liệu ngoài khi thi hành lệnh
“MOV A,@DPRT” được cho ở hình 4.8. Lưu ý chỉ có chân RD được dùng cho phép
RAM.
Giản đồ thời gian của việc ghi cũng tương tự từ đường WR xuống mức thấp
và dữ liệu xuất ra port 0.
Port 2 có thể không dùng làm byte cao của bus đòa chỉ trong hệ thống không
sử dụng vùng nhớ mã ngoài mà sử dụng vùng nhớ dữ liệu ngoài nhỏ. Tám bit đòa
chỉ có thể truy xuất được một vùng nhớ 256 bytes, được gọi là một trang bộ nhớ.
Nếu vùng nhớ này lớn hơn 256 bytes ta có thể dùng thêm một vài chân của port 2

để chọn trang.
Khi truy xuất một trang (256 bytes) của vùng dữ liệu ngoài ta có thể dùng
R0 hoặc R1 để làm con trỏ đòa chỉ trỏ đến byte dữ liệu cần truy xuất. Ví dụ những
lệnh đọc nội dung của RAM ngoài có đòa chỉ 0050H vào thanh tích lũy.
MOV R0, #50H ;
MOV A, @R0 ;
Giải mã đòa chỉ:
Nếu 8051 sử dụng cả EPROM và RAM ngoài đòi hỏi phải giải mã đòa chỉ.
Việc giải mã đòa chỉ rất quen thuộc đối với hầu hết vi xử lý. Ví dụ nếu dùng
EPROM 8K và RAM 8K, bus đòa chỉ giải mã để chọn IC giới hạn trong 8Kbytes:
0000H đến 1FFFH, và 2000H đến 3FFFH, v.v…
Thông thường ta dùng IC giải mã 74138 với ngõ vào là 3 bits cao nhất của
bus đòa chỉ. Do đó mỗi ngõ tương ứng với 8Kbs. Các ngõ ra này đưa vào các chân
CS của các IC nhớ. Lưu ý sự phân chia tín hiệu cho phép xuất của EPROM và
RAM khác nhau (RD cho RAM và PSEN cho EPROM). 8051 có thể có đến
64Kbytes cho mỗi vùng ROM và RAM.
Hình 4.8: Giản đồ thời gian khi đọc dữ liệu từ bộ nhớ ngoài
RAM


W


OE
Sự chồng lắp của vùng mã lệnh và dữ liệu ngoài:
Vì bộ nhớ mã lệnh chỉ được đọc nên sẽ bất tiện trong việc phát triển phần
mềm. Làm thế nào để sửa lỗi của chương trình nằm trong kit khi bộ nhớ mã lệnh
chỉ có thể đọc. Biện pháp thường được sử dụng ở đây là chồng lắp hai vùng mã
lệnh và dữ liệu lên nhau. Tín hiệu PSEN dùng để đọc mã lệnh và tín hiệu RD dùng
để đọc dữ liệu trong cùng một bộ nhớ. RAM chứa cả chương trình và dữ liệu. Hai

tín hiệu RD và PSEN được đưa vào cổng AND. Ngõ ra của cổng AND nối với chân
OE của RAM. Mạch ở hình 4.9 cho phép ghi dữ liệu vào RAM. Vì vậy chương trình
có thể được load vào RAM (bằng cách ghi dữ liệu vào RAM) và thi hành (bằng
cách truy xuất như bộ nhớ mã lệnh).



WR

RD
PSEN

Hình 4.9 Mạch tạo nên sự chồng lắp hai vùng nhớ

VII – HOẠT ĐỘNG RESET
8051 được reset khi giữ chân RST ở mức cao ít nhất trong hai chu kỳ máy và
sau đó trả về mức thấp. RST có thể được nối với switch hoặc mạng tụ, trở để tạo
tính reset.
Trạng thái của tất cả thanh ghi sau khi reset hệ thống tóm tắt trong bảng 4.5.
Thanh ghi đếm chương trình được nạp giá trò 0000H sau khi reset. Khi RST xuống
mức thấp chương trình luôn bắt đầu tại điểm 0000H. Nội dung các thanh ghi trong
RAM nội không bò ảnh hưởng bởi hoạt động reset.

Thanh ghi Noọi dung
PC
ACC
B
PSW
SP
DPTR

PORT 0 3
IP
IE
Timer registers
SCON
SBUF
PCON (HMOS)
PCON (CMOS)
0000H
00H
00H
00H
07H
0000H
FFH
XXX00000B
0XX00000B
00H
00H
00H
0XXXXXXXB
0XXX0000B
Baỷng 4.5 Giaự trũ caực thanh sau khi reset heọ thoỏng
Chương IV
TÓM TẮT TẬP LỆNH

I – GIỚI THIỆU:
Chương trình được xây dựng nên từ tập lệnh, tuân theo cú pháp và cấu trúc
logic. Một họ vi xử lý luôn đi kèm theo tập lệnh của nó. Chương này gới thiệu tập
lệnh của họ MCs-51, việc đònh vò và một vài ví dụ về các tình huống gặp phải khi

lập trình. Chương này không bàn về kỹ thuật lập trình cũng như về trình biên dòch.
Tập lệnh họ vi điều khiển MCx-51 tối ưu cho các điều khiển ứng dụng 8 bit.
Nó cung cấp các cách đònh vò nhanh, gọn thuận tiện cho việc truy xuất dữ liệu 8 bit
trong vùng RAM nội. Tập lệnh cũng đưa ra một số lệnh thao tác trên bit thuận tiện
cho việc điều khiển và các hệ thống logic có yêu cầu xử lý luận lý.
Là một xử lý 8 bit, các lệnh của 8051 là mã 8 bit. Do đó tập lệnh có tối đa
256 lệnh. Trong đó 255 lệnh được đònh nghóa. Trong một lệnh, ngoài mã lệnh (1
byte) ra còn có thể có dữ liệu và đòa chỉ. Trong tập lệnh 8051 có 139 lệnh 1 byte,
92 lệnh 2 byte và 24 lệnh 3 byte. Phần phụ lục sẽ mô tả đầy đủ về mỗi mã, về mã
gợi nhớ, số byte lệnh, số chu kỳ hành lệnh.
II – CÁC MODE ĐỊNH VỊ (ADDRESSING MODE)
Khi lệnh thao tác trên dữ liệu, một câu hỏi được đặt ra là “dữ liệu ở đâu?”.
Để trả lời câu hỏi này ta xem xét qua các mode đònh vò của 8051.
Đònh vò dữ liệu là một phần quan trọng trong tập lệnh. Chúng xác đònh dữ
liệu nguồn và đích theo những cách khác nhau tùy theo cách lập trình. Trong phần
này ta sẽ lhảo sát kỹ từng mode đònh vò và cho mỗi loại một ví dụ. Có 8 mode đònh
vò:
 Thanh ghi
 Trực tiếp
 Gián tiếp
 Tức thời (Immediate)
 Tương đối
 Xa
 Chỉ số
Đònh vò bằng thanh ghi:
Người lâp trình truy xuất dữ liệu chứa trong các thanh ghi từ R0 đến R7
thông qua tên gọi của chúng. Đòa chỉ của 8 thanh ghi này được giải mã thông qua
bit thấp nhất của chúng. Do đó mã lệnh và toán hạng đòa chỉ được gom chung vào 1
byte.


Opcode 5-bit n n n

×