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 1BO 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 2Giá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 4Bộ 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 5NHAN 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 7LOT 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 8CHUONG 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 25KHIỂ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 30Cộ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 31MO 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