Mạch đếm sản phẩm và có phát tiếng nói ứng dụng vi điều khiển 89C51 và ISD 2560
Trang 1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DL KỸ THUẬT CÔNG NGHỆ KHOA ĐIỆN~ ĐIỆN TỬ
NGÀNH ĐIỆN TỬ - VIỄN THÔNG
LUẬN VĂN TỐT NGHIỆP
DE TAI: TÀI:
_MẠCH ĐẾM SAN PHAM VÀCÓ PHÁT - TIẾNG NÓI ỨNG DỤNG VI DIEU KHIEN |
‘89CS51VA ISD 2560 |
C 3X) |
GVHD : Tran Duy Cuéng _
_ §VTH :Trần Khánh Vân -
Lớp :01DDT2
MSSV : 10101263
f
THU UVIEN ĐI)
\số 401622332 / TP Hồ Chí Minh 06-2006 -
Trang 2
Luận văn tốt nghiệp "Trần Khánh Vân
LỜI MỞ ĐẦU PRS
Trong những năm gần đây, nền khoa học kỹ thuật đã và đang phát triển ngày càng mạnh mẽ, trong đời sống cũng như trong lĩnh vực nghiên cứu tiến bộ khoa
học
Sự phát triển vượt bậc của khoa học kỹ thuật hiện đại phần lớn dựa vào nần
tảng kỹ thuật điện — điện tử Đặc biệt là công nghệ vi điện tử va vi xử lý Sự ra đời của các vi mạch với giá thành ngày càng giảm nhanh, khả năng lập trình ngày càng cao, đã mang lại những thay đổi trong ngành kỹ thuật điện tử
Tại Việt Nam việc chương trình hóa các hệ thống đang được áp dụng ngày
càng nhiều trong các nhà máy công nghiệp Hệ thống vi xử lý hay còn gọi là máy tính điện tử là thiết bị xử lý thông tin, điều khiển các thiết bị ngoài hay các thiết
bị trong công nghiệp tự động Phần chính của máy tính là bộ vi xử lý trung tâm
CPU (Central Processing Unit) là nơi xảy ra các quá trình xử lý số liệu và điều
khiển mọi hoạt động của máy tính |
_ Vi xử lý là một hệ thống số dựa trên cơ sở linh kiện chủ yếu là bộ vi xử lý Tùy thuộc vào cấu trúc của bộ vi xử lý riêng biệt và phân điều khiển mà nó có thể bao gồm nhiều loại vi mạch Dưới sự điều khiển bằng chương trình, một bộ vi xử lý thực hiện các phép tính số học và logic, đồng thời tạo ra những tín hiệu điều
khiển cho bộ nhớ và thiết bị vào ra Những mệnh lệnh này gọi là chương trình
nguồn và được chứa trong bộ nhớ chi doc (ROM) | Để tìm hiểu về vi điều khiển và ISD 2560 một ứng dụng cụ thể của nó em xin thực hiện để tài như sau : vừa giới thiệu về lý thuyết và vừa trình bày phần thiết
Trang 3Luận văn tốt nghiệp
` ANH W2 LDR MY LRARL LN RL OR ORL RRP REPOS v2.1 @WvÈ*x WWWAVVNW
% LNT LAS 7 š “ | ‘ x : Si ệ 2 S IRR Š xR & a « 3 2 ý MỤC LỤC : S ` x : : | x % | š % » à $ ằ Š ÿ : 7 Š
ộ CHUONG 1: SODO KHOI — | "mì
về , A A SS
ặ CHƯƠNG 2 : GIỚI THIỆU VỀ IC 89C51 8
; 2 CHUONG 3: GIGI THIEU VE IC ISD 2560 š *
; CHUONG 4: SƠ ĐỒ NGUYÊN LÝ, NGUYÊN TẮC l
ỷ HOẠT ĐỘNG& LƯU ĐỒ THUẬT GIẢI š
3 ệ
$ CHUONG 5: LOI KET g
% 3 ý é ị x ‘ ý ộ Ặ è % š x x 3 3 % x x x ỷ š » *
SA I, Si I NAA DM INA NE INA SS, SANA ee ae NA ` +, NT MMR N4 LL OA ee NS ie PLM RG LORRY xứ pws
WYRPBP LORRAIN IBRD BRP EDR EIR ORL INE PEERING ENA *⁄ưW⁄Yzvš NANT INAS
Trang 4Chương 1: Sơ đồ khối Trần Khánh Vân
CHUONG 1:
SO DO KHOI
LD HE Do
ĐẶT VẤN ĐỀ : S
Ngày nay cùng với sự phát triển của các ngành khoa học kĩ thuật, kĩ thuật điện tử mà trong đó là kỹ thuật số đóng vai trị quan trọng trong mọi lĩnh vực cơng nghệ, quản lí, cơng nghiệp, cung cấp thơng tin Chính vai trò này càng lớn dan theo thời gian, nhất là trong ngành tự động hóa, robot vì nó cho phép tăng năng suất lao động,
số lượng sản phẩm,giảm thiểu chỉ phí và nhất là hạn chế tai nạn lao động trong công | nghiép, TW thực tế ấy , với khả năng của em, em muốn tìm hiểu và nắm bắt kĩ thuật
này cho nên em quyết định thiết kế một mạch đếm sản phẩm và phát tiếng nói vì nó - sát với thực tiễn hiện nay và rất có ích cho em trong tương lai
Để làm được mạch này cần thiết kế được ba phần chính là : bộ phận cảm biến |
và bộ phận đếm, bộ phận phát tiếng nói | | | + Bộ phận cảm biến: gồm phần phát và phần thu Đối với phần phát, thường _ dùng laser vì có tính định hướng tốt và ổn định, để phát ra ánh sáng mục dich để
chống nhiễu so với các loại ánh sáng khác và chính xác hơn, cịn phan thu 1a transistor | _ quang để thu ánh sáng hồng ngoại " | |
+ Bộ phận đếm có nhiều phương pháp thực thi đó là :
- Lắp mạch dùng kỹ thuật số với các IC đếm, chốt, so sánh ghép lại - Lắp mạch dùng kỹ thuật vi xử lý
- Lắp mạch dùng kỹ thuật vi điều khiển
+ Bộ phận phát tiếng nói: ở đây sử dụng IC ISD 2560 để phát tiếng nói
Trang 5
Chương 1: Sơ đồ khối |
= MUCTIEU DE TAL | |
Trong đồ án này em thực hiện mạch đếm sản phẩm dựa trên số sản phẩm đi qua
_ và sau đó đếm sản phẩm bằng phương pháp đếm xung Như vậy mỗi sản phẩm đi qua trên băng tải phải có một thiết bị cảm nhận sản phẩm, thiết bị này gọi là cảm biến
Khi một sản phẩm đi qua, cảm biến sẽ nhận Và tạo ra một xung điện đưa về khối xử lí
để tăng dân số đếm, đồng thời ISD 2560 sẽ phát tiếng nói báo số thứ tự của sản phẩm
vừa đi qua Tại một thời điểm tức thời, để xác định số đếm cần phải có một bộ phận
hiển thị và để họ đỡ phải theo dõi, bộ phận phát tiếng nói sẽ thơng báo cho họ biết |
Tuy nhiên mỗi khu vực sản xuất hay mỗi ca sản xuất lại yêu cầu với số đếm khác nhau vì: thế phải có sự linh hoạt trong việc chuyển đổi số đếm Bộ phận chuyển đổi trực quan nhất là bàn phím Khi cần thay đổi số đếm người sử dụng chỉ cần nhập số đếm ban đầu vào và mạch sẽ tự động đếm Khi số sản phẩm được đếm bằng với số
đếm ban đầu thì mạch sẽ tự động báo một tiếng bíp báo cho người sử dụng biết Và
nếu không cài đặt sẵn số đếm thì khối xử lý đếm đến 99 sản phẩm rồi báo một tiếng
bíp thông báo
" GIỚIHẠN ĐỀ TÀI:
> Cac sản phẩm rất đa dạng với nhiễu chủng loại: đặc, rỗng, kích cỡ khác nhau Nhung với khả năng của thiết bị thì mạch chỉ có thể đếm được loại sản phẩm có `
thể che được ánh sáng |
> Đếm sản phẩm phạm vỉ từ 1> 99.- > Cai đặt trước số sản phẩm cần đếm
- Từ mục đích yêu cầu của để tài, em đưa ra sơ đồ khối tổng quát như sau :
Trang 2 -
Trang 6
Chuong 1: So đồ khối Trần Khánh Vân
À ^Z 2 £
m SƠ ĐÔ KHƠI TƠNG QT &®
` Mạch cảm biến:
Để cầm biến mỗi lân sản phẩm đi qua thì cảm biến phải có phần phát và phần thu Phẩn phát thường phát ra ánh sáng hồng ngoại và phân thu hấp thụ ánh sáng hồng | - ngoại này vì ánh sáng hồng ngoại có đặc điểm là ít bị nhiễu so vơí các lọai ánh sáng |
khác Hai bộ phận phát và thu hoạt động với cùng tân số Khi có sản phẩm đi qua
_ phần phát và phần thu,ánh sáng hồng ngoại bị che bộ phận thu sẽ hoạt động với tần số
- khác tẫn số phát như thế tạo ra một xung tác động tới bộ phận xử lý Vậy bộ phận
phát và thu phải có nguồn tạo dao động Bộ phận dao động tác động tới công tắc đóng ngắt của nguồn phát và nguồn thu ánh sáng Có nhiều linh kiện phát và thu ánh sáng
hồng ngoại nhưng ở ẩy em dung led thường Phần thu là quang trở hấp thu ánh sáng tốt, sẽ làm tăng độ chính xác của mạch đếm như quang trasistor
Trang 3
Trang 7Chương l1: Sơ đồ khối Trần Khánh Vân
# Nguyên tắc hoạt động khối thu quang: |
Do quang trở có cơng suất rất bé, áp rơi trên quang trở khi nhận được ánh sáng
khoảng 3V, do đó ta khơng thể lấy tín hiệu này để đưa vào số, với mức điện áp này sẽ _ không đảm bảo được mức logic để đưa tín hiệu đến số Do đó phương pháp tối ưu để
khuếch đại tín hiệu này là dùng Op-amp so sánh, sau đó đưa vào số, lúc này tín hiệu sẽ đảm bảo được mức logic
Ta dùng một điện áp chuẩn để vào ngõ dương của mạch so sánh vì độ nhạy của
quang trở khơng hồn tồn giống nhau do đó ta dùng một mạch phân áp để điều chỉnh điện áp phân cực cho led nhằm chỉnh độ nhạy | |
Trang 8Chương Ì: Sơ đồ khối _ Trần Khánh Vân
Để tạo điện áp chuẩn tại chân VỀ ta chỉ cần gan 1 biến trở (VR 10k) và điều -
chỉnh biến trở sao cho đđiện áp của nó khi ánh sáng chiếu liên tục thì ln lớn hơn điện
ápởV- — |
Do ta thực hiện mạch ở trạng thái bình thường led nhận nên có điện trở thấp R _ nhận led R„ạ= 8k nên ta cần chọn điện trở R12 cổ 10k nhưng ở đây do ta sử dụng led
_ nhận là quang trở nên nó có thể thay đổi Rạ theo môi trường xung quanh ,khi không
_ nhận đđược ánh sáng đđiện trở R„ cỡ vài trăm k "
Dong qua led là : |
| _ Veol( Ry + 10k) =5/ 18k =3mA khong làm hồng led nhận IC LM339:
Ở đây chúng ta sử dụng LM339, thực chất của nó là 0p-amp so sánh nhưng nó
bao gồm 4 con op-amp bên trong; IC làm việc với loại nguồn đđơn
§ơ đơ chân bên trong của LM339:
Output2 L1 há | Output 3 Output 1 | _ i | Output 4 Veo [3] 2 | Gnd
~ Input 1 [4] ri] + Input 4
Cấu tao transistor quang:
| Trang 5 -
Trang 9Chương 1: Sơ đồ khối _— | Trần Khánh Vân C | Cực thu (colecter) Cực nên B —_ N P N C (base) h Cực phát (emiter) B R
Ký hiệu Cấu tạo
Hình thức bên ngồi của nó khác với transistor thông thường ở chỗ trên vỏ của
_ có cửa sổ trong suốt cho ánh sáng chiếu vào Ánh sáng qua cửa sổ này chiếu lên miền bazơ của transistor Chuyển tiếp PN emitor được chế tạo như các transistor thông |
thường, nhưng chuyển tiếp PN colector, thì do miễn bazơ cần được chiếu sáng, cho
- nên nó có nhiều hình đạng khác nhau, cũng có dạng hình trịn nằm giữa tâm miễn _ bazd Khi sử dụng transistor quang mắc mạch tương tự như transistor mắc chung emitOr
(CE) Chuyển tiếp emitor được phân cực thuận còn chuyển tiếp colector được phân
_ cực nghịch Có nghĩa là transistor quang được phân cực ở chế độ khuyếch đại
4+ Phím nhấn : |
Ở đây sử đụng các phím nhấn bình thường để cài đặt trước số lượng sản phẩm
cần đếm | - |
+ Hiển thị : s
| ae} đây hiển thị số sản phẩm đi qua trên 2 led 7 đoạn Mỗi khi có sản phẩm đi
qua bộ phận hiển thị sẽ tự động tăng lên 1 và so sánh với số sản phẩm được cài đặt
trước Nếu không cài đặt thì mạch sẽ đếm tối đa là 99 | | ‹*» Khối trung tâm: _ |
Tiếp nhận tín hiệu từ cảm biến và phím nhấn để xử lý, điều khiển việc phát | _ tiếng nói
Trang 10
Chương 1: Sơ đồ khối _ Trần Khánh Vân
‹» Khối tiếng nói :
Nhận tín hiệu từ khối trung tâm và phát ra tiếng nói mỗi khi có sản phẩm đi -
qua
> Quátrìnhthu: Chan P/R ở mức thấp Mỗi khi chân CE tác động cạnh
xuống thì quá trình thu bắt đầu Điểm kết thúc của mỗi message phải có tín - hiệu EOM Khi xung CE về mức cao, kết thúc quá trình thu | - > Qua trình phát: Chân P/R ở mức cao Mỗi khi chân CE tác động cạnh
-_ xuống thì quá trình phát bắt đầu Khi xung CE về mức cao, quá trình phát - vẫn tiếp tục, hay nói cách khác nó khơng cịn bị ảnh hưởng của chân CE nữa
Quá trình phát kết thúc khi gặp cạnh lên của tín hiệu BOM
Trang 11Chương 2 :Tìm hiểu về vi điều khiển 89C51
=
CHUONG 2:
TIM HIỂU VỀ VỊ DIEU KHIEN 3251
oe st
.LTỔNG QUÁT: 1 Giới thiêu :
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có
thể lập trình được, dùng để điều khiển hoạt động của một hệ thống Theo các tập lệnh
của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin,
đo thời gian và tiến hành đóng mở một cơ cấu nào đó Si
Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển điều khiển
hoạt động của TV, máy giặt, đầu đọc laser, điện thọai, lò vi-ba Trong hệ thống sản xuất tự động, bộ vi điểu khiển được sử dụng trong Robot, dây chuyển tự động Các hệ
thống càng “thơng minh” thì vai trị của hệ vi điều khiển càng quan trọng
2 Lịch sử phát triển của các bộ vi điều khiển:
Bộ vi điều khiển thực ra là một loại vi xử lý trong tập hợp các bộ vi xử lý nói
chung Bộ vi điều khiển được phát triển từ bộ vi xử lý từ những năm 70 do sự phat
triển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-Oxide-
Semiconductor), mức độ tích hợp của các linh kiện bán dẫn trong một chip ngày càng
cao
Trang 8
Trang 12
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
Năm 1971 tập đoàn INTEL đã giới thiệu bộ vi xử lý 8080 (micro —proC©SSOT )
thành công đầu tiên Sau đó khơng lâu Motorola, RCA, kế đến là MOS Technology và
Zilog đã giới thiệu các bộ vi xử lý tương tự :6800, 1801, 6502 và Z80 Bản thân các vi mạch (IC:integrated circuit) này tuy khơng có nhiều hiệu quả sử dụng nhưng khi là một phần của máy tinh don board (single — board computer) thi ching trở thành thành
phân trung tâm trong các sản phẩm có ích dùng để nghiên cứu và thiết kế Các máy
tính đơn board này, trong đó có D2 củaMotorola, KIM-1 cia MOS Technology vaSDK- 85 cia INTEL 1a dang ghỉ nhớ nhất, đã nhanh chóng xâm nhập vào các -_ phịng thí nghiệm thiết kế của các trường trung học, đại học và các công ty điện tử -
Mãi đến năm 1976 công ty INTEL (Intelligen-Elictronics) mới cho ra đời bộ vi |
điều khiển đơn chip đầu tiên trên thế giới với tên gọi 8748 Bên cạnh bộ xử lí trung
tâm 8748 cịn chứa bộ nhớ dữ liệu, bộ nhớ chương trình, bộ đếm và phát thời gian các
cổng vào và ra Digital trên một chip
Các công ty khác cũng lần lượt cho ra đời các bộ vi điểu khiển 8bit tương tự như 8748 và hình thành họ vi diéu khiển MCS-48 (Microcontroller-sustem-48) đã nhanh chống trở thành chuẩn công nghiệp trong các ứng dụng định hướng điều khiển
(control- oriented application) |
Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi diéu khiển
đơn chip với tên gọi 89C51 Và sau đó hàng loạt các vi điểu khiển cùng loại với 89C51 ra đời và hình thành họ vi điều khiển MCS-51
Đến nay họ vi điều khiển 8 bit MCS - 51 đã có đến 250 thành viên và hầu hết
các công ty hàng đầu thế giới chế tạo Đứng đầu là công ty INTEL và rất nhiễu công ty khác nhu : AMD, SIEMENS, PHILIPS, DALLAS, OKI
Ngồi ra cịn có các công ty khác cũng có những họ vi điều khiển riêng như:
Ho 68HCOS của công ty Motorola
Ho ST62 của công ty SGS-THOMSON
Họ HS của công ty Hitachi
Trang 9
Trang 13Chương 2 :Tìm hiểu về vi điều khiển 89C51
Ho Pic của công ty Microchip ILTOM TAT PHAN CUNG CUA 89C51 :
MCS51 14 mot ho IC vi diéu khién (Microcontroller) do hang INTEL sản xuất
Các IC điều khiển cho họ MCS51 là 8051 và89C51 Chúng có cùng đặt điểm như sau: e 4Kbyte ROM
128byte RAM
© 4port VO 8bit e 2bộ định thời l6 bít
e_ Giao tiếp nối tiếp
e 64K không gian chương trình bộ nhớ mở rộng
e 64K không gian bộ nhớ dữ liệu mở rộng
e_ Một bộ xử lý luận ly (thao tác trên các bít đơn)
e 210 bít được địa chỉ hố |
e Bộ nhân/chia 4s ——EE nove Ta 8031 |0KROM 128byte 2 8751 |4KEPROM 128byte 2 8052 |8KROM 256byte 3 8032 |0K 256byte 3 8752 | 8K EPROM 256byte 13
Hình 1 Bảng mơ tả sự khác nhau giữa các IC trong họ MSCS51 _ |
Trang 14
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
1 SƠ ĐỒ KHOI CHIP 89C51:
INTVI
INTV0
TIMER2 TIMERI
[PORT n6i tiép
Trang 15
_ Chương 2 :Tìm hiểu về vi điều khiển 89C51
= ——ẶỸ-
2 SƠ ĐỒ CHÂN CHIP 89C5I :
la 30P 19 32 XTAHI P0.7 AD7 u ¬amx 33 12MHz L] P06 |——— ADS —TE : 34 † XTAI2 P05 ——— ADS 18 35 _—— 30p P0.4 AD4 36 P03 |———— AD3 37 P02 ——— AD2 3 - 29 P0.1 ADI | PSEN 39 30 P0.0 AD0 —, ALE 31 TA P27 ——— 9 ——— RET P2.6 6 P2.5 5 P.4| —_ 17 4 RD P23 |—— _ 16 3 WR P2.2 15 2 TI 21L _—— 14 1 T0 P2.0 Ls 13 INTI 28 12 P2.7 AIS INTO 27 11 _ P26 Al4 TXD 26 10 P25} as3 RXD 25 P2.4 LH —— Al? 24 P23 — All 23 P2.2|——— Al0 22 P21 LH A9 21 P2.0 A8 Vss | Hình 3: Sơ đồ chân 89C51 e Chức năng từng chân 89C51:
2.1 port0 : là port có 2 chức năng ở trên chân (từ 32 đến 39) có hai cơng dụng
Trong các thiết kế có tối thiểu thành phan, port 0 được sử dụng làm nhiệm vụ xuất
| /nhập trong các thiết kế lớn hơn có bộ nhớ ngoài, port 0 trở thành bus địa chi va bus dif _ liệu đa hợp
Trang 12
Trang 16
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
== -.-.-.-. r-iinnm
2.2 port1 : port1 là một port I/O trén cdc chan 21-28 Các chân được ký hiệu
P1.0, P1.1, P12 PL.7 va được dùng để giao tiếp với các thiết bị bên ngồi khi có u
cầu Port1 khơng có chức năng nào khác nữa, vì vậy chúng chỉ được dùng trong glao -
tiếp với các thiết bị ngoại vi |
2,3 port2 : port2 14 mét port cng dung kép trên các chân 1 — 8 đượ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 kế dùng bộ
nhớ mở rộng | |
2.4 Port3 : port3 14 một port cong dụng kép trên các chân 10 - 17 Các chân |
của port này có nhiều chức năng riê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 89C51 như ở bảng sau :
P3.0 TRxD | BOH Chita nhận dữ liệu của port nối tiếp |
P3.1 TXD | B1H Chân phát dữ liệu của port nối tiếp P32|INT0|B2H _ Ngõ vào ngất ngoài 0 |
P3.3 | INT1 | B3H Ngõ vào ngắt ngoài 1
P3.4 | TO B4H -| Ngõ vào của timer/counter 0 P3.5 | T1 B5H - |Ngõ vào của timer/counter 1
P36|WR | B6H Xung ghi bé nhé dif liéu ngoai
P3.7|RD |B7H | Xung đọc bộ nhớ đữ liệu ngoài _
P1.0 | T2 90H Ngõ vào của bộ định thời/đếm 2 PI.1 | T2EX |91H Nạp lại/thu nhận của bộ định thời 2
Hình 4: Chức năng chân của port 3 và port 1
- Trang 13
Trang 17
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Og eC ee Trần Khánh Vân
NEE
2.5 PSEN: (Program Store Enable) \a tin hiéu ra trén chân 29 Nó là tín hiệu
điều khiển để cho phép bộ nhớ chương trình mở rộng và thường được nối đến chân OE
(Output Enable) của một EPROM (hoặc ROM) để cho phép đọc các byte mã lệnh
PSEN sẽ ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương
trình được đọc từ EPROM, qua bus và được chốt vào thanh ghi lệnh của 8051 để giải
mã lệnh Khi thi hành chương trình trong ROM nội (89C51) PSEN sẽ ở mức thụ động (mức cao) | |
2.6 ALE (Address Latch Enable ) :89C51 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE để giải đa hợp bus địa chỉ và bus dữ liệu Khi port 0 được dùng trong chế độ chuyển đổi của nó : vừa là bus dữ liệu vừa là byte thấp của địa chỉ, ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nửa đầu của chu kỳ bộ nhớ Sau đó, các đường port Ư dùng để xuất hoặc nhập dữ liệu trong nửa sau chu
| kỳ của bộ nhớ | | |
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tân số dao động trên chip va có thể được dùng là nguồn xung nhịp cho các hệ thống Nếu xung trên 89C51 là 12MHz thi ALE có tân số 2MHz Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ bị mất Chân này cũng được làm ngõ vào cho xung lập trình cho EPROM trong 89C51
2.7 EA:(External Access) :Tin hiéu vào EA trén chan 31 thường được mắc lên
mức cao (+5V) hoặc mức thấp (GND) Nếu ở mức cao(+5v), 89C51 thi hành chương ˆ trình từ ROM nội trong khoảng địa chỉ thấp (4K) Nếu ở mức thấp (GND), chương
_ trình chỉ được thi hành từ bộ nhớ mở rộng Khi dùng 8031, EA luôn được nối mức thấp
vì khơng có bộ nhớ chương trình trên chip Nếu EA được nối mức thấp bộ nhớ bên trong chương trình §9C51 sẽ bị cấm và chương trình thi hành từ EPROM mở rộng
Người ta còn dùng chân EA làm chân cấp điện áp 21V (Vpp) khi lập trình cho EPROM
trong 89C51 |
Trang 14
Trang 18Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
2.8 SRT (Reset) :Ng6 vao RST trén(chan 9) 14a ng6 reset cua 89C51 Khi tin
hiệu này được đưa lên mức cao (trong ít nhất 2 chu kỳ máy ), c4c thanh ghi trong 89C51 được tải những giá trị thích hợp để khởi động hệ thống
2.9 Các ngõ vào bộ dao động trên chip :Như đã thấy trong hình H.2 , 89C51 có một bộ dao động trên chip Nó thường được nối với thạch anh giữa hai chân 18 và
19, Các tụ ổn định cũng được yêu cầu như hình đã vẽ Tan số thạch anh thông thường
là 12MHz `
TIL 19 XTALI
Ysera
Hinh 5: 89C51 ghép với mach dao động TTL bên ngoài
3.0 Các chân nguồn : 89C51 vận hành với nguồn đơn +5V Vụ được nối vào
chân 40 và V„„ (GND) được nối vào chân 20 _ | |
3.Tổ chức bộ nhớ :
89C51 có bộ nhớ theo cấu trúc Harvard : có những vùng cho bộ nhớ riêng biệt cho chương trình dữ liệu Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên
trong 89C51, dù vậy chúng có thể được mơ rộng bằng các thành phần ngoài lên đến _
tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ đữ liệu | |
Bộ nhớ bên trong bao gồm ROM (89C51) và RAM trên chip, RAM trên chip bao gồm - nhiều phần : phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh
ghi và các thanh ghi chức năng đặc biệt
Trang 15
Trang 19
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
Hình 6: Tóm tắt các vùng bội nhơ` của 89CS1
Hai đặc tính cần lưu ý là :
- Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể _ được truy xuất trực tiếp 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ộ vi xử lí khác
e _ Chỉ tiết về bộ nhớ RAM trên chip :
Như ta đã thấy ở hình 3.2, RAM bên 89C51 được phân chia giữa các bank thanh ghi (00H - 1FH), RAM địa chỉ hóa từng bít (20H — 2FH), RAM da dung (30H — _TEH) và các thanh ghi chức năng đặc biệt (80H - FFH) | |
Trang 16 |
Trang 20
Chương 2 :Tìm hiểu về vi điều khiển 89C51
3.1.RAM da dung
Bảng đồ bộ nhớ Data trên Chip như sau :
Địa chỉ Địa chỉ
byte — Địa chỉ bít byte
FF F0 EO DO 30 _ B§ 2F 2E BO 2D .2C A8 2B 2A AO 29 28 99 27 98 26 25 90 24 23 8D 22 8C 21 8B 20 8A IF 89 18 88 17 87 10 0F 83 08 82 07 [Bank thanh ghi 0 81
00 c cho RO -R 88 |87
Dia chi bit
chỉ hoá bit
A
chỉ hố bít chi hod bit
chỉ hoá bit
chỉ hoá bịt được địa chỉ hoá bit chỉ hoá bít chỉ hố bit chỉ hố bit chỉ hoá bit 81 Trần Khánh Vân 80
RAM CÁC THANH GHI CHỨC NĂNG ĐẮT BIÊT
Hình 7: Bộ nhớ dữ liệu trên chip
Trang 17
Trang 21
Chương 2 :Tìm hiểu về vi điều khiển 89C51
Mọi địa chỉ trong ving RAM da dung đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp Ví dụ, để đọc nội dung ở địa chỉ 5FH của
RAM nội vào thanh ghi tích lũy lệnh sau sẽ được dùng :
MOV A, 5FH
Lénh nay di chuyén một bit dữ liệu dùng cách đánh dia chỉ trực tiếp để xác định “địa chỉ nguồn” (SFH) Đích nhận dữ liệu được ngầm xác định trong mã lénh 1a
thanh ghi tích lũy A | _ RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua RO hay R1 Ví dụ, sau khi thi hành cùng nhiệm vụ như lệnh đơn ở trên : |
| MOV RO, #5FH
MOV A, @RO |
Lệnh đầu dùng địa chỉ tức thời để di chuyén gid tri SFH vao thanh ghỉ R0 và
lệnh thứ hai dùng địa chỉ trực tiếp để di chuyển dữ liệu “được trổ bởi R0” vào thanh
ghi tích lũy | |
3.2.RAM dia chỉ hóa từng bit :
89C51 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H đến 2FH(16byte*8bit=128bit) và phần còn lại chứa trong các thanh ghi chức năng đặc biệt
| Ý tưởng truy xuất từng bit riêng rẽ thông qua phần mềm là một đặc tính tiện ' | lợi của vi điều khiển nói chung Các bit có thể được đặt, xóa, AND, OR với một lệnh
đơn Đa số các bộ vi xử lý đòi hỏi một chuỗi lệnh đọc — sửa — ghỉ để đạt được hiệu quả tương tự Hơn nữa, các port 1/0 cũng được địa chỉ từng bit làm đơn giản phân mềm xuất nhập từng bit
Trang 18
Trang 22
Chương 2 :Tìm hiểu về vi điêu khiển 89C51 Trần Khánh Vân
=—— ——=ớ
Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH Các địa chỉ này
được truy xuất như các byte hoặc các bit phụ thuộc vào lệnh được dùng Ví dụ, để set bit 67H, ta ding lệnh sau :
: SETB 67H |
Chú ý rằng “địa chỉ bit 67H” là bit có trọng số lớn nhất (MSB), ở “địa chỉ byte
2CH” lệnh trên sẽ không tác động đến các bit khác của địa chỉ này |
3.3 Các bank thanh ghi :
32 byte thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi Bộ lệnh của 89C51 hổ trợ 8 thanh ghi (R0 đến R7) và theo mặc định (sau khi Reset hệ thống) các thanh ghi này ở các địa chỉ 00H-07H Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào | |
thanh ghi tích lũy
MOV A,R5
Đây là lệnh một byte dùng địa chỉ thanh ghi Tất nhiên, thao tác tương tự có
thể được thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai:
| MOV A,0SH
| Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh tương ứng nhưng dùng địa chỉ trực tiếp Các giá trị dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này | |
Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn
bank thanh ghi trong từ trạng thái chương trình (PSW) Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào địa chỉ 18H:
| | MOV RO,A |
Trang 19
Trang 23
Chương 2 :Tìm hiểu về vỉ điều khiển 89C51
Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trình
nhanh và hiệu quả (từng phẩn riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng
_ không phụ thuộc vào các phần khác) |
4./ Các thanh ghỉ chức năng đặc biệt
Các thanh ghi nội của 89C51 được truy xuất ngầm 1 dinh bởi bộ lệnh Ví dụ lệnh | “INC A” của chíp 6809 sẽ tăng nội dung của thanh ghi tích lũy A lên 1 Tác động này
được ngầm định trong mã lệnh | |
| Các thanh ghi trong 89C51 được định dạng như một phần của RAM trên chip Vi vay mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ không có lợi -_ khi đặt chúng vào trong RAM trên chip) Đó là lý do để 89C51 có nhiều thanh ghi Cũng như RO đến R7, có 21 thanh ghi chức năng đặc biệt (SER: Special Funtion Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú ý rằng hầu hết 128 ©
địa chỉ từ 80H đến FFH không được định nghĩa Chỉ có 21 địa chỉ SFR là được định | nghĩa
Ngoại trừ tích lũy (A) có thể được truy xuất ngầm như đã nói, đa số các SFR được truy xuất dùng địa chỉ trực tiếp chú ý rằng một vài SER có thể được địa chỉ hóa bit hoặc byte Người thiết kế phải thận trọng khi truy xuất bit và byte Ví dụ lệnh sau:
| SETB 0E0H
Sé Set bit 0 trong thanh ghỉ tích lũy, các bit khác không thay đổi Ta thấy rằng E0H đồng thời là địa chỉ byte của thanh ghi tích lũy và là địa chỉ bit có trọng số nhỏ
nhất trong thanh ghỉ tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bít
là có hiệu quả
Trang 20
Trang 24
Chương 2 :Tìm hiểu về vỉ điều khiển 89C51 Trần Khánh Vân
4.1 Từ trạng thái chương trình: |
Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ D0H chứa
các bit trang thái như bảng tóm tắt sau:
Cờn
PSW.6 |AC lpH _ Cờ nhớ phụ PSsW5 |F0 |D5H: Cờ0
PSW.44 |RSI D4H - Bit 1 chon bank thanh ghi ˆ
PSW.3 | RSO - | D3H Bit chọn bank thanh ghi
| | | 00=bank 0; địa chỉ 00H-07H -Ì 01=bank 1: địa chỉ 08H-0EH
10=bank 2:địa chỉ 10H-17H _ 11=bank 3:địa chỉ 18H-1FH psw2 [ov © |D2#H |Cðuàn PSW.1 | DIH | Dy tre
psw.o [Po D0H - Cờ Parity chấn
Hình 8: Bảng thanh ghiPSW _ e Cờ nhớ (CY):
Có cơng đụng kép Thơng thường nó được dùng cho các lệnh tốn học: nó sẽ
được s¿f nếu có một số nhớ sinh ra bởi phép cộng? hoặc có một số mượn mang đến bít 7 Ví dụ, nếu thanh ghỉ tích lũy chứa FFH, thì lệnh sau:
| | ADD A#l
Sẽ trả về thanh ghi tich lily két qda OOH va set cờ nhớ trong PSW
an
THU VIEN Trang 21
Trang 25
Chương 2 :Tìm biểu về vi điều khiển 89C51
Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lý thi hành trên bịt
Ví dụ, lệnh sau đây sẽ AND bit 25H với cờ nhớ C và đặt kết quả trở vào cờ nhớ; ANL C,25H ;and bit 6 địa chỉ 25H với cờ nhớ
e Cờ nhớ phụ;
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết qủa của 4 bit thấp trong khoảng 0AH đến 0FH Nếu các giá trị cộng được là số 'BCD, thì sau lệnh cộng cân có DA A ( hiệu chỉnh thập phân thanh ghi tích lũy) để mang kết quả lớn hơn 9 trở về tâm từ 0+9
‹«Ổ Cờ0:
Cờ 0 (F0)là một bit cờ đa dụng dành các ứng dụng của người dùng - e Các bit chọn bank thanh ghi: |
Các bit chọn bank thanh ghi (RSO và RS1) xác định bank thanh ‘phi được tích cực Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần
Ví dụ, ba lệnh sau cho phép bank thanh ghỉ 3 và di chuyển nội dung của thanh ghi R7
(địa chỉ byte IFH) đến thanh nghị chứa A:
SETB RS1
SETB RSO
MOV A,R7
Khi chương trình được dịch các địa chỉ bit đúng được thay thế cho các ký hiệu “RS1” và “RS0” Vậy lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H
e Cờ Tràn:
Cờ tràn (OV) được se: một lệnh cộng hoặc trừ nếu có một phép toán bị tràn
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 nay dé _ xác định xem kết qủa của nó có nằm trong tim xác định không Khi các số khơng dấu © |
Trang 22
Trang 26
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
được cộng, bít OV có thể được bỏ qua Các kết qủa lớn hơn +127 hoặc nhỏ hơn —128 | sé set bit OV |
4.2 Thanh ghi B:
Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân và chia Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A va
B rồi trả về kết qủa 16 bit trong A (byte thấp) và B (byte cao) Lệnh DIV AB sẽ chia A cho B rồi trả về kết qủa nguyên trong A và phân dư trong B Thanh ghỉ B cũng có
thể được xem như thanh ghi đệm đa dụng Nó được địa chỉ hóa nừng bít bằng các địa
chỉ bit FOH đến ETH
4.3 Con trỏ ngăn xếp:
Con trổ ngăn xếp (SP) là một thanh ghi 8 bít ở địa chỉ 81H Nó chứa địa chỉ
_ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy đữ liệu ra khỏi ngăn xếp Lệnh cất dữ
liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu, và lệnh lấy dữ liệu ra khỏi ˆ
ngăn xếp sẽ đọc dữ liệu và làm giảm SP Ngăn xếp của 8051 được giữ trong RAM nội và được 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
đầu của 8051 | Để khởi ¡ động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây được
dùng: |
MOV SP,#%FH
Trén 89C51 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM trên chip là 7FH Sở đĩ cùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ lệu đầu tiên
Người thiết kế có thể chọn khơng phải khởi động lại con trd ngăn xếp mà để nó lấy giá trị mặc định khi reset hệ thống Giá trị mäc định đó là 07H và kết qủa là
Trang 23
Trang 27
Chương 2 :Tìm hiểu về vi điều khiển 89C51
ngăn đầu tiên để cất dữ liệu có địa chỉ 08H Nếu phần mém ứng dụng không khởi
động lại SP, 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 giữ tạm | thời và lấy lại dữ liệu hoặc được truy xuất ngầm bằng các lệnh gọi chương trình con : (ACALL, LACALL) và các lệnh trở về (RET, RETD để cất và lấy lại bộ đếm chương
trình
4.4 Con trổ dữ liệu: -
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 chi 82H (DPL, byte thấp) và 83H (DPH, byte cao) Ba lệnh sau sẽ ghi 55H
vào RAM ngoài ở địa chỉ 1000H: | | :
| MOV A#55H
MOV DPTR,#1000H
MOVX @DPTR,A
Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy, lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải đữ liệu 16 bit 1000H vào con trỏ dữ liệu Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển đữ liệu trong A (55H) đến - RAM ngoài ở địa chỉ được chứa trong DPTR (10008)
_ 4,5 Các thanh ghỉ Ì port xuất nhập:
Các port của 89C51 bao gồm Port 0 ở địa chỉ 80H, Port | ở địa chỉ 90H, Port 2
ở địa chỉ A0H và Port 3 ở địa chỉ B0H Tất cả các Port đều được địa chỉ hóa từng bit
Điều đó cung cấp một khả năng giao tiếp thuận lợi
- 4,6 Các thanh ghỉ timer:
Trang 24
Trang 28
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
§9C51 chứa 2 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc
dém su kién Timer 0 6 dia chi 8AH (TLO, byte thap) va 8CH (THO, byte cao).Timer 1 & dia chi 8BH (TLI, byte thdp) va 8DH (THI, byte cao)
Việc vận hành timer được set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H Chỉ có TCON được địa chỉ -
hóa từng bit | |
4.7 Các thanh ghỉ port nối tiếp: _
89C51 chứa một port nối tiếp trên chip dành 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 cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (có bộ chuyển đổi A/D, các thanh ghi dịch ) Một thanh ghi gọi là bộ đệm _
dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai giữ liệu truyền và nhận Khi - truyển dữ liệu thì ghi lên SBUf, khi nhận dữ liệu thì đọc SBUF Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port r nối tiếp (SCON) (được địa chỉ hóa từng bit) ở địa chỉ 98H |
4.8, Céc thanh ghi ngit:
89C51 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 reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) 6 địa chỉ _ 8AH Cả hai thanh ghi được địa chỉ hóa từng bit |
4.9 Các thanh ghi điều khiển nguồn:
Thanh ghi điều khiển nguồn (PCON) có địa chỉ 87H chứa nhiều bit điều khiển
- Chúng được tóm tắt trong bảng sau:
Trang 25
Trang 29
Chương 2 :Tìm hiểu về vi điều khiển 89C51
ah =——————————
7 |SMOD Bit gấp đôi tốc độ baud, nếu được set thì tốc:
: | độ baud sẽ tăng gấp đôi trong các mode 12
- | và 3 của port nối tiếp
6 Không định nghĩa
5 — | Không định nghĩa
4 - | | Khong dinh nghia
3 GFI | - | Bit ed đa dụng 1ˆ
2 |Gro — |Bitcðđadụng2 |
1 PD : Giảm công suất, được set để kích hoạt mode gidm cơng suất, chỉ thoá khi reset
0 IDL | Mode chờ, set để kích hoạt mode chờ, chỉ |
_Ì thốt khi có ngất hoặc reset hé thong
Hình 9: Thanh ghỉ PCON
‹« Chế độ nguồn giảm: -
Lệnh thiết lập bít PD bằng 1 sẽ là lệnh sau cùng được thực thi trước khi đi vào
chế độ nguôn giảm |
(1) Mạch dao động trên chíp ngừng hoạt động
(2)Mọi chức năng ngừng hoạt động
(3) Nội dung của RAM trên chíp được duy trì (4)Các chân port duy trì mức logic của chúng
(5) ALE và PSEN được giữ ở mức thấp Chỉ ra khởi chế độ này bằng cách reset thệ thống
_ Trang 26
Trang 30
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
e Chế độ nghỉ:
Tín hiệu clock nội được khố khơng cho đến CPU nhưng khơng khố đối với
các chức năng ngắt, định thời và port nối tiếp | | Cac chan port cũng ‹ được duy tri các mức logic của chúng ALE và PSEN được giữ ở mức cao
5/ Bộ nhớ ngồi
8§9C51 có khả năng mở rộng bộ nhớ đến 64K bộ nhớ chương trình và 64K bộ
nhớ dữ liệu bên ngồi Do đó có thể dùng thêm ROM va RAM nếu cần |
Khi dùng bộ nhớ ngồi, port 0 khơng còn là một port ƯO thuần túy nữa Nó được hợp kênh giữa bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để
chốt byte thấp của địa chỉ khi bắt đầu mỗi chu kỳ bộ nhớ Port 2 thông thường được
dùng cho byte cao của bus địa chỉ Si
Trong nửa đầu của mỗi chu kỳ bộ nhớ, byte thấp của địa chỉ được cấp trong
port 0 và được chốt bằng xung ALE Một IC chốt 74HC373 (hoặc tương đương) sẽ giữ
_ byte dia chỉ thấp trong phần còn lại của chu kỳ bộ nhớ Trong nửa sau của chu kỳ bộ
nhớ port 0 được dùng như bus đữ liệu và được đọc hoặc ghi tùy theo lệnh
5.1/ Truy xuất bộ nhớ chương trình ngồi: |
Bộ nhớ chương trình ngồi là mộ IC ROM được phép bởi tín hiệu PSEN Khi có EPROM ngồi được sử dụng,cả hai port Ö và port 2 điều khơng cịn là các port xuất
/ nhập
Trang 31
Chương 2 :Tìm hiểu về vi điều khiển 89C51
_ Kết nối phần cứng với bộ nhớ ngồi EPROMđược trình bày ở hình dưới đây:
Hình 10 : Truy xuất bộ nhớ chương trình ngồi
Một chu kỳ máy của 89C51 có 12 chu kỳ xung nhịp Nếu bộ dao động trên
chip được lái bởi một thạch anh 12MHz thì chu kỳ m4y kéo dai 1ps Trong m6t chu ky may dién hinh sẽ có 2 xung ALE và 2 byte được đọc từ bộ nhớ chương trình (nếu lệnh
hiện hành là một byte thì byte thứ hai sẽ được loại bỏ) Giản đồ thời gian của một chu -
kỳ máy, được gọi là chu ky tìm nạp lệnh được vẽ ở hình 11:
Trang 32
Chương 2 :Tìm hiểu về vi điều khiển 89C51 _ Trần Khánh Vân
| <———— Mộtchu kỳ máy >| S1 S2 | S3 ALE “Port2 ><| pc ae PCH l9 CO Tờ ————&% 8 ——C—
Hình 11: Giản để thời gian của chu kỳ tìm nạp lệnh ở bộ nhớ
2/ Truy xuất bộ nhớ dữ liệu ngoài:
> Giao tiếp với IK RAM:
Trang 33
Chương 2 :Tìm hiểu về vi điều khiển 89C51
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc bằng các tín
hệu WR và RD (các chân P3.6 và P3.7 thay đổi chức năng) chỉ có một cách truy xuất
- bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bit hoặc RO và R1 xem như thanh ghi địa chỉ | |
Két nối bus địa chỉ và bus dữ liệu giữa RAM và 89C51 cũng giống EPROM và | do đó cũng có thể lên đến 64 byte bộ nhớ RAM Ngoài ra, chân RD, của 89C51 được
nối tới chân cho phép xuất (OE) của RAM và chân WR được nối tới chân ghi (WR) của RAM
Giản đồ thời gian cho lệnh đọc bộ nhớ dữ liệu ngồi được vẽ trên hình sau đối
với lệnh MOVX A, @DPTR: | |
< Một chu kỳ By, Một chu kỳ máy XN
sis4 s}s4s4 sds sdsalsd sís - Ag[] TL a PSEN S | KD |- | Port 2 PCH DPH _ XS
Port.0 nCL<Opcods>< DPL)<DAT
Hình 13:Giản đồ thời gian của lệnh
Giản đồ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tương tự chỉ khác
đường WR sẽ thay vào đường RD và dữ liệu được xuất ra trên port 0 (RD vẫn giữ mức
- cao)
Trang 30
Trang 34
Chương 2 :Tìm hiểu về vỉ điều khiển 89C51 Trần Khánh Vân
6/ Lệnh reset:
89C51 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu iW
máy và trả nó về mức thấp RST có thể được kích khi cấp điện dùng một mạch RC |
M | Tứ 100 10UF - —— 8,2K Hình 14: Mạch reset hệ thống
Trạng thái của tất cả các thanh ghi của 89C51 sau khi reset hệ thống được tóm
- tắt trong bảng sau:
Trang 35
Chương 2 :Tìm hiểu về vi điều khiển 89C51
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình, nó được đặt lại 0000H Khi RST trở lại mức thấp, việc thi hành chương trình ln bắt đầu ở địa chỉ
đầu tiên trong bộ nhớ trong chương trình: địa chỉ 0000H Nội dung của RAM trên chip
không bị thay đổi bởi lệnh reset |
II Tập lệnh của 89C51:
Tập lệnh 89C51 có các opcode 8bit do vậy số lệnh có thê lên đến 256 lệnh
(thực tế có 255 lệnh, 1 lệnh không được định nghĩa) 89C51 có 139 lệnh 1 byte, 92
lệnh 2 byte va 24 lénh 3 byte | |
1 Các kiểu đỉnh địa chỉ:
Các kiểu định địa chỉ là phân cần thiết cho toàn bộ tập lệnh của mỗi một bộ vi |
xử tý, bộ vi điều khiển Các kiểu định địa chỉ cho phép ta xác định rõ nguồn và đích dữ liệu theo nhiều cách khác nhau phụ thuộc vào tình huống lập trình Trong tất cả các
kiểu định địa chỉ 89C51, có 8 kiểu định địa chỉ sau đây:
e Định địa chỉ thanh ghi
e Định địa chỉ trực tiếp e Định địa chỉ gián tiếp
e Định địa chỉ tức thời
e Định địa chỉ tương đối
e Dinh dia chỉ tuyệt đối
e Dinh dia chi dai
e Binh dia chi chi sd
1.1/ Dinh dia chi thanh ghi :
82C5 lcó thể truy xuất 8 thanh ghi, làm việc được đánh số từ RO đến R1 Các thanh gi này được mã hoá bằng cách dùng 3 bít thấp nhất của opcode
Trang 32
Trang 36
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
Hợp ngữ của 89C51 chỉ ra kiểu định địa chỉ thanh ghi bằng ký hiệu Rn, trong đó n có
giá trị từ 0 đến 7 Ví dụ để cộng nội dung của thanh ghi R7 chứa A ta dùng lệnh sau:
| ADD A,R7 | |
C6 4 day thanh ghi lam “việc” Tại mỗi thời điểm chỉ có một đãy thanh ghỉ được tích cực Muốn chọn dãy thanh ghỉ nào ta chỉ cần gán các bit nhị phân thích hợp |
vao RSI (PSW.4) va RSO(PSW.3) trong thanh ghi trang thái chương trình (PSW)
Mặ lệnh |n|n |n |
Địa chỉ thanh ghỉ
Ngoài ra, một số thanh ghi đặc biệt như thanh ghi tích lũy, con trổ dữ liệu cũng được xác định trong các lệnh nên khơng cần các bít địa chỉ Trong các lệnh này | thanh ghi tich lũy được xác định là “A”, con trổ dữ liệu là “DPTR”, thanh ghi đếm chương trình là “PC”, cờ nhớ là “C”, cặp thanh ghi tích lũy B là “AB” Vi du: |
| | INC DPTR |
là lệnh 1 byte, lệnh này cộng 1 vào nội dung con trỏ dữ liệu 16 bit
1.2/ Đinh Địa chỉ trực tiếp: _
_Kiểu định địa chỉ trực tiếp được sử dụng để truy xuất các biến nhớ hoặc các thanh g† ghi trên chip, các thanh ghi bên trong 89C51 được đánh địa chỉ trực tiếp bing 8
bit dia chi nim trong byte thi hai của mã lệnh
TTTTI1iI qT) TT T Tì |
MED Pig opt yg SFP
Địa chỉ trực tiếp
Dù vậy, trình hợp dịch cho phép gọi tên các thanh ghi chức năng đặc biệt (có
_ địa chỉ trực tiếp từ 80H đến FFH) ví dụ :PO cho port 0, TMOD cho thanh ghi chế độ timer
Trang33 -
Trang 37Chương 2 :Tìm hiểu về vi điều khiển 89C51
1.3/ Định Địa chỉ gián tiếp:
Giải pháp của 89C51 là dùng kiểu định địa chỉ gián tiếp Các thanh ghi RO và R1 có thể hoạt đông như là con trồ và nội dung của chúng chỉ ra địa chi trong RAM, nơi mà dữ liệu được đọc hay được ghi Trong kiểu định địa chỉ gián tiếp được nhận
biết nhờ vào ký tự @ đặt trước R1 hay R2 Ví dụ: |
| MOV A,@R1 TT 1 én ° ee | — | Ma
Địa chỉ gián tiếp
1.4/ Định Đỉa chỉ tức thời:
Trong hợp ngữ, các toán hạng tức thời được nhận biết nhờ vào ký tự # đặt trước các toán hạng tức thời Các tốn hạng đó có thể là một hằng so, một ký số hay
một biểu thức toán học Trường hợp dịch sẽ tự động tính tốn và thay thế dữ liệu trực |
tiếp vào mã lệnh TT | CITT) Dự liệu tức thời L1 [ E1 LÍ Mã lệnh rT | a |_| Địa chỉ tức thời
1.5/, Định Địa chỉ tương đối:
- Địa chỉ tương đối được dùng trong các lệnh nhảy Một địa chỉ tương đối (hay
còn gọi là offset), là một giá trị 8 bít có dấu để cộng thêm vào thanh ghi đếm chương
trình (PC) Tầm nhảy của lệnh này trong khoảng từ -128 đến 127 byte Trước khi
cộng, thanh ghi PC sẽ tăng đến địa chỉ theo sau lệnh nhảy rồi tính tố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 là 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 trước
Trang 34
Trang 38
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
TTTTT | TTTTTTỊ Mã lệ nh | Offset tương đối
Địa chỉ tương đối 1.6/, Định Địa chỉ tuyệt đổi:
Địa chỉ tuyệt đối chỉ dùng trong các lệnh ACALL và AJMP Đây là các lệnh 2 | byte ding để rẽ nhánh vào một trang 2 Kbyte của bộ nhớ chương trình bằng cách cấp
11 bit địa chỉ thấp (A0-A10) để xác định địa chỉ dich trong trang mã Còn 5 bit cao của địa chỉ đích (A11-A15) chính là 5 bịt cao hiện hành trong thanh ghi đếm chương trình
Vì vậy địa chỉ của lệnh theo sau lệnh rẽ nhánh và địa chỉ đích của lệnh rẽ nhánh cần -
phải cùng trang mã 2 Kbyte (có cùng 5 bit địa chỉ cao) Al5 Al1AI0 A0 NX ~Y~ a n ——
Xác định địa chỉ trong trang mã
Xác định trang mã
rT td me TTTIT1 15 Ì |
A]O-A8, Ma | Offset tyong đối
Địa chỉ tuyệt đối
1.7/ Dinh Dia chi dai:
Địa chỉ dài chỉ dùng cho lệnh LCALL và LIMP Các lệnh này chiếm 3 byte và dùng 2 byte sau (byte 2 va byte 3) dé định địa chi dich 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ớ
Trang 39
Chương 2 :Tìm hiểu về vi điều khiển 89C51
=—===——===—=—===
1.8/ Dinh dia chi chi sé:
Địa chỉ chỉ số › dùng một thanh ghi cơ bản (hoặc thanh ghi đếm chương trình PC hoặc thanh ghi con trỏ dữ liệu DPTR) va địa chỉ offset (trong thanh ghi tích lũy A) để tạo địa chỉ được tác động cho các lệnh JMP hoặc MOVC Các bảng nhảy và bảng tim :
kiếm dễ dàng được tạo ra để sử dụng địa chỉ chỉ số | địa chỉ cơ bản | | Offset địa chỉ được tác động
PChoặc DPTR | + “ACC = |
a Địa chỉ chỉ số
2 Các nhóm lệnh cua 89C51:
Tập lệnh của 8051 được chia thành 5 nhóm:
e Nhóm lệnh số học e Nhóm lénh logic e Nhóm lệnh di chuyển dữ liệu e Nhóm lệnh chuyển điều khiển
_e Nhóm lệnh rẽ nhánh |
2.U Nhóm lệnh số học:
ADD A,Rn : cộng nội dung thanh ghỉ Ra vào thanh ghi A
ADD A,data : Cộng trực tiếp 1 byte vào thanh ghi A |
ADD A,@Ri : 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 -
ADDA,#data — :Cộng dữ liệu tức thời vào A ADDC A,Rn : Cộng thanh ghỉ và cờ nhớ vào A
ADDC A.data : Cộng trực tiếp byte đữ liệu và cờ nhớ vào A
ADDC A,@Ri : Cộng gián tiếp nội dung RAM và cờ nhớ vào A
ADDC A„#data : Cộng dữ liệu tức thời và cờ nhớ vào A
Trang 36
Trang 40
Chương 2 :Tìm hiểu về vi điều khiển 89C51 Trần Khánh Vân
=———_=.=——====—=ee
SUBB A,Rn : Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và
| cờ nhớ
SUBB A,data : Trừ trực tiếp A cho một số và cờ nhớ SUBB A,@Ri : Trừ gián tiếp A cho một số và cờ nhớ
SUBB A,#data : Trừ nội dung A cho một số tức thời và cờ nhớ
INC A số : Tăng nội dung thanh ghi A lên l |
INC Rn : Tăng nội dung thanh ghi Rn lên 1
INC data : Tăng dữ liệu trực tiếp lên 1
INC @Ri _: Tăng gián tiếp nội dung vùng RAM lên 1 INC DPTR : Tăng nội dng con trỏ dữ liệu lên 1
_ DECA : Giảm nội dung thanh ghi A xuống 1
DEC Rn : Giảm nội dung thanh ghi Rn xuống 1
DEC data : Giảm dữ liệu trực tiếp xuống Ì
DEC @Ri _„ : Giảm gián tiếp nội dung vùng RAM xuống 1 |
MUL AB | : Nhân nội dung thanh ghi A với nội dung thanh ghi B DIV AB : Chia nội dung thanh ghi A cho nội dung thanh ghi B |
DAA _ : hiệu chỉnh thập phân thanh ghỉ A |
2.2/ Nhóm lệnh logic:
ANLA,Rn : AND nội dung thanh ghi A với nội dung thanh ghỉ Rn
ANL A,data :AND nội dung thanh ghi A với dữ liệu trực tiếp | ANL A,@Ri : AND nội dung thanh ghi A với đữ liệu gián tiếp trong
| RAM
ANL A,#data — + AND néi dung thanh ghi với dữ liệu tức thời _
ANL data,A + AND mét d@ liéu truc tiếp với A
ANL data,#data : AND một đữ liệu trực tiếp với A một dữ liệu tức thời
Trang 37