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

Mô phỏng vi Điều khiển

243 0 0
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

Tiêu đề Mô Phỏng Vi Điều Khiển
Tác giả Trần Nguyễn Độ
Người hướng dẫn Nguyễn Đình Phú
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Điện - Điện Tử
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2003
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 243
Dung lượng 20,99 MB

Nội dung

Các chân của port này vó 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: Các ngõ tín hiệu điều khiển: +» Ngõ tín hiệu PSEN Prog

Trang 1

BO GIAO DUC VA DAO TAO

TRUONG DAI HOC SU’ PHAM KY THUAT

THÀNH PHÓ HÒ CHÍ MINH

HGMUIIE

ĐỎ ÁN TÓT NGHIỆP

NGÀNH LUẬN VĂN TÓT NGHIỆP

MO PHONG VI DIEU KHIEN

GVHD: NGUYEN DINH PHU SVTH: TRAN NGUYEN DO

Trang 2

Giáo viên hướng dẫn: Nguyễn Đình Phú

§Ñ 0011 binh viên thực hiện : Trần Nguyên Độ

——————"®'šể : 01301021

TP.HCM, Tháng 7 năm 2003

Trang 4

Bộ Giáo Dục Và Đào Tạo Cộng Hòa Xã Hội Chủ Nghĩa Việt Nam Trường Đại Học Sư Phạm Kỹ Thuật Độc Lập - Tự Do - Hạnh Phúc

Giáo viên hướng dẫn : NGUYÊN ĐÌNH PHÚ

6 Ngày giao nhiệm vụ :

7 Ngày hoàn thành nhiệm vụ :

Giáo viên hướng dẫn kí tên Thông qua bộ môn

Trang 5

NHAN XET CUA GIAO VIEN HUGNG DAN

Se ie Se I I GLE wale sae ae wo

Trường ĐHSPKT,Ngày thing nam 2003

Giáo viên hướng dẫn

Trang 6

Đại Học Sư Phạm Kỹ Thuật CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Khoa Điện - Điện tử Độc lập - Tự do - Hạnh phúc

8 Để nghị x Bố sung đế được báo vệ Không được bảo vệ

9 Các câu hỏi sinh viên phải trả lời trước hội đồng

Trang 7

LOT CAM TA

uốn tuận edn nay duge hoàn thành: tốt đẹp

theo ding thời gian quy dinh eta trường (Uiệc đạt được kết quá như trên kítông ch là sự nỗ lực cha sinh siðm tite hign ma eon se giip dé, luténg dan lận tình của gián oièn luướng dẫu, qj thay eô oà eae ban doug khoa

Sinh vin Nuge hi¢u win chan thinh canton

quj Thiy €6 Tntony Dai Woe Su Pham Ky

Thugt da eamy edp nhimg kién thite bé ich vé

ehuyén min eiing ulut vit hbi Dade biệt sinh vien Mute hién xin etm on tin Nguyén Dinh Dui da

mệt tinh luting din hi GE trong qui tink tate tiên để ám

Quối eiiny sinh vién Huge hign xin chan thanh säm on dén Ba Me oa Anh Chi, da vit wute lo

tiíng à động vien “uyên suốt trottg qua tinh hoe

Trang 8

CHUONG I: KHAO SAT VI DIEU KHIEN AT89CS 3

1 Giới Thiệu Cấu Trúc Phần Cứng Họ Mcs-51 (8951): 3

2 Khả Sơ Đồ Chân, Chức Năng Từng Chân Của IC 895 5

Cho Timer Tmod

3 Thanh Ghi Diéu Khién Timer Tcon (Timer Control Register

IV Tập Lệnh Của 8951

1 Các Kiểu Định Địa Chỉ Của Bộ Nhớ Để Lấy Dữ Liệu

( Addressing Mode ) :

2 Các Nhóm Lệnh Của 8951

CHƯƠNG II : SƠ ĐỒ KHỐI VÀ CHƯƠNG TRÌNH

I Sơ Để Khối Và Phương Án Giải Quyết :

KẾT LUẬN VÀ HƯỚNG PHÁT TRIEN

TÀI LIỆU THAM KHẢO

PHỤ LỤC A GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH DELPHI

Trang 10

Đồ Án Tốt Nghiệp MÔ PHÒNG VI ĐIỀU KHIỂN

Chương I: DẪN NHẬP

lL GIỚITHIỆUĐÊTẦI:

Ngày nay, như chúng ta thấy từ các thiết bị điện tứ dân dụng đến các dây

chuyển sắn xuất lớn trong công nghiệp đều sử dụng các vi mạch lập trình hoặc các

bộ điều khiến láp trình để d khiển hệ thống Một trong những vi mạch có khả năng lập trình được sử dung phố biến nhất hiện nay đó là họ vi điều khiển MCS-51

do hang Intel che tao

Các bộ điều khiển sứ dụng ví điều khién tuy don gidn nhung để vận hành và

at phức tap Phan cong việc xử lý chính vẫn phụ thuộc vào con người, đó c ä chương trình hay phần mễm Tuy chúng ta thấy

cúc máy tính ngày nay cực kỳ thong minh, gidi quyết các bài toán phức tạp trong vài phần tỉ giây, nhưng đó cũng là dựa trên sự hiểu biết của con người Nếu không

có sự tham gia của con người thì hệ thống ví điều khiển cũng chỉ là một vật vô tri

Do vậy khi nói đến vi điều khiến cũng giống như máy tính bao gồm 2 phần là phần

cứng và phần mềm Nhưng để hiểu rõ phần cứng (cấu trúc bên trong) và phần mềm

(tập lệnh) của vỉ điều khiển đối với người mới bắt đầu thì phải tốn rất nhiều thời gian học tập và nghiên cứu

Đối với người bất đầu bọc thì việc viết chương trình sai là điểu không thể tránh khổi do họ chưa biểu rõ cấu trúc phần cứng, cách thức lập trình cũng như chức

năng từng lệnh của vi điều khiển Mà khi muốn học tập thì điểu trước tiên là phải

thiết kế phần cứng để sau khí viết chương trình xong, nạp vào vĩ điều khiển và cho mạch chạy thử mới kiểm chứng được kết quả Đây là khó khăn cơ bản nhất cho người học nếu họ muốn viết nhiều chương trình nhằm nâng cao khả năng lập trình

cho vi điêu khiển Băn khoăn từ khó khăn trên nên tôi nảy sinh ý tưởng : "MO

Phong Vi Điều Khiển” nhằm giúp người học khắc phục những khó khăn đó

Để nghiên cứu về vi “iểu khiển, công việc đầu tiên của người học là cần

phải thiết kế phần cứng cho ứng dụng sau đó tiến hành viết chương trình, biên dịch,

nạp vào bộ nhớ của vỉ điều khiển và gắn vào phần cứng cho chạy thử Nếu chương

trình chạy đúng thì việc học tập là tốt, nhưng nếu chương trình chạy sai hoặc không, chạy thì người học lại phải sửa chương trình và nạp lại cho đến khi nào chương trình

chạy đúng Đối với việc học tập và nghiên cứu như vậy thì mỗi khi thiết kế một ứng

dụng, người học cần phải thiết kế phần cứng và phải có một bộ nạp để nạp chương trình Điều này làm cho việc học tập và nghiên cứu khá khó khăn Với mong muốn

vử dụng được lại là một điều r

Trang 11

Đồ Án Tốt Nghiệp MO PHONG VI ĐIỀU KHIỂN

giúp những người mới bắt đầu học có thể nhìn thấy rõ ràng cách thức xử lý của từng lệnh và kết quả của cả chương trình_điều này giúp người học tiếp thu nhanh, viết

các chương trình chính xác hơn và có thể kiểm chứng kết quá sau khi viết chương

trình mà không cần phải nạp vào vi điều khiển để kiểm chứng

I GIGLHAN DE TAL:

Do kiến thức về chuyên môn và thời gian còn hạn nên còn một số vấn để

chưa giải quyết hết như : ngất ngoài, ngắt trong, hoạt động của timer

IV, PHƯƠNG ÁN THỤỰC HIỆN:

Để chuyển ý tướng "Mô Phống Vĩ Điều Khiển” thành hiện thực, trong quá

trình bọc tập, tôi đã nghiền cứu một vài ngôn ngữ lập trình Nhưng để nắm một vách hệ thông một ngôn ngữ thì inất rất nhiều thời gian Vì vậy, đối với sinh viên guảnh kỹ thuật để học nhanh láp trình trực quan thì lựa chon phù hợp nhất đó là

Đetphi, Vì ngôn ngữ này được xáy dựng trên nên Pascal hướng đối tượng mà sinh

viên đã được học trong nhà trường

Vì vậy trong dé tai này tôi chọn ngôn ngữ Delphi để chuyển ý tưởng thành

Trang 12

Đồ Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

CHƯƠNG II : KHẢO SÁT VI ĐIỀU KHIỂN AT89C51

I GIỚI THIỆU CẤU TRÚC PHẦN CỨNG HỌ MCS-5I (8951):

điều khiển, Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được

thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội Tập lệnh

cùng cấp một bắng tiện dung của những lệnh số học 8 Bit gdm cả lệnh nhân và

lệnh chia Nó cung cấp những hỗ trợ mở rộng trên Chip dùng cho những biến một Bít như là kiểu dữ bệu riêng biệt cho phép quần lý và kiểm tra Bit trực tiếp trong

điểu khiển và những hệ thống logic đói hồi xử lý luận lý

ATS9CSI là một vị điều khiến Bít, chế tạo theo công nghệ CMOS chất cao, công suất thấp với 4 KBytes PEROM (Flash Programmable and Erasable read only Memory) Thiết bị nay duge chế tạo bằng cách sử dụng bộ

nhớ không bốc hơi mật độ cao của ATMEL và tương thích với chuẩn công nghiệp MCS-5I về tập lệnh và cá n ra PEROM ON-CHIP cho phép bộ nhớ lập trình được lập trình trong hệ thống hoặc bởi một lập trình viên bình thường Bằng

cách kết hợp một CPU 8 Bít với một PEROM trên một Chip đơn, ATMEL

AT§9C5I là một vi điều khiến mạnh (có công suất lớn) mà nó cung cấp một sự linh động cao và giải pháp về giá cá đối với nhiều ứng dụng vi điều khiển

AT89C51 cung cấp những đặc tính chuẩn như sau: 4 KB bộ nhớ chỉ đọc có

thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường LO, 2 TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp

bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP Thêm

vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tân

số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiệm công suất, chế

độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter,

port nối tiếp và hệ thống ngắt tiếp tục hoạt động Chế độ giảm công suất sẽ lưu nội dung RAM nhưng sẽ treo bộ dao động làm mất khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống

Các đặc điểm của 8951 được tóm tắt như sau:

© 4KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xoá

$$ Tần số hoạt động từ: 0Hz đến 24 MHz

3 mức khóa bộ nhớ lập trình

Trang 13

Đề Án Tốt Nghiệp MO PHONG VI DIEU KHIEN

® 26 Timer/counter 16 Bit

® 128 Byte RAM ndi

© 4 Port xuat /nhap V/O 8 bit

® Giao tiếp nối tiếp

Trang 14

Đề Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

2 Khảo Sát Sơ Đồ Chân, Chức Năng Từng Chân Của IC 8951:

P1.3

PI.2 Pit Pile

28n15

it

Pog peas

2612 P2.5 | ẤP

B Chức Năng Các Chân Của 8951:

AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập Trong

đó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có

thể hoạt động như đường xuất nhập hoặc như đường điểu khiển hoặc là thành

phần của các bus dữ liệu và bus địa chỉ

Các Port:

> Port 0:

Port 0 là port có 2 chức năng ở các chân 32 - 39 của 8951 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 IO Đối

với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và

Trang 15

Đề Ấn Tốt Nghiệp MO PHONG VI ĐIỀU KHIỂN

Port 1 là port IO trên các chân 1-8 Các chân được ký hiệu P1.0, PI.1, P1.2,

có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port I 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ị bên ngoài

Port 2:

Port 2 là 1 port có tác 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 bị dùng bộ nhớ

mở rộng

s PorL3;

Port 3 la port có tác dụng kép trên các chân 10-17 Các chân của port này

vó 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:

Các ngõ tín hiệu điều khiển:

+» Ngõ tín hiệu PSEN (Program store enable):

e PSEN 1a tin hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nói đến chân OE\ (output enable) của Eprom cho phép đọc các byte mã lệnh

e_ PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh Các

mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 8951 để giải mã lệnh Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1

% Ngõ tín hiệu điều khiển ALE (Address Latch Enable):

e Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chí và bus dữ liệu do đó phải tách các đường dữ liệu và dia chỉ Tín hiệu ra ALE ở

chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ

liệu khi kết nối chúng với IC chốt

e Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động

« Các xung tín hiệu ALE có tốc độ bing 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phân khác của hệ thống

Chân ALE được dùng làm ngõ vào xung lập trinh cho Eprom trong 8951

Trang 16

Đề Án Tốt Nghiệp MO PHONG VI DIEU KHIEN

“ Ngo tin hiéu EA\(External Access) :

Tín hiệu vào EA\ ở chân 31 thường được mắt lên mức l hoặc mức 0 Nếu

ở mức 1, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte Néu ở mức 0, 8951 sé thi hành chương trình từ bộ nhớ mở rộng Chân EA\

được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8951

Các ngũ vào bộ giao động Xtall,Xtal2:

Bộ dao đồng được được tích hợp bên trong 8951, khi sử dụng 8951 người

thiết kế chí cẩn kết nối thém thạch anh và các tụ như hình vẽ trong sơ đồ Tân số

thách anh thường xử dụng cho 8951 là 12Mhz

Chan 40 (Vee) được nối lên nguồn SV

|

|

Trang 17

Đồ Án Tốt Nghiệp MO PHONG VI DIEU KHIEN

Bần đồ bộ nhớ data trên chip như sau:

2¢ [77 | 76 | 75 B0| B7] B6 | B5 [B4 ]B3|B2]BIB0| P.3 2D|6E |6E |6D

2c] 67] 66 | 65 AS|AF| Ac|A |AAlA9[As| IE

B 2B | 5F |5E |5D

2A | 57 | 56 |55 A0|A7[A6|A5|A4JA3|A2[AilAo| P2

29 |4F |4E|4D

28 |47 |46 | 45 99|_ không được địa chỉ hoá bit |SBUF

„27 |3F |3E|3D 98 | 9F [9 [9D [9c |ÐB|9A] 99 | 98 |sCON

21 [oF [oz [oD §B| không được địa chỉ hoá bit_ | TLI

20 | 07 | 06 | 05 8A|_ không được địa chỉ hoá bit | TL0 1F Bank 3 89| không được địa chỉ hoá bit |TMO

D

18 88 | 8F | 8E |8D | 8C |8B|8A | 89 | 88 [TCON

7 Bank 2 87|_ không được địa chỉ hoá bit |PCON

10

OF Bank 1 §3| không được địa chỉ hoá bit |DPH

08 82|_ không được địa chỉ hoá bit | DPL

0 Bank thanh ghi 0 81| không được địa chỉ hoá bit | SP

RAM Các thanh ghỉ chức năng đặc biệt

Trang 18

Đồ Án Tốt Nghiệp MÔ PHỎNG VI ĐIỀU KHIỂN

Bộ nhớ trong 8951 bao gồm ROM và RAM RAM trong 8951 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 bít, các bank thanh ghi và các thanh ghi chức năng đặc biệt

8951 có bộ nhớ 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 Chương trình và dữ liệu có thể chứa bên trong 8951

nhưng 8951 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu

Hai đặc tính cần chú ý la:

> Các thanh ghi và các port xuất nhập đã được định vị (xác định) trong

bộ nhớ và có thể 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 như trong

các bộ Microcontroller khac,

RAM ben trong 8951 dược Phan chia nhit sau:

¥ Cae bank thanh ghi o6 dia chi tit OOH d€n FH

¥ RAM dia chỉ hóa tưng bịt có địa chỉ từ 20H đến 2FH

Y RAM đa dụng từ 30H đến FH

* Các thanh ghí chức náng đặc biệt từ 80H đến FFH

“ RAM da dung:

Mặc dù trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H

đến 7FH, 32 byte dưới từ 00H đến 1FH cũng có thể dùng với mục đích tương tự

(mặc dù các địa chỉ này đã có mục đích khác)

Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu địa chỉ

trực tiếp hoặc gián tiếp

+ RAM cé thể truy xuất từng bit:

8951 chứa 210 bit được địa chí hóa, trong đó có 128 bịt có chứa các byte có

chứa các địa chỉ từ 20F đến 2FH và các bit còn lại chứa trong nhóm thanh ghỉ có chức năng đặc biệt

Ý tưởng truy xuất từng bit bằng phần mểm là các đặc tính mạnh của

microcontroller xử lý chung Các bit có thể được đặt, xóa, AND, OR, , với I

lệnh đơn Đa số các microcontroller xử lý đòi hỏi một chuổi lệnh đọc - sửa - ghi

để đạt được mục đích tương tự Ngoài ra các port cũng có thể truy xuất được từng

bit

128 bit truy xuat ting bit nay cing c6 thé truy xudt nhu cdc byte hoặc như

các bit phụ thuộc vào lệnh đưc dùng

2 Các bank thanh ghí:

32 byte thấp của bộ nhớ nội được dành cho các bank thanh ghi Bộ lệnh

8951 hỗ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định sau khi reset hệ

thống, các thanh ghi này có các địa chỉ từ 00H đến 07H

Các lệnh dùng các thanh ghỉ RO đến R7 sẽ ngắn hơn và nhanh hơn so với các lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này

Trang 19

Đổ Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi

được truy xuất bởi các thanh ghỉ RO đến R7 để chuyển đổi việc truy xuất các bank thanh ghi ta phải thay € bit chọn bank trong thanh ghi trang thai

Các thanh ghỉ có chức năng đặc bú

Các thanh ghi nội của 8951 được truy xuất ngâm định bởi bộ lệnh

Các thanh ghi trong 8951 được định dạng như một phần của RAM trên chip

vi vậy mỗi thanh ghỉ sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình

và thanh phi lệnh vì các thanh ghi nay hiếm khi bị tác động trực tiếp) Cũng như

RŨ đến R7, H951 có 2l thanh ghi có 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ú cả 128 địa chỉ từ #21 đến FIH không được định nghĩa, chỉ có 21 thanh

hị có chức nàng đặc biết được định nghĩa sẵn các địa chỉ

Ngoại trừ thánh ghi A có thể được truy xuất ngầm như đã nói, đa số các thành phí có chức năng đặc biết SFE có thể địa chí hóa từng bịt hoặc byte

PSW4 RS1 D4H Register Bank Select 1

PSW.3 RSO D3H Register Bank Select 0

00=Bank 0; address 00H+07H 01=Bank 1; address 08H+0FH

10=Bank 2; address 10H+17H

11=Bank 3; address 18H+1FH

Chức năng từng bịt trạng thái chương trình

® Co Carry CY (Carry Flag):

Trang 20

Để Áñ Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

Cờ nhớ có tác dụng kép Thông thường nó được dùng cho các lệnh toán

học: C=1 néu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược lại C= 0 nếu phép toán cộng không tràn và phép trừ không có mượn

© Cé Carry phu AC (Auxiliary Carry Flag):

Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC

được seL nếu kết quả 4 bịt thấp nằm trong phạm vi điều khiển 0AH+ 0FH Ngược lại AC=0

$ Cờ 0 (Flag 0)

Cờ 0 (EU) là 1 bít cũ đã dụng dùng cho các ứng dụng của người dùng

Nhitng bit chon bank thanh ghi tray xu

RSI va RSU quyết định dấy thanh ghỉ tích cực Chúng được xóa sau khi

© Coe tran OV (Over Flag):

Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự trần toán

học 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 có dấu được cộng bit OV được bỏ qua Các kết quả lớn hơn +127 hoặc nhỏ

hơn —128 thi bit OV = 1

© Bit Parity (P):

Bit tự động được set hay Clear 4 mỗi chu kỳ máy để lap Parity chan với

thanh ghi A Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẩn Ví dụ A chứa 10101101B thì bít P set lên một để tổng số bit 1 trong A và P

tạo thành số chẵn

Trang 21

Đổ Án Tốt Nghiệ| ghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

BiL Parity thường được dùng trong sự kết hợp với những thủ tuc cla Port

nối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu

Con wd Ngan xép SP (Stack Pointer):

Con t6 ngan xép la mot thanh ghi 8 bit 6 địa chỉ 81H Nó chứa địa chỉ của

via byte dử liệu hiện hành trên đỉnh Các lệnh trên ngăn xếp bao gồm

» (PUSH) va lấy dữ liệu ra khổi ngăn xếp (POP)

m táng SP trước khi ghi dữ liệu và lệnh lấy ra

găn xếp của 8031/8051 được giữ trong RAM nội

và 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 byte

Với lệnh trên thì ngăn xếp của 8951 chỉ có 32 byte vì địa chỉ cao nhất của

RAM trén chip 14 7FH Sd di gid ui SFH được nạp vào SP vì SP tăng lên 60H

trước khi cất byte dữ liệu

Khi Reset 8951, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu tiên sẽ

được cất vào ô nhớ ngăn xếp có địa chỉ 08H Nếu phần mềm ứng dụng không

khởi động SP một giá trị mới thì 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 các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc

truy xuất ngâm bằng lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở

về (RET, RETI) để lưu trữ giá trị của bộ đếm chương trình khi bắt đâu thực hiện chương trình con và lấy lại khi kết thúc chương trình con

s+ Con trỏ dữ liệu DPTR (Data Pointer) :

Con trồ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh

ghi 16 bit 6 dia chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao) Ba lệnh sau sé ghỉ 55H vào RAM ngoài ở địa chỉ 1000H:

Trang 22

MOV DPTR, #1000H MOV @DPTR, A Lệnh đầu tiên dùng để nạp 55H vào thanh ghi A Lệnh thứ hai dùng để nạp địa chỉ của ô nhớ cần lưu giá trị 55H vào con trổ dữ liệu DPTR Lệnh thứ ba

sẽ đi chuyển nội dung thanh ghi A (là 55H) vào ô nhớ RAM bên ngoài có địa chỉ chứa trong DPTR (là 1000H)

s* Cde thanh ghi Port (Port Register):

Các Pon của 8951 bao gồm Port0 ở địa chỉ 80H, Port! 6 địa chi 90H,

ở địa chỉ AOH, va Port3 6 dia chi BOH Tất cả các Port này đều có thể truy

bịt nền rất thuận tiện trong khả năng giao tiếp

Cae thanh ghi Timer (Timer Register):

S951 GO chifa hai bộ định thủu/bó đếm]6 bít được dùng cho việc định thời

được đếm sự kiện Timer) ở địa chỉ SAH (TLU: byte thấp) va 8CH (THO: byte cao), Timerl ở dia chi SBH (TL1: byte thấp) và 8DH (THI: byte cao) Việc khởi động timer được SET bởi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển Timer (TCON) ở địa chỉ 88H Chi c6 TCON được địa chỉ hóa từng bit

s* Các thạnh ghủ Port noi tiếp (Serial Port Register):

8951 chứa một Port nối tiếp 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 giao tiếp nối tiếp với các IC khác Một thanh ghi

đệm đử liệu nối tiếp (SBUF) ở địa chỉ 99H sẽdữ cẩhai dữ liệu truyền và dữ liệu nhập Khi truyền dữ liệu ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF Các mode

vận 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

+ Các thanh ghỉ ngắt (Interrupt Register):

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 bị reset hệ thống và sẽ được cho phép bằng việt ghi thanh ghi cho phép ngắt (IE) ở

địa chỉ A8H Cả hai được địa chỉ hóa từng bít

+* Thanh ghỉ điều khiển nguồn PCON (Power Control Register):

Thanh ghi PCON không có bit định vị Nó ở địa chỉ 87H chứa nhiều bit điều khiển Thanh ghỉ PCON được tóm tắt như sau:

© Bit 7 (SMOD): Bit c6 tốc độ Baud ở mode 1, 2, 3 ở Port nối tiếp khi

set

¢ Bit6,5, 4: Không có địa chỉ

e Bit 3 (GFI): Bit cờ đa năng 1

ø Bit2(GF0): Bit cờ đa năng 2

Trang 23

Đồ Án Tốt Nghiệp MÔ PHỎNG VI ĐIỀU KHIỂN

«BiLI` (PD): Set để khởi động mode Power Down và thoát để reset

« BiL0 (IDL): Set để khởi động mode Idle và thoát khi ngắt mạch hoặc reset

Các bit điểu khiển Power Down và Idle có tác dụng chính trong tất cả các

IC họ MSC-5I nhưng chỉ được thi hành trong sự biên dịch của CMOS

Il HOẠT ĐỘNG TIMEE CỦA 8951:

Timer là một chuỗi các Flip Flop được chia làm 2, nó

öL nguồn xung clock, xung clock được đưa vào Flip Flop thứ

xung clock của Flip Flop thứ hai mà nó cũng chia tần số clock này cho 2

và cứ tiếp tục,

nhần tín hiệu vào là

Vi mei ting kế tiếp chia cho 2, nén Timer n tầng phai chia tan số clock ngõ

vào cho 3“ Ngõ ra của táng 1 cùng lá clock của Flip Flop trần Timer hoặc cờ

mà nó kiểm tra bởi phần mềm huậc sinh ra ngất Giá trị nhị phan trong cdc FF của bộ Timer có thể được nghỉ như đếm xung clock hoặc các sự kiện quan trọng

bởi vi Timer dude khởi đóng Ví dụ Timcr 16 bít có thể đếm đến từ FFFFH sang

Trang 24

Đồ Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

Hình 1.9 : Biểu Đồ Thời Gian

Trong hình trên mỗi tầng là một EF loại D phú định tác động cạnh xuống

được hoạt động ở mode chia cho 2 (ngõ ra Q\ được nối vào D) FF cờ là một bộ

chốt đơn giản loại D được set bởi tầng cuối cùng trong Timer Trong biểu đồ thời

gian, tầng đầu đổi trạng thái ở 12 tần số clock, tâng thứ hai đổi trạng thái ở tần số

14 tần số clock Số đếm được biết ở dạng thập phân và được kiểm tra lại dễ dàng

bởi việc kiểm tra các tầng của 3 FF Ví dụ số đếm *4” xuất hiện khi Q2=1, Q1=0,

QU=0 (4921005)

Các Timer được ứng dụng thực tế cho các hoạt động định hướng 8951 có

2 bd Timer 16 bit, méi Timer có 4 mode hoạt động Các Timer dùng để đếm giờ,

đếm các sự kiện cần thiết và sự sinh ra tốc độ của tốc độ Baud bởi sự gắn liền Port noi tiếp,

Môi sự định thời là một Timer 19 bịt, do đó tầng cuối cùng là tầng thứ 16

sé chia tin s6 clock vào cho 2° = 65.536

Trong các ứng dụng thởi, 1 Tímer được lập trình để tràn ở một

Khoảng thời gian đều đán và được set cờ trăn Timer Cờ được dùng để đồng bộ

chương trình để thực hiện mót hoạt động như việc đưa tới 1 tầng các ngõ vào hoặc gới dữ liệu đếm ngõ ra Các ứng dụng khác có sử dụng việc ghi giờ đều đều của Timer để đo thời gian đã tới qua hai trạng thái (ví dụ đo độ rộng xung) Việc đếm một sự kiện được dùng để xác định số lần xuất hiện của sự kiện đó, tức thời gian

trôi qua giữa các sự kiện

Các Timer của 8951 được truy xuất bởi việc dùng 6 thanh ghi chức năng

đặc biệt như sau:

Trang 25

KHIỂN

Thanh ghi mode gém hai nhóm 4 bit là: 4 bịt thấp đặt mode hoạt động cho

Timer 0 va 4 bit cao đặt mode hoạt động cho Timer 1 8 bit của thanh ghỉ TMOD

được tóm tắt như sau:

TMOD không có bit định vị, nó thường được LOAD một lần bởi phần mềm

ở đầu chương trình để khởi động mode Tìmer Sau đó sự định giờ có thể dừng lại,

5 MI 1 I Bit chon mode cia Timer 1

4 M0 1L] Bit chọn mode của Timer 1

3 GATE 0 | Bit cong cilia Timer 0

2 cor u Bit chon Counter/Timer cia Timer 0

Thanh ghi chon chế độ định thời

Hai bịt M0 và M1 của TMOD để lựa chọn MOD cho Timer 0 hoặc Timer 1

0 0 0 Mode Timer 13 bit (mode 8048)

1 0 2 Mode ty d6ng nap 8 bit

1 1 3 Mode Timer tach ra :

Timer 0 : TL0 là Timer 8 bit được điều khiển bởi các bit của Timer 0 THÔ tương tự nhưng,

được điển khiển hải các bit của mode Timer 1

Các chế độ định thời

SVTH : Gran Viguyén BG Trangl6

Trang 26

Đồ Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

3 Thanh ghi điều khiển Tùmer TCON (TIMER CONTROL REGISTER) :

Thanh ghỉ điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi

Timer 0 va Timer | Thanh ghi TCON cé bit dinh vi Hoat dong của từng bit được

| bởi phần mềm để chạy hoặc ngưng chạy Timer

TCON.S | TFO SDH Cờ ưàn Timer 0(hoạt động tương tự TF1)

TCON.4 | TRO 8CH Bit diéu khiến chạy Timer 0 (giéng TR1)

TCON.3 |IEI 8BH \ca kiểu ngắt l ngoài Khi cạnh xuống xuất hiện|

trên INTI thì IEI được xóa bởi phần mềm hoặc

phần cứng khi CPU định hướng đến thủ tục phục|

vụ ngất ngoài

TCON.2 |ITI 8AH Cờ kiếu ngắt l ngoài được set hoặc xóa bằng

phấn mềm bởi cạnh kích hoạt bởi sự ngắt ngoài

TCON.L |IE0 89H Cờ cạnh ngắt 0 ngoài

TCON.0 |TT0 88H Cờ kiểu ngắt 0 ngoài

IV TAPLENH CUA 8951:

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 một vấn đề Người lập trình là người biết thuật giải để viết chương trình và sắp xếp đúng các lệnh theo thuật giải Người lập trình phải biết

hết tất cả các lệnh còn gọi là tập lệnh

Tập lệnh của họ MCS - 51 có mã lệnh 8 bit nên có khả năng cung cấp

28256 lệnh,trong số này có một vài lệnh chưa được xây dựng

Tập lệnh của 8951 có 139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte

1 Các kiểu định địa chỉ của bộ nhớ để lấy dữ liệu

Trang 27

Đề Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

Trong vi diéu khiển có tất cả 8 kiểu định địa chỉ như sau:

$* Định địa chỉ dùng thanh ghỉ (Resister Addressing):

C8951 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

Địa chỉ thanh ghỉ Muốn chọn bank thành ghỉ nào tả chỉ cần gán các bit nhị phân thích hợp vào RSI (DSW.4) và RS (PSW.3) trong thanh ghỉ trạng thái chương trình (PSW)

Ngoài ra, một số thanh ghỉ đặc biệt như thanh ghỉ tích lãy, thanh ghỉ con trỏ

dự liêu cũng được xúc dịnh trong các lành trên nên không cần bit địa chỉ

Trong các lệnh này thánh ghì tích lũy được kí hiệu là “A”, con trổ dữ liệu

là TDPER”, thành phì đếm chướng trình là PC”, cỡ nhớ là “C”, cặp thanh ghí tịch lũy là "AH”,

Trong chế d6 nay, các thanh ghi bớn trong 8951 được đánh địa chỉ trực tiếp

bằng 8 bịt địa chỉ nằm trong byte thứ hai của mã lệnh

Mã lệnh Địa chỉ trực tiếp

i

Địa chỉ gián tiếp

Dinh dia chi tite thoi (Immediate Addressing):

Người ta dù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 dịch sẽ tự động

tính toán và thay thế dữ liệu vào mã lệnh

Trang 28

Đồ Án Tốt Nghiệp MO PHONG VI ĐIỀU KHIỂN

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

uC8951 dùng giá trị 8 bit có dấu để cộng thêm vào thanh ghỉ đế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 ghỉ PC sẽ tăng đến địa chí theo sau lệnh nhảy rồi tính toá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

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

Dinh dia chỉ tuyệt đái ( Absolute Addressing):

Đị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 bịt địa chỉ thấp (A0-A10) để xác định địa chỉ đích

trong trang ma Con 5 bit cao của địa chi dich chính là 5 bit hiện hành trong thanh

heo sau lệnh rẽ nhánh và dia chi đích của lệnh rẽ

2Kbyte (có cùng 5 bits địa chỉ cao)

Địa chỉ tuyệt đối

s* Dinh địa chỉ dài ( Long Addressing):

Địa chỉ dài chỉ dùng cho lệnh LCALL và LJIMP Các lệnh này chiếm 3

byte va ding 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ớ

Định địa chỉ số dùng một thanh ghỉ cơ bản : là bộ đếm chương trình PC

hoặc bộ đếm dữ liệu DPTR và một giá trị lêch gọi là giá trị tương đối hay gọi là

Offset thường sử dụng thanh ghỉ A địa chỉ cân truy xuất dữ liệu nếu là lênh truy

Trang 29

Đề Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

xuất dữ liệu ( lệnh MOVC ) hoặc địa chỉ cần nháy đến đối với lệnh nhảy ( lệnh

JMP ) được thành lập bàng cách cộng nội dung của thanh ghỉ cơ bản với thanh ghi

A được minh hoa như sau:

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

Data: 8 bit dia chỉ vùng đữ 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 bịL vùng 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 8 bitchứa trong câu lệnh

#datal6: Hang 16 bit chifa trong câu lệnh

addrl6 : 16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP

addr1l : 11 bit đị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 SIUMP và

những lệnh nhầy có điều kiện

Bit : Bit dude dinh địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các

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

Nhóm lệnh xử lí số học:

ADD A, Rn (1 byte, 1 chủ kì máy) : Cộng nội dung thanh ghi Rn vào thanh

ghỉ A

ADDA,data (2,1) : Cộng trực tiếp | byte vao thanh ghi A

AADA,@Ri (1,1) : 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

ADD A,#data (2,1) : Cộng dữ liệu tức thời vào A

ADDCA,Rn (1,1) : Cộng thanh ghi và cờ nhớ vào A

ADDC A,data (2,1) : Cộng trực tiếp byte dữ liệu và cờ nhớ vào A

Trang 30

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

Trừ nội dung thanh ghi A cho nội dung thanh

Trừ trực tiếp A cho một số và cờ nhớ

Trừ gián tiếp A cho một số và cờ nhớ

Trừ nội dung A cho một số tức thời và cờ nhớ

“Tăng nội dung thanh ghi A lên I

“Tăng nội dung thanh ghi Rn lên 1

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

ự gián tiếp nội dung vùng RAM lén 1,

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

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

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

Giảm gián tiếp nội dung vùng RAM xuống l

Tăng nội dung con trỏ dữ liệu lên 1

Nhân nội dung thanh ghi A với nội dung thanh

Chia nội dung thanh ghi A cho nội dung thanh

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

AND nội dung thanh ghi A với nội dung thanh AND nội dung thanh ghi A với dữ liệu trực AND nội dung thanh ghi A với dữ liệu gián

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

2) ¡ AND một dữ liệu trực tiếp với dữ

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

Bù cờ nhớ

Ba mot bit trực tiếp

Quay trái nội dung thanh ghi A

Quay trái nội dung thanh ghi A qua cờ nhớ

Trang 31

MO PHONG VI DIEU KHIEN

Quay phải nội dung thanh ghi A

Quay phải nội dung thanh ghi A qua cờ nhớ

Quay trái nội dung thanh ghỉ A 1 nibble (1/2

e Nhóm lệnh đi chuyển dữ liệu:

MOV @Ri, #data

một dữ liệu gián tiếp

Chuyển nội dung thanh ghi Rn vào thanh ghi A Chuyển dữ liệu trực tiếp vào thanh ghi A

Chuyển dữ liệu gián tiếp vào thanh ghi A

Chuyển dữ liệu tức thời vào thanh ghi A

Chu nội dung thanh ghỉ A vào thanh ghi Rn

Chuyển dữ liệu trực tiếp vào thanh ghi Rn

Ch dữ liệu tức thời vào thanh ghi Rn

Chuyển nội dung thanh ghi A vào một dữ liệu

Chuyến nói dung thanh ghỉ Rn vào một dữ liệu

Chuyển một dữ liệu trực tiếp vào một dữ liệu Chuyển một dữ liệu gián tiếp vào một dữ liệu

3,2): Chuyển một dữ liệu tức thời vào

Chuyển nội dung thanh ghi A vào một đữ liệu Chuyển một dữ liệu trực tiếp vào một dữ liệu

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

MOV DPTR, #datal6 (3, 2): Chuyển một hằng 16 bit vào thanh ghi con

trổ

dữ liệu

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

@A + DPTR vào thanh ghỉ A

MOVC A, @A +PC (1,2) : Chuyển byte bộ nhớ chương trình có địa

chỉ là @A + PC vào thanh ghi A

MOVX A, @Ri (1,2) : Chuyển dữ liệu ngoài (8 bit địa chỉ) vào

Trang 32

Đồ Án Tốt Nghiệp

MOVXA,@DPTR (1,2)

thanh ghi A MOVX @Ri, A

ngoài (8 bit địa chỉ)

d Nhóm lệnh chuyển quyên điều khiến :

MO PHONG VI DIEU KHIEN

: Chuyển dữ liệu ngoài (16 bit địa chỉ) vào (1,2) : Chuyển nội dung A ra dữ liệu

: Chuyển nội dung A ra dữ liệu ngoài (16

(2,2) : Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng

(2,2) : Lấy dữ liệu trực tiếp ra khỏi ngăn xếp và giẩm

(1,1) : Trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi

Trao đổi giữa thanh ghỉ A và một dữ liệu trực

(1,1) : Trao đối giữa thanh ghi A và một dữ liệu gián

: Trao đổi giữa nibble thấp (LSN) của thanh ghi A

ACALL addrll (2.2) : Gọi chương trình con dùng địa chỉ tuyệt

đối

LCALL addr16 @, 2) : Gọi chương trình con dùng địa chỉ dài

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

RETI q,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

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

JMP @A+DPTR (1,2) : Nhầy gián tiếp từ con tré dif liéu

JZ rel (2, 2) : Nhay dén A bang 0

JNZ rel (2, 2) : Nhdy dén A khong bing 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

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

Trang 33

Đề Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

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

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 @Ri, #data, rel (3, 2) : §o 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

DJNZ Rn, rel (2,2) : Giảm thanh ghi Rn và nhấy nếu không

Trang 34

Đồ Án Tốt Nghiệp MÔ PHỎNG VLĐIỀU KHIỂN

I SƠ ĐỒ KHỐI VÀ PHƯƠNG ÁN GIẢI QUYẾT

1 Ý tưởng thiết kế :

Trong quá trình thiết kế các hệ vi điều khiển, ngoài việc thiết kế phan

cứng việc sửa chữa và nạ các chương trình điều khiển vào EPROM thường

phải được làm đi làm lại n lần Mong muốn có thể chạy thử chương trình

trên máy tính mà chưa cần thiết kế phần cứng là một yêu cầu thực tế Nhờ sử

dụng chương nrình *Mô Phỏng Vì Điều Khiển”, chúng ta có thể chạy thử các chức năng của hệ vị điều khiến mà chưa cẩn phẩi nạp chương trình vào EPROM

Trang 35

Đồ Án Tốt Nghiệp, MO PHONG VI ĐIỀU KHIỂN

Trang 36

Đồ Án Tốt Nghiệp MÔ PHỎNG VLĐIỀU KHIỂN

3 Phương án giải quyết :

Để thực hiện được ý tưởng này thì chương trình điều khiển của hệ vi điều khiển cần thiết kế sẽ được soạn tháo, sửa đổi Có thể sử dụng các chương trình

soạn thảo như : NC, WINDOWS COMMANDER, PASCAL Sau khi soạn thảo

xong dùng phân mềm ASM5I và OH để biên dịch chương trình đã soạn thảo thanh file HEX, Khi đã có iile.Hex, ta tiến hành chuyển file này sang chương

trình viết dưới dạng lệnh gợi nhớ ASSEMBLY và chương trình này được tải lên chương ưình mô phỏng, Lí do vì sao lại chọn file.HEX là vì chương trình này đã

biên dịch hoàn chỉnh, không còn lỗi

Các bước mà người thực hiện phái làm như sau :

> Bude Ts

tionm MAIN: chứa các thanh phan điều khiển chính của toàn bộ chương

Tạo giáo diện bao gồm 5 form :

Form INTERNAL RAM MEMORY : Luu trữ 128 byte RAM nội

s* Bước 2: khởi tạo dữ liệu ban đầu cho các form như sau:

Form EXTERNAL RAM MEMORY lưu trữ dữ liệu là 00h cho tất cả các

ô nhớ

Form INTERNAL RAM MEMORY lưu trữ dữ liệu là 00h cho tất cả các ô

nhớ

Form SPECIAL FUNCTION RESISTER nên lưu dữ liệu theo các giá trị

mặc định của vi điều khiển khi bị reset

Form INSTRUCTION CODE : luu địa chỉ bắt đầu là 0000 ở cột thứ nhất,

mã lệnh là 00 ở cột thứ 2, lệnh NOP ở cột thứ 3 và cột thứ 4 không có giá trị vì

lệnh NOP không có tác tố

+ Bước 3 : Chuyển 1 file chương trình của vi điểu khiển dưới dạng

file.HEX thành 1 chương trìna viết dưới dạng lệnh gợi nhớ ASSEMBLY có kèm

mã lệnh và địa chỉ của từng lệnh

Sau khi đã có file.HEX ta tiến hành đọc từng mã lệnh trong file.HEX và

do tim xem lệnh này là lệnh gì và lệnh bao nhiêu byte 1 byte,2 byte hay 3 byte

Nếu lệnh thuộc dạng lệnh 1 byte thì byte tiếp theo là mã lệnh của lệnh

Trang 37

Đồ Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

Nếu lệnh thuộc dạng lệnh 3 byte thì 2 byte tiếp theo là byte dữ liệu hoặc

địa chỉ của lệnh i

Địa chỉ của từng lệnh được lưu trong cột thứ nhất, mã lệnh lưu trong cột thứ 2, lệnh trong cột thứ 3 và cuối cùng là các thanh ghi hoặc dữ liệu hoặc địa

chỉ lưu trong cột thứ 4 Các dữ liệu này được lưu trên I form có sử dụng lưới

Trong cấu trúc file.HEX thì thông số đầu tiên là dấu ':, tiếp theo là số

lượng của môt hàng, tiếp theo là địa chỉ bắt đầu của hàng lệnh đó và các mã

v_ Xử lí địa chi bat dau cia hang

v_ Byte 00h tiếp theo không có ý nghĩa nên bỏ đi

:nh thì phải thực hiện việc tra bang trong dành sách lệnh để um đúng Ì rôi cất lệnh trong ô đã quy định Họ vi điều

khiến 8 bịt thì số lượng lệnh tôi đa là 256 lệnh Byte mã lệnh cần chuyển sang số

v_ Hyte thứ 4 la bytc m

dé do tim

Một thông số thứ 2 là lệnh bao nhiều byte để có thể xử lí tiếp

© Nếu là lệ chuyển đổi là kết thúc và chuyển sang

chuyển đối mã lệnh kế

e_ Nếu lệnh 2 byte thì phải xử lí tiếp byte thứ 2 : đối với tập lệnh của

vi điều khiển thì byte thứ 2 có thể là dữ liệu hoặc có thể là địa chỉ của một ô nhớ

và cũng có thể là giá trị cộng thêm vào PC của lệnh nhảy Cần phải thêm một

thông số để phân biệt byte thứ 2 là lệnh nhảy với dữ liệu hoặc địa chỉ của ô nhớ

Nếu là lệnh nhấy thì cân phải tính toán địa chỉ nhảy đến, còn byte thứ 2 là dữ liệu thì đó chỉ là tác tố cộng thêm vào trong lệnh, lưu địa chỉ nhảy đến hoặc tác

tế của lệnh vào cột thứ 4

e_ Nếu là lệnh 3 byte thì cũng xử lí tương tự

Quá trình chuyển đổi được thực hiện cho đến khi nào hết lệnh và dữ liệu

Trong file.HEX có một hàng dữ liệu cuối cùng để báo hết file

+ Bước 4: quá trình mô phỏng

Để mô phỏng chương trình ta cần phải xứ lí chức năng từng lệnh :

© Lệnh này xử lí dữ liệu gì, dữ liệu lưu ở đâu

© Truy xuất dữ liệu, tiến hành xử lí dữ liệu, cất dữ liệu sau khi xử lí xong

© Cập nhật giá trị cho các form sau khi xử lí xong

$ Nếu là lệnh bình thường thì sau khi xử lí xong nội dung thanh ghi PC

phải tăng địa chỉ lên hàng lệnh kế Nhưng nếu là lệnh nhảy thì hoặc lệnh gọi chương trình con thì ta phải xử lí giá trị mới cho thanh ghi PC

Trang 38

Đồ Án Tốt Nghiệp MÔ PHỎNG VI ĐIỀU KHIỂN

Trang 39

Đỗ Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

Số lượng byte của lệnh =2

Trang 40

Để Án Tốt Nghiệp MÔ PHỒNG VI ĐIỀU KHIỂN

3 Lưu đô xử lý lệnh 2 byte:

'Tăng vị trí lấy dữ liệu lên 2 đơn vị

“Tầng địa chỉ lên 1 đơn vị

Lấy byte dữ liệu thứ 2 của lệnh

Ngày đăng: 19/11/2024, 11:51

HÌNH ẢNH LIÊN QUAN

Hình  1.9 :  Biểu  Đồ  Thời  Gian - Mô phỏng vi Điều khiển
nh 1.9 : Biểu Đồ Thời Gian (Trang 24)

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

TÀI LIỆU LIÊN QUAN

w