(NB) Giáo trình Kỹ thuật vi xử lý với mục tiêu là Trình bày được cấu trúc chung, chức năng sơ đồ khối máy tính, các hệ đếm và cấu trúc, nguyên lý làm việc các mạch cơ sở và chức năng. Phân biệt được các chức năng của các vi mạch. Mời các bạn cùng tham khảo
Trang 1TRƯỜNG CAO ĐẲNG NGHỀ CÔNG NGHIỆP HÀ NỘI
Tác giả (chủ biên) PHẠM THỊ THÙY DUNG
GIÁO TRÌNH
KỸ THUẬT VI XỬ LÝ
(Lưu hành nội bộ Ngành Cơ điện tử)
Hà Nội năm 2012
Trang 2Tuyên bố bản quyền Giáo trình này sử dụng làm tài liệu giảng dạy nội bộ trong
trường cao đẳng nghề Công nghiệp Hà Nội
Trường Cao đẳng nghề Công nghiệp Hà Nội không sử dụng
và không cho phép bất kỳ cá nhân hay tổ chức nào sử dụng
giáo trình này với mục đích kinh doanh
Mọi trích dẫn, sử dụng giáo trình này với mục đích khác hay
ở nơi khác đều phải được sự đồng ý bằng văn bản của
trường Cao đẳng nghề Công nghiệp Hà Nội
Trang 3LỜI NÓI ĐẦU
Trong chương trình đào tạo của các trường trung cấp nghề, cao đẳng nghề thực hành nghề giữ một vị trí rất quan trọng: rèn luyện tay nghề cho học sinh Việc dạy thực hành đòi hỏi nhiều yếu tố: vật tư thiết bị đầy đủ đồng thời cần một giáo trình nội bộ, mang tính khoa học và đáp ứng với yêu cầu thực tế
Nội dung của giáo trình “KỸ THUẬT VI XỬ LÝ ” đã được xây dựng trên
cơ sở kế thừa những nội dung giảng dạy của các trường, kết hợp với những nội dung mới nhằm đáp ứng yêu cầu nâng cao chất lượng đào tạo phục vụ sự nghiệp công nghiệp hóa, hiện đại hóa đất nước,
Giáo trình nội bộ này do các nhà giáo có nhiều kinh nghiệm nhiều năm làm công tác trong ngành đào tạo chuyên nghiệp Giáo trình được biên soạn ngắn gọn, dễ hiểu, bổ sung nhiều kiến thức mới và biên soạn theo quan điểm mở, nghĩa là, đề cập những nội dung cơ bản, cốt yếu để tùy theo tính chất của các ngành nghề đào tạo mà nhà trường tự điều chỉnh cho thích hợp và không trái với quy định của chương trình khung đào tạo cao đẳng nghề
Tuy các tác giả đã có nhiều cố gắng khi biên soạn, nhưng giáo trình chắc chắn không tránh khỏi những thiếu sót, rất mong nhận được sự tham gia đóng góp ý kiến của các bạn đồng nghiệp và các chuyên gia kỹ thuật đầu ngành
Xin trân trọng cảm ơn!
Trang 4Phân biệt được các choc năng của các vi mạch
Nhận biết và thao tác toán học trên các hệ đếm 2, 8,16
Nội dung:
1 Cấu trúc máy tính
1.1 Sơ đồ cấu trúc máy tính điện tử
Sơ đồ cấu trúc của máy tính
CPU: Bộ xử lý trung tâm
Thiết bị I/O : Đầu vào/ đầu ra
Memory: vùng nhớ
RAM: Random acces memory: Vùng nhớ tạm thời của chương trình lưu giữ khi máy tính đang thực thi, dữ liệu sẽ bị mất khi máy tính tắt
ROM
Trang 5Cấu trúc của một hệ thống máy tính 1.2 Chức năng của các khối
- Bus hệ thống: tập hợp các đường dây để CPU có thể liên kết Với các bộ phận
khác
1.2.1 Bộ nhớ trung tâm
Khối xử lý trung tâm (CPU – Central Processing Unit): nhận và thực thi các
lệnh Bên trong CPU gồm các mạch điều khiển logic, mạch tính toán số học, … 1.2.2 Khối tính toán số học – Lô gíc:
Thực hiện các phép toán số học cơ sở +, -, x, /
- Thực hiện các phép toán logic AND, OR, NOT, XOR
- Tất cả các phép toán được thực hiện ở cơ số 2 (hệ nhị phân)
Điều khiển quá trình xử lý thông tin bằng cách tạo ra các lệnh điều khiển
- Điều khiển hệ thống theo trình tự thời gian, liên quan đến các khối khác, quyết định tốc độ hoạt động của máy tính
d Khối nhớ ngoài
Trang 6e Khối vào ra
II Hệ đếm
1 Hệ thống cơ số 10 (hệ thập phân Decimal)
- Hệ thống ký tự các con số dựng để biểu đạt các giá trị trong một hệ đếm Trong hệ thập phõn, 10 ký tự (cũng gọi là con số) khác nhau được dùng để biểu đạt
10 giá trị riêng biệt (0, 1, 2, 3, 4, 5, 6, 7, 8 và 9), tức là 10 con số
- Bộ nhớ (Memory): lưu trữ các lệnh và dữ liệu Nó bao gồm 2 loại: bộ nhớ
trong và bộ nhớ ngoài Bộ nhớ thường được chia thành các ô nhớ nhỏ Mỗi ô nhớ được gán một địa chỉ để CPU có thể định vị khi cần đọc hay ghi dữ liệu
- Để tăng cường dung lượng nhớ cho máy tính, trong quá trình làm việc nó thường trao đổi Với khối nhớ trong
- Dung lượng nhớ lớn nhưng thời gian truy cập số liệu lâu
- Khi mất điện thì nội dung chứa trong ROM không bị mất
1.2.5 Khối vào ra
- Biến đổi các tín hiệu vật lý đầu vào thành các tín hiệu số hệ 2 để MT có thể xử
lý được (bàn phím chuột…) Và ngược lại (màn hình…)
- Thiết bị ngoại vi (Input / Output): dùng để nhập hay xuất dữ liệu Bàn phím,
chuột, scanner, … thuộc thiết bị nhập; màn h.nh, máy in, … thuộc thiết bị xuất Các
ổ đĩa thuộc bộ nhớ ngoài cũng có thể coi vừa là thiết bị xuất vừa là thiết bị nhập Các thiết bị ngoại vi liên hệ Với CPU qua các mạch giao tiếp I/O (I/O interface)/
2 Hệ đếm
2.1 Hệ thống cơ số 10
Trong cuộc sống hàng ngày chúng ta sử dụng hệ cơ số 10 (hay còn gọi là hệ D) biểu diễn các giá trị của trị số Hệ này bao gồm tổ hợp từ 0 – 9 để biểu diễn các giá trị số, có thể đi kèm thêm chữ D để chỉ rằng hệ đó là hệ cơ số 10
2.2 Hệ thống cơ số 2 (Hệ hai hoặc viết tắt B):
Trang 7Là hệ đếm trong máy tính dùng để biểu diễn một giá trị số trong đó gồm 2 chữ
số 0 và 1 tương ứng (tương ứng Với có điện và không có điện của mạch điện tử) Thường được đánh dấu bằng chữ B đi kèm để phân biệt Với các hệ khác
4 bit tạo thành 1 nibble
8 bit tạo than hf 1 byte
16 bit tạo thành 1 từ
Đơn vị các loại dữ liệu :
Bit : Là các mã nhị phân được biểu diễn bằng 2 số 0 và 1
Byte : được biểu diễn bằng 8 bits
Nibble : nửa byte hoặc 4 bit
Word : từ gồm 2 byte hoặc 16 bit
Các đơn vị dùng để mô tả số lượng của vùng nhớ trong máy tính :
- Kích cỡ của một số nhị phân là số bit của nú
- MSB (Most Significant Bit): Bit sỏt trỏi
- LSB (Least Significant Bit): Bit sỏt phải
Trang 8- Byte : 8 bít nối tiếp nhau = 1 byte
- Word : ( từ ) : 2 byte = 1 từ byte bên phải là byte thấp , byte bên trái là byte cao
- Cấu trúc 1 từ : Byte cao Byte thấp
MSB LSB
1 kilô byte = 210 = 1024 1Mega byte = 220
3 Hệ thống cơ số 16 (hệ thập lục phân Hexadecimal) quen gọi là số Hexa
- Cũng gọi là hệ đếm cơ số mười sáu
- Số cơ bản là 16
Trang 9- Sử dụng 16 ký hiệu để biểu diễn: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
- Mỗi ký hiệu tương ứng Với 4-bit
- Mục đích: Biểu diễn số nhị phân ở dạng ngắn gọn 11110000/B = F0/H
+ Chuyển số nhị phân 1100101011111110/B sang hexa
- Trước hết theo hướng từ LSB về MSB chia số nhị phân đó thành các nhóm 4-bit
- Sau đó thay thế mỗi nhóm 4-bit bằng ký hiệu hexa tương ứng Với nó
1100 1010 1111 1110
C A F E
- Kết quả: 1100101011111110/B = CAFE/H
Trang 11- Khi cho 1 số hệ 2 có N bớt, nếu ta tính được số khác có số bít tương ứng mà
có tổng của số đó cho Với số vừa tính được có tất cả các bít đều là 0, ngoại trừ bít
c Số BCD (Binary Coded Decimal)
- Số BCD dùng để biểu diễn trực tiếp hệ 10 thành hệ 2 Nếu ta thay mỗi chữ số thập phân bằng 4 số nhị phân thì số tạo thành gọi là số BCD
- Mỗi chữ số thập phân được biểu diễn bằng một tổ hợp 4-bit
Trang 13X AB
3.2 Các mạch lật Flip – Flop
3.2.1 Mạch trigơ RS
+ Trigơ thuộc loại mạch không đồng bộ có hai trạng thái ổn định bền theo Thời gian ứng với hai mức logic "1" và "0"
+ Trạng thái của Trigơ có thể thay đổi khi tác động xung lên các đầu vào
+ Trạng thái tương lai của Trigơ không những phụ thuộc vào các biến vào mà còn phụ thuộc vào trạng thái hiện tại
+Khi cổngng tác động xung lên các đầu vào , trạng thái Trigơ giữ nguyên, với đặc điểm này các mạch Trigơ được dùng để lưu trữ thông tin dưới dạng mã nhị phân
- R (Reset): Đầu vào xóa¸
- S (Set): Đầu vào thiết lập
- n: Trạng thái hiện tại
- n + 1: Trạng thái tương lai
- x: Trạng thái cấm tại đó giá trị của hàm ra là không xác định (chú ý)
b Mạch Trigơ đồng bộ
Trang 14+ Ngời ta muốn Trigơ chỉ phản ứng vào những thời điểm xác định, điều này được thực hiện bằng cách đưa thêm tới đầu vào tín hiệu phụ C được gọi là tín hiệu đồng bộ
+ Khi C = "0" thì trạng thái Trigơ giữ nguyên
+ Khi C = "1" hoạt động của sơ đồ giống Trigơ R-S không đồng bộ như đã phân tích ở phần trên
- Khi C = 0, trạng thái của Trigơ giữ nguyên Qn+1 = Qn
- Khi C = 1, giá trị đầu ra Trigơ nhận giá trị đa đến đầu vào D Qn+1 = Dn
d Mạch Trigơ chính phụ (Trigơ M-S)
- Thông thờng để tránh ảnh hưởng của nhiễu, tăng độ tin cậy trong việc ghi và đọc thông tin, từ R-S Trigơ ngời ta xây dựng các Trigơ M-S bằng cách ghép hai Trigơ R-S đồng bộ liên tiếp nhau Khi đó việc ghi thông tin chỉ xẩy ra khi lối ra bị khoá và ngược lại việc đọc thông tin chỉ xẩy ra khi lối vào đã bị khoá
- Nhóm các phần tử G1, G2, G3, G4 tạo nên R-S Trigơ chính
- Nhóm G5, G6, G7, G8 tạo nên R-S Trigơ phụ
- Hai nhóm làm việc với hai dãy xung nhịp C ngược pha nhau nhờ cửa đảo G9
Trang 15- Khi biên độ xung tăng tới mức b thông tin đặt tới lối vào sẽ được ghi vào Trigơ chính
- Tại sườn âm khi biên độ xung giảm tới mức d Trigơ chính bị ngắt khỏi lối vào nhờ C
- Cấu tạo bằng các mạch lật Flip – Flop
- Bộ đếm tiến : Khi có xung vào thì đầu ra có giỏ trị nhị phân tăng lên một mức giỏ trị
- Bộ đếm lùi : khi có xung vào thì đầu ra có giỏ trị nhị phân giảm đi một mức giỏ trị
- Bảng trạng thái các trigơ đếm của bộ đếm nhị phân tiến 3 bit
u
á u
Trang 163.3.2 Mạch biến đổi mã
- Mã húa là việc sử dụng ký hiệu để biểu diễn đặc trưng cho một đối tượng nào đó
- Ký hiệu tương ứng với một đối tượng được gọi là từ mã
- Mạch dồn kênh hay cũn gọi là mạch ghộp kênh, đa hợp (Multiplexer-MUX)
là 1 dạng mạch tổ hợp cho phép chọn 1 trong nhiều đường cổng vào song song (các kênh vào) để đưa tới 1 cổng ra (gọi là kênh truyền nối tiếp) Việc chọn đường nào trong các đường cổng vào do các cổng chọn quyết định Nó hoạt động như 1 công tắc nhiều vị trí được điều khiển bởi mã số Mã số này là dạng số nhị phân, tuỳ tổ hợp số nhị phân này mà ở bất kỳ thời điểm nào chỉ có 1 cổng vào được chọn và cho phép đưa tới cổng ra
Giản đồ thời gian minh hoạ hoạt động của bộ đếm
nhị phân tiến 4 bit, môđun 16 (lập với sườn âm)
Trang 17- Bộ chuyển mạch phân kênh hay cũn gọi là tách kênh, giải đa hợp (demultiplexer) có chức năng ngược lại với mạch dồn kênh tức là : tách kênh truyền thành 1 trong các kênh
dữ liệu song song tuỳ vào mã chọn cổng vào Có thể xem mạch tách kênh giống như 1 công tắc cơ khí được điều khiển chuyển mạch bởi mã số Tuỳ theo mã số được áp vào cổng chọn mà dữ liệu từ 1 đường sẽ được đưa ra đường nào trong số các đường song song
- Các mạch tách kênh thường gặp là 1 sang 2, 1 sang 4, 1 sang 8, Nói chung từ 1 đường có thể đưa ra 2n đường, và số đường để chọn sẽ phải là n
3.3.4.Mạch nhớ
- Thanh ghi là một nhóm các flipflop được kết nối song song để lưu trữ các số nhị phân Giá trị nhị phân sẽ được đưa vào cổng vào của các flipflop Khi có tác động cạnh lên của tín hiệu CLK thì cổng ra các flipflop sẽ lưu trữ giá trị nhị phân cho đến khi một số nhị phân mới được đưa vào và tác động một cạnh lên cho tín hiệu CLK
Trang 18BÀI 2: KIẾN TRÚC VÀ NGUYÊN LÝ CỦA VI XỬ LÝ
1 Định nghĩa, phân loại, tính chất bộ vi xử lý
1.1 Định nghĩa
I Định nghĩa
- Vi xử lý là 1 vi mạch điện tử cỡ lớn (LSI) hoặc cỡ cực lớn (VLSI) mà trên đó có thể
xử lý được tín hiệu theo 1 chương trình cho trước (thuật toán cho trước)
- Vi xử lý gồm 2 phần: phần cứng là các vi mạch điện tử, phần mềm là thuật toán để xử
lý tín hiệuhay cũn gọi là tập lệnh để xử lý theo chương trình
- Số chân tín hiệu địa chỉ nói lên khả năng quản lý địa chỉ của mạch VXL Nếu mạch cú
n tín hiệu địa chỉ thì cú thể quản lý được 2n địa chỉ
- Số chân tín hiệu của mạch VXL càng nhiều thì càng hoàn chỉnh
VD: 40 chõn, 60 chõn … 278 chõn
Trang 191.3.3 Tần số xung nhịp và tốc độ xử lý
- Quyết định tốc độ xửlý củ a bộ VXL Tần số càng cao thì xử lý càng nhanh
1.3.4 Khả năng ngắt và DMA
- Là khả năng chuyên dụng của VXL
- DMA là khả năng truy nhập trực tiếp bộ nhớ
lý hoạt động của vi xử lý Hình 2-1 trình bày sơ đồ khối của vi xử lý 8 bit:
Trong sơ đồ khối của vi xử lý bao gồm các khối chính như sau: khối ALU, các thanh ghi và khối control logic Ngoài ra sơ đồ khối còn trình bày các đường truyền tải tín hiệu từ nơi này đến nơi khác bên trong và bên ngoài hệ thống
2.2 Sơ đồ cấu trúc bộ vi xử lý
ALU là khối quan trọng nhất của vi xử lý, khối ALU chứa các mạch điện tử logic chuyên về xử lý dữ liệu Khối ALU có 2 đầu vào có tên là “IN” – là các đầu vào dữ liệu cho ALU xử lý và 1 đầu ra có tên là “OUT” – là tín hiệu ra kết quả dữ liệu sau khi ALU xử lý xong
Dữ liệu trước khi vào ALU được chứa ở thanh ghi tạm thời (Temporarily Register) có tên là TEMP1 và TEMP2 Bus dữ liệu bên trong vi xử lý được kết nối Với 2 đầu vào “IN” của ALU thông qua 2 thanh ghi tạm thời Việc kết nối này cho phép ALU có thể lấy bất kỳ dữ liệu nào trên bus dữ liệu bên trong vi xử lý
Trang 20Sơ đồ cấu trúc bên trong của vi xử lý Thường thì ALU luôn lấy dữ liệu từ một thanh ghi đặc biệt có tên là Accumulator (A) Đầu ra OUT của ALU cho phép ALU có thể gởi kết dữ liệu sau khi xử lý xong lên bus dữ liệu bên trong vi xử lý, do đó thiết bị nào kết nối Với bus bên trong đều có thể nhận dữ liệu này Thường thì ALU gởi dữ liệu sau khi xử lý xong tới thanh ghi Accumulator
Ví dụ khi ALU cộng 2 dữ liệu thì một trong 2 dữ liệu được chứa trong thanh ghi Accumulator, sau khi phép cộng được thực hiện bởi ALU thì kết quả sẽ gởi trở lại thanh ghi Accumulator và lưu trữ ở thanh ghi này
ALU xử lý một dữ liệu hay 2 dữ liệu tùy thuộc vào lệnh hay yêu cầu điều khiển,
ví dụ khi cộng 2 dữ liệu thì ALU sẽ xử lý 2 dữ liệu và dùng 2 đầu vào “IN” để nhập
dữ liệu, khi tăng một dữ liệu nào đó lên 1 đơn vị hay lấy bù một dữ liệu, khi đó ALU chỉ xử lý 1 dữ liệu và chỉ cần một đầu vào “IN”
Khối ALU có thể thực hiện các phép toán xử lý như sau:
Add Complement OR Exclusive OR
Trang 21 Subtract Shift right Increment
AND Shift left Decrement
Tóm Tắt: Chức năng chính của khối ALU là làm thay đổi dữ liệu hay chuyên về
xử lý dữ liệu nhưng không lưu trữ dữ liệu Để hiểu rõ thêm chức năng đặc biệt của ALU cần phải khảo sát một vi xử lý cụ thể
2.3 Tổ chức và quản lý bộ nhớ
2.4 Các cổng vào ra
2.5 Các mạch phụ trợ
3 Nguyên lý làm việc của Vi xử lý
3.1 Trình tự thời gian thực hiện lệnh
- Xử lý trình tự gồm 2 phần: Nhận lệnh và thi hành lệnh
- Toàn bộ thời gian để thực hiện 1 lệnh gọi là chu kỳ lệnh
- Chu kỳ lệnh chia ra nhiều chu kỳ máy
- 1 chu kỳ máy chia ra nhiều nhịp
Trang 22- Tiếp sau quá trìnhlà quá trìnhthi hành lệnh, phụ thuộc vào lệnh (lệnh số học, lệnh logic, vào, ra … )
- Kết thúc quá trìnhthi hành lệnh bao giờ cũng dẫn đến việc xử lý bộ đếm chương trình 3.2.Các chế độ thường gặp trong Vi xử lý
- Sau khi thực hiện xong thì lại trở về chương trình chớnh
- Muốn thực hiện ngắt phải có yêu cầu ngắt, sau đó VXL xem xét yêu cầu nếu hợp pháp thì nú thực hiện nốt chi kỳ máy cuối cựng sau đó nó chuyển sang ngắt
3.2.3 Chế độ treo
- Yêu cầu treo từ ngoài vào
- Treo được chấp nhận thì VXL thực hiện nốt nhịp cuối cựng của chu kỳ máy
- Chuyển sang treo : * Trả lời đồng ý treo
* Tạo ra tổng trở vô cùng ở các chân địa chỉ , số liệu và điều khiển của VXL > mạch bị ngắt ra
- Trong khi đó các thiết bị ngoại vi vẫn có thể sử dụng các BUS để phục vụ cho mục đích của mỡnh
- Kết thúc treo khi bờn ngoài kết thúc yờu cầu treo VXL trở về trạng thái bỡnh thường 3.2.5.Chế độ dừng
- Khi ở chế độ dừng thì tất cả các đường dây tín hiệu, số liệu, địa chỉ và số liệu đều được giữ nguyên
4 Tập lệnh cơ sở của Vi xử lý
+ Lệnh được hiểu là các chỉ dẫn để cho VXL theo đó mà thực hiện các công việc + Một số thanh ghi liên quan trực tiếp đến tập lệnh của VXL
+ Được chia thành 5 nhóm lệnh
Trang 232 Nhóm lệnh nhảy vàChương trình con
- Lệnh nhảy làm thay đổi trình tự thực hiệnChương trình, khi lệnh nhảy được thực hiện thìChương trình đang ở địa chỉ này sẽ nhảy sang điạ chỉ khác mà không liên tục với địa chỉ cũ
- LệnhChương trình con là lệnh nhảy đến 1Chương trình con mà địa chỉChương trình con thì không liên tục vớiChương trình chính Sau khi thực hiện xong CT con thì lại quay lại CT chính
4.4.1 Phân loại theo nhóm chức năng
4.4.2.Phân loại theo chức năng cơ sở của lệnh
4.5 Tập lệnh cơ sở
Cấu trúc một lệnh của asembly gồm 4 phần:
[nhãn:] [tên lệnh] [toán hạng] [;ghi chú]
Mỗi dòng chỉ chứa một lệnh assembly và mỗi lệnh phải nằm trong một dòng Mỗi ohần cách nhau bằng một hoặc nhiều ký tự
4.5.1 Lệnh chuyển số liệu, lôgíc, số học
- Lệnh chuyển số liệu dùng để chuyền số liệu giữa các thanh ghi, hoặc giữa thanh nghi
Trang 242 Các thanh ghi liên quan trực tiếp đến tập lệnh
F A C E L
- Thanh ghi A 8 bit thường dùng làm thanh chứa (Acc)
- Các thanh ghi B, C, D, E, H, L 8bit làm việc riêng lẻ từng thanh 1 hoặc từng cặp BC,
DE, HL
- Thanh đếmChương trình PC 16 bit dùng để chứa địa chỉ trong quá trình thực hiệnChương trình
- Con trỏ ngăn xếp SP 16 bit để chỉ ra địa chỉ của ngăn xếp
- Thanh ghi cờ F 8bit nhưng chỉ dùng 5 bit làm 5 cờ
+ cờ nhớ: Cy có 2 trạng thái bằng 0 khi phép toán có nhớ, bằng 1 khi phép toán không nhớ
+ cờ chắn lẻ: P có 2 trạng thái bằng 0 khi phép toán là chẵn (số chữ số 1 là chẵn), bằng
1 khi phép toán là lẻ (số chữ số 1 là lẻ)
+ cờ AC: hiệu chỉnh thập phân
AC = 1 : pheựp tính bũ traứn treõn bit 4
AC = 0 : pheựp tính không bũ traứn treõn bit 4
+ cờ Z: (cờ zêrô) bằng 0 khi kết quả phép tính là 0
Định nghĩa tên tượng trưng:
Cấu trúc: TÊN EQU [Text]
Chức năng: Cho phép định nghĩa lại tên tượng trưng ví dụ lập trình trên vi xử lý 8085A
Trang 25BÀI 3: TỔ CHỨC VÀO RA SONG SONG SỐ LIỆU
1 Khái niệm, Vào ra điều khiển theo chương trình
I Khái niệm chung
+ Vào / ra (hay xuất / nhập) là việc phối ghép của hệ VXL Với ngoại vi để thực hiện trao đổi thông tin theo các phương thức điều khiển khác nhau
+ Các phương pháp vào ra thông tin cơ bản là nối tiếp và song song
- Nối tiếp là việc truyền từng bit một
- Song song là các bít được truyền là đồng thời
+ Việc phối ghép Với TB ngoại vi phức tạp hơn và cơ chế điều khiển để trao đổi thông tin cũng đa dạng hơn so Với phối ghép Với bộ nhớ
+ Thường có các dạng điều khiển vào / ra sau:
- Vào / ra điều khiển theo chương trình
- Vào / ra điều khiển theo cơ chế ngắt
- Vào / ra điều khiển theo cơ chế DMA
II Vào / ra điều khiển theoChương trình
+ Dưới sự điều khiển của chương trình, dữ liệu được trao đổi song song giữa CPU và thiết bị ngoại vi thông qua các cổng dữ liệu Có 2 loại trao đổi là có điều kiện và không có điều kiện
1 Trao đổi không điều kiện:
+ Các lệnh trao đổi số liệu Với các cổng vào / ra không cần xác định trước cổng đã sẵn sàng chưa màChương trình thực hiện trao đổi luôn và coi như cổng đã sẵn sàng
+ Phương thức trao đổi này thường được sử dụng Với các ngoại vi có tốc độ cao hay không yêu cầu biết chính xác dữ liệu đã có mặt ở đầu vào
2 Trao đổi có điều kiện
+ Việc trao đổi dữ liệu phụ thuộc vào thiết bị ngoại vi đã sẵn sàng hay chưa
+Chương trình lần lượt kiểm tra trạng thái của các cổng, nếu cổng nào sẵn sàng thìChương trình sẽ thực hiện trao đổi dữ liệu Với cổng đó Thứ tự kiểm tra có ưu tiên hay không sẽ phụ thuộc vào ý đồ của người lập trình
+ Trong trường hợp này ngoài cổng dữ liệu thì người ta dùng thêm 1 cổng để báo trạng thái hiện tại của thiết bị ngoại vi
2 vào ra điều khiển bằng ngắt
III Vào / ra điều khiển theo cơ chế ngắt
Trang 261 Sơ đồ nguyờn lý chung hoạt động theo cơ chế ngắt
CPU
Ngoạ i vi Cổng
Vào/Ra
Mạ ch
điều khiển ngắt BUS số liệu
T/h đọc/ghi
IRO INTR
INTA D0 - D7
2 Nguyờn lý:
+ Khi 1 ngoại vi cần trao đổi dữ liệu theo cơ chế ngắt Với CPU sẽ cú tớn hiệu yờu cầu ngắt IRO từ ngoại vi tới mạch điều khiển ngắt Mạch điều khiển ngắt chấp nhận sẽ gửi tớn hiệu INTR tới CPU
+ CPU kiểm tra và gửi tớn hiệu xung INTA thứ nhất để bỏo cho bộ điều khiển ngắt Sau đú CPU thực hiện nốt lệnh gửi cỏc thanh ghi vào ngăn xếp và gửi xung INTA thứ 2 + Mạch điều khiển ngắt khi ngận được xung INTA thứ 2 sẽ gửi số liệu ngắt qua BUS
số liệu về CPU
+ CPU dựng số liệu ngắt để lấy địa chỉ củaChương trỡnh con xử lý ngắt.Chương trỡnh con xử lý ngắt được thực hiện
3 Mạch điều khiển ngắt
+ Mạch điều khiển ngắt phải thực hiện được cỏc chức năng sau:
- Ghi nhận cỏc yờu cầu ngắt từ cỏc ngoại vi
- Xỏc định mức ưu tiờn của cỏc đầu vào ngắt
- Tạo ra số liệu ngắt
IV Vào / ra điều khiển theo cơ chế DMA
1 Sơ đồ bộ phối ghộp ở chế độ DMA
+ Việc trao đổi dữ liệu theo 2 phương phỏp bằngChương trỡnh và ngắt đều thực hiện bằng cỏch đưa dữ liệu từ cổng tới CPU và nhập vào bộ nhớ trong quỏ trỡnh đọc hay ngược lại
+ Để chuyển 1 khối dữ liệu ta cú thể dựng cỏch truyền DMA Khi đú ta sử dụng 1 vi mạch chuyờn dụng là DMAC điều khiển việc trao đổi thụng tin
+ VD: vi mạch điều khiển chuyờn dụng 8237A cho hệ 16 bit của Intel
Trang 27Ngo¹ i vi cã yªu cÇu DMA
Cæng Vµo/Ra
DMAC 8237A
+ Trong chế độ DMA thì CUP sẽ treo các BUS số liệu, địa chỉ và các dây điều khiển đọc /ghi để DMAC chiếm dụng (nhường quyền điều khiển cho DMAC)
+ DMAC sẽ điều khiển toàn bộ hoạt động trao đổi dữ liệu của hệ do đó CMAC phải tạo ra được các tín hiệu giống như CPU, đồng thời phải là mạch lập trình được để CPU gửi tín hiệu điều khiển tới
+ Thực tế tồn tại 3 kiểu DMA là :
- Treo CPU để trao đổi cả mảng dữ liệu
- Treo để trao đổi từng byte
- Tận dụng Thời gian để trao đổi dữ liệu
2 Trao đổi cả mảng dữ liệu
+ Trong quá trình này CPU sẽ bị treo trong suốt quá trình trao đổi dữ liệu Các thao tác được thực hiện trong quá trình này để chuyển mảng dữ liệu từ bộ nhớ ra ngoại vi là:
- CPU phát lệnh điều khiển và lệnh chế độ vào DMAC để quy định cách thức làm việc, địa chỉ đầu ra và độ dài mảng nhớ …
- Khi ngoại vi có yêu cầu trao đổi dữ liệu nó sẽ đưa tín hiệu đến chân DRQ của DMAC, sau đó DMAC sẽ đưa tín hiệu yêu cầu đến chân HOLD của CPU Tín hiệu HOLD phải ở mức cao trong suốt quá trình trao đổi dữ liệu
- Nhận được yêu cầu CPU kết thúc chu kỳ BUS hiện tại sau đó treo các BUS và đưa tín hiệu HOLD cho DMAC được toàn quyền sử dụng BUS
- DMAC đưa ra xung DACK báo cho ngoại vi bắt đầu trao đổi dữ liệu
- Khi DMAC kết thúc thì CPU lại dành quyền điều khiển hệ thống
3 Trao đổi từng byte
+ Trong cách này CPU bị treo trong khoảng Thời gian ngắn đủ để trao đổi 1 byte Khi đó tốc đọ thực hiện công việc của CPU chỉ bị giảm mà không dừng lại Cách thực hiện tương tự nhưng mỗi lần treo thì chỉ thực hiện trao đổi 1 byte dữ liệu
Trang 284 Trao đổi khi BUS rỗi
+ Trong cách này phải có mạch logic ngoài để phát hiện BUS rỗi Khi đó DMAC sẽ làm chủ BUS và điều khiển trao đổi dữ liệu.3 vào ra điều khiển theo cơ chế DMA
Trang 29BÀI 4: HỆ VI ĐIỀU KHIỂN 8 BÍT HỌ 8051
1 Cấu trúc phần cứng họ vi điều khiển 8051
1.1 Giới thiệu chung
- 8051 là vi điều khiển đầu tiên của họ vi điều khiển MCS51 được Intel sản xuất vào năm 1980
- Họ MCS-51 là họ 8-bit có trên 60000 transistor Có 4Kbyte ROM, 128 byte RAM, 32 đường suất nhập, 2 bộ định thời 16 bit
II Tổ chức bộ nhớ họ vi điều khiển :
Vi điều khiển hay vi xử lý là các IC lập trình, khi chúng ta đã thiết kế hệ thống điều khiển có sử dụng vi xử lý hay vi điều khiển ví dụ như hệ thống điều khiển đèn giao thông cho một ngã tư gồm có các đèn Xanh, Vàng, Đỏ và các led 7 đoạn để hiển thị thời gian thì đó mới chỉ là phần cứng, muốn hệ thống vận hành thì chúng ta phải viết một chương trình điều khiển nạp vào bộ nhớ nội bên trong vi điều khiển hoặc bộ nhớ bên ngoài và gắn vào trong hệ thống để hệ thống vận hành và dĩ nhiên bạn phải viết đúng thì hệ thống mới vận hành đúng Chương trình gọi là phần mềm Phần mềm và phần cứng có quan hệ Với nhau, người lập trình phải hiểu rõ hoạt động của phần cứng để viết chương trình Ở phần này sẽ trình bày chi tiết về tập lệnh của vi điều khiển giúp bạn hiểu rõ từng lệnh để bạn có thể lập trình được
Chương trình là một tập hợp các lệnh được tổ chức theo một trình tự hợp lí để
giải quyết đúng các yêu cầu của người lập trình
Người lập trình là người biết giải thuật để viết chương trình và sắp xếp đúng các lệnh theo giải thuật Người lập trình phải biết chức năng của tất cả các lệnh của vi điều khiển để viết chương trình
Tất cả các lệnh có thể có của một ngôn ngữ lập trình còn gọi là tập lệnh
Họ vi điều khiển 8051 đều có chung 1 tập lệnh, các vi điều khiển thế hệ sau chỉ phát triển nhiều về phần cứng còn lệnh thì ít mở rộng
Tập lệnh họ 8051 có mã lệnh 8 bit nên có khả năng cung cấp 28= 256 lệnh
Có lệnh có 1 hoặc 2 byte bởi dữ liệu hoặc địa chỉ thêm vào Opcode
Trong toàn bộ tập lệnh của vi điều khiển có 139 lệnh 1 byte, 92 lệnh 2 byte và
24 lệnh 3 byte
Trang 30Lệnh của vi điều khiển là một số nhị phân 8 bit [còn gọi là mã máy] 256 byte từ
0000 0000b đến 1111 1111b tương ứng Với 256 lệnh khác nhau Do mã lệnh dạng
số nhị phân quá dài và khó nhớ nên các nhà lập trình đã xây dựng một ngôn ngữ lập trình Assembly cho dễ nhớ, điều này giúp cho việc lập trình được thực hiện một cách dễ dàng và nhanh chóng cũng như đọc hiểu và gỡ rối chương trình
Khi viết chương trình bằng ngôn ngữ lập trình Assembly thì vi điều khiển sẽ không thực hiện được mà phải dùng chương trình biên dịch Assembler để chuyển đổi các lệnh viết bằng Assembly ra mã lệnh nhị phân tương ứng rồi nạp vào bộ nhớ – khi đó vi điều khiển mới thực hiện được chương trình
Ngôn ngữ lập trình Assembly do con người tạo ra, khi sử dụng ngôn ngữ Assembly để viết thì người lập trình vi điều khiển phải học hết tất cả các lệnh và viết đúng theo qui ước về có pháp, trình tự sắp xếp dữ liệu để chương trình biên dịch có thể biên dịch đúng
1.2 Sơ đồ cấu trúc của họ vi điều khiển 8051
Sơ đồ khối bộ vi xử lý 8051 1.3 Tổ chức bộ nhớ của vi điều khiển 8051
1.4 Bố trí chân tín hiệu
Có 32 chân riêng biệt từ P0.0 đến P3.7 đợc chia thành 4 cổng (gọi là port) 8 bit Mỗi cổng 8 bit có thể được dùng như một đơn vị giao tiếp hoặc mỗi đường có thể hoạt động độc lập
Trang 31+ Port 0 là các chân 32 đến 39 từ P0.0 đến P0.7 được dùng làm nhiệm vụ xuất nhập Trong một số trường hợp thì port 0 được dùng làm bus địa chỉ và bus dữ liệu đa hợp + Port 1 gồm các chân 1 đến 8 là các chân P1.0 đến P1.7 được dùng để giao tiếp Với thiết bị bên ngoài khi có yêu cầu Không có thêm bất kỳ chức năng nào nữa được gán cho các chân port 1 này
+ Port 2 gồm các chân từ 21 đến 28 là P2.0 đến P2.7 có 2 công dụng hoặc làm nhiệm
vụ suất nhập hoặc là byte địa chỉ cao của bus địa chỉ 16 bit cho các thiết kế có bộ nhớChương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài + Port 3 gồm các chân 10 đến chân 17 là các chân P3.0 đến P3.7 chúng có 2 công dụng:
* Là các chân xuất nhập tín hiệu
* Khi không xuất nhập tín hiệu thì mỗi 1 chân này có nhiều chức năng riêng liên quan đến các đặc trưng cụ thể của họ VXL 8051
+ Chân 29 chân PSEN là chân cho phép truy xuất bộ nhớChương trình ngoài, chân này thường được nối Với chân cho phép xuất của EPROM (hoặc ROM) để cho phép đọc các byte
+ Chân 30 (ALE) là chân truy xuất tín hiệu cho phép chốt địa chỉ
Trang 32+ Chân 31 (EA) là chân truy xuất ngoài Các phiên bản EPROM của 8051 còn sử dụng chân này làm chân nhận điện áp cấp để tiến hành nạp số liệu vào EPROM
+ Chân 9 (RST) là chân reset dùng để thiết lập lại trạng thái ban đầu cho hệ thống + Hai chân 18, 19 là 2 chân nhận tần số xung nhịp 12MHz cho hầu hết các chíp của họ MCS-51
+ Chân 20 (Vss) là chân nối đất của VXL8051
+ Chân 40 (Vcc) là chân cấp nguồn nuôi của 5V cho VXL 8051
2 Các chế độ địa chỉ 8051
2.1 Chế độ địa chỉ thanh ghi
- Các kiểu định địa chỉ là phần cần thiết cho toàn bộ tập lệnh của mỗi bộ VXL,
bộ vi điều khiển
- Các kiểu định địa chỉ cho phép ta xác định rõ nguồn và đích của dữ liệu theo nhiều cách khác nhau phụ thuộc vào tình huống lập trình
- Có 8 kiểu định địa chỉ sau:
1 Định địa chỉ thanh ghi
- Có 8 thanh ghi được đánh số từ R0 đến R7
VD: để cộng Nội dung thanh ghi R7 Với thanh chứa A ta dùng lệnh sau:
VD: MOV P1, A lệnh này chuyển Nội dung thanh chứa A vào port 1
2.3 Chế độ địa chỉ gián tiếp
- Trong trường hợp này các thanh ghi R0 đến R7 làm việc như 1 con trỏ và Nội dung của chúng chỉ ra địa chỉ trong RAM nơi mà địa chỉ được đọc hay ghi
VD: nếu thanh ghi R1 chứa 40H và địa chỉ 40H của RAM là 55H thì lệnh MOV A,@R1 có nghĩa là nạp số 55H cho thanh chứa A
Trang 337 Định địa chỉ dài
- Cũng đươc dùng cho các lệnh nhảy nhưng lệnh dài 3 byte và phụ thuộc vào vị trí
2.5 Chế độ địa chỉ tương đối
- Chỉ được sử dụng cho các lệnh nhảy một địa chỉ tương đối là 1 giá trị 8 bit có dấu, giá trị này được cộng Với bộ đếmChương trình để tạo thành địa chỉ của lệnh tiếp theo được thực thi
2.6 Chế độ địa chỉ tuyệt đối
Chỉ lệnh DB là một chỉ lệnh dữ liệu được sử dụng rộng rãi nhất trong hợp ngữ
Nó được dùng để định nghĩa dữ liệu 8 bit Khi DB được dùng để định nghĩa byte
dữ liệu thì các số có thể ở dạng thập phân, nhị phân, Hex hoặc ở dạng thức ASII Đối Với dữ liệu thập phân thì cần đặt chữ “D” sau số thập phân, đối Với số nhị phân thì đặt chữ “B” và đối Với dữ liệu dạng Hex thì cần đặt chữ “H” Bất kể ta sử dụng số ở dạng thức nào thì hợp ngữ đều chuyển đối chúng về thành dạng Hex Để báo dạng thức ở dạng mã ASCII thì chỉ cần đơn giản đặt nó vào dấu nháy đơn ‘như thế này’ Hợp ngữ sẽ gán mã ASCII cho các số hoặc các ký tự một cách tự động Chỉ lệnh DB chỉ là chỉ lệnh mà có thể được sử dụng để định nghĩa các chuỗi ASCII lớn hơn 2 ký tự Do vậy, nó có thể được sử dụng cho tất cả mọi định nghĩa
dữ liệu ASCII Dưới đây là một số ví dụ về DB:
ORG 500H
DATA1: DB 2B ; Số thập phân (1C ở dạng Hex)
DATA2: DB 00110101B ; Số nhị phân (35 ở dạng Hex)
DATA3: DB 39H ; Số dạng Hex
ORG 510H
DATA4: DB “2591” ; Các số ASCII
Trang 34ORG 518H
DATA5 DB “My name is Joe” ; Các ký tự ASCII
Các chuỗi ASCII có thể sử dụng dấu nháy đơn ‘như thế này’ hoặc nháy kép
“như thế này” Dùng dấu phẩy kép sẽ hữu ích hơn đối Với trường hợp dấu nháy đơn được dùng sở hữu cách như thế này “Nhà O’ Leary” Chỉ lệnh DB cũng được dùng để cấp phát bộ nhớ theo từng đoạn kích thước một byte
1 Chỉ lệnh ORG: Chỉ lệnh ORG được dùng để báo bắt đầu của địa chỉ Số đi sau ORG có kể ở dạng Hex hoặc thập phân Nếu số này có kèm chữ H đằng sau thì
là ở dạng Hex và nếu không có chữ H ở sau là số thập phân và hợp ngữ sẽ chuyển
nó thành số Hex Một số hợp ngữ sử dụng dấu chấm đứng trước “ORG” thay cho
“ORG” Hãy đọc kỹ về trình hợp ngữ ta sử dụng
2 Chỉ lệnh EQU: Được dùng để định nghĩa một hằng số mà không chiếm ngăn nhớ nào Chỉ lệnh EQU không dành chỗ cất cho dữ liệu nhưng nó gắn một giá trị hằng số Với nhãn dữ liệu sao cho khi nhãn xuất hiện trong chương trình giá trị hằng số của nó sẽ được thay thế đối Với nhãn Dưới đây sử dụng EQU cho hằng số
bộ đếm và sau đó hằng số được dùng để nạp thanh ghi RS
3 Chỉ lệnh END: Một lệnh quan trọng khác là chỉ lệnh END Nó báo cho trình hợp ngữ kết thúc của tệp nguồn “asm” chỉ lệnh END là dòng cuối cùng của chương trình 8051 có nghĩa là trong mã nguồn thì mọi thứ sau chỉ lệnh END để bị trình hợp ngữ bỏ qua Một số trình hợp ngữ sử dụng END có dấu chấm đứng trước thay cho END
2.5.4 Các quy định đố Với nhãn trong hợp ngữ
Bằng cách chọn các tên nhãn có nghĩa là một lập trình viên có thể làm cho chương trình dễ đọc và dễ bảo trì hơn, có một số quy định mà các tên nhãn phải
Trang 35tuân theo Thứ nhất là mỗi tên nhãn phải thống nhất, các tên được sử dụng làm nhãn trong hợp ngữ gồm các chữ cái viết hoa và viết thường, các số từ 0 đến 9 và các dấu đặc biệt như: dấu hỏi (?), dấu (), dấu gạch dưới (), dấu đô là ($) và dấu chu kỳ (.) Ký tự đầu tiên của nhãn phải là một chữ cái Hay nói cách khác là nó không thể là số Hex Mỗi trình hợp ngữ có một số từ dự trữ là các từ gợi nhớ cho các lệnh mà không được dùng để làm nhãn trong chương trình Ví dụ như “MOV”
và “ADD” Bên cạnh các từ gợi nhớ còn có một số tự dự trữ khác, hãy kiểm tra bản liệt kê các từ dự phòng của hợp ngữ ta đang sử dụng
4 Các ví dụ lập trình trên vi điều khiển 8051
4.1.ứng dụng điều khiển LED đơn
4.2 ứng dụng điều khiển LED 7 đoạn
4.3 ứng dụng điều khiển LED ma trận
4.4 ứng dụng điều khiển ADC và DAC
4.5 ứng dụng điều khiển đọng cơ bước
3.2 Các kiểu định địa chỉ của vi điều khiển 8051
Các kiểu định địa chỉ là một qui ước thống nhất của tập lệnh Các kiểu định địa chỉ cho phép định rõ nơi lấy dữ liệu hoặc nơi nhận dữ liệu tùy thuộc vào cách thức
sử dụng lệnh của người lập trình
Vi điều khiển họ MCS-51 có 8 kiểu định địa chỉ như sau:
- Kiểu định địa chỉ dùng thanh ghi
- Kiểu định địa chỉ trực tiếp
- Kiểu định địa chỉ gián tiếp
- Kiểu định địa chỉ tức thời
- Kiểu định địa chỉ tương đối
- Kiểu định địa chỉ tuyệt đối
- Kiểu định địa chỉ dài
- Kiểu định địa chỉ định vị
Trang 363.2.1 Kiểu định địa chỉ dùng thanh ghi (Register Addressing) :
Kiểu này thường được dùng cho các lệnh xử lý dữ liệu mà dữ liệu luôn lưu trong các thanh ghi Đối Với vi điều khiển thì mã lệnh thuộc kiểu này chỉ có 1 byte
Ví dụ : Mov A,R1 ; copy nội dung thanh ghi R1 vào thanh ghi A
3.2.2 Kiểu định địa chỉ trực tiếp (Direct Addressing) :
Kiểu này thường được dùng để truy xuất dữ liệu của bất kỳ ô nhớ nào trong
256 byte bộ nhớ RAM nội của vi điều khiển 89C51
Các lệnh thuộc kiểu này thường có mã lệnh 2 byte: byte thứ nhất là mã lệnh, byte thứ 2 là địa chỉ của ô nhớ:
Ví dụ : Mov A,05H ; copy nội dung ô nhớ có địa chỉ 05H vào thanh ghi A
3.2.3 Định địa chỉ gián tiếp (Indirect Addressing) :
Kiểu định địa chỉ gián tiếp được tượng trưng bởi ký hiệu @ và được đặt trước các thanh ghi R0, R1 hay DPTR R0 và R1 có thể hoạt động như một thanh ghi con trỏ, nội dung của nó cho biết địa chỉ của một ô nhớ trong RAM nội mà dữ liệu sẽ ghi hoặc sẽ đọc Còn DPTR dùng để truy xuất ô nhớ ngoại Các lệnh thuộc dạng này chỉ có 1 byte
Ví dụ : Mov A,@R1 ; copy nội dung ô nhớ có địa chỉ trong thanh ghi R1 vào thanh ghi A
3.2.4 Định địa chỉ tức thời (Immediate Addressing) :
Kiểu định địa chỉ tức thời được tượng trưng bởi ký hiệu # và được đặt trước một hằng số
Lệnh này thường dùng để nạp 1 giá trị là 1 hằng số ở byte thứ 2 (hoặc byte thứ 3) vào thanh ghi hoặc ô nhớ
Ví dụ : Mov a,#30H ; nạp dữ liệu là con số 30H vào thanh ghi A
3.2.5 Định địa chỉ tương đối
Kiểu định địa chỉ tương đối chỉ sử dụng Với những lệnh nhảy Nơi nhảy đến
có địa chỉ bằng địa chỉ đang lưu trong thanh ghi PC cộng Với 1 giá trị 8 bit [còn gọi
là giá trị lệch tương đối: relative offset] có giá trị từ – 128 đến +127 nên vi điều khiển có thể nhảy lùi [nếu số cộng Với số âm] và nhảy tới [ nếu số cộng Với số dương] Lệnh này có mã lệnh 2 byte, byte thứ 2 chính là giá trị lệch tương đối
Trang 37Nơi nhảy đến thường được xác định bởi nhãn (label) và trình biên dịch sẽ tính toán giá trị lệch
Định vị tương đối có ưu điểm là mã lệnh cố định khi thay đổi địa chỉ, nhưng khuyết điểm là chỉ nhảy ngắn trong phạm vi -128÷127 byte [256byte], nếu nơi nhảy đến xa hơn thì lệnh này không đáp ứng được – sẽ có lỗi
Ví dụ : Sjmp X1 ;nhảy đến nhãn có tên là X1 nằm trong tầm vực 256 byte
3.2.6 Định địa chỉ tuyệt đối (Absolute Addressing) :
Kiểu định địa chỉ tuyệt đối được dùng Với các lệnh ACALL và AJMP Các lệnh này có mã lệnh 2 byte cho phép phân chia bộ nhớ theo trang - mỗi trang có kích thước đúng bằng 2Kbyte so Với giá trị chứa trong thanh ghi PC hiện hành 11 bit địa chỉ A10÷A0 được thay thế cho 11 địa chỉ thấp trong thanh ghi PC nằm trong cấu trúc mã lệnh như sau:
Định địa chỉ tuyệt đối có ưu điểm là mã lệnh ngắn (2 byte), nhưng khuyết điểm là mã lệnh thay đổi và giới hạn phạm vi nơi nhảy đến, gọi đến không quá 2 kbyte
Ví dụ 6: Ajmp X1 ;nhảy đến nhãn có tên là X1 nằm trong tầm vực 2 kbyte
3.2.7 Định địa chỉ dài (Long Addressing) :
Kiểu định địa chỉ dài được dùng Với lệnh LCALL và LJMP Các lệnh này có
mã lệnh 3 byte – trong đó có 2 byte (16bit) là địa chỉ của nơi đến Cấu trúc mã lệnh
là 3 byte như sau:
Ưu điểm của định địa chỉ dài là có thể gọi 1 chương trình con hoặc có thể nhảy đến bất kỳ vùng nhớ nào vùng nhớ 64K, nhược điểm là các lệnh kiểu này dài
3 byte và phụ thuộc vào vị trí đến – điều này sẽ bất tiện bởi không thể dời toàn bộ
mã lệnh của chương trình từ vùng nhớ này sang các vùng nhớ khác – có nghĩa là khi chương trình đã viết nơi đến tại địa chỉ 1000h thì sau khi dịch ra mã lệnh dạng
số nhị phân thì sau đó nạp vào bộ nhớ thì địa chỉ bắt đầu phải đúng Với địa chỉ đã viết là 1000h; nếu nạp ở vùng địa chỉ khác địa chỉ 1000h thì chương trình sẽ thực hiện sai
Ví dụ : Ljmp X1 ;nhảy đến nhãn có tên là X1 nằm trong tầm vực 64kbyte
3.2.8 Định địa chỉ chỉ số (Index Addressing) :
Kiểu định địa chỉ chỉ số “dùng một thanh ghi cơ bản: là bộ đếm chương trình
PC hoặc bộ đếm dữ liệu DPTR” kết hợp Với “một giá trị lệch (offset) còn gọi là giá
Trang 38trị tương đối [thường lưu trong thanh ghi]” để tạo ra 1 địa chỉ của ô nhớ cần truy xuất hoặc là địa chỉ của nơi nhảy đến
Ví dụ: MOVX A, @A + DPTR
;lấy dữ liệu trong ô nhớ có địa chỉ bằng DPTR + A
Khi khảo sát tập lệnh một cách chi tiết thì chức năng của các thanh ghi và các kiểu truy xuất này sẽ được trình bày rõ ràng hơn
- Rn tượng trưng cho các thanh ghi từ thanh ghi R0 đến thanh ghi R7
- @Ri tượng trưng cho ô nhớ có địa chỉ lưu trong thanh ghi Ri và chỉ có 2 thanh ghi là R0 và R1
- Các lệnh thường xảy ra giữa các đối tượng sau:
+ Thanh ghi A
+ Thanh ghi Rn
+ Ô nhớ có địa chỉ direct
+ Ô nhớ có địa chỉ lưu trong thanh ghi @Ri
+ Dữ liệu 8 bit #data
+ addr11 là địa chỉ 11 bit từ A10÷A0: địa chỉ này phục vụ cho lệnh nhảy hoặc lệnh gọi chương trình con trong phạm vi 2Kbyte
+ Addr16 là địa chỉ 16 bit từ A15÷A0: địa chỉ này phục vụ cho lệnh nhảy và lệnh gọi chương trình con ở xa trong phạm vi 64 kbyte – đó chính là địa chỉ nhảy đến, hoặc địa chỉ của chương trình con
Khi viết chương trình người lập trình có thể thay thế địa chỉ bằng nhãn (label) để khỏi phải tính toán các địa chỉ cụ thể Nhãn (label) sẽ được đặt tại vị trí addr thay cho addr và phải có một nhãn đặt tại nơi muốn nhảy đến - gọi là 1 cặp nhãn cùng tên Có thể nhiều nơi nhảy đến cùng một nhãn Không được đặt các nhãn cùng tên
Các lệnh có ảnh hưởng đến thanh ghi trạng thái thì có trình bày trong lệnh, còn các lệnh không đề cập đến thanh ghi trạng thái thì có nghĩa là nó không ảnh hưởng
Trang 393.3.1 Nhóm lệnh số học
1 Lệnh cộng thanh ghi A Với thanh ghi :
- Cấu trúc lệnh: ADD A,Rn
- Chức năng : cộng nội dung thanh ghi A Với nội dung thanh ghi Rn, kết quả lưu trong thanh ghi A Lệnh có ảnh hưởng đến thanh ghi trạng thái
Ví dụ: Giả sử A có nội dung 47h và R0 có nội dung là 32h, lệnh:
ADD A,R0
;kết quả như sau: (A) = 79h, (C) = 0
Ví dụ: Giả sử A có nội dung 0D9h và R0 có nội dung là 0B8h, lệnh:
ADD A,R0
;kết quả như sau: (A) = 91h, (C) =1
2 Lệnh cộng nội dung ô nhớ trực tiếp vào thanh ghi A :
- Cấu trúc lệnh: ADD A, direct
- Chức năng: Cộng nội dung của ô nhớ có địa chỉ direct Với nội dung thanh ghi
A, kết quả chứa ở thanh ghi A Lệnh có ảnh hưởng đến thanh ghi trạng thái
Ví dụ: Giả sử A có nội dung 0D9h và ô nhớ có địa chỉ 30h lưu nội dung 0B8h,
lệnh:
ADD A,30h
;kết quả như sau: (A) = 81h, (C) =1
Ví dụ: Giả sử A có nội dung 47h và ô nhớ có địa chỉ 30h lưu nội dung 32h,
lệnh:
ADD A,30h
;kết quả như sau: (A) = 79h, (C) =0
3 Lệnh cộng nội dung ô nhớ gián tiếp vào thanh ghi A :
- Có pháp: ADD A,@Ri
- Chức năng: cộng nội dung của ô nhớ có địa chỉ chứa trong thanh ghi Ri Với thanh ghi A, kết qủa lưu trữ trong thanh ghi A Lệnh có ảnh hưởng đến thanh ghi trạng thái
Ví dụ: Giả sử A có nội dung 0D9h, ô nhớ có địa chỉ 30h có nội dung là 0B8h,
R0 có nội dung là 30h, lệnh:
ADD A,@R0
;kết qủa như sau: (A) = 91h, (C) =1
Trang 404 Lệnh cộng dữ liệu tức thời 8 bit vào thanh ghi A :
- Cấu trúc lệnh: ADD A, #data
- Chức năng: Cộng dữ liệu data 8 bit (d0 đến d7) Với nội dung thanh ghi A, kết quả
lưu trữ trong A Lệnh có ảnh hưởng đến thanh ghi trạng thái
Ví dụ: Giả sử A có nội dung 47h, dữ liệu trực tiếp là 32h, lệnh:
ADD A,#32h
;kết quả như sau: (A) = 79h, (C) = 0
Ví dụ: Giả sử A có nội dung D9h, dữ liệu trực tiếp là B8h, lệnh:
ADD A,#0B8h
;kết quả như sau: (A) = 91h, (C) = 1
5 Lệnh cộng thanh ghi A Với thanh ghi có bit carry :
- Cấu trúc lệnh: ADDC A,Rn
- Chức năng : cộng nội dung thanh ghi A Với nội dung thanh ghi Rn Với bit C, kết quả lưu trong thanh ghi A Lệnh có ảnh hưởng đến thanh ghi trạng thái
Ví dụ: Giả sử A có nội dung 47h, R1 có nội dung 32h và cờ (C) = 1, lệnh:
ADDC A,R1 ;kết quả như sau: (A) = 7ah, (C) = 0
Ví dụ: Giả sử A có nội dung 0D9h, R0 có nội dung là 0B8h, (C) =1, lệnh:
ADDC A,R0 ;kết quả như sau: (A) = 92h, (C)=1
6 Lệnh cộng nội dung ô nhớ trực tiếp vào thanh ghi A có bit carry :
- Cấu trúc lệnh: ADDC A, direct
- Chức năng: Cộng nội dung của ô nhớ có địa direct nội dung thanh ghi A và bit
C, kết quả chứa ở thanh ghi A Lệnh có ảnh hưởng đến thanh ghi trạng thái
Ví dụ: Giả sử A có nội dung 47h, ô nhớ 30h có nội dung 32h và cờ (C) = 0,
lệnh:
ADDC A,30h ;kết quả như sau: (A) = 79h, (C) = 0
Ví dụ: Giả sử A có nội dung 0D9h, ô nhớ 30h có nội dung là 0B8h, C:=1, lệnh:
ADDC A,30h ;kết quả như sau: (A) = 92h, (C) = 1
7 Lệnh cộng nội dung ô nhớ gián tiếp vào thanh ghi A có bit carry :
- Cấu trúc lệnh: ADDC A,@Ri