- COUNTER LOADIN G:
3. TẬP LỆNH CỦA 8085.
Một lệnh (Instruction) lă một mẫu nhị phđn (Binary pattern) được thiết
kế bín trong vi xử lí để thực hiện một chức năng cụ thể. Một nhóm đủ câc lệnh, được gọi lă tập lệnh (Instruction set), xâc định câc chức năng mă vi xử lí có thể thực hiện. Tập lệnh của 8085 có 74 lệnh (hơn 8080 hai lệnh), câc lệnh năy có thể được phđn thănh 5 nhóm chức năng :
Câc hoạt động (sao chĩp) truyền dữ liệu.
Câc hoạt động toân học.
Câc hoạt động logic.
Câc hoạt động rẽ nhânh.
Câc hoạt động điềău khiển.
Câc hoạt động (sao chĩp) truyền dữ liệu :
Nhóm lệnh năy sao chĩp dữ liệu từ nơi nguồn đến nơi đích, mă không hề điều chỉnh nội dung của nơi nguồn. Trong câc sổ tay kỹ thuật, từ truyền dữ liệu được sử dụng cho chức năng sao chĩp. Sau đđy lă câc dạng truyền dữ liệu:
Dạng truyền
Giữa câc thanh ghi
Byte dữ liệu cụ thể đến thanh ghi hoặc ô nhớ
Giữa một thiết bị I/O vă thanh ghi tích trữ.
Giữa cặp thanh ghi vă ngăn xếp.
Ví dụ
Sao chĩp nội dung của thanhghi B văo thanh ghi D
Nạp văo thanh ghi B byte dữ liệu 32H
Từ ô nhớ 2000H đến thanh ghi B. Từ băn phím văo thanh ghi tích trữ. Từ cặp thanh ghi BC đến 2 ô nhớ được định nghĩa như ngăn xếp.
Câc hoạt động toân học :
Câc lệnh năy thực hiện câc phĩp toân như lă cộng, trừ, tăng vă giảm. Cộng : bất kỳ một số 8 bit, hoặc nội dung của thanh ghi, hoặc nội dung của một ô nhớ có thể được cộng với nội dung của thanh ghi tích trữ vă tổng được lưu văo thanh ghi tích trữ. Hai thanh ghi hoặc ô nhớ không thể cộng trực tiếp với nhau. Lệnh DAD lă một ngoại lệ, nó cộng trực tiếp dữ liệu 16 bit trong câc cặp thanh ghi.
Trừ : Bất kì một số 8 bit, hoặc nội dung của một thanh ghi, hoặc nội dung của một ô nhớ có thể được trừ từ nội dung của thanh ghi tích trữ. Lệnh trừ được thực hiện ở dạng bù 2, vă kết quả nếu đm được biểu hiện ở dạng bù 2. Hai thanh ghi hoặc ô nhớ không thể được trừ trực tiếp.
Tăng/ giảm : Nội dung 8 bit của một thanh ghi hoặc một ô nhớ có thể được tăng hoặc giảm mỗi lần 1 đơn vị. Tương tự nội dung 16 bit của một cặp thanh ghi có thể cũng được tăng hoặc giảm đi 1. Câc hoạt động tăng vă giảm khâc với phĩp cộng vă trừ ở một câch thức rất quan trọng, đó lă : chúng có thể được thực hiện trong bất kì thanh ghi hoặc ô nhớ năo.
Câc hoạt động logic:
Câc lệnh năy thực hiện câc hoạt động logic khâc nhau với nội dung của thanh ghi tích trữ.
AND, OR, XOR : Bất kì một số 8 bit, hoặc nội dung của 1 thanh ghi, hoặc nội dung của một ô nhớ có thể được logic AND, OR, hoặc XOR với nội dung của thanh ghi tích trữ.
Xoay : Mỗi bit trong thanh ghi tích trữ có thể được dịch trâi hoặc dịch phải đến vị trí kế tiếp.
So sânh : bất kì một số 8 bit, hoặc nội dung của một thanh ghi, hoặc nội dung của một ô nhớ có thể được so sânh bằng, lớn hơn, hoặc nhỏ hơn với nội dung của thanh ghi tích trữ.
Bù : Nội dung của một thanh ghi tích trữ có thể được lấy bù : tất cả 0 được thay thế bằng 1 vă toăn bộ 1 được đổi thănh 0.
Câc hoạt động rẽ nhânh :
Nhóm câc lệnh năy lăm thay đổi trình tự thi hănh chương trình một câch có điều kiện hoặc không có điều kiện.
Nhảy : Câc lệnh nhảy có điều kiện lă một khía cạnh quan trọng để đưa ra những quyết định trong lập trình. Câc lệnh năy kiểm tra một điều kiện năo
đó (cờ Zero hoặc cờ Carry) vă lăm thay đổi trình tự chương trình khi bắt gặp điều kiện.
Gọi, Trở về, Khởi động lại : Câc lệnh năy lăm thay đổi trình tự của một chương trình hoặc bằng câch gọi một chương trình con hoặc trở về từ một chương trình con. Câc lệnh Gọi vă Trở về cũng có thể kiểm tra câc cờ điều kiện.
Câc hoạt động điều khiển :
Câc lệnh năy điều khiển câc chức năng vận hănh như lă : Dừng, Ngắt, hoặc không lăm gì cả (No Operation).
Tập lệnh vi xử lí 8085 được phđn thănh 3 nhóm tuỳ theo kích cỡ từ :
1. Câc lệnh một từ hoặc 1 byte.
2. Câc lệnh hai từ hoặc 2 byte.
3. Câc lệnh ba từ hoặc 3 byte.
Lệnh một byte chứa mê hoạt động (Opcode) vă toân tử (Operand) trong cùng một byte.
Trong lệnh hai byte, byte thứ nhất níu lín mê hoạt động vă theo sau lă toân tử.
Đối với lệnh ba byte, byte thứ nhất cho biết mê hoạt động, hai byte kế tiếp lă dữ liệu 16 bit (nội dung hoặc địa chỉ).
LẬP TRÌNH CHO 8279
Để có khả năng sử dụng thănh thạo 8279, trước tiín phải hiểu rõ bản chất câc từ điều khiển của 8279.
8279 có tất cả tâm từ điều khiển, tùy theo mục đích sử dụng mă sẽ chọn từ điều khiển thích hợp.
Đặt Mode hiển thị / băn phím.
MSB LSB
Mê 0 0 0 D D K K K
Trong đó, DD lă Mode hiển thị vă KKK lă Mode băn phím :
DD
0 0 hiển thị 8 kí tự, 8 bit - ghi trâi. 0 1 hiển thị 16 kí tự, 8 bit - ghi trâi. 1 0 hiển thị 8 kí tự, 8 bit - ghi phải.
1 1 hiển thị 16 kí tự, 8 bit - ghi phải.
Yù nghĩa của Ghi trâi (Left Entry) vă Ghi phải (Right Entry) được trình băy hình 5.25.
Chú ý rằng khi quĩt có giải mê được đặt trong Mode băn phím, hiển thị sẽ bị giảm xuống 4 kí tự không phụ thuộc văo việc đặt Mode hiển thị.
KKK
0 0 0 băn phím có lập mê - khóa ngoăi 2 phím.
0 0 1 băn phím quĩt có giải mê - khóa ngoăi 2 phím.
0 1 0 băn phím quĩt có lập mê - xoay vòng N phím.
0 1 1 băn phím quĩt có giải mê - xoay vòng N phím.
1 0 0 ma trận cảm biến, quĩt có lập mê 1 0 1 ma trận cảm biến, quĩt có giải mê 1 1 0 ngõ văo Strob, quĩt hiển thị có lập mê.
1 1 1 ngõ văo Strob, quĩt hiển thị có giải mê.
Ơû Mode lập mê, câc ngõ ra SL tâc động mức cao vă theo sau lă mê bit nhị phđn từ 0 đến 7 hoặc từ 0 đến 15, tùy theo hiển thị 8 hoặc 16 số được chọn.
Ơû Mode giải mê, câc ngõ ra SL tâc động mức thấp vă chỉ một trong bốn ngõ ra ở mức thấp tại thời điểm bất kỳ được cho. Câc ngõ ra giải mê lập lại mẫu : 1110, 1101, 1011 vă 0111.
Ơû mode Strob, một xung tâc động mức cao trín chđn CN/ST sẽ Strob dữ liệu từ câc chđn RL văo FIFO bín trong, nơi mă chúng được duy trì cho vi xử lí
Lập trình xung đồng hồ :
Mê 0 0 1 P P P P P
Tất cả câc tín hiệu định thời vă đa hợp cho 8279 được phât ra bởi một bộ đặt trước tỉ lệ (precaler) bín trong. Bộ đặt trước chia xung đồng hồ bín ngoăi
(chđn 3) cho một số nguyín có thể lập trình. câc bit P P P P P quyết định giâ trị của số nguyín năy, trong phạm vi từ 2 đến 31. Hêy chọn số chia sao cho đạt được tần số 100 KHz.
RAM LOCATION DISPLAY POSITION 0 (A) A b C d 1 (b) 2 (C) (A) REPRESENTS 3 (d) 7 SEGMENT 4 CODE FOR A 5 6
7 (a) Left Entry
RAM LOCATION DISPLAY POSITION 0 (A) A b C d 1 (b) 2 (C) (A) REPRESENTS 5 (d) 7 SEGMENT 6 CODE FOR A 5 6 7 (b) Right Entry
Hình 5.25 : Mối liín hệ giữa RAM 8279 vă vị trí hiển thị Dọc FIFO / RAM cảm biến :
Mê 0 1 0 AI X A A A
X = không quan tđm
Từ điều khiển năy chọn địa chỉ của mê phím cần đọc trong RAM FIFO/ Cảm biến. Ở mốt băn phím có quĩt, cờ tăng tự động AI (Auto - Inerement) vă câc bit địa chỉ RAM (A A A) không còn khả dụng. 8279 sẽ tự động lâi tuyến dữ liệu cho mỗi lần đọc tiếp theo (Ao = 0) theo đúng trình tự mă ban đầu dữ
liệu được nhập văo FIFO. Tất cả những lần đọc tiếp theo sẽ đến từ FIFO cho đến khi một lệnh khâc được tạo ra.
Ơû mốt ma trận cảm biến, câc it địa chỉ RAM (A A A) chọn một trong 8 hăng của RAM cảm biến. Nếu cờ AI được đặt (AI = 1), mỗi sự đọc kế tiếp sẽ đến từ hăng tiếp theo của RAM cảm biến.
Đọc RAM hiển thị
Mê 0 1 1 A1 A A A A
Từ điều khiển năy chọn địa chỉ của byte dữ liệu cần đọc trong RAM hiển thị. Câc bit địa chỉ A A A A chọn một trong 16 hăng của RAM hiển thị.Nếu cờ AI đặt (AI = 1), địa chỉ hăng năy sẽ đượa tăng tự động sau mỗi lần đọc hoặc ghi tiếp theo. Vì cùng một bộ đếm được sử dụng cho cả hai hoạt động đọc vă ghi. Từ lệnh năy đặt địa chỉ đọc hoặc ghi kế tiếp vă cảm nhận mốt tự động tăng cho cả hai hoạt động.
Ghi văo RAM hiển thị
Mê 1 0 0 AI A A A A
Từ điều khiển năy chọn địa chỉ trong RAM hiển thị nơi cần ghi dữ liệu văo. Sau khi từ lệnh với Ao = 1 sẽ ở trong RAM hiện thị. Câc chức năng định địa chỉ vă tăng tự động giống như đối với đọc RAM hiển thị. Tuy nhiín từ lệnh năykhông ảnh hưởng đến nguồn của những lần đọc dữ liệu kế tiếp ; CPU sẽ đọc bất kì RAM năo (Hiển thị hoặc FIFO / cảm biến) được níu rõ sau cùng, việc ghi văo RAM hiển thị, tuy nhiín sẽ lăm thay đổi vị trí Đọc tiếp theo.
Nhấp nhây / Cấm Ghi văo hiển thị
Mê 1 0 1 X IW IW BL BL
Câc bit IW có thể được sử dụng che nửa byte A vă nửa byte B trong những ứng dụng đòi hỏi câc cổng hiển thị 4 bit tâch biệt. Bằng câch đặt cờ IW (IW = 1) đối với một trong câc cổng, cổng trở nín được đânh dấu sao cho việc ghi văo RAM hiển thị từ CPU không ảnh hưởng đến cổng đó. Thế thì nếu mỗi nửa byte được nhập một bộ giải mê BCD, CPU có thể ghi một số văo RAM hiển thị mă không ảnh hưởng đến số khâc đang được hiển thị. Một chú ý quan
trọng lă bit Bo tương ứng với bit Do trín tuyến dữ liệu của CPU, vă bit A3
tương ứng với bit D7.
Nếu người sử dụng muốn nhấp nhây hiển thị, câc cờ Bl có khả dụng đối
với mỗi nửa byte. Lệnh xóa sau cùng được phât ra xâx định mê được sử dụng như một “nhấp nhây”. Mê năy ? tất cả bằng không sau một sự đặt lại. Chú ý rằng cả hai cờ BL phải được đặt để nhấp nhây một hiển thị kết hợp với một cổng đơn 8 bit.
Xoâ
Mê 1 1 0 CD CD CD CF CA
Câc bit CD có sẵn trong từ lệnh năy để xoâ tất cả câc hăng của RAM hiển thị theo một mê có thể chọn lựa được như sau :
CD CD CD
0 X tất cả bằng không (X = không quan tđm) 1 0 AB = 20H ( 0010 0000 )
1 1 tất cả bằng 1
cho phĩp xoâ hiển thị khi = 1 (hoặc bởi CA =1) Trong suốt thời gian RAM hiển thị đang bị xóa( 160S), nó không thể được ghi văo. Bit có trọng số cao nhất ( MSB) của từ trạng thâi được đặt trong suốt thời gian năy. Khi RAM hiển thị trở nín khả dụng trở lại, bit năy tự động được đặt lại.
Nếu CF = 1, trạng thâi FIFO bị xóa vă đường ngõ rangắt được đặt tại hăng 0. CA, bit xoâ tất cả, có sự ảnh hưởng của CD vă CF. Nó sử dụng CDxóa mê trín RAM hiển thị vă cũng xóa trạng thâi FIFO. Hơn thế nửa, nó còn đồng bộ lại sự định thời bín trong.
Đặt mốt bâo lỗi / Ngắt ở cuối
Mê 1 1 1 E X X X X
Đối với mốt ma trận cảm biến, từ lệnh năy hạ đường IRQ xuống thấp vă
trong một giâ trị cảm biến. Điều năy cũng sẽ cấm ghi văo RAM cho đến khi đặt lại).
Đốt với mốt xoay vòng N phím, nếu bit E được lập trìng bằng 1, chip 8279 sẽ hoạt động ở mốt bâo lỗi.
Khởi tạo 8279
Mặc dù 8279 có tới tâm từ điều khiển, nhưng không phải lúc năo cũng sử dụng hết tất cả tâm từ năy.
Khi khởi tạo một 8279, thứ tự câc từ điều khiển sau đđy lă cần thiết : + Đặt mốt hiển thị / băn phím
+ Lập trình xung đồng hồ
+ Xóa RAM hiển thị hoặc FIFO hoặc cả hai
Câc từ điều khiển còn lại có thể được gởi ra thanh ghi điều khiển trong lúc năy hoặc khi cần.
Việc đọc mê của băn phímcó thể được thực hiện bằng một trong hai câch : dùng ngắt ( interrupt ) hoặc dùng kỹ thuật hỏi vòng ( polling ).
Khi một phím được ấn xuống, chđn IRQ của 8279 tạo ra một mức logic
cao, nếu dùng ngắt của vi xử lý. Chương trình phục vụ ngắt sẽ đọc mê của phím ấn.