1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề cương ôn tập môn kỹ thuật vi xử lý

7 647 2

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 137,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

II) Phụ lục II mô hình hoạt động của chương trình mô phỏng hệ vi xử lý 8bit Intel LEV85. Addr Code Instr Context A F B C Pend D E Mask H L IF SP PC Variable Break III) Phụ lục III tóm tắt các lệnh, kiến thức về bộ vi xử lý (micro proccessor) 8 bit Intel Nhóm chuyển đổi dữ liệu. 1) IN PORT Nhập số liệu vào với: IN là mã kênh 1 byte và PORT là địa chỉ 8 bit của cổng vào. (Acc) < (Port) Ví dụ: Port_0 = 01h In Port_0 2) OUT PORT Đưa thông tin ra với: OUT là mã kênh 1 byte và PORT là địa chỉ 8 bit của cổng ra. (Port) < (Acc) Ví dụ: Port_1 = 0Bh Out Port_1 3) STA Addr16 Nội dung thanh chứa được chuyển vào ngăn chứa 16bit. (Addr16) < (Acc) Hệ VXL STA M Acc 0Bh (Addr16) 0Bh LDA 4) LDA Addr16 Ngăn nhớ có địa chỉ là nội dung của 2 byte kế tiếp 5) SHLD Addr16 Cất giữ nội dung của thanh HL vào hai ngăn nhớ địa chỉ bắt đầu từ addr16. (Addr16) < (L) (Addr16+1) < (H) Hệ VXL SHLD H L 05h 0Bh Addr16+1 Addr16 6) LHLD Addr16 Hai byte liên tục được trả trở lại thanh HL từ Addr16. (L) < (Addr16) (H) < (Addr16+1) Chú ý: (56) Byte thấp đưa vào ngăn nhớ thấp, byte cao đưa vào ngăn nhớ cao. 7) MOV M,R Chuyển nội dung ngăn nhớ R vào vào ngăn nhớ M. MOV M,B B CDh H L 01h FFh CDh Chú ý: (7) Ngăn nhớ đích ở bên trái dấu , (M) ngăn nhớ nguồn ở bên phải dấu , (R). + R là các thanh ghi 8 bit bên trong bộ vi xử lý (A, B, C, D, E, H, L) + M là ngăn nhớ có địa chỉ là nội dung (HL). ((HL)) < (R) 8) LDAX rp (Acc) < ((rp)) 9) STAX rp ((rp)) < (Acc)

Trang 1

Đề cơng ôn tập

môn vi xử lý.

I) Phụ lục I bảng mã

Hex - Ascii

Hex Ascii Hex Ascii

Hex Ascii Hex Ascii

II) Phụ lục II mô hình hoạt

động của chơng trình mô

phỏng hệ vi xử lý 8bit Intel

LEV85.

Addr Code Instr Context

A F

SP PC Variable

Break

III) Phụ lục III tóm tắt các lệnh, kiến thức về bộ vi xử lý (micro proccessor)

8 bit Intel Nhóm chuyển đổi dữ liệu.

1) IN PORT Nhập số liệu vào

với: IN là mã kênh 1 byte và PORT là địa chỉ 8 bit của cổng vào

(Acc) < - (Port)

Ví dụ: Port_0 = 01h

In Port_0

2) OUT PORT Đa thông tin ra

với: OUT là mã kênh 1 byte và PORT là địa chỉ 8 bit của cổng ra

(Port) < - (Acc)

Ví dụ: Port_1 = 0Bh

Out Port_1

3) STA Addr16 Nội dung

thanh chứa đợc chuyển vào ngăn chứa 16bit

(Addr16) < - (Acc)

Hệ VXL STA M

Acc

0Bh (Addr16) 0Bh

LDA

4) LDA Addr16 Ngăn nhớ có

địa chỉ là nội dung của 2 byte kế tiếp

5) SHLD Addr16 Cất giữ nội

dung của thanh HL vào hai ngăn nhớ địa chỉ bắt đầu từ addr16

(Addr16) < - (L) (Addr16+1) < - (H)

Hệ VXL SHLD

05h 0Bh

Addr16+1 Addr16

6) LHLD Addr16 Hai byte

liên tục đợc trả trở lại thanh HL

từ Addr16

(L) < - (Addr16) (H) < - (Addr16+1) Chú ý: (5&6) Byte thấp đa vào ngăn nhớ thấp, byte cao đa vào ngăn nhớ cao

7) MOV M,R Chuyển nội

dung ngăn nhớ R vào vào ngăn nhớ M

MOV M,B

B CDh

Chú ý: (7) Ngăn nhớ đích ở bên trái dấu , (M) ngăn nhớ nguồn ở bên phải dấu , (R)

+ R là các thanh ghi 8 bit bên trong bộ vi xử lý (A, B, C, D, E,

H, L) + M là ngăn nhớ có địa chỉ là nội dung (HL)

((HL)) < - (R)

8) LDAX rp

(Acc) < - ((rp)) 9) STAX rp

((rp)) < - (Acc)

STAX B

Acc FFh

Buffer dùng BC để quản lý Chú ý: (8&9) rp: BC, DE

10) MVI r,data8

(r) < - data

Ví dụ: MVI M,data8

((HL)) < - data8

Nhóm thực hiện các phép tính

Logic 1) CMA Lấy bù của các thanh

chứa Acc

(Acc) < - ( Acc)

2) CMC Lấy bù với các cở

keri (CY)

(CY) < - (CY)

3) STC Đặt giá trị cho cờ keri

= 1

(CY) < - 1

4) ANI data8 Nhân logic với

data8 (Acc) < - (Acc).data8

5) ANA r Nhân logic với r

(Acc) < - (Acc).data8

6) ANA M Nhân logic với HL

(Acc) < - (Acc).((HL))

Trang 2

Chú ý: (4,5&6) Dùng để lọc

thông tin tại bit đầu tiên

> dùng lệnh ANI 01h >

Trong thanh chứa Acc chỉ có giá

trị của bit không

7) ORI data8 Cộng logic với

data8

(Acc) < - (Acc)+data8

8) ORA r Cộng logic với r

(Acc) < - (Acc)+r

9) ORA M Cộng logic với HL

(Acc) < - (Acc)+((HL))

10) XRI data8 Cộng modun 2

với data8

(Acc) < - (Acc)data8

11) XRA r Cộng modun 2 với

r

(Acc) < - (Acc)r

12) XRA M Cộng modun 2

với HL

(Acc) < - (Acc)((HL))

13) RLC

A(n) < - A(n-1)

A0 < - A7

CY < - A7

14) RAL

A(n) < - A(n-1)

CY < - A7

A0 < - CY

15) RRC

A(n-1) < - A(n)

CY < - A0

A7 < - A0

16) RAR

A(n-1) < - A(n)

A7 < - CY

CY < - A0

Chú ý: R=Rotube (quay dịch)

Nhóm lệnh thực hiện các phép

tính số học

1) ADI data8 Cộng số học với

data8

(Acc) < - (Acc)+data8

2) ADD r Cộng số học với r

(Acc) < - (Acc)+r

3) ADD M Cộng số học với

HL (Acc) < - (Acc)+((HL))

4) ADC data8 Cộng số học với

data8 có sử dụng nhớ (Acc)< - (Acc)+data8+(CY)

5) ADC r Cộng số học với r có

sử dụng nhớ (Acc) < - (Acc)+r+(CY)

6) ADC M Cộng số học với

HL có sử dụng nhớ (Acc)< - (Acc)+(HL)+(CY)

7) SUI data8 Trừ số học với

data8 (Acc) < - (Acc)-data8

8) SUB r Trừ số học với r

(Acc) < - (Acc)-r

9) SUB M Trừ số học với HL

(Acc) < - (Acc)-((HL))

10) SBI data8 Trừ số học với

data8 có sử dụng nhớ (Acc)< - (Acc)-data8+(CY)

11) SBB r Trừ số học với r có

sử dụng nhớ (Acc) < - (Acc)-r+(CY)

12) SBB M Trừ số học với HL

có sử dụng nhớ (Acc)< - (Acc)-(HL)+(CY)

13) INT r Tăng r lên 1 đơn vị

(r) < - (r)+1

14) INX rp Tăng rp lên 1 đơn

vị

(rp) < - (rp)+1

15) INT M Tăng HL lên 1 đơn

vị

(HL) < - (HL)+1 Chú ý: (13,14&15) Các lệnh trên dùng để tạo bộ dếm

16) DCR r Giảm r đi 1 đơn vị

(r) < - (r)-1

17) DCX rp Giảm rp đi 1 đơn

vị

(rp) < - (rp)-1

18) DCR M Giảm HL đi 1 đơn

vị

(HL) < - (HL)-1

Nhóm lệnh thực hiện rẽ nhánh

chơng trình 1) JMP addr16 Lệnh nhảy (rẽ

nhánh) không điều kiện (PC) < - (byte3)(byte2)

2) J<Đ/k> addr16 Lệnh nhẩy

có điều kiện

<Đ/k> (sử dụng 4 cờ trạng thái)

có thể là:

Z: (Sử dụng cờ Zero)

Z = 1 thì rẽ nhánh

Z = 0 thì bỏ qua lệnh này NZ: (Không có cờ Zero) C: (Sử dụng cờ Carry)

C = 1 thì rẽ nhánh

C = 0 thì bỏ qua lệnh này NC: (Không có cờ Carry) P: (Sử dụng cờ Parity)

P = 1 thì rẽ nhánh

P = 0 thì bỏ qua lệnh này NP: (Không có cờ Parity) S: (Sử dụng cờ dấu Sign)

S = 1 thì rẽ nhánh

S = 0 thì bỏ qua lệnh này NS: (Không có cờ dấu Sign) Chú ý: Đối với hệ vi xử lý 8bit Intel sử dụng 5 cờ

3) CALL addr16 Lệnh gọi

CALL ((SP)-1) < - (PCH) ((SP)-2) < - (PCL) (SP) < - (SP)-2 (PC) < - (Byte3)(Byte2) RET Lệnh quay trở lại lệnh gọi thực hiện công việc tiếp ngay sau lệnh gọi RET thực hiện 3 thao tác

(PCL) < - ((SP)) (PCH) < - ((SP)+1) (SP) < - ((SP)+2) MODUL:

Lệnh đầu

RET

+ a) Cấu trúc lệnh gọi CALL

Main Program

CALL Modul1

Modul1:

RET Chú ý: Cất giữ thông tin trạng thái vào Stack Stack là một phần của bộ nhớ RAM Thông tin ở

Trang 3

Stack cất giữ ở LIFO -> để quản

lý nó -> có con trỏ SP

Đối với hệ 8bit (SP) trỏ vào đỉnh

Stack

Đỉnh Stack: Phát triển về phía

địa chỉ thấp khi lu giữ thông tin

trạng thái

Phát triển về phía

địa chỉ cao khi khôi phục thông

tin trạng thái

4) PUSH PSw Lệnh cất giữ

trạng thái PSw

((SP)-1) < - (A)

((SP)-2) < - (F)

(SP) < - (SP)-2

5) PUSH rp Lệnh cất giữ trạng

thái rp

((SP)-1) < - (rpH)

((SP)-2) < - (rpL)

(SP) < - (SP)-2

6) POP PSw Lệnh khôi phục

(lấy lại trạng thái) PSw

(F) < - (SP)

(A) < - ((SP)+1)

(SP) < - ((SP)+2)

7) POP rp Lệnh khôi phục

(lấy lại trạng thái) rp

(rpL) < - (SP)

(rpH) < - ((SP)+1)

(SP) < - ((SP)+2)

8) C<Đ/k> addr16 Lệnh gọi

CALL có điều kiện

<Đ/k> là: Z, C, P, S

Ngoài ra còn có:

R<Đ/k> addr16 Lệnh quay trở

lại lệnh gọi thực hiện công việc

tiếp ngay sau lệnh gọi với <Đ/k>

là: NZ, NC, NP, NS

IV) Chơng trình LEV85

Mục lục:

Bài 1.85 (Thu số liệu)

Bài 2.85 (Chuyển mảng)

Bài 3.85 (Ghép hai số BCD)

Bài 4.85 (Khoá điện tử)

Bài 5.85 (Cộng 2 số 2 byte)

Bài 6.85 (Trừ 2 số 2 byte)

Bài 7.85 (Chơng trình đổi mã

BIN -> HEX)

Bài 1.85 (Thu số liệu)

thu_so_lieu: ; Tên ch/trình

; -; Khai khai báo

; -port_in = 00 h

error ds 1

data_exit ds 1

; -; Phần chơng trình chính

; -org 0080h ; Ch/tr bắt đầu từ

địa chỉ 0080h loop:

in port_in cpi 00h

jz no mvi a,0ffh sta data_exit cma

sta error jmp loop no:

mvi a,0ffh sta error cma sta data_exit

Chú thích: Chơng trình trên khi

chạy sẽ báo:

PC Overflow, go top Press any key to continue

+ Để chơng trình không báo

dòng lệnh trên thêm dòng sau vào cuối chơng trình chính: jmp loop

Bài 2.85 (Chuyển mảng)

chuyen_mang:

; -; Phần khai báo

; -s_size = 0fh ; Kích thớc

mảng source = 2000h ; destination = 2100h ; co_chuyen_m ds 1 ; Cờ báo

chuyển mảng xong

; -; Phần chơng trình chính

lxi b,source ; BC trỏ mảng

nguồn lxi d,destination ; DE trỏ

mảng đích mvi l,s_size ; l bộ đệm mvi a,00h ;

sta co_chuyen_m ; Bật cờ

chuyển mảng

; -loop: ; lặp lại vòng này

s_size lần ldax b ;

stax d ; dcr l ;

jz xong inx b ; inx d ; jmp loop xong:

mvi a,0ffh ; sta co_chuyen_m ; Bật cờ

chuyển mảng

Chú thích:

Bài 3.85 (Ghép hai số BCD)

ghep_2so_bcd:

; -; Phần khai báo

; -port_0 = 00h ;

port_1 = 01h ; buffer = 2000h ; Kích thớc

buffer b_size = 0fh ;

co_accumulation ds 1 ; mang ds 2 ;

; -; Phần chơng trình chính

org 0000h ;

start:

mvi c,b_size ; lxi h,buffer ; HL trỏ tới

mảng buffer mvi a,00h ;

sta co_accumulation ; Gắn

cờ hiển thị giá trị = 00h loop:

in port_0 ; Nhận chữ số

hàng đơn vị ani 0fh ; Lọc 4 bit cao mov b,a ; Cất vào b

in port_1 ; Nhận chữ số

hàng chục ani 0fh ;

ral ; Dich trái 4 lần ral

ral ral ora b ; mov m,a ; Cất vào buffer sta co_accumulation ; Bật cờ hiển thị giá trị hiện hành inx h ;

dcr c ; jnz loop

Chú thích:

Bài 4.85 (Khoá điện tử)

khoa_dt:

; -; Phần khai báo

; -stack = 3000h ; Đỉnh ngăn

xếp port_status = 01h ; port_ascii = 00h ; bao_dong ds 1 ; Cờ báo động mo_cua ds 1 ; Cờ mở cửa cap_khoa ds 1 ;

Trang 4

; -; Phần chơng trình chính

lxi sp,stack ;

lxi h,key ; Bảng mã khóa

mvi b,03h ;

mov a,b ;

sta cap_khoa ;

mvi a,00h ;

sta bao_dong ;

sta mo_cua ;

nextIn:

call ban_phim ; Đọc trạng

thái bàn phím ani 7fh ; Loại bit Parity cua

ma ASCII cmp m ; So sánh với

mã khoá

jnz pick ; Báo động nếu

Acc<>M inx h ;

lda cap_khoa ;

dcr a ;

sta cap_khoa ;

dcr b ; Giảm số đệm

1 đơn vị

jnz nextIn ;

openIt:

mvi a,01h ;

out 6eh ; Mở cửa

mvi a,0ffh ;

sta mo_cua ; Bật cờ mở cửa

hlt ;

pick:

mvi a,01h ;

out 6fh ; Báo động

mvi a,0ffh ;

sta bao_dong ; Bật cờ

báo động hlt ;

ban_phim:

;in port_status ; Đọc trạng

thái của bàn phím

;ani 01h ;

;jz ban_phim

in port_ASCII ; Đọc mã

bàn phím ret

; -Key:

db 30h ; Bảng mã khoá

db 31h

db 32h

db 33h

db 34h

db 35h

db 36h

db 37h

db 38h

db 39h

Chú thích:

Bài 5.85 (Cộng 2 số 2 bytes)

cong_nbyte:

; -; Phần khai báo

org 0100h ;

n EQU 2 ;

nb db n ; Kích thớc buffer tong dw 0000h ; Buffer

chứa tổng so_hang1 dw 01ffh ; Buffer

chứa số hạng thứ nhất so_hang2 dw 0101h ; Buffer

chứa số hạng thứ hai ket_thuc db 00h ; Cờ báo

kết thúc phép cộng

; -; Phần chơng trình chính

org 0000h ;

start:

lxi d,tong ; DE trỏ tới

buffer chứa tổng lxi b, so_hang1 ; DE trỏ tới

buffer chứa số hạng 1 lxi h, so_hang2 ; DE trỏ tới

buffer chứa số hạng 2 xra a ; Xoá CY

loop:

ldax b ;Lấy 1 byte số hạng 1 adc M ; Cộng với 1 byte

số hạng 2 stax d ; Chuyển kết quả

vào buffer tổng lda nb ;

dcr a ; sta nb

jz xong ; Nếu cộng xong

thì bật cờ kết thúc inx b

inx d inx h jmp loop xong:

mvi a,0ffh sta ket_thuc ;

Chú thích:

Bài 6.85 (Trừ 2 số 2 bytes)

Tru_nbyte:

; -; Phần khai báo

org 0100h ;

n EQU 2 ;

nb db n ; Kích thớc buffer hieu dw 0000h ; Buffer

chứa hiệu so_bi_tru dw 05ffh ; Buffer

chứa số bị trừ so_tru dw 0101h ; Buffer

chứa số trừ ket_thuc db 00h ; Cờ báo

kết thúc phép trừ

; -; Phần chơng trình chính

org 0000h ;

start:

lxi d,hieu ; DE trỏ tới

buffer chứa hiệu lxi b, so_bi_tru ; DE trở tới

buffer chứa số bị trừ lxi h, so_tru ; DE trở tới

buffer chứa số trừ xra a ; Xoá CY

loop:

ldax b ; Lấy 1 byte số bị trừ sbb M ; Trừ đi 1 byte số trừ stax d ;Chuyển kết quả

vào buffer hiệu lda nb ;

dcr a ; sta nb

jz xong ; Nếu cộng xong

thì bật cờ kết thúc inx b

inx d inx h jmp loop xong:

mvi a,0ffh sta ket_thuc ; hlt ; Dừng

Chú thích:

Bài 7.85 (Chơng trình đổi mã

BIN -> HEX) Bin_Hex:

; -; Phần chơng trình: ch.tr này

; đổi ma Bin 8bit thành 2 byte

; ma Hexa đợc mã hoá bằng

; mã Ascii

org 0000h ;

start:

mvi a,n ; n giá trị byte

nhị phân cần chuyển mov c,a ; cất số nhị phân vào c ani 0f0h ; Lọc lấy

4 bit cao trớc rrc ; Dịch 4 bit cao tới

vị trí 4 bit thấp rrc

rrc rrc cpi 0ah ; Xem có phải số

từ 0 đến 9 không?

jc so_thap_phan_cao ; phải ->

xử lý adi 07h ; Không phải thì là

A -> F: cộng 07h nữa

để đổi ra mã Ascii so_thap_phan_cao:

Trang 5

adi 30h ; Cộng 30h

để chuyển mã Ascii

sta hex_cao ; Cất vào byte

Hex_cao mov a,c ; Xử lý tiếp

byte Hexa thấp

ani 0fh

cpi 0ah

jc so_thap_phan_thap

adi 07h ;

so_thap_phan_thap:

adi 30h ;

sta hex_thap ; Cất vào byte

Hex_thap hlt ; Dừng chơng trình

; -; Phần khai báo

; -bin db 25h ;

n EQU 25h ;

hex_cao db 00h ;

hex_thap db 00h ;?

; code_seg ends ; Dòng

mang lệnh

; data_seg segment public

; public thong_bao

; thong_bao db 'HeLLo !

',0dh,0ah,00h

db 0dh,0ah,00h

; data_seg ends

; end test_write_decimal

; Kết thúc ch.tr chính Hex -> Bin

V) Thiết kế hệ thu tin đa kênh

1) Nhiệm vụ hệ thống:

- Thiết kế hệ thu tin 6 kênh

- Dạng tín hiệu từng kênh: xung

điện áp

- Tham số tín hiệu:

+ Độ rộng xung: ngẫu nhiên

+ Thời điểm x/h: ngẫu nhiên

- Chức năng:

+ Thu và xử lý dữ liệu

+ Hiển thị đợc nội dung trên

một dàn đèn hiển thị 6 chữ số

thập phân bằng mã 7 đoạn

- Bàn phím: Có chức năng chỉ thị

cho chơng trình về kênh cần đợc

hiển thị

2) Tổ chức phần cứng của hệ

thống:

a) Lựa chọn ph ơng án: Sử dụng

hệ VXL 8bit Intel

b) Sơ đồ chức năng:

- Hệ vi xử lý:

0 CS A8

A9 D7-D0

Bộ AD7-AD0Chốt A7-A0

Intel

D7-D0

R D IO/

M

A7-A0

W R

A7-A0: Địa chỉ hoá cho RAM A9-A0: Địa chỉ hoá cho ROM Chú ý: Phân biệt A1-A0 với D7-D0

- Sử dụng chốt với tín hiệu ALE Phân biệt ROM - RAM

- Sử dụng dãy địa chỉ thừa tiếp theo nó A10 -> CS

Tạo CS ROM Tạo CS

RAM

- A10 = 0 - A10 = 1

- IO/M = 0 - IO/M = 0

- R D = 0 - R D = 0

(hoặc W R ) c) Ngoại vi:

* Hệ thu 6 kênh +Vcc

Ko In5Out5

K5 In5Out5

Reset

Lập trạng thái ban đầu đ/k từ CPU

- FLOPSI cổng vào các kênh

- FLOPSO cổng ra các kênh

* Hệ hiển thị nội dung kênh TT

- Dùng chung

- Có 6 chữ số thập phân

N5 N4 N3 N2 N1 N0

D0 BCD 7Seg

DVAL D

0 Giải

D

3 cấp

D

5 chốt

DPOS D5 D3 D0 Kênh DATA BUS Cổng ra

DPOS DCLK

* Bàn phím: D0 D5

Vcc

R R R R R R K0 In0Out0

0 K2 Chốt Data

K4 K5 In5Out5

SELECT (Cổng vào)

Tích cực ‘0’ Thụ động ‘1’

* Tạo địa chỉ cho ngoại vi:

DEMULTIPLEXER 155 IO/ M

W R

Từ CPU

R D

A8 A9 155/2 A B E1 E2 B A E1 E2

Đ/cVào Đ/c Ra Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 FLOPSI DCLR DPOS SELECT FLOPSO

DVALUE

Đ/c(00h) Đ/c(00h)

Đ/c(01h) Đ/c(01h)

DPOS

Đ/c(02h)

DVALUE

Đ/c(03h)

3) Xây dựng phần mềm điều

khiển

a) Thuật toán:

Bàn phím Cấp số N5 Cấp sô N4

Thu và xử lý Cấp số N3 thông tin của các kênh

Cấp số N0 Cấp số N1 Cấp số N2

b) L u đồ thuật toán tổng quát:

START Thu TT 6 đầu thu

Xử lý

No N=6? Yes

Xử lý tiếp Kiểm tra Hiển thị cấp bàn phím

số tơng ứng

Trang 6

c) Xây dựng ch ơng trình:

Reset ; Lập trạng thái ban đầu

Loop:

Call Count

Call Displ

Jmp Loop

d) Khai triển:

Thu_tin_6_kenh:

; -; Phần khai báo

; -Ram = 0400h

Cntr0 = Ram

Pointer = Cntr0 + 4*6

Channel = Pointer + 1

Next = Pointer + 2

Select = 00h

Dclr = 00h

Flops = 01h

Dpos = 02h

Dvalue = 03h

; -; Phần chơng trình chính

Org 0000h

Reset:

Lxi SP,Ram + 128 ; Stack

Lxi H,Ram

Mvi C,80h

Xra A ; A = 0

Loop1:

Mov M,A

Inx H ; Sau mỗi lần tăngH lên 1

Dcr C

Jnz Loop1

; -Loop:

Call Count

Call Displ

Jmp Loop

; -Chú thích:

RAM

SP

Next

Vùng tự do

Channel

Pointer

Cờ tràn

Cờ tràn

(0400h)

L

u đồ thuật toán

thu 6 kênh Loop

Loop:

Thu 6 kênh (1)

Dịch

(LSB) > (SY) (2)

Cộng tích luỹ vào vùng RAM

6 kênh ? RET

Count:

; -; Phần tơng ứng với (1)

In Flops ; (Acc) <- 6 kênh Mov B,A ; (B) <- Acc)

{tạm giữ}

Cma ; (Acc) <- (Acc) Out Flops ; Ra reset của Triger Xra A ;

Cma ; (A) <- FFh Out Flops ; Reset <- 1

Mvi C,6 ; Đặt C làm bộ đếm lùi

bắt đầu từ 6 Lxi H,Cntr0 ; Chuẩn bị cho

vòng lặp tiếp theo Loop2:

; -; Phần tơng ứng với (2)

Mov A,B ; (Acc) <- B Rrc ; (LSB) -> CY Mov B,A ; (B) <- (Acc)

Mvi A,00h ; (Acc) <- 0 Adc M ;(Acc)<-(Acc)+HL+CY

Cộng CY với R Daa

Mov M,A ; (HL) <- (Acc) Inx H ; Tăng HL

Byte đánh dấu

xử lý xong một kênh

Mvi A,00h

Adc M Daa Mov M,A Inx H

Mvi A,00h

Adc M Daa Mov M,A Inx H

; -; Xử lý Byte cờ

Mvi A,00h

Ral ; (Acc) <- (Acc) + CY Mov M,A ; Chuyển đến Byte cờ Inx H ; Tăng HL 1 đơn vị Dcr C ; Kiểm tra C có còn > 0 ?

Jnz Loop2 ; Nếu C<>0 thì tiếp

tục vòng lặp RET ; Nếu C = 0 thì

nhẩy đến RET Chú thích:

Chơng trình hiển thị DISPLAY

Tìm nội dung con trỏ Poiter

= 6 ? hiển thị

Tìm byte Poiter = 0 dữ liệu

Nửa thấp Đọc TT đ/khiển

từ bàn phím Dịch trái 4bit

Tính giá trị Hiển thị Channel

Poiter + 1

Table: ; Bảng mã TT dùng

đ.khiển cấp số trực tiếp

db 01h

db 02h

db 03h

db 04h

db 08h

db 10h

db 20h Displ:

Lda Pointer ; (Acc) <- Poiter Cpi 06 ; So sánh với 6

Jnc Switch ; Công tắc đảo mạch

bàn phím Mov B,A ; (B) <- (Acc) Ana A ; Hạ cờ CY Rar ; Chia 2 {dịch phải chia

2 không lấy d Push Psw ; Cất Acc và F

vào Stack Lhld Channel ; (HL) <-Channel Mov E,A; Cộng số gia

của buffer Mov D,0 ;

Pop Psw ; Mov A,M ; Đây là byte dữ liệu Jnc Wait

Rar ; Dịch phải 4 bit Rar

Rar Rar Out: ; Hiển thị Mov C,A ; (C) <- Giá trị

cần hiển thị Xra A ; (A) <- 0 {cho A=0}

Trang 7

Out Dclr ; Đặt trạng thái

ban đầu Mov A,C ; (Acc) <- C

{Giá trị cần hiển thị}

Out Dvalue ; Mở cổng BCD

để sang 7 Sement Mov A,B

Lxi D,Table ; Cặp thanh ghi DE

trỏ tới Table Add E ; Lu giá trị Poiter + 1

Mov E,A

Ldax D

Out Dpos ; Mở cổng Dpos

Mov A,B

Sta Pointer ; Cất giá trị

vào ngăn nhớ Ret

Wait:

Nop

Jmp Out

VI) Phụ lục IV Một số điều về

hệ vi xử lý 8 bit Intel

1) Cách bố trí các thanh ghi cờ

trong hệ VXL 8Bit

N0

Chú thích:

+ C: Cờ nhớ (Carry)

+ P: Cờ chẵn lẻ (Parity)

+ AC: Cờ nhớ phụ

+ Z: Cờ rỗng (Zero)

+ S: Cờ dấu (Sign)

2) Acc(Accumalator):

Thanh chứa toán hang 1 (Nơi

chứa các kết quả trung gian và

cuối cùng)

- Thanh ghi mã lệnh IR

(Inetruction Regiveter) dùng để

chứa mã lệnh

- W, Z dùng để chứa các địa chỉ

16bit của các lệnh 3 byte

- B, C, D, E, H, L là các cặp

thanh ghi đa năng:

Khi sử dụng riêng (B hoặc D)

-> 8bit

Khi sử dụng theo cặp (HL

hoặc BC) -> 16 bit

3) Điều khiển:(ký hiệu viết tắt)

IO/ M(Phân biệt việc quy chiếu

tới cổng vào ra hay IO tới bộ nhớ

trung tâm M

S1, S0 (Trạng thái chu kỳ máy)

X1, X2(Phần tử tạo nhịp thời

gian hoạt động (TA))

CLX(Tín hiệu nhịp cho các

thành phần tạo sự đồng bộ)

RESET (IN,OUT) Đặt chế độ ban đầu

HOLD, HODA (Dùng để chạy chế độ truy nhập trực tiếp) 4) Chu kỳ máy:

OF (Gọi lênh) MR(Đọc th.tin) IOR(Đọc th.tin) MW(Ghi th.tin) IOW(Ghi th.tin) INA(Trả lời ngắt) và HAL (Dừng ch.trình)

Kết thúc phần Hệ vi xử lý 8bit Intel (sử dụng chip 8085)

Chúc các bạn đạt đợc kết quả tốt

nhất môn Vi xử lý Tôi hi vọng rằng chúng ta không phải

gặp nhau trong lợt về Lớp B2 - Khoá 2 Khoa Công nghệ thông tin Trờng Đại học dân lập Đông Đô

Hệ vi xử lý 8 bit Intel

Ngày đăng: 13/05/2016, 13:32

TỪ KHÓA LIÊN QUAN

w