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 p6 - Pdf 20


Ví dụ lệnh sau cộng nội dung R7 vào thanh ghi tích luỹ:
ADD A, R7;
Mã lệnh là 001011111B. Trong đó 5 bit cao 00101 chỉ mã lệnh 3 bit thấp 111
chỉ thanh ghi R7.
Một vài lệnh xác đònh trực tiếp trên thanh ghi như thanh ghi tích luỹ, con trỏ
dữ liệu …do đó không cần đến các bit đòa chỉ. Bản thân mã lệnh đã mô tả thanh ghi.
Đònh vò trực tiếp :
Đònh vò trực tiếp có thể truy xuất bất kỳ byte nào trong vùng nhớ nội hoặc
các thanh ghi chức năng. Một byte được thêm vào mã lệnh để xác đònh vò trí thanh
ghi được dùng.

Opcode 8-bit Direct Adress 8-bit

Tùy thuộc vào bit cao nhất của byte đòa chỉ trực tiếp, một trong hai vùng nhớ
sẽ được chọn. Khi bit 7 của đòa chỉ trực tiếp bằng 0: đòa chỉ trực tiếp có giá trò từ 0
đến 127 (00H – 0FH) và 128 bytes thấp của on chip RAM được tham khảo đến, Tất
cả các I/O port, thanh ghi chức năng. Thanh ghi điều khiển, thanh ghi trạng thái có
đòa chỉ từ 128 đến 255 (80H-FFh). Khi bit 7=1 byte đòa chỉ trực tiếp nằm trong giới
hạn này, tương ứng với thanh ghi chức năng sẽ được truy xuất. Ví dụ port 0 và port
1 có đòa chỉ tương ứng là 80H và 90H. Ta không cần phải biết đòa chỉ của những
thanh ghi này, trình biên dòch luôn hiểu các mã gợi nhớ ngắn gọn của nó như P0,
P1, TMOD…
Đònh vò gián tiếp:
Làm thế nào để nhận dạng một biến, nếu đòa chỉ của nó được xác đònh, tính
toán, thay đổi khi chương trình đang chạy. Vấn đề này được đặt ra khi thao tác các
vò trí nhớ liên tục, chuỗi số, hay xâu ký tự. Thanh ghi và đòa chỉ trực tiếp không thể
dùng vì toán hạng đòa chỉ phải được nhân biết trong thời gian biên dòch.
Để giải quyết vấn đề trên 8051 sử dụng đòa chỉ gián tiếp. R1 và R0 được coi
như những con trỏ. Nội dung của chúng chỉ đến một đòa chỉ nào đó trong RAM khi
đọc hoặc ghi dữ liệu. Bit thấp nhất trong byte mã lệnh xác đònh thanh ghi nào (R0

Tất cả các lệnh dùng đònh vò tức thời đều sử dụng hằng dữ liệu 8 bit. Ngoại
trừ khi khởi động thanh ghi con trỏ dữ liệu (DPTR)
MOV DPTR, #40000H;
Là một lệnh 3 bytes nạp số 16 bit vào thanh ghi con trỏ.
Đònh vò tương đối:
Đònh vò tương đối chỉ dùng trong các lệnh jump. Đòa chỉ tương đối (offset) là
một số 8 bit có dấu được cộng vào thanh ghi đếm chương trình để chỉ ra đòa chỉ của
lệnh tiếp theo phải thi hành. Vì offset là một số 8 bit có dấu nên tầm nhảy chỉ giới
hạn trong khoảng cách +127 và –128 vò trí.
Trước khi cộng, thanh ghi đếm chương trình tăng lên đến đòa chỉ sau lệnh
jump. Vì vậy, đòa chỉ mới là tương đối so với đòa chỉ lệnh kế tiếp chứ không phải
đòa chỉ lệnh jump.
Thông thường chi tiết này không liên quan đến người lập trình, khi mà đích
nhảy đến được mô tả bằng một nhãn. Trình biên dòch sẽ đònh giá trò offset tương
đối tương ứng. Opcode

Immediate data

Relative offset

Opcode Ví dụ nếu nhãn THERE được đặt tại lệnh có đòa chỉ 1040H và lệnh
SJMP THERE
Ở tại vò trí 1000H và 1001H. Trình biên dòch sẽ gán giá trò offset tương đối là 3EH
tại byte thứ hai của lệnh.

 Số học
 Logic
 Trao đổi dữ liệu
Addr7
-
Addr0

 Luận lý
 Rẽ nhánh chương trình
Các lệnh số học
Các lệnh số học thường sử dụng 4 mode đònh vò. Lệnh ADD A có thể được
viết bằng nhiều cách khác nhau:
ADD A, 7FH (Đònh vò trực tiếp)
ADD A, @R0 ( gián tiếp)
ADD A, R7 ( thanh ghi)
ADD A, #35H ( tức thời)

Tất cả các lệnh số học thi hành trong một chu kỳ máy, ngoại trừ lệnh INC
DPTR (2 chu kỳ máy), MUL AB và DIV AB (4 chu kỳ máy).
8051 cung cấp cách đònh vò rất mạnh cho vùng RAM nội của nó. Bất kỳ byte
nhớ nào cũng đều có tể tăng, giảm bằng đònh vò trực tiếp mà không cần thông qua
thanh ghi tích luỹ.
Lệnh INC có thể thao tác trên con trỏ dữ liệu (16 bit). Nhưng lệnh DEC
không được đònh nghóa trên con trỏ. Do đó để thực hiện được điều này ta có các
lệnh sau:
DEC DPL ; giảm byte thấp DPTR
MOV R7, DPL ; chuyển vào DPL
CJNE R7, #0FFH, SKIP ; nếu vượt quá FF
DEC DPH ; giảm luôn byte cao
SKIP : (tiếp tục)

Chuyển đổi dữ liệu giữa A và byte được đònh vò.
Lệnh
XCHD A, @R1
chuyển đổi 4 bit thấp của thanh ghi ACC với byte được R1 chỉ đến.
RAM ngoài
Dòch chuyển dữ liệu giữa bộ nhớ trong và ngoài sử dụng mode đònh vò gián
tiếp. Đòa chỉ gián tiếp có thể là một byte hay 2 byte (DPTR). Các lệnh dòch chuyển
dữ liệu thao tác trên bộ nhớ ngoài đều chiếm hai chu kỳ máy và dùng thanh ghi
tích luỹ làm toán hạng nguồn hoặc đích.
Look-Up Tables
Hai lệnh được cho sẵn để đọc một bảng dữ liệu trong bộ nhớ chương trình.
Khi truy xuất đến vùng nhớ chương trình thì nội dung của bảng chỉ được đọc mà
không được ghi. Từ gợi nhớ MOVC tức là “move constant”. MOVC dùng thanh ghi
đếm chương trình cũng như con trỏ dữ liệu kàm thanh ghi nền và thanh ghi tích luỹ
làm offset.
MOVC A,@A+DPTR ;
Có thể đọc được một số trong bảng 256 phần tử vào thanh ghi tích luỹ. Trong đó
thanh ghi tích luỹ chỉ đến một vò trí trong còn con trỏ DPTR chỉ đến vò trí đầu bảng.
MOVC A,@A+PC ;
Cũng tương tự như trên, chỉ khác là thanh ghi PC được dùng làm thanh ghi
nền và bảng được truy xuất thông qua chương trình con. Trước tiên chỉ số yêu cầu
được nạp cho thanh ghi tích luỹ sau đó chương trình con được gọi. Việc khởi động
và gọi cụ thể như sau:
MOV A,ENTRY_NUMBER
CALL LOOK_UP
.
.
.
LOOK_UP : INC A
MOVC A, @A+PC

Trong khi trình biên dòch của những hãng khác không có đặc tính này. JMP được
biên dòch thành AJMP nếu đích nằm ở trước và khoảng nhảy nằm trong phạm vi
2Kbytes. Trong các trường hợp khác có thể dòch thành LJMP. Lệnh CALL cũng
tương tự như vậy.
Lệnh SJMP đònh đòa chỉ đích như một offset tương đối. Vì vậy lệnh này dài 2
bytes. Khoảng cách nhảy bò giới hạn từ –128 đến +127 bytes tương đối so lệnh sau
lệnh SJMP.
Lệnh LJMP xác đònh một đòa chỉ đích là một số 16 bit. Vì vậy lệnh này dài 3
bytes. Đòa chỉ đích có thể ở bất kỳ trong vùng nhớ chương trình 63KB.
Lệnh AJMP xác đònh đòa chỉ đích là một số 11 bit. Giống như SJMP, lệnh
này dài 2 bytes, nhưng được biên dòch khác. Mã lệnh chứa 3 bit trong vòng 11 bit
đòa chủ và byte thứ hai chứa 8 bit còn lại của đòa chỉ đích. Khi lệnh được thi hành
11 bit này được đặt vào 11 bit thấp trong thanh ghi PC và 5 bit cao trong thanh ghi
PC không đổi. Vì vậy đích phải nằm trong phạm vi 2 Kbytes.
Trong tất cả các trường hợp, người lập trình xác đònh đòa chỉ bit bằng một
nhãn hoặc như một số 16 bit. Trình biên dòch sẽ đặt đòa chỉ đích vào vò trí đúng
trong lệnh được biên dòch.
Jump Tables
Lệnh “JMP @ A+DPTR” cung cấp lệnh nhảy phụ thuộc điều kiện theo một
bảng nhảy (jump tables). Đòa chỉ đích sẽ được tính trong khi thi hành chương trình
như tổng của DPTR và thanh ghi tích luỹ. Đầu tiên DPTR được nạp đòa chỉ của
bảng và thanh ghi tích luỹ được dùng làm chỉ số. Ví dụ nếu có 5 trường hợp nhảy,
giá trò từ 0 đến 4 được nạp cho thanh ghi tích luỹ và lệnh nhảy tương ứng với từng
trường hợp được mô tả như sau:
MOV DPTR, #JUMP_TABLE ;
MOV A, INDEX_NUMBER ;
RL A
JMP @A+DPTR
Lệnh RL ở trên đổi chỉ số (từ 0 đến 4) thành các số chẵn từ 0 đến 8, vì mỗi
điểm xâm nhập trong bảng là một đòa chỉ 2-byte.

LOOPP: (bắt đầu vòng lặp)
.
.
.
(kết thúc vòng lặp)
DJNZ R7, LOOP ;
(tiếp tục)
Lệnh CJNZ (so sánh và nhảy nếu không bằng) cũng dùng để điều khiển
vòng lặp. Hai bytes được xác đònh trong vùng toán hạng của lệnh và lệnh nhảy sẽ
thi hành nếu hai bytes này khác nhau. Ví dụ, nếu một ký tự được đọc vào thanh ghi
ACC từ cổng nối tiếp và nhảy đến nhãn TERMINAL nếu ký tự đọc vào là
CONTROL-C (03H) .
CJNE A, #03, SKIP ;
SJMP TERMINAL ;
SKIP: (tiếp tục)
Lệnh jump chỉ xảy ra khi A=03H.
Một ứng dụng khác của lệnh này là so sánh lớn hơn và bé hơn. Hai byte
trong miền toán hạng là những số không dấu. Nếu toán hạng đầu nhỏ hơn toán
hạng thứ hai thì cờ carry được set. Nếu toán hạng đầu lớn hơn hoặc bằng toán hạng
thứ hai thì cờ carry được xóa. Ví dụ nếu muốn nhảy đến BIG nếu ACC lớn hơn
hoặc bằng 20H, ta có các lệnh sau:
CJNE A,#20H,$+3
JNC BIG
Ký hiệu dollars “$” là một ký hiệu đặt biệt của trình biên dòch thay thế cho
đòa chỉ của lệnh hiện thời. Vì CJNE là một lệnh 3-bytes, “$+3” là đòa chỉ của lệnh
tiếp theo.
Chương V
GIỚI THIỆU VỀ KIT VI ĐIỀU KHIỂN 8051
I –CHỨC NĂNG CÁC PHÍM:
1 – Bàn phím:

 Dùng để lưu trữ dữ liệu vào ô nhớ có đòa chỉ ở 4 led bên trái, ví dụ
muốn lưu trữ dữ liệu là “3F” vào ô nhớ có đòa chỉ là 4000, hãy
S



Q


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status