1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Luận văn thiết kế và thi công điều khiển đèn giao thông luận văn, đồ án, đề tài tốt nghiệp

44 1,2K 5
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 9,36 MB

Nội dung

Luận văn, đồ án tốt nghiệp, đề tài tốt nghiệp, đồ án, thực tập tốt nghiệp, đề tài

Trang 1

Phin A: CƠ SỞ LÝ THUYET

CHƯƠNG I: SƠ LƯỢC VỀ ĐÈN GIAO THONG

I Đặt vấn điể <coscoscesSsssssesesssesersossresrsesssrsse 3 II Giải quyết vấn đề

CHƯƠNG 2: SƠ BO KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG

I Phương án thiết kế

IL Sơ đồ khối sasesease 5

s Nguyên lý họat động

III Sơ đồ và chức năng của từng khdi

1) Khối vi xử lý

2) Khối cách ly

3) Khối công tấc ngõ ra 4) Khối nguồn

5) Khối công tấc tay 6) Khối bàn phím 7) Khối chốt

8) Khối màn hình hiển thị

CHUONG3: KHẢO SÁT BỘ VI ĐIỀU KHIỂN 89C51 .8

I.Giới thiệu họ MSC51 (8951) 8

II.Sơ lược về họ 89C51 9

1) Hệ thông giao tiếp PORT 2) Các tín hiệu điều khiển 3) Tổ chức bộ nhớ

4) Các thanh ghi có chức năng đặc biệt 5) Bộ nhớ ngoài

6) Lệnh RESET

II.Tập lệnh của 89C51

1 Các chế độ đánh địa chỉ

2 Các nhóm lệnh của 89C51

IV Chương trình giới thiệu ASSEMBLE

1.Giới thiệu

2.Hoạt động của trình biên dịch

3.Sắp đặt ngôn ngữ ASSEMBLE 4.Sự tính toán biểu thức của ASSEMBLY

5.Các chỉ thị biên dịch

CHƯƠNG 4: ĐỒNG HỒ (DS12887)

I.Những đặc tính

II.Mơ tả chốt

1) Mô tả S<cc<cs< se se

2) Xem xét nguồn trên và nguồn dưới

Trang 2

3) Tín hiệuđược mơ t - +2 s se £ + eeeeeserzsezs

4) Xét nguồn ngoài và nguồn trong

5) Biểu đổ địa chỉ -sscccxxtrxtttrtrrtrrkrrrrrrrree

CHƯƠNG 5: MÀN HÌNH L.CD - Š2

1Giới thiệu Sơ lược về cấu tạo LCD 52,

1 Bộ hiển thị thực tế .52

2 Những ưu điểm của LCD

1I.Module LCD 1602A aoe 1 Giải thích chức năng của các chân - - 33

2 Mô tả các chức năng 53

3 Tập lệnh 54

CHUGNG 6: TRIAC .57

1.Giới thiệu về Cấu tạo của 'Triac -‹-« sec«e 57 H.Nguyên tắc hoạc động ceeeesesesesesssseseeee 57 CHƯƠNG 8: OPTO TRIAC 5 - 5s Ss ss£ses 1) Giới thiệu vễ OPTO TRIAC

2) Chức năng vế OPTO TRIAC +

3) Ứng dụng 2-5 +xe+xecxerxerrsrrerrrrrsrrse PHẨN B: THIẾT KẾ ` THỊ CÔNG VÀ THIẾT KẾ PHẦN CỨNG 62 1.Phương án thiết kế 1I.Thiết kế chỉ tiết các khốt IIL.LƯU ĐỒ GIẢI THUẬTT

KẾT LUẬN

Trang 3

PHAN A:

Trang 4

cHuonG1: SO LUGC VE DEN GIAO THONG

1 Dat van dé:

Trong quá trình phát triển đơ thị và đơ thị hóa nơng thôn, các cơ sở hạ tầng được nâng cấp một cách nhanh chóng Do đó, tạo điều kiện giao thông phát triển lên

và nhu cầu xã hội cần được cung cấp các phương tiện hiện đại hơn, vận tốc nhanh hơn,

phương tiện nhiễu hơn, làm cho tai nạn giao thông tăng lên và kẹt xe nhiều hơn Mỗi ngày hàng trăm vụ tai nạn giao thông xãy ra, kẹt xe làm ách tấc giao thông,

Đèn giao thông dùng để lưu thơng, chống tình trạng kẹt xe giải thoát ách tấc giao

thông ngay các ngã tư , ngã năm, Người tham gia giao thông nhằm tuân thủ, chấp

hành những quy định để lưu thông tốt hơn nhờ có đèn giao thông trên đường

- _ Thể hiện đúng thời gian của đèn giao thông

- _ Thể hiện và phân biệt rõ đèn nào của đèn giao thông

- _ Ứng dụng vào thực tiễn mà không cần thay đổi và phần cứng cũng như phần mềm

Il Giải quyết vấn đề:

Với em là sinh viên đang tìm hướng để tài sao cho phù hợp với thời gian và kha nang cha minh em chon” DEN GIAO THONG?” dé thiết kế cho nhiều con đường thành thị, nông thôn thêm đẹp và không xãy ra kẹt xe, tai nan giao th6ng, Va qua qua

trình em tìm hiểu cùng với sự tư vấn của thây giáo hướng dẫn em chọn” THIẾT KẾ

DEN GIAO THONG TAI NGA TU”

Mạch này điểu khiển giao thông với 3 chế độ, mỗi chế độ được thực thi ở khoảng thời gian khác nhau và thời điểm khác nhau Cho phép chọn thời gian lưu thông theo từng

tuyến nhất định (chế độ điều khiển bằng tay) Điều khiển tự động theo tuần tự thời gian quy định của mỗi ngày

Ví dụ: Giờ cao điểm được xác lập ở khoảng thời gian từ: 06h00+09h00 buổi sáng

17h00 +20h00 buổi tối

Giờ bình thường được xác lập ở khoảng thời gian từ:

10h00-+17h00 buổi trưa

20h00+23h00 buổi tối

CHƯƠNG 2: SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG I Phương án thiết kế:

Thiết kế mạch đèn giao thông tại ngã tư có các nhiệm vụ sau: > _ Chạy theo đúng trình tự quy định của luật giao thông

> Điều khiển bằng tay theo từng trạng thái ưu tiên dành cho người

điều khiển giao thông

Trang 5

Il SODO KHOI KHOI KHOI

BAN HIEN THI

PHIM CÔNG

TÁC NGUON

AC

TAY 220V,60Hz

KHƠI _KHĨI TAI DEN

Ơi CONG TAC (XANH,

NGUON KÍCH NGO RA VÀNG, DC 5¥ GTATIC BO) CACH LY SWITCH)

SO D6 KHOI LAP TRINH DIEU KHIEN DEN GIAO THONG

> Nguyên lý hoạt động:

Khi mở nguồn chương trình tự động bật 4 đèn đỏ tại các trụ đèn giao thông trong thời gian 3 giây Lúc này chương trình sẽ ra lệnh cho dallas, bắt dallas xuất đữ liệu ngày, tháng, năm, giờ, phút, giây cho vào bộ nhớ cho chương trình Chương trình sẽ xuất dữ

liệu ra LCD

Chương trình quét con tấc tay, cho biết trạng thái tức thời:

% Trạng thái hướng 1 là trạng thái bật đèn xanh 1 sáng và đèn đỏ 2 sáng

luôn không thay đổi, không quét bàn phím

s* Trạng thái hướng 2 là trạng thái bật đèn xanh 2 sáng và đèn đỏ 1 sáng luôn không thay đổi, không quét bàn phím

s* Trạng thái Auto có nhiều chế độ cập nhật:

" Chương trình quét bàn phím hoạt động, cài đặt cho Dallas, cài đặt thời gian cho đèn giao thông Các đèn giao thông được tắt

Trang 6

Il sOp6 VA CHUC NANG CUA TUNG KHOL

1) Khối xử lý: :

Đây là một khối quan trọng trong hệ thống Khối xử lý giữ nhiệm vụ tiếp

nhận xử lý trung tâm, khả năng và tiếp nhận phân tích các yêu cầu tác động, từ đó

đáp ứng thích hợp Điều này được thể hiện qua các tập lệnh của 89C51 Tập lệnh

này có khá năng hoạt động, có mức độ xử lý trung tâm, khắc phục và hạn chế điều

đó các nhà sản xuất cố gắng thiết lập tập lệnh sao cho sự kết hợp chúng lại với

nhau, với các tình huống khác mà từng lệnh riêng biệt không thể giải quyết được Đó chính là cổ sở của chương trình hệ thống

2) Khối cách ly:

Khối có nhiệm vụ cách ly điện áp AC và DC, điều khiển lái tải, các bóng đèn giao thơng khi ta điều khiển chỉ điều khiển bằng điện áp DC không điều khiển điện áp AC, vì vi điểu khiển là một bộ não được sử dụng để điều khiển Do đó bắt

buộc chúng ta phải dùng bộ cách ly, là cách ly điện áp cao với điện áp thấp

3) Khối công tấc ngõ ra:

Khối công tấc ngõ ra là một khối có khả năng đóng hoặc mổ con tấc Để

đóng tắt các bóng đèn giao thơng khi ta điều khiển chỉ điều khiển bằng điện áp AC,

vì vi điều khiển là một bộ não được sử dụng điều khiển cho qua khối cách ly, vì khối cách ly khơng có khả năng lái địng để kích cho các tải ngoài, do cấu tạo của

nó quá nhỏ (chỉ sử dụng dịng kích cho tải không được lớn nên khơng thể kích được) Vì thế ta sử dụng thêm công tấc ngõ ra dùng để gánh cho tải

4) Khối nguồn:

“ Nguồn DC: là ngn có nhiệm vụ tạo ra điện áp 5V phục vụ cho các khối khác, như cung cấp điện áp cho LCD, cung cấp cho vi điều khiển, Dallas và cho các IC khác trong mạch, Các vi mạch ổn áp DC tuyến tính được sử dụng rất rộng rải do những ưu điểm của nó như :Tích hợp tồn bộ linh kiện trong một vỏ kích thước bé, không cần sử dụng hoặc chỉ sử dụng thêm một vài linh kiện ngoài để tạo mạch hoàn chỉnh, mạch bảo vệ quá dịng, q nhiệt có sẵn bên trong vi mạch Một trong những lọai vi mạch ổn áp DC tuyến tính thông dụng là ho vi

mạch 78xx ( ổn áp dương) và ổn áp 79xx(ổn áp âm) có ba chân Tùy theo hình đạng vỏ, các vi mạch ổn áp ba chân có thể cung cấp dòng từ 100mA đến 1A và

cho điện áp ra cố định ở nhiều giá trị khác nhau tương ứng với mã số:

Dạng mạch điện dùng vi mạch ổn áp ba chân YI 78XK (79XX) vo

-Trong đó C¡ được thêm vào khi vi mạch đặt xa mi đụ

nguồn chỉnh lưu và lọc để ổn định điện áp ngõ

vào Cọ để lọc nhiễu cao tần Tuy nhiên để vi mạch =

hoạt động tốt thì điện áp ngõ vào tối thiểu phải

Trang 7

s* Nguồn AC: là nguồn có nhiệm vụ cung cấp cho các bóng đèn giao thơng

` Được điều khiển bởi khối công tấc ngõ ra dùng để lái các bóng đèn giao thông

5) Khối công tấc tay:

Là khối có tác dụng dùng để chuyển chế độ ưu tiên và nó có 3 trạng thái: chế độ

hướng 1,chế độ hướng 2 và chế độ tự động

% Hướngl: chỉ cho phép lưu thông một chiểu nhất định, do người điều

khiển giao thông điểu khiển theo hướng 1 thì hướng 2 bị đừng lại với sự báo hiệu của bóng đèn cho thấy trên trụ đèn ở ngã 4

4 Hướng2: chỉ cho phép lưu thông một chiểu nhất định, do người điều

khiển giao thông điều khiển theo hướng 2 thì hướng 1 bị dừng lại với

sự báo hiệu của bóng đèn cho thấy trên trụ đèn ở ngã 4

+» Tự động: là chế độ không cần người điểu khiển giao thơng phải túc

trực ở đó Nó sẽ tự động chạy theo đúng trình tự, đúng thời gian một cách chính xác

6) Khối bàn phím:

Khối bàn phím là một khối mã hóa bàn phím để đổi thành mã nhị phân Việc mã hóa tín hiệu bàn phím kiểu ma trận địi hỏi phải dùng nhiều mạch logic, và

phải có một mạch để quét trên công tấc phím từng cột phải được quét qua để biết

phím nào được nhấn hay không nhấn nếu có mạch đếm sẽ chựng lại và con số trong

mạch đếm tương ứng, lúc đó sẽ tương ứng với mã nhị phân của phím được ấn Đây là nguyên tắc hoạt động của bàn phím có mã hóa:

Ưu điểm của bàn phím: mã hóa với tốc độ khá nhanh nhưng mạch điện phức tạp và độ linh hoạt khơng phong phú

Bàn phím được thiết kế như một công tấc thường hở việc tiếp xúc với bàn phím là

nhiều hơn so với thiết bị nào Ở đây do yêu câu thiết kế nên số phím có 10 phím

nhập dữ liệu thể hiện dưới dạng số thập phân từ 0 đến 9, và 6 phím chức năng Người sử dụng bàn phím để điều chỉnh thời gian, đặt thời gian, chọn phím tăng , giảm, điều chỉnh xóa, chọn Dallas, cài dat neon giao thông theo thời gian thực

Sơ đồ khối kết nối như sau:

8051 - PORTI BÀN PHÍM 7) Khối chốt:

Khối chốt là IC 74HC574 và IC 74LS245 có khả năng chốt dữ liệu 8bit có chân CLK tạo xung cạnh lên, để đưa dữ liệu ở ngõ ra 8 bit IC 74HC574 chỉ được

Trang 8

kiệm chân điều khiển thế nào cho đỡ tốn nhất cũng không đủ để cho chúng ta sử

dụng vì đồ mà chúng ta bắt buộc phải dùng thêm các con IC khác Do đó chốt là

một vấn để quan trọng trong mạch này

8) Khối hiển thị:

Là khối LCD có khả năng hiển thị số hay một kí tư, chuối kí tự nào đó, nó làm nhiệm vụ quan trọng nhất để liên lạc giữa người và máy Nó giúp ích rất lớn trong công việc hiển thị xem giờ, phút giây trong ngày, ngày, tháng, năm,

CHƯƠNG 3: KHẢO SÁT BỘ VI ĐIỀU KHIỂN 89C51

I Giới thiệu về họ MSC51 (89C51):

MCSS1 1a mét ho IC vi diéu khién (Microcontroller ) do hang Intel san xudt Cac IC tiêu biểu cho họ MCS51 1 8051 va 8031 Dac biét, vi diéu khién 8951 dudc sdn xuất gần đây mang các đặc điểm sau:

" 4 Kbytes EEPROM = 128 bytes RAM

= 4 ports I/O (Input/Output) " 2 bộ định thời (timer) 16 bits

" Giao tiếp nối tiếp -

" 64 Kbytes không gian bộ nhớ chương trình mở rộng " 64 Kbytes không gian bộ nhớ dữ liệu mở rộng " Một bộ xử lí luận lí (thao tác trên các bit đơn) ø 210 bits được địa chỉ hóa

" Bộ nhân chia 4 Hs INTI INTO™ Timer 1 Timer @ Serial port

Interrupt Other 126 Bytes EEPROM Timer 1 1

control Registers RAM 4K - S951 Timer @ Tow

CPU

Serial

Bus

Oscillator I70 ports port

control EA ALE

RST PSEN PÐ P2, PL P3 TXDx RXDw

Address-Data 7 : mternate pin asigrments for PL and 63

Trang 9

II SƠLƯỢC VE HO MCSS1:

Trang 10

38pF 19 Ucc Pô.7 XTAL1 P.6 HC Pô.5 12 mz[ —] 8951 pạ+ t8 Pô.3 L_I —L—+s_ XTAL2 PQ 2 30pF PQ.1 — Pe.8 «2| Psn PI.7 P1.6 <4 ve P1.5 — P1.4 Sit EA P1.3 P1.2 | pst P1.1 P1 Bo 12 P3 P2.7 HR Te] P36 P2.6 T1 14 | P3.5 P2.5 — 2 4 P3.4 P2.4 In 3 _Í p3.3 P2.3 INT8 424 p3,2 P2.2 TXD ti P3.1 P2.1 RXD S21 p3.8 P2.8 ADE ADS AD4 AD3 A02 ADI ADa HelobbhM> — blelelllelale USL CLL AL 28a15 27 914 A13 | 25 12 124 011 A18 a9 A8 b bph Uss -_]?9 1 Hệ thông giao tiếp PORT:

a/ Port 0:

Port 0 14 m6t port hai chifc nang trén cdc chan 32 — 39 Trong các thiết kế cỡ nhỏ (không dùng bộ nhớ mở rộng) nó có chức năng như các đường LO Đối với các thiết kế lớn với bộ nhớ mở rộng, nó được hợp kênh giữa bus dữ liệu và byte thấp của bus địa chi

b/ Port 1:

Port 1 14 mét port I/O trén c4c chan 1 — 8 Caéc chan duge ki hiéu:

P1.0; P1.1 ; P1.2 c6 thể dùng cho giao tiếp với các thiết bị ngoài nếu cần

Port 1 khơng có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với

các thiết bị ngoài

e/ Port 2:

Port 2 là một port công dụng kép trên các chân 21 - 28 được dùng như

các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế

dùng bộ nhớ mở rộng d/ Port 3:

Port 3 là một port công dụng kép trên các chân 10 — 17 Các chân của port này có nhiễu chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở bảng sau:

Trang 11

Bit Tén Chức năng chuyển đổi P30 | RXD Dữ liệu nhận cho port nối tiếp

P3.1 TXD Dữ liệu phát cho port nối tiếp P3.2 INTO | Ngắt0 bên ngoài

P3.3 INTI\ Ngắt 1 bên ngoài

P3.4 | TO Ngõ vào của Timer/counter 0 P35 | Tl Ngõ vào của Timer/counter 1

P3.6 | WR\ Xung ghi bộ nhớ dỡ liệu ngoài

P3.7 | RD\ Xung đọc bộ nhớ dữ liệu ngồi

2 Các tín hiệu điểu khiển:

IC 89C51 có 4 tín hiệu điều khiển:

a/ PSEN\ (Program Store Enable):

PSEN\ là tín hiệu ra trên chân 29 Nó là tín hiệu điểu khiển cho phép bộ nhớ chương trình mở rộng, PSEN\ thường được nối đến chân OE (Output Enable) của một

EPROM để cho phép đọc các byte mã lệnh

PSEN\ sẽ ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương trình được đọc từ EPROM qua bus đữ liệu và được chốt vào thanh ghi lệnh của 8951 để giải mã lệnh Nếu thi hành chương trình trong ROM nội (8951) thì PSEN\ sẽ ở mức thụ

động (mức cao)

b/ ALE (Address Latch Enable):

Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các vi xử lí 8085, 8088, 8086

IC 8951 dùng ALE một cách tương tự cho việc giải kênh các bus địa chỉ và dif liéu

Khi port 0 được dùng trong chế độ chuyển đổi: vừa là bus dữ liệu vừa là byte thấp của bus địa chỉ, ALE là tín hiệu để chốt byte thấp địa chỉ vào một thanh ghi bên ngoài trong nửa đầu chu kì bộ nhớ Sau đó, các đường port 0 dùng để xuất nhập dữ liệu trong

Trang 12

Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tấn số dao động trên chip và có thể

được dùng làm nguồn xung nhịp cho các phần khác của hệ thống Nếu xung nhịp trên

8951 là 12 Mhz thì ALE có tần số 2 Mhz Chỉ ngoại trừ khi thi hành lệnh MOVX, một

xung ALE sẽ bị mất Trong trường hợp là 8051 thì chân này.cũng được làm ngõ vào cho xung lập trình cho EPROM trong chip

c/ EA\ (External Access):

Tín hiệu vào EA\ trên chân 31 thường được mắc lên mức cao (+5v) hoặc mức thấp

(GND) Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong

khoảng địa chỉ thấp (4K) Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng

Khi dùng 8031, EA\ luôn được nối mức thấp vì 8031 khơng có bộ nhớ chương trình

trên chip Nếu EA\ được nối mức thấp thì bộ nhớ chương trình bên trong 8951 sẽ bị cấm

và chương trình chỉ được thi hành từ EPROM mở rộng

Người ta còn dùng EA\ làm chân cấp điện áp 21V khi lập trình cho EEPROM trong 8051

d/ RST (Reset):

Ngõ vào RST trên chân 9 là ngõ reset của 8951 Khi tín hiệu này được đưa lên mức cao (trong ít nhất 2 chu kì máy), các thanh ghi bên trong 8951 được tải những

giá trị thích hợp để khởi động hệ thống ‘

e/ Các ngõ vào bộ dao động trên chip:

Như đã thấy trong các hình trên, 8951 có một bộ dao động trên chip Nó thường được nối với một thạch anh giữa hai chân 18 và 19 Các tụ giữ cũng cần thiết như đã

vẽ Tần số thạch anh thông thường là 12 Mhz f/ Các chân nguồn:

8951 hoạt động 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

3 Tổ chức bộ nhớ:

3.1/ Khảo sát tổ chức bộ nhớ 8951:

IC 8951 có bộ nhớ được tổ chức theo cấu trúc Harvard : có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu

Như đã nói ở trên, cả chương trình và đữ liệu có thể ở bên trong (8951); dù vậy

chúng có thể được mở rộng bằng các thành phân ngoài lên đến tối đa 64 Kbytes bộ

nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu

Bộ nhớ bên trong bao gồm ROM (8951) và RAM trên chip bao gồm nhiều thành phần: Phân lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và

các thanh ghi chức năng đặc biệt

Trang 13

FFFF Bộ nhớ FFFF Bộ nhớ chương trình _ đữliệu FT được chọn được chọn

qua PSEN\ qua WR\ va

RD\

00} 0000| 0000

Bộ nhớ trên chip Bộ nhớ mở rộng

Tóm tắt các vàng bộ nhớ của 8951

Hai đặc tính cần lưu ý là:

" Cé4c thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể được

truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác

" _ Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài so với bộ xử lí khác

3.2/ Chỉ tiết về bộ nhớ RAM trên chip:

Như sẽ thấy trong hình sau, RAM bên trong 8951 được phân chia thành các bank thanh ghi (00H - 1FH), RAM dia chi hdéa bit (20H — 2FH), RAM da dung (30H — TFH) và các thanh ghi chức năng đặc biệt trong khoảng (80H - FFH)

“+ RAM da dung:

Mặc dù trên hình cho thấy 80 bytes RAM đa dụng chiếm các địa chỉ từ 30H - 7FH, 32 bytes đưới cùng từ 00H — 1FH cũng có thể được dùng với mục đích tương tự (mặc đù các địa chỉ này đã có mục đích khác)

Moi dia chi trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp Ví dụ, để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích lãy, lệnh sau sẽ được dùng:

MOV A,5FH

Lệnh này di chuyển 1 byte đữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (5FH) Đích nhận dữ liệu được ngầm xác định trong mã lệnh là

thanh ghi tích lũy A

RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua

Trang 14

MOV A, @RO

Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0, và lệnh

thứ hai dùng địa chỉ gián tiếp để di chuyển dữ liệu “được trổ bởi R0” vào thanh ghi

tích lũy ,

+ RAM địa chỉ hóa từng bit:

IC 8951 chứa 210 bits được địa chỉ hóa, trong đó 128 bits là ở các địa chỉ byte 20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặc biệt

Trang 15

28] 4| 4| 4| 4| 4| 4| 4| 4 9| không được địa chỉ hóa bít | SBU

716|1514]13)1211|0 91 IF 27| 3| 3| 3| 3| 3| 3| 3| 3 9| 9} 91 9} 9} 9} 9} 9) 9) SCO FIE{D|C|B\|A/9{8 8§8|E|E|D|C|B|A|9|SN 26| 3| 3! 3| 3| 3| 3| 3| 3 7|J6|1514|3|2|1|10 25| 2| 2| 2{ 2| 2| 2| 2! 2 9) 9; 9} 9} 9} 9} 9] 9] 9] Pl FIEIDIC|B|A|9|8 0|17|6|51413|12]1]|10 24|J 2| 2| 2| 2| 2| 2| 2| 2 7|J6|5|14|13|12:11|0

23| 1| 1| 1Ị 1| 1| 1| 1| 1 8| không được địa chỉ hóa bit| THÍ

EIEIDIC|B|A|9|18 D

22{ 1| 1| l| 1| 1j 1 1| 1 8| không được địa chỉ hóa bit | THO

7|J6|5|413|2|1|10 Cc

21] 0} O} Of} OF O} OF OF O 8| không được địa chỉ hóa bit| TL1

FIEIDIC|B|A)J9|8 B

201 0J 0| 0| 0| 0| 0| 0| 0 §| khơng được địa chỉ hóa bịt | TLO

7|J6|J5|4|3|12|1]10 A

1F BANK 3 8| không được địa chỉ hóa bịt | TMO

: 9 Dp

18 8| 8| 8| 8| 8| 8| 8| 8| 8| TCO

8|F|IEID|IC|B|A|9|S§N

17 BANK2 8| không được địa chỉ hóa bit| PCO

7 IN

10

OF BANK 1 §| khơng được địa chỉ hóa bịt | DPH 3

08 8| không được địa chỉ hóa bit | DPL

2

07 BANK 0 8| không được địa chỉ hóa bit | SP

(Mặc định cho R0 - R7 ) 1

00 8| 8| 8| 8| 8| 8| 8| 8| 8| P0

0|7|6|1514|13|12]|1|0

Ý tưởng truy xuất từng bit riêng ré bằng phần mềm là một đặc tính tiện lợi của vi

điều khiển nói chung Các bịt có thể được đặt, xóa, AND, OR, với một lệnh đơn

Trong khi đó, đa số các vi xử lí địi hỏi một chuỗi lệnh đọc — sửa — ghi để đạt được

hiệu quả tương tự Hơn nữa, các port O cũng được địa chỉ hóa từng bit làm đơn

giản phần mềm xuất nhập từng bit

Trang 16

SET 67H

Chú ý rằng “địa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở “dia chi byte

2CH” Lệnh trên sẽ không tác động đến các bit khác ở địa chỉ này Các vi xử lí sẽ : phải thi hành nhiệm vụ tương tự như sau:

MOV A,2CH ; đọc cả byte ORL A, #10000000B ; set MSB MOV 2CH,A ; ghi lai ca byte

s Các bank thanh ghi:

32 bytes thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi Bộ lệnh của §951 hỗ trợ 8 thanh ghi (RO —- R7) và theo mặc định (sau khi reset hệ thống) các thanh ghi này ở các địa chỉ 00H - 07H Lệnh sau đây sẽ đọc nội dung ở địa chi OSH vào thanh ghi tích lũy :

MOV A,R5

Đây là lệnh một byte dùng địa chỉ thanh ghi Tấc nhiên, thao tác tương tự có thể được thi hành bằng lệnh 2 bytes dùng địa chỉ trực tiếp nằm trong byte thứ hai:

MOV A,05H

Các lệnh dùng các thanh ghi RO đến R7 thì ngắn hơn và nhanh hơn các lệnh tương

ứng nhưng dùng địa chỉ trực tiếp Các giá trị dữ liệu được dùng thường xuyên nên ding một trong các thanh ghi này

Bank thanh ghỉ tích cực có thể được chuyển đổi bằng cách thay đổi các bit chọn

bank thanh ghi trong từ trạng thái chương trình (PSW) Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào địa chỉ 18H:

MOV R0,A

Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trình nhanh

và hiệu quả (từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng không

phụ thuộc vào các phần khác)

4/_ Các thanh ghỉ chức năng đặc biệt:

Các thanh ghi nội của 8951 được truy xuất ngầm định bởi bộ lệnh Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1 Tác động này được ngầm định trong mã lệnh

Các thanh ghi trong 8951 được định dạng như một phần của RAM trên chip Vi vay mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi đếm chương trình và thanh ghi

Trang 17

lệnh vì các thanh ghi này hiếm khi bi tác động trực tiếp, nên không lợi lộc gì khi đặt chúng vào trong RAM trên chip) Đó là lí do để 8951 có nhiều thanh ghi như vậy Cũng như RO đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH, Chú ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không được định nghĩa Chỉ có 21 địa chỉ SFR là được định nghĩa

Ngoại trừ thanh ghi tích lũy A có thể được truy xuất ngầm như đã nói, đa số các

SER được truy xuất dùng địa chỉ trực tiếp Chú ý rằng một vài SFR có thể được địa

chỉ hóa bit hoặc byte Người thiết kế phải thận trọng khi truy xuất bit và byte Ví dụ

lệnh sau: SETB 0E0H

Lệnh này sẽ set bit 0 trong thanh ghỉ tích lũy, các bỉt khác không đổi Ta thấy rằng

E0H đồng thời là địa chỉ byte của cả thanh ghi tích lũy và là địa chỉ bịt của bít có trọng số nhỏ nhất trong thanh ghi tích lũy Vì lệnh SETB chỉ tác động trên bit, nên

chỉ có địa chỉ bit là có hiệu quả

a/ Từ trang thái chương trình:

Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ D0H chứa các

bit trạng thái như bảng tóm tắt sau:

Bit Kí hiệu Địa chi Ý nghĩa

PSW.7 CY D7H Cờ nhớ

PSW.6 AC D6H Cờ nhớ phụ

PSW.5 FO D5H Cờ 0

PSW.4 RS1 D4H Bit 1 chon bank thanh ghi

PSW.3 RSO D3H Bit 0 chon bank thanh ghi

00 = bank 0 ( dia chi OOH — 07H ) 01 = bank 1 ( dia chi 08H - 0FH ) 10 = bank 2 ( dia chi 10H - 17H) 11 = bank 3 ( dia chi 18H — 1FH )

PSW.2 OV D2H Cờ tràn PSW.1 - D1H Dự trữ PSW.0 P D0H Co parity chan © Conhé:

Cờ nhớ (CY) có công dụng kép Thông thường nó được dùng cho các lệnh tốn học: nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phép trừ Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh sau:

Trang 18

sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSWK

Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lí thi hành trên bit Vi đụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ:

AND C,25H © Cờ nhớ phụ:

Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp trong

khoảng 0AH đến 0FH Nếu các giá trị được cộng là số BCD thì sau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi tích lđy) để điều chỉnh kết quả cho phù hợp

¢ Cờ0;

Cờ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người dùng e Cac bit chon bank thanh ghi :

Các bit chọn bank thanh ghi (RSO và RS1) xác định bank thanh ghi nào được tích cực Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phân mềm nếu

cần Ví dụ, 3 lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh

ghi R7 (địa chỉ byte 1EH) đến thanh ghi tích lũy: SETB RS1

SETB RSO MOV A,R7

Khi chương trình được hợp dịch, các địa chỉ bit đúng được thay thế cho các kí hiệu “RS1” và “RS0”

Vậy, lệnh SETB RSI1 sẽ giống như lệnh SETB 0D4H e Cờ tràn:

Cé tran (OV) được set sau một lệnh cộng hoặc trừ nếu có phép toán bị tràn Khi các

số có dấu được cộng hoặc trừ với nhau, phần mễm có thể kiểm tra bit này để xác định xem kết quả có nằm trong tầm xác định không Khi các số không dấu được

cộng, bit OV có thể được bỏ qua Các kết quả lớn hơn +127 hoặc nhỏ hơn -128 sẽ set bit OV,

Ví dụ, phép cộng sau bi tran va bit OV được set :

Trang 19

LUAN VAN TOT NGHIEP SVTH: VO VAN TRUNG

Hex OF Thap phan 15

+ +

TF 127

SE 142

Kết quả là một số có dấu 8EH được xem như —14, không phải là một kết quả đúng

(142), vì vậy bit OV được set

b/_ Thanh ghi B:

Thanh ghi B ở địa chỉ F0H được dùng với thanh ghi tích lũy A cho các phép toán nhân và chia

Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả

16 bit trong A (byte thấp) và B (byte cao)

Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và phần dư trong

B

Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng Nó được dia chi hóa từng bit bằng các địa chỉ bit F0H đến F7H

c/ Con trổ ngăn xếp:

Con trổ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp Các lệnh trên ngăn xếp bao gồm các

thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp Lệnh cất dữ liệu

vào ngăn xếp sẽ làm tăng SP trước khi cất dữ liệu, và lệnh lấy đữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và giảm SP

Ngăn xếp của 8951 được giữ trong RAM nội và được giới hạn các địa chỉ có thể

truy xuất bằng địa chỉ gián tiếp Chúng là 128 bytes đầu của 8951

Để khởi động lại SP với ngăn xếp bắt đâu tại 60H, các lệnh sau đây được dùng: MOV SP,#5FH

Trên 89C51 ngăn xếp bị giới han 32 bytes vì địa chỉ cao nhất của RAM trên chip là 7FH Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ liệu đầu

tiên

Người thiết kế có thể chọn không phải khởi động lại con trổ ngăn xếp mà để nó lấy

giá trị mặc định khi reset hệ thống Giá trị mặc định đó là 07H và kết quả là ngăn

Trang 20

Nếu phần mềm ứng dụng không khởi động lại SP, thi bank thanh ghi 1 (có thể cả `2 và 3) sẽ khơng dùng được vì vùng RAM này đã được dùng làm ngăn xếp

Ngăn xếp được truy xuất trực tiếp bằng lệnh PUSH và POP để lưu trữ tạm thời và

lấy lại dữ liệu, hoặc được truy xuất ngầm bằng các lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại bộ đếm chương trình

d/ Con trỏ dữ liệu:

Con trổ dữ liệu (DPTR) để truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở địa chỉ

82H (DPL: byte thấp) và 83H (DPH: byte cao)

Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H: MOV A, #55H

MOV DPTR, #1000H MOVX @DPTR,A

Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy Lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bits 1000H vào con trỏ

dữ liệu Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến

RAM ngoài ở địa chỉ được chứa trong DPTR (1000H)

e/_Các thanh ghi port xuất nhập:

Các port của 8951 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H, Port 2 ở địa chi AOH va Port 3 6 dia chi BOH

Tấc cả các port đều được địa chỉ hóa từng bit Điều đó cung cấp một khả năng giao tiếp thuận lợi

Ví dụ, nếu một motor được nối qua một cuộn dây có transistor lái đến bit 7 của Port 1, nó có thể được bật và tắt bằng một lệnh đơn:

SETB PI.7 ; bật motor CLR P1.7 ;t&t motor

Các lệnh trên dùng dấu chấm để xác định một bit trong một byte Trình hợp dich sẽ thi hành sự chuyển đổi cần thiết, vì vậy hai lệnh sau đây là như nhau:

CLR PI.7 CLR 97H

Trong một ví dụ khác, xem xét giao tiếp đến một thiết bị với một bit trạng thái gọi là BUSY, được set khi thiết bị đang bận và được xóa khi thiết bị đã sẵn sàng Nếu

Trang 21

BUSY được nối tới P1.5, vòng lặp sau sẽ được dùng để chờ thiết bị trở lại trạng thái

sẵn sàng: ' ,

WAIT : JB P1.5, WAIT

Lệnh này có nghĩa là “nếu bịt P1.5 được set thì nhầy tới nhãn WAIT” Nói cách khác “nhảy trở lại và kiểm tra lần nữa”

f/ Cac thanh ghi timer:

IC 8951 chứa hai bộ định thời/đếm 16 bits được dùng cho việc định thời hoặc đếm

sự kiện

Timer 0 6 dia chi 8AH (TLO: byte th4p) va 8CH (THO: byte cao) Timer 1 6 dia chi 8BH (TL1: byte thap) va 8DH (TH1: byte cao)

Việc vận hành timer được set bởi thanh ghi Timer Mode (TMOD) 6 dia chi 89H va

thanh ghi diéu khién timer (TCON) 6 dia chi 88H

Chỉ có TCON được địa chỉ từng bit g/_ Các thanh ghi port nối tiếp:

IC8951 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (các bộ chuyển đổi A/D, các thanh ghi dịch )

Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyén va nhận

Khi truyền dữ liệu thì ghi lên SBUE, khi nhận dữ liệu thì đọc SBUF

Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (SCON) (được địa chỉ hóa từng bit) ở địa chỉ 98H

h/_Các thanh ghi ngắt:

IC 8951 có cấu trúc 5 nguồn ngắt (2 mức ưu tiên)

Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H

Cả hai thanh ghi được địa chỉ hóa từng bit /_ Thanh ghỉ điều khiển công suất:

Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiễu bit điểu khiển

Chúng được tóm tắt trong bảng sau:

3

TRUONG PHDL = K*CN|

THU VIEN

lsổ,4pugpii2— |

Trang 22

Bit Ki Ý nghĩa hear

7 | SMOD| Bit gấp đôi tốc độ baud, nếu được set thì tốc độ baud sẽ tăng

gấp đôi trong các

model, 2 và 3 của port nối tiếp

6 _ Không định nghĩa

5 - Không định nghĩa

4 _ Không định nghĩa

3 | GFEI | Bitcờđadungl

2 GF0 Bịt cờ đa dụng 0

1 PD Giảm công suất, được set để kích hoạt mode giảm cơng suất, chỉ thốt khi

reset

0 IDL Mode chi, set để kích hoạt mode chờ, chỉ thốt khi có ngắt

hoặc reset hệ thống

5/ Bộ nhớ ngoài:

IC 8951 có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chương trình và 64K bộ

nhớ dữ liệu ngồi Do đó, có thé ding thém ROM và RAM bên ngoài nếu cần

Khi dùng bộ nhớ ngoài, Port 0 khơng cịn là một port /O thuân túy nữa Nó được

hợp kênh giữa bus địa chỉ (A0 — A7) và bus dữ liệu (D0 — D7) với tín hiệu ALE để chốt byte thấp của địa chỉ khi bắt đầu mỗi chu kì bộ nhớ Port 2 thông thường được dùng cho byte cao của bus địa chỉ

Trong nửa đầu của mỗi chu kì bộ nhớ, byte thấp của địa chỉ được cấp trong Port 0 và được chốt bằng xung ALE Một IC chốt 74HC373 (hoặc tương đương) sẽ giữ byte địa chỉ thấp trong phần còn lại của chu kì bộ nhớ Trong nửa sau của chu kì bộ nhớ Port 0 được dùng như bus dữ liệu và được đọc hoặc ghi tùy theo lệnh

a/_ Truy xuất bộ nhớ chương trình ngồi:

Bộ nhớ chương trình ngồi là một IC ROM được cho phép bởi tín hiệu PSENNI Hình sau mơ tả cách nối một EPROM vào 8951:

Trang 23

8951 EPROM N Port Ð K S » D8 - D7 V EA 74HC373 | Dp (Oa Ae - A7 ALE 6 Port 2 » A8 - ALS PSEN b 0E

Giao tiếp giữa 8951 và EPROM

Một chu kì máy của 8951 có 12 chu kì xung nhịp Nếu bộ dao động trên chip được

lái bởi một thạch anh 12 Mhz thì một chu kì máy kéo dài 1 ps

Trong một chu kì máy, sẽ có hai xung ALE và hai byte được đọc từ bộ nhớ chương trình (nếu lệnh hiện hành là lệnh 2 bytes thì byte thứ hai sẽ được loại bỏ) Giản đồ

thời gian của một lần lấy lệnh được vẽ ở hình sau:

E————— One machine cycle ,

| S1 s2 s3 s4 ss sé Si PL | P2 PL | P2 Pi | P2 PL | p2 PL | P2 PL | P2 Pl | P2 ALE ' ' ' ' } } — ' ' ==n 1 ' PSEN { I + ' + , 1 L ' 1

Port 2 Kee <Program counter high byt xX PCH

1 ' ' ' { '

==C }Œ93—€3®9——£3

Trang 24

b/_ Truy xuất bộ nhớ dữ liệu ngoài: 8951 RAN Port @ DA - DZ EA 74HC373 YJ do 6a Mao - a7 ALE 6 Port 2 > a8 - Als m a HR b WR PSEN jfo— NC TT cs

Giao tiếp giữa 8951 và RAM

Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc bằng các tín hiệu

WR\ và RD\ (các chân P3.6 và P3.7 thay đổi chức năng) Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bits hoặc RO va R1 xem như thanh ghi địa chỉ

Kết nối bus địa chỉ và bus đữ liệu giữa RAM và 8951 cũng giống như EPROM và

do đó cũng có thể lên đến 64 Kbytes bộ nhớ RAM

Ngoài ra, chân RD\ của 8951 được nối tới chân cho phép xuất (OE\) của RAM va chân WR\ được nối tới chân ghi (WR\) của RAM

Giản đồ thời gian cho lệnh đọc đữ liệu ngồi được vẽ trên hình sau đối với lệnh

<— One machine cycle ——>†—— One machine cycle —| | si | s2 | ss | s4 | ss | se | st | se | ss | s+ | ss | ss | ALE PSEN

Port 2 X PCH OX 0° (data pointer high purer X

' ' ' i '

' ' 1 ì '

Port ® Opcode External

data in

Trang 25

Gidn dé thoi gian cia lenh MOVX

Giản đồ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tương tự chỉ khác đường WR\ sẽ thay vào đường RD\ và dữ liệu được xuất ra trên chân Port 0 (RD\ vẫn giữ mức cao)

c/ Giải mã đỉa chỉ:

Nếu có nhiều EPROM và/hoặc nhiều RAM được giao tiếp với 8951, thì cần phải giải mã địa chỉ

Mạch giải mã cũng tương tự như các hệ vì xử lí khác Ví dụ, nếu dùng nhiều

EPROM và RAM 8Kbytes thì bus địa chỉ cần phải được giải mã để xác định IC nhớ

nào được chọn

Người ta thường dùng IC giải mã 74HC138 với các ngõ ra được nối tới các ngõ vào chọn chip (CS) trên các IC nhớ Hình sau vẽ một hệ thống với nhiều EPROM 8K 2764 va RAM 8K 6264: Giải mã địa chỉ : A

2 Address bus CA@ - AL5) {

{ ` t ) Data bus (D9 - DZ) W PSEN q5= 00-07 RO 00-07 2764 TR —c ‘TR 6264 X aa-at2 RØ-A12 ts —d cs ts cs ts ts EPROM RAN 74HC138 = bh m[C oe a Ai4] B =PE aia} A 0 b

tla E1 m5 04 agp Select other

Ea 05 EPROM/RAN

06 P—

E28 oP

Trang 26

d/_Xếp chồng bộ nhớ chương trình và dữ liệu bên ngồi:

Vì bộ nhớ chương trình là ROM, nên nảy sinh một vấn để bất tiện khi phát triển phần mềm cho 8051/8031 Đối với 8951 đã cải tiến bằng cách thay thế bằng

EEPROM, hoặc dùng một cách để khắc phục nhược điểm trên là xếp chồng các

vùng nhớ chương trình và dữ liệu

Một IC RAM có thể chứa cả chương trình và đữ liệu bằng cách nối đường OE\ của

RAM vào một mạch logic AND của PSEN\ và RD\

Mạch trên hình sau cho phép một IC RAM được dùng làm bộ nhớ chương trình và

đỡ liệu:

Vậy một chương trình có thể được tải vào RAM (bằng cách ghi nó như bộ nhớ dữ liệu) và thi hành (bằng cách truy xuất nó như bộ nhớ chương trình)

6/ Lệnh Reset:

i _jR

lop Reset | tour = RO _ 8 2K PSEN Gu l

uC§951 được reset bằng cách giữ chân RST ở mức cao ít nhất trong hai chu kì máy và trả nó về mức thấp

Mạch reset hệ thống:

RST có thể được kích bằng tay dùng một nút bấm hoặc có thể được kích khi cấp điện dùng một mạch R-C

Trạng thái của tất cả các thanh ghi trong 8951 sau khi Reset hé thống được tóm tắt

trong bảng sau:

Quan trọng nhất trong các thanh ghi trên là thanh ghỉ đếm chương trình, nó được

dat lai OOOOH

Khi RST trở lại mức thấp, việc thi hành chương trình ln bắt đầu ở địa chỉ đầu tiên trong bộ nhớ chương trình: địa chỉ 0000H

Nội dung của RAM trên chip không bị thay đổi bởi lệnh Reset

Trang 27

Thanh ghi Nội dung

Đếm chương trình 0000 H Tích lũy 00H B 00H PSW 00H SP 07H DPTR 0000 H Port 0+ 3 FF H IP XXX00000 B IE 0XX00000 B

Các thanh ghi định thời 00H

SCON 00H

SBUF 00H

PCON ( HMOS ) OXXXXXXX

B

PCON (CMOS ) 0XXX0000 B

Il TAP LENH CUA 8951 :

Tập lệnh 8951 có 255 lệnh gồm 139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte

1/_Các chế độ đánh địa chỉ: a/ Dia chi thanh ghi:

uC8951 có bốn bank thanh ghi, méi bank cé 8 thanh ghi đánh số từ R0 đến R7 Tại mỗi thời điểm chỉ có một bank thanh ghi được tích cực

Pee

Dia chi thanh ghi

Muốn chọn bank thanh ghi nào ta chỉ cần gán các bít nhị phân thích hợp vào RS1 (PSW.4) và RS0 (PSW.3) trong thanh ghi trạng thái chương trình (PSW)

Ngồi ra, một số thanh ghi đặc biệt như thanh ghi tích lũy, thanh ghi con trỏ đữ

liệu cũng được xác định trong các lệnh trên nên không cân bit địa chỉ

Trang 28

Trong các lệnh này thanh ghi tích lũy được kí hiéu 14 “A”, con trỏ dữ liệu là “DPTR”, thanh ghi đếm chương trình là “PC”, cờ nhớ là “C”, cặp thanh ghi tích lũy là “AB”

b/ Địa chỉ trực tiếp:

Trong chế độ này, các thanh ghi bên trong 8951 được đánh địa chỉ trực tiếp bằng 8

bits địa chỉ nằm trong byte thứ hai của mã lệnh

Địa chỉ trực tiếp

Dù vậy, trình hợp dịch cho phép gọi tên các thanh ghi chức năng đặc biệt (có địa chỉ trực tiếp từ 80H đến FFH)

Ví dụ, P0 cho Port 0, TMOD cho thanh ghi chế độ timer,

e/_Địa chỉ gián tiếp:

R0 và R1 được dùng để chứa địa chỉ tạm ô nhớ mà lệnh tác động đến Người ta

qui ước dùng dấu @ trước R0 hoặc R1

|, ,Mãin, | ]|

Địa chỉ gián tiếp đ/_ Địa chỉ tức thời:

Người ta đùng dấu # trước các toán hạng tức thời Các toán hạng đó có thể là một hằng số, một kí số hay một biểu thức toán học Trình hợp dich sẽ tự động tính tốn và thay thế dữ liệu vào mã lệnh

Địa chỉ tức thời

Trang 29

e/ Địa chỉ tương đối:

Địa chỉ tương đối được dùng trong các lệnh nhảy

IC8951 dùng giá trị 8 bit có dấu để cộng thêm vào thanh ghi đếm chương trình (PC)

Tâm nhảy của lệnh này trong khoảng từ —128 đến 127 ô nhớ Trước khi cộng, thanh ghi PC sẽ tăng đến địa chỉ theo sau lệnh nhảy rồi tính tốn địa chỉ offset cần

thiết để nhảy đến địa chỉ yêu cầu

Như vậy, địa chỉ mới là địa chỉ tương đối so với lệnh kế tiếp chứ không phải bản

thân lệnh nhảy Thường lệnh này có liên quan đến nhãn được định nghĩa trước

„ Mã lệnh _ „ — Offsettrdng,đối

Địa chỉ tương đối

f/ Dia chỉ tuyệt đối :

Địa chỉ tuyệt đối chỉ dùng trước các lệnh ACALL và AJIMP

Các lệnh 2 byte này dùng để rế nhánh vào một trang 2Kbyte của bộ nhớ chương

trình bằng cách cấp 11 bit địa chỉ thấp (A0-A10) để xác định địa chỉ dich trong

trang mã Còn 5 bit cao của địa chỉ đích chính là 5 bit hiện hành trong thanh ghỉ đếm chương trình

Vì vậy, địa chỉ của lệnh theo sau lệnh rẽ nhánh và địa chỉ đích của lệnh rẽ nhánh cân phải cùng trang mã 2Kbyte (có cùng 5 bits địa chỉ cao)

Al5 AII A10 A0

` ` J ~- —

Xác định trang mã Xác định địa chỉ trong trang mã

Trang 30

g/ Dia chi dai:

Địa chỉ dài chỉ dùng cho lệnh LCALL và LJIMP Các lệnh này chiếm 3 byte và dùng 2 byte sau (byte 2 và byte 3) để định địa chỉ đích của lệnh (16 bit) Ưu điểm của lệnh này là có thể sử dụng trong toàn bộ vùng nhớ 64 Kbyte

Tuy nhiên, lệnh này chiếm nhiều byte và lệ thuộc vào vị trí vùng nhớ

| Mã lệnh | [ AIS5-AS | im A7- À0 _|

Dia chi dai

h/ Dia chi tham chiéu:

Địa chỉ tham chiếu đùng một thanh ghi cơ bắn (hoặc thanh ghi đếm chương trình PC hoặc thanh ghi con trỏ dữ liệu DPTR) và địa chỉ offset (trong thanh ghi tích lũy

A) để tạo địa chỉ được tác động cho các lệnh JMP hoặc MOVC

Các bảng nhảy và bảng tìm kiếm dễ đàng được tạo ra để sử dụng địa chỉ tham

chiếu

Dia chi co ban Offset

PC hoặc +| AC| =| Địa chỉ cần truy

DPTR Cc xuất 2/_Các nhóm lệnh của 8951:

Tập lệnh của 8951 được chia làm 5 nhóm: " Số học

Luan li

" Chuyển dữ liệu Chuyển điều khiển Các chỉ dẫn thiết lập lệnh:

Rn: Thanh ghi RO đến R7 của bank thanh ghi được chọn

data : 8 bit địa chỉ vùng dữ liệu bên trong Nó có thể là vùng RAM dữ liệu trong (0-127) hoặc các thanh ghi chức năng đặc biệt

@Ri: 8 bit ving RAM dữ liệu trong (0-255) được đánh địa chỉ gián tiếp qua thanh ghi RO hoặc R1

#data : Hằng § bit chứa trong câu lệnh #datal6 : Hằng 16 bit chứa trong câu lệnh

Trang 31

addr1l : 11 bịt địa chỉ đích được dùng trong lệnh ACALL và AJMP rel :Byte offset 8 bit có dấu được dùng trong lệnh SJUMP và những lệnh

nhảy có điều kiện

bit : Bit được định địa chỉ trực tiếp trong RAM đữ liệu nội hoặc các thanh ghi

chức năng đặc biệt A/ Nhóm lệnh xử lí số học: ADD A, Rn ADD A, data AAD A, @Ri ADD A, #data (2, 1): ADDCA,Rn (1,1): - ADDC A, data (2, 1): ADDC A, @Ri (1, 1):

(1 byte, 1 chu kì máy) : Cộng nội dung thanh ghi Rn vào thanh (2,1): q,1): ADDC A, #data SUBB A, Rn nhớ ghi A

Céng truc tiép 1 byte vao thanh ghi A

Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khai báo trong Ri vào thanh ghi A

Cộng đữ liệu tức thời vào A Cộng thanh ghi và cờ nhớ vào A

Cộng trực tiếp byte dữ liệu và cờ nhớ vào A

Cộng gián tiếp nội dung RAM và cờ nhớ vào A

(2, 1) : Cộng đữ liệu tức thời và cờ nhớ vào A

(q,1): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ SUBB A, data (2, 1) : Trừ trực tiếp A cho một số và cờ nhớ

SUBB A, @Ri q,1): Trừ gián tiếp A cho một số và cờ nhớ SUBB A, #data(2, 1): Trừ nội dung A cho một số tức thời và cờ nhớ INCA INC Rn INC data INC @Ri DEC A DEC Rn DEC data DEC @Ri INC DPTR q,1) q,1) (2, 1) d,1):

: Giảm nội dung thanh ghi A xuống 1

: Giảm nội dung thanh ghi Rn xuống 1

q,1) q,1) (2,1) (1, 2)

: Tăng nội dung thanh ghi A lén 1 : Tăng nội dung thanh ghi Rn lên 1

: Tăng dữ liệu trực tiếp lên 1

Tăng gián tiếp nội dung vùng RAM lên 1

: Giảm dữ liệu trực tiếp xuống 1

Trang 32

MUL AB(1,4) : Nhân nội dung thanh ghi A với nội dung thanh ghi B DIV AB(1, 4) : Chia nội dung thanh ghi A cho nội dung thanh ghi B

DAA (1,1) : b/_ Nhóm lệnh luận lí : ANLA,Rn (1,1): ANL A, data (2,1): ANLA, @Ri (1,1): ANL A, #data = (2, 1): ANL data, A (2,1): ANL data, #data(3, 2) : ANL C, bit (2, 2): ANL C, /bit (2,2): ORL A, Rn dd, 1): ORL A, data (2,1): ORL A, @Ri qd,1): ORLA, #data (2,1): ORL data, A (2,1):

Hiệu chỉnh thập phân thanh ghi A

AND nội dung thanh ghi A với nội dung thanh ghi Rn AND nội dung thanh ghi A với dữ liệu trực tiếp

AND nội dung thanh ghi A với dữ liệu gián tiếp trong RAM

AND nội dung thanh ghi với dữ liệu tức thời AND một dữ liệu trực tiếp với A

AND một dữ liệu trực tiếp với dữ liệu tức thời AND cờ nhớ với một bit trực tiếp

AND cờ nhớ với bù của một bit trực tiếp OR thanh ghi A với thanh ghi Rn

OR thanh ghi A với một dữ liệu trực tiếp

OR thanh ghi A với một dữ liệu gián tiếp

OR thanh ghi A với một dữ liệu tức thời

OR một dữ liệu trực tiếp với thanh ghi A ORL data, #đata(3, 2): OR một dữ liệu trực tiếp với một dữ liệu tức thời ORL C, bit (2, 2) ORL C, /bit (2, 2): XRL A, Rn d, 1) XRL A, data (2, 1) XRL A, @Ri (1,1): XRLA,#data (2, 1) XRL data, A (2, 1)

: OR cờ nhớ với một bit trực tiếp OR cờ nhớ với bù của một bit trực tiếp

: XOR thanh ghi A với thanh ghi Rn

: XOR thanh ghi A với một dữ liệu trực tiếp

XOR thanh ghi A với một dữ liệu gián tiếp

: XOR thanh ghi A với một dữ liệu tức thời

: XOR một dữ liệu trực tiếp với thanh ghi A

XRL data, #đata(3, 2): XOR một đữ liệu trực tiếp với một đữ liệu tức thời

SETB C (1,1):

SETB bit (2,1):

Dat cờ nhớ

Đặt một bit trực tiếp

Trang 33

LUAN VAN TOT NGHIEP SVTH: VO VAN TRUNG CLRA (1, 1) : Xóa thanh ghi A

CLR C (1, 1) : Xóa cờ nhớ

CPLA (1, 1) : Bà nội dung thanh ghi A CPLC (1, 1) : Bù cờ nhớ

CPL bit (2, 1) : Bù một bit trực tiếp

RLA (1, 1) : Quay trái nội dung thanh ghi A RC A(1, 1): Quay trái nội dung thanh ghi A qua cờ nhớ RRA (1, 1) : Quay phải nội dung thanh ghi A RRC A(I1, 1: Quay phải nội dung thanh ghi A qua cờ nhớ

SWAP A(1, 1: Quay trái nội dung thanh ghi A 1 nibble (1/2 byte)

c/ Nhóm lệnh chuyển dữ liệu:

MOV A, Rn (1,1) : Chuyển nội dung thanh ghi Rn vao thanh ghi A

MOV A, data (2,1) : Chuyén dif liéu trực tiếp vào thanh ghi A MOV A, @Ri (1,1) : Chuyển dữ liệu gián tiếp vào thanh ghi A

MOV A, #data (2,1) : Chuyển dữ liệu tức thời vào thanh ghi A

MOV Rn, A (1,1) : Chuyển nội dung thanh ghi A vào thanh ghi Rn

MOV Rn, data (2,2) : Chuyển dữ liệu trực tiếp vao thanh ghi Rn MOV Rn,#data (2, I) : Chuyển đữ liệu tức thời vào thanh ghi Rn MOV data, A (2, 1): Chuyển nội dung thanh ghi A vào một dữ liệu

trực tiếp

MOV data, Rn(2, 2): Chuyén nội dung thanh ghi Rn vào một dữ liệu

trực tiếp

MOV data, data(3, 2): Chuyén một dữ liệu trực tiếp vào một dữ liệu

trực tiếp

MOV data, @Ri(2, 2): Chuyển một dữ liệu gián tiếp vào một dữ liệu

trực tiếp

MOV data, #data (3,2) :Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp

MOV @Ri, A(1, 1): Chuyển nội dung thanh ghi A vào một dữ liệu

gián tiếp

Trang 34

MOV @Ri, data (2, 2): Chuyển một dữ liệu trực tiếp vào một dữ liệu

gián tiếp

MOV @Ri, #data (2, 1): Chuyển một dữ liệu tức thời vào một dữ liệu

gián tiếp

MOV DPTR, #data16:Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu

MOV C, bit (2,1) : Chuyén mét bit truc tiếp vào cờ nhớ MOV bit, C (2,2): Chuyển cờ nhớ vào một bit trực tiếp MOVC A, @A+DPTR: Chuyển byte bộ nhớ chương trình có địa chỉ là

@A +DPTR vào thanh ghi A

MOVC A, @A + PC: Chuyển byte bộ nhớ chương trình có địa chỉ là @A + PC vào thanh ghi A

MOVX A, @Ri: Chuyển đữ liệu ngồi (8 bít địa chỉ) vào thanh ghi A MOVX A, @DPTR: Chuyển đữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A MOVX @Ri, A :Chuyến nội dung A ra dữ liệu ngoài (8 bit địa chỉ) MOVX @DPTR, A: Chuyển nội dung A ra đữ liệu ngoài (16 bit dia chi)

PUSH đata : Chuyển đữ liệu trực tiếp vào ngăn xếp và tăng SP

POP data : Lấy dữ liệu trực tiếp ra khỏi ngăn xếp và giảm SP

XCH A, Rn (1, 1): Trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A XCH A, data : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp XCH A, @Ri: Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp

XCHD A, @Ri: Trao đổi giữa nibble thấp (LSN) của thanh ghi A và LSN của dữ

liệu gián tiếp

d/_Nhóm lệnh chuyển quyền điều khiển :

ACALL addr11(2, 2) : Gọi chương trình con dùng địa chỉ tuyệt đối LCALL addr16 (3, 2) : Gọi chương trình con dùng địa chỉ dài

RET (1,2) : Trở về từ lệnh gọi chương trình con

RETI (1,2) : Trở về từ lệnh gọi ngắt

AJMP addr11 (2, 2) : Nhảy tuyệt đối LJMP addr16 (3, 2) : Nhay dai

Trang 35

SJMP rel (2,2) : Nhảy ngắn

JMP@A+DPTR (1,2): Nhấy gián tiếp từ con trổ dữ liệu

JZ rel ; (2,2) : Nhảy đến A bằng 0 JNZ rel (2, 2) : Nhảy đến A không bằng 0

JC rel (2, 2) : Nhảy đến cờ nhớ được đặt JNC rel (2, 2) : Nhảy nếu cờ nhớ không được đặt

JB bit, rel (3, 2) : Nhầy tương đối nếu bit trực tiếp được đặt

JNB bít, rel: Nhảy tương đối nếu bit trực tiếp không được đặt

JBC bit, rel (3, 2) : Nhảy tương đối nếu bit trực tiếp được đặt,

rồi xóa bit

CJNE A, data, rel (3, 2) : So sánh dữ liệu trực tiếp với A và nhảy nếu không bằng

CJNE A, #data,rel (3, 2) : So sánh dữ liệu tức thời với A và nhảy nếu

không bằng

CJNE Rn, #data, rel (3, 2) : So sánh dữ liệu tức thời với nội dung thanh

ghi Rn và nhảy nếu không bằng

CJNE @GRi, #data, rel (3, 2) : So sánh dữ liệu tức thời với dữ liệu gián tiếp

và nhảy nếu không bằng

DỊNZ Rn, rel (2, 2) : Giảm thanh ghi Rn và nhảy nếu không bằng DJNZ data, rel (3, 2) : Giảm dữ liệu trực tiếp và nhảy nếu không bằng

IV CHUONG TRINH GIGI THIEU ASSEMBLY:

1 Giới thiệu :

Ngôn ngữ assembly giữa ngôn ngữ máy và ngôn ngữ cấp cao Ngôn ngữ cấp cao được đặc trưng như: Pascal, C Cịn chương trình ngôn ngữ máy là một chuỗi các byte

nhị phân được đặc trưng bởi các lệnh mà máy tính có thể thực thi

Ngôn ngữ assembly thay thế các mã nhị phân của ngôn ngữ máy để sử dụng các “thuật nhớ“ dễ dàng trong quá trình lập trình Ví dụ lệnh cộng trong ngôn ngữ máy được đặc trưng bởi mã nhị phân “10110011” trong khi ngôn ngữ assembly là “ADD“

Một chương trình ngơn ngữ assembly không thể thực thi bởi máy tính mà nó phải được dịch sang mã nhị phân ngôn ngữ máy

Trang 36

Segment 14 mét phan của bộ nhớ mã hoặc dữ liệu, nó có thể tái định vị được

(Relocatable) hoặc tuyệt đối (Absolute ) Segment Relocatable có tên, kiểu và có thể được kết nối với Segment cục bộ khác Segment Absolute khơng có tên và không thể

được kết nối Segment khác -

Modul chifa 1 hoặc nhiều segment hay các segment cục bộ Một modul có thể là một “file” ở nhiều trường hợp cá biệt

Một chương trình Modul Absolute đơn được hòa vào toàn bộ các Segment Absolute và Segment Relocatable từ tất cả các mode nhập

Chương trình chỉ chứa các mã nhị phân thay cho các lệnh (với các địa chỉ và các hằng đữ liệu ) được hiểu bởi máy tính

2 Hoạt động của trình biên dịch (Assembler Operation)

Có nhiều trình biên dịch với mục đích khác nhau có tác dụng là dễ hiểu các ứng dụng vi điều khiển ASM5I là tiêu biểu chuẩn biên dịch của họ MSC-51 ASM5I là

trình biên dịch mạnh có tác dụng hữu hiệu trên hệ thống phát triển INTEL và họ IBM PC của máy vi tính

ASM5I được gọi hiện lên từ sự chỉ dẫn của hệ thống bởi: ASMS1 Source file (Assembly Control)

Trình biên dịch nhận một file nguồn với tư cách là ngõ nhập (PROGRAM.SCR) và họ

phát ra một file đối tượng (PROGRAM.OB]) và file listing (PROGRAM.LST)

PROGRAM.OBJ PROGRAM.SCR PROGRAM.LST

Vì hâu hết các biên dịch xem xét chương trình nguồn 2 lần trong lúc thi hành sự

dịch ngôn ngữ máy, nên chúng được mô tả qua 2 Pass biên dịch là Passl và Pass2 Trong passl, file nguồn được xem xét từng dòng và bảng ký hiệu xây dựng Bộ đếm Location mặc nhiên chọn 0 hoặc được đặt bởi chỉ thị ORG (đặt Origin) Cũng như file được xem xét, bộ đếm Location được tăng lên bằng độ dài mỗi lệnh Chi thi data định nghĩa (đặc biệt hoặc DW) tăng bộ đếm Location bằng với số byte định rõ, các chỉ thị nhớ lưu trữ (DSO tăng bộ đếm Location bởi số byte dự trữ) Mỗi lần

một nhãn được tìm thấy ở sự bắt đầu của một đường, thì nó được đặc trong bảng ký

hiệu theo giá trị hiện hành của bộ đếm Location Các ký hiệu được định nghĩa bởi dùng các chỉ thị tương đương (EQU) được đặc trong bảng ký hiệu, được cất giữ và sau đó dùng trong pass2

Trang 37

Trong Pass2, file Object va file Listing dugc tạo ra, các thuật nhớ được biến đổi thành Opcode và đặt trong các file output Các toán hạng được xác định giá trị và đặt phía sau Opcode lệnh Ở nơi các ký hiệu xuất hiện trong toán hạng, các ký hiệu của chúng sẽ được lấy lại từ bằng ký hiệu (được tạo ra trong suốt Pass1 va ding trong sự sắp xếp đữ liệu đúng hoặc đúng địa chỉ bởi các lệnh)

Bởi vì Pass2 được thực thi nên chương trình nguồn có thể dùng “sự tham khảo trước “

là dùng ký hiệu trước khi định nghĩa

File Object nếu tuyệt đối thì chỉ chứa các byte nhị phân (00H - FFH) của chương trình ngôn ngữ máy File Object Relocatable chứa một bảng ký hiệu và thông tin khác được yêu cầu bởi sự kết hợp và xác định đúng vị trí File Listing chứa mã nguyên bảng ASCII (20H — 7FH) cho ca hai chung trình ngưồn và các byte Hexadecimal trong chương trình ngơn ngữ máy

3 Sự sắp đặt chương trình ngơn ngữ Assmebly:

Chương trình ngơn ngữ Asembly bao gồm: Các lệnh máy, lời chỉ chị của trình biên

dịch, sự điều khiển biên dịch và các chú thích

Các lệnh máy là các kỹ xảo của lệnh có thể thực thi (ví dụ như ANL) Các chỉ thị của trình biên dịch là các lệnh để trình biên dịch định cấu trúc chương trình, các dữ liệu, ký hiệu, hằng, (ví dụ Org ) Các sự điều khiển trình biên dịch set các mode của trình biên dịch và điểu khiển sự chạy chương trình Assembly (ví dụ STILLE) -

Các chú thích hoạt động của lệnh

Các lệnh phải ghỉ theo nguyên tắc rõ ràng để được trình biên dịch hiểu Sự sắp xếp của chúng như sau:

3.1 Vùng nhan (label Field ):

Một nhãn tượng trưng cho địa chỉ của lệnh (hoặc dữ liệu ) theo sau nhãn Khi các rẽ

nhánh đến lệnh này, nhãn được dùng trong vùng toán hạng của nhánh (hoặc lệnh

nhảy)

Các “nhãn” là một kiểu ký hiệu, sau nhãn phải có dấu hai chấm (:) còn sau ký hiệu thì khơng

Các kiểu ký hiệu được quy cho các giá trị hoặc quy cho việc dùng các chỉ thị như: EQU, SEGMENT, BIT, DATA, Các ký hiệu có thể là địa chỉ, hằng, data, tên các

segment hoặc sự xây dựng khác được hiểu bởi người lập trình Sau đây là một ví dụ để

phân biệt nhãn và ký hiệu:

PRA EQU 500 : PRA là ký hiệu tượng trưng giá trị 500 START :MOV A, #0FFH :START là nhãn tương trưng địa chỉ lệnh MOV

Một ký hiệu hoặc một nhãn phải bắt đầu một chữ cái dấu “?”, hoặc dấu “-“; phải được

Trang 38

3.2 Vùng thuật nhé (Mnemonic Field ):

Các thuật nhớ hay các chỉ chị biên dịch đi vào vùng thuật nhớ theo sau vùng nhãn Ví dụ các thuật nhé lénh nhu: ADD, MOV, DIV, INC, ; cdc chỉ thị biên dịch như : ORG

, EQU

3.3 Vùng toán hang (Operand Field):

Vùng toán hạng theo sau vùng thuật nhớ Vùng này chứa địa chỉ hay dữ liệu được dùng

bởi lệnh Một nhãn có thể dùng để tượng trưng cho hằng dữ liệu Các khả năng cho

phép vùng toán hạng phụ thuộc lớn vào các hoạt động Một vài hoạt động không có tốn hạng như : RET, NOP trong khi các hoạt động khác cho phép nhiều toán hạng

được phân ra bằng dấu phẩy

3.4 Vùng chú thích (Comment Field ):

Các chú thích phải đễ hiểu đặt để giải thích lệnh, và có dấu chấm phẩy ở đâu Khối chú thích trong khung để giải thích tính chất chung của phần chương trình được cắt ra bên dưới

3.5 Các ký hiệu biên dịch đặc biệt (Special Assembler Symbol ): Các ký hiệu biên dịch đặc biệt được dùng trong các mode định vị thanh ghi cụ thể chúng bao gồm các thanh ghi A, Ro - R7, DPTR, PC,C, AB, hay các ký hiệu $ được dùng để quy vào giá trị hiện hành của bộ đếm Location

Ví dụ : lệnh JNZ T1, $ tương đương với lệnh sau : HERE : JNZ T1, HERE 3.6 Địa chỉ gián tiếp (Indirect Address):

Đối với một số lệnh dùng toán hạng có thể xác định thanh ghi mà nó chứa địa chỉ

gián tiếp và nó chỉ có thể dùng với R0, R1 , DPTR Ví dụ lénh MOV A, @RO khéi

phục lại byte dữ liệu từ RAM nội tại địa chỉ được định rõ trong R0

Lệnh MOVC, @A + PC khôi phục lại byte dữ liệu từ bộ nhớ dữ liệu ngoài tại địa chỉ được tạo thành bởi việc cộng nội dung thanh ghi tích lũy A và bộ đếm chương trình

3.7 Dữ liệu tức thời (Immediate Data ):

Các lệnh dùng sự định vị tức thời cung cấp dữ liệu vào vùng toán hạng, ký hiệu # đặt trước dữ liệu tức thời Ví dụ:

CONSTANT EQU 100 MOV A, OFFH

ORL 40H, # CONSTANT 3.8 Dia chi di liệu (Data Address):

Nhiều lệnh truy xuất các vùng nhớ dùng sự định vị trực tiếp và đòi hỏi một địa chi nhớ

dữ liệu trên chip (00 - FFEH) hay một địa chỉ SFR (80H — FFH) trên vùng toán hạng

Các ký hiệu đã được định nghĩa có thể được đùng cho các địa chỉ SFR Ví dụ:

MOVA, 45H hay MOV A, SBUF

Trang 39

3.9 Dia chi Bit (Bit Address):

Một trong những điểm mạnh của 8951 là khả năng truy xuất các bit riêng lẻ, không cần

các hoạt động trang bị trên byte Các lệnh truy xuất các bịt định vị phẩi cung cấp một dia chi trong bộ nhớ dữ liệu nội (00H — 7FH) hoặc địa chỉ bit trong các SFR (80H - FFH)

Có 3 cách để xác định dia chi bit trong ô nhớ dữ liệu: Dùng địa chỉ bịt trực tiếp, dùng hoạt động điểm giữa địa chỉ byte và địa chỉ bit, dùng ký hiệu biên dịch đã được định nghĩa

Ví dụ:

SETB 0E7H : Dùng địa chỉ trực tiếp SETB_ ACC, 7 :Dùng hoạt động điểm

JNZ T1,$ : Dùng ký hiệu được định nghĩa “TT” 3.10 Địa chỉ mã (Code Address):

Địa chỉ mã được dùng trong toán hạng cho các lệnh nhảy, bao gồm các sự nhẩy tương

đối (như SJMP và các lệnh nhảy có điều kiện), các sự nhảy và các sự gọi tuyệt đối

(ACALL , AJMP) Địa chỉ mã thường được cho ở dạng nhãn sau:

HERE:

SJMP HERE

ASM5I sẽ xác định địa chỉ mã đúng và lông vào Offset đúng được ký hiệu 8 bit ` lệnh, địa chỉ trang 11 bit hoặc địa chỉ dài 16 bit cho thích hợp

3.11 Các sự nhảy và gọi chung ( generic Jump and Calls):

ASMS5I cho phép người lập trình dùng thuật nhớ JMP chung hay CALL chung Lệnh “JMP “có thể được dùng thay cho “SIMP, AJMP, LJMP“ và “CALL” có thể thay cho ACALL hay LCALL Sự biên dịch biến đổi thuật nhớ chung đếm một lệnh

“thực tế“ sau vài qui luật đơn giản, thuật nhớ chung biến đổi thành dạng tuyệt đối nếu nhảy hay gọi trong trang 2k Nếu các dạng ngắn và tuyệt đối khơng dùng thì sẽ

được chuyển thành dạng dài

4 Sự tính tốn biểu thức của Assembile Time (Assemble Time

Expression Evaluation):

Khi một biểu thức được dùng, sự biên dịch tính tốn giá trị lồng vào lệnh đó 4.1 Các cơ sở số (Number Basses):

Cơ sở các hằng số phải được theo sau các số nhị phân “B”, theo sau số Octal “O”, hoặc “Q”, theo sau số thập phân “D” hay khơng có gì , theo số Hexa “H” Ví dụ:

Trang 40

MOV A, IIIIB : Nhị phân MOV A, 30H : Hex

MOV A,315D : Thập phân

MOV A,317Q_ : Octal

4.2 Cac chuéi ky ty (Character String):

Chuéi ding một hay 2 ky tự có thể dùng như các toán hạng trong các biểu thức Các

mã ASSCIH được biến đối thành nhị phân tương đương bởi sự biên dịch

Các hằng được đi kèm theo sau 1 dấu ngoặc kép (°) Vidu: CJNZ A, #‘Q’, AGAIN

4.3 Cac ky hiéu sé hoc (Arithmetic Operations): + :Cộng

: Trừ : Nhân / ; Chia

MOD :Phép lay dv

Ví dụ lệnh MOV A, # 10 + 10H va lénh MOV A, # LAH tương tự 2 lệnh MOV A, # 25

MOD 7 va MOV A, #4 ciing giống nhau

4.4 Các hoạt động logic (Logic Operations):

Các hoạt động logic là OR, AND, XOR, NOT Hoạt động được áp dụng trên các bit

tương ứng trong mỗi toán hạng Sự hoạt động phải được phân ra từ các toán hạng bởi một khoảng cách ký tự hoặc nhiều khoảng ký tự

Ví dụ 3 lệnh MOV sau đây giống nhau:

THERE EQU

MINUS- THERE EQU-3

MOV A, #(NOT THERE) + 1

MOV A, MINUS — THERE MOV A, #11111101B

4.5 Các hoạt động đặc biét (special Operation):

Các hoạt động đặc biệt là: SHR (dịch phải), SHL (dịch trái), HIGH (byte cao), LOW

(byte thấp)

Ví dụ: lệnh MOV A,#HIGH 1234H và lệnh MOV A, 12H tương đương

Ngày đăng: 06/09/2013, 09:46

HÌNH ẢNH LIÊN QUAN

8) Khối màn hình hiển thị .- - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
8 Khối màn hình hiển thị .- (Trang 1)
đặc tính đặc biệt của 8951 như ở bảng sau: - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
c tính đặc biệt của 8951 như ở bảng sau: (Trang 10)
Như sẽ thấy trong hình sau, RAM bên trong 8951 được phân chia thành các bank thanh  ghi  (00H  —  1FH),  RAM  địa  chỉ  hóa  bit  (20H  —  2FH),  RAM  đa  dụng  (30H  —  TFH)  và  các  thanh  ghi  chức  năng  đặc  biệt  trong  khoảng  (80H  -  FFH) - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
h ư sẽ thấy trong hình sau, RAM bên trong 8951 được phân chia thành các bank thanh ghi (00H — 1FH), RAM địa chỉ hóa bit (20H — 2FH), RAM đa dụng (30H — TFH) và các thanh ghi chức năng đặc biệt trong khoảng (80H - FFH) (Trang 13)
bit trạng thái như bảng tóm tắt sau: - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
bit trạng thái như bảng tóm tắt sau: (Trang 17)
Hình sau mô tả cách nối một EPROM vào 8951: - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
Hình sau mô tả cách nối một EPROM vào 8951: (Trang 22)
thời gian của một lần lấy lệnh được vẽ ở hình sau: - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
th ời gian của một lần lấy lệnh được vẽ ở hình sau: (Trang 23)
b/_ Truy xuất bộ nhớ dữ liệu ngoài: - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
b _ Truy xuất bộ nhớ dữ liệu ngoài: (Trang 24)
Giản đồ thời gian cho lệnh đọc đữ liệu ngoài được vẽ trên hình sau đối với lệnh - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
i ản đồ thời gian cho lệnh đọc đữ liệu ngoài được vẽ trên hình sau đối với lệnh (Trang 24)
vào chọn chip (CS) trên các IC nhớ. Hình sau vẽ một hệ thống với nhiều EPROM §K  2764  và  RAM  8K  6264:  - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
v ào chọn chip (CS) trên các IC nhớ. Hình sau vẽ một hệ thống với nhiều EPROM §K 2764 và RAM 8K 6264: (Trang 25)
Mạch trên hình sau cho phép một IC RAM được dùng làm bộ nhớ chương trình và - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
ch trên hình sau cho phép một IC RAM được dùng làm bộ nhớ chương trình và (Trang 26)
Các bảng nhảy và bảng tìm kiếm dễ đàng được tạo ra để sử dụng địa chỉ tham - Luận văn thiết kế và thi công điều khiển đèn giao thông   luận văn, đồ án, đề tài tốt nghiệp
c bảng nhảy và bảng tìm kiếm dễ đàng được tạo ra để sử dụng địa chỉ tham (Trang 30)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w