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

Vi điều khiển cấu trúc lập trình và ứng dụng

65 75 0

Đ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

Định dạng
Số trang 65
Dung lượng 25,02 MB

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

Nội dung

K hi thiết kế các ứng dụng đòi hỏi bộ nhớ ớn người ta có thể dùng bộ nhớ ngoài với dung lưíỊrng lên tới 64 kbyte chiobộ nhớ chương trình và cho 64 kbyte bộ nhớ dữ liệu hình 2.7... Như đã

Trang 1

Chương VI Điếu KHIấN 8051

2.1 TỔNG QUAN VỂ HỌ VI ĐIỂU KHIỂN 8051

8051 đã trở nên phổ biến sau khi Intel cho phép các nhà san xuất khác sản xuất và bán các dạng biến Ihể của 8051 Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc dộ khác nhau và dung lượng ROM trên chip khác nhau, nhưng tất cả các lệnh đều lương th^ch với

8051 ban đầu Như vậy, nếu ta viết chương trình cho một phiên bản nào của 8051 thì cũng chạy được với mọi phiên bản khác khống phi thuộc vào hãng sản xuất

Bộ v i điểu khiển 8052 là một thành viên của họ 8051, 8052 có tất

cả các đẫc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RaM và một bộ định thời nữa (bảng 2.2)

18

Trang 2

128 byte

2

31

Như thấy lừ bảng 2.2 thì 8052 là nì(< rông cua Hih 1 Do vậy các chương

trìnli viêi clio 8051 đều chạy trên 8052 nhirnti diều ngược lại là không đúng

2 Bộ vi diều

M ọl ílià iili vicn khác nửa của 80.^ 1 là chip 803ỉ Chip này Ihường được coi như là 8031 không có ROM ỉrcn chip Để sử dụng chip này ta phải bổ sung R O M ngoài cho nó, ROM ngoài phải chứa chương trình mà

8031 SC nạp và thực hiện Với 8051, chương Iiình dược chứa trong ROM trẽn chip bị giới hạn bởi 4 kbyte, còn ROM ngoài được gắn vào 8031 thì

có thổ lớn đến 64 kbyte K h i sử dung ROM ngoài ta chỉ còn lại có hai cổng dể sử dụng cho mục đích vào/ra dể giải quyết vấn đề này ta có thể lĩiở rộng cổng vào/ra cho 8031 bằng cách sử dung vi mạch PPĨ 8255

2.1.3 Các phỉèn bản của 8051

Mặc dù 8051 là thành viên phổ biến nhủi của họ 8051 nhưiig chúng ta

sẽ gặp rất tihiều pliiên bản của nó với nlùmg lêii gọi khác nhau \uỳ thuộc vào

kiểu bộ nliớ chưiĩiig trình, cỏng nghé chế líio, tần sô ỉàm việc V í dụ phiên tón ciìa 8051 với bộ nhớ ư v - FROM đưạc ký hiệu là 875ỉ Phiên bản Flash ROM cũng được bán bcVi nhiểu liẫiig kỉiác nỉiau, chảng hạn của Atmel với tên gọi là AT89C51 còn phiên ban NV - RAM của 8051 do Dalas Semiconductor cung cấp thì được gọi ỉà DS5fX)0 Ngoài ra còn có phiên bản OTP (lập trình được một lần) cũng dược sản xuất tò i rất nhiều hãng

I Bô ví điề u k h i ể n 8751

Chip 8751 chỉ có 4kbyte bộ nhớ IJV - ÍÌPROM trẽn chip Đổ sử dụug chip này cần có bộ đốỉ PROM và bộ xoá u v - EFRO M để xoá nội dung của bộ nhớ ư v - EPROM bẽn trong 8751 trước khi ta có thể lập trình lại nó Do R O M trên chip dối với 8751 ỉà u v - EPROM nôn cẩn phải mất 20 phúi để xoá 8751 trước khi nó có ihể được lạp trình irở lại V ì điểu này đã dẫn đến nhiéu nhà sán xuất giới ihiộu các phiên bản

19

Trang 3

Flash R O M u v - R A M N i io ai ra c o n CÓ n h i e u fliie n ban với các lốc clộ khác nhau c ú a S751 lừ I i l i ĩ c u hãỉiíi kỉiac nhau.

2, B ô v i d i ê u k h i ê n A T 8 9 5 Ỉ t ừ A đ m e l C o r p o r í t t i o n

AT8951 là phiên bản 8051 c ó R O M irciì c h i p ơ d ạii g bộ nhớ ĩ-lash Phiẽn btUi này là Iv i ư ở n g dối V Ớ I [ihĩnig phái t ric u n h a n h vì bọ nhớ Flash có i h ể dược x o á t r o n g vài g i â v Dùnig A1'89C.^1 dể ph á t trển rnột

hệ thống dưa trên bộ vi tỉiều k h i ê n vêu c ầ u inột b ộ cỉỏì R O M h6 trợ bộ nhớ Flash, không y c u c á u bộ x o á R O M ĩlãnsỊ A t m c l dã C Ỉ I O ra đời một pliiên bản của A T 89 C 5 1 c ổ thê’ đ ư ơ c l â p i rìn h qua c ổ n g t r u y ề n t h ỏ n g

COM của ináy lính IB M l’C

AT89C2051 là bộ vi diéu khiển 8 bií được ché lụo Iheo công nghệ CMOS, có thé hoạt dộng đưực ở dải điện áp lừ 2,7 V đến 6V Bộ vi cìiéu khiổn này được đóng gói DIP 20 chân, khá nliỏ gọn so với AT89S52 nhưng vản có đủ các lài nguyên Ihông dung như:

- Bộ nhớ: 2 kbyte Flasli có ihể ghi/xoá được KXX) lần; ỉ 28 X 8-bit RAM;

- Có thể hoạt động ử làn sô' Ihạcli anh lôn tới 24M Hz;

51 irong AT89C51 - 12PC là ký hiệu cho CMOS, “ 12” ký hièu cho

20

6

Trang 4

1 2 M H z và “ P” là kiểu đóng vỏ D II’ và chữ “ C” cuối cùng là k ý hiệu cho thương mại (ngược với c h ữ “ M ” là quân sự) Thông thường AT89C51 - 12PC rất lý tưởng cho cac dự án của học sinh, sinh viên.

B Ả N G 2 4 C Á C P H IÊ N B Ả N 8051 VỚI T ố c Đ Ộ K H Á C N H A U C Ủ A A T M E L

Trang 5

Bộ vi điểu khiển AT89S52 gồm các khối chức năng c h íiili sau ctỗy:

• C P U ịCentraỊprocessing unit) hao gồm :

- Thanh ghi tích lũ y A;

- Thanh ghi tích lủ y phụ B, dùng cho phép nhún và phép cliia;

- Đơn vị log ic học (A L U : A rith m e tic Logical U n it);

Thanh ghi lừ irạng thái chương trịnh (PSW : Prorgam Status Word);

- Bốn băng thanh ghi; '

- Con trỏ ngăn xếp

• Bộ nỉìớ chirơng trình (hộ nhớ ROM) gổm Hkbyìe Fỉash ,

• Bộ ììlìâ clỉ7 liệu (bồ nhớ R A M ) gồm 256 byie ^ ^

• Bộ U á RT (U nivcrsaĩ Ansynchronous Receivcr and Transm iller)

có chức năng truyền nhận nối liếp, AT89S52 có ihể giao tiếp với cổng nối tiếp của máy lính thông qua bộ ƯART

• 3 hộ TỉmetiCounter 16 bit thực hiện các chức nãng định thời và

đếm sự kiện

• W D M (Watch Dog Timer): W D M được dùng để phục hổi lại hoại

động của CPU khi nó bị treo bới một nguyên nhân nào dó W D M ở AT89S52 gồm m ội bộ T im er 14 bit, 1 bộ T im e r 7 bit, thanh ghi

W DTPRG (W D T programable) điểu khiển Tim er 7 bit và mội ilianh

g lii chức năng W D TR S T (W D M register) Bình thường W D T không hoạt động (bị cấin), để cho phép W DT, các giá irị 1 EH và E l ỉ l cần phải được ghi liên liếp vào thanh ghi WDTRST T im e r 14 bit của \VDT

sẽ đếm tăng đần sau m ỗi chu kỳ đổng hồ cho đến giá trị 16383 thì xảy

ra tràn K h i xảy ra iràn, chân Reset sẽ được đặt ờ mức cao trong khoảng thời gian 98*Tose (Tost; = l/Fosc) AT89S52 sẽ được reset

K h i W D T hoạt động, ngoại trừ Reset phần cứng và Reset do W I)T tràii thì không có cách nào có ihể cấm được W DT, vì vậy kh i sử dụng W D T thì các đoạn mã của chương trình phải được đặt trong các khe thời gian giữa các lần W D T được khởi tạo ỉại

22

Trang 6

BẮNG Ĩ.5 SỐ CHU KỲ MÁY WDT ĐỂM TÙY THEO GIÁ TRỊ CỦA so S1, S2

Trang 7

• Khối điêu klìiểĩì n^áí với 2 ngu ồn ĩìgăỉ ỉìgoàì và 4 nguồn ngắl trong.

• Bộ lập trình (ghi chưítiig irình lêii Raslì ROM) ciio phép người sử dụng

có thổ nạp các chươiig trình cho chip mầ không cán các Ix) nap chưyôn diụng.

• Bộ chia ĩần sớ' vớì hệ số chia là 1 2.

• 4 cổng xuất nhập với 32 chân.

J PO 3 ( A D 3 ) ] PO 4 ( A D 4 )

n P 0 5 ( A D 5 )

□ P 0 6 ( A D 6 ) : J P 0 7 ( A D 7 )

(A 3) P 2 1 l 15 2 8 ] P 0 4 ( A 0 4 )

Í A I O ) P 2 2 L 16 2 7 □ P O S (ADẽS) ( A n ) P 2 3 [ _ 17 26 1 P 0 6 { A D í 6 ) (A 1 2 ) P 2 4 C 18 25 3 P 0 7 (AD77)

f A l 3 ) P 2 5 L 19 24 J Ẽ Ã A / P P

Í A U ) P 2 6 C 2 0 2 3 □ A L E / P R O í G ( A 1 5 ) P 2 7 C 21 22 3 P S Ẽ N

Trang 8

□ P0.4 (AD4)

□ P0.5 (AD5) PO.6 (AD6)

3 P2.4 (A12) DP2.3 (A11)

X T A L2: 10 33 3 PWRVDD

X ĨA L 1 11 32 J PO.O (ADO) GND ' 12 31 ĩlP O I (AD1) PWRGND r 13 30 □ P0.2 (AD2) (A8) P2.0 14 29 D P0.3 (AD3) (A9) P2.1 C 15 28 □ P0 4 (AD4) (A10) P2.2C 16 27 □ P0.5 (AD5) (A11)P2.3 í : 17 26 □ P0.6 (AD6) (A12) P 2 4 f 18 25 □ P0.7(AD7) (A13) P2.5C 19 24 □ ẼAA/PP (A14)P2.6C: 20 23 3 ALE/PRÕỒ (A15) P 2 7 L 21 22 □ PSEN

f) 89C52/89S52 kiểu DIP 42 chân;

Port 0 gồm 8 chân, ngoài ch ức năng x u ấ t nhập, Port 0 còn là bus

đa hợp dữ liệu và địa chỉ (A D 0 -A D 7 ), chức năng này sẽ được sử dụng khi 8051 giao tiếp với các thiết bị ngoài có kiến trúc Bus như các vi mạch nhớ, mạch PIO

Trang 9

Dỏi với 8051, chức năng duy nhâl của Porl 1 là chức nàng xuâì nihãp,

cũng như các Port khác, Porl 1 có ihc xuâì nhập Ihco bií và íhco byle

vcc

A lternate

O utput Function

Hinh 2.5 Càu trúc của các chân trên Port 1 và Port 3,

Riêng dòng 89Sxx, ba chân P1.5, 1^1.6, P1.7 dược dìiiig dể inạpROM Iheo chuán ISI*; hai chân Pl 0 và P1.1 dược dùng cho bộ T im e r 2

3 P o r t 2

Pori 2 ngoài chức năng là cổng vào/ra như pori 0 và pori 1 còm làbytc cao cùa bus dịa chi khi sứ dụng bộ nhớ ngoài

26

Trang 10

<Cíu trúc các chân của port 2 đươc VC trên hình 2.6.

Address High/ Control

Hinh 2.6 cấu trúc của các chản trên Port 2.

Mỗi chân trẻn Port 3 ngoài chức năng xuất nhập còn có một chức nãn.g 'iêng, cụ ihể như sau:

F3.7 /RD Xung đdc ỉ)ộ nhớ dữ lỉệu ngoài

5 (Chăn / P S E N ( P r o g r a m Store Enable)

/PSEN là chủn điểu khiển đọc chưírng trình ờ bộ nhớ ngoài, nó được nối vM chân /OE đổ cho phép đọc các hytc mã lệnh trên R O M ngoài /PS.EM sẽ ở mức thấp trong thời gian đọc mã lỌnh Mã lộnh dược đọc từ

bộ nứớ ngoài qua bus dữ liệu (port 0) thanh ghi lộnh dể được giái mã

Khi thực hiên chương trình irong ROM nội thì /PSEN ở mức cao

aLE là tín hiệu điểu khiển chốt dịa chỉ có tần số bàng 1/6 tần số dao ểộng của vi điểu khiển Tín hiệu A I.E được dùng để cho phép vi

27

Trang 11

mạch chốt bên ngoài như 74373, 74573 chối byte địa chỉ thấp rai kiỏi bus đa hợp địa chỉ/dữ liệu (Port 0).

7 C h ẩ n /K A ( E x t e r n a l Access)

Tín hiệu /E A cho phép chọn bộ nhớ chương trình là bộ nhớ tnng hay ngoài vi điểu khiển Nếu /E A ở mức cao (nối với V cc), ilìì vu ciều khiển ih i hành chương trình trong R O M nội Nếu /E A ở mức thấp tiố i

G N D ) thì v i điểu khiển Ih i hành chương trình từ bộ nhớ ngoài

AT89S52 có bộ nhớ theo cấu trúc Harvard - có những vùng chiobộ

nhớ riêng biệl cho chương trình và dữ liệu Như đã nói ở Irên, cá bộ ihớ

chương trình và dữ liệu có sẵn ở trên chip, tuy nhiên dung lượiig củ:a íác

bộ nhớ trên chip là hạn chế K hi thiết kế các ứng dụng đòi hỏi bộ nh(ớ ớn người ta có thể dùng bộ nhớ ngoài với dung lưíỊrng lên tới 64 kbyte chiobộ nhớ chương trình và cho 64 kbyte bộ nhớ dữ liệu (hình 2.7)

Trang 12

1 Bộ nh ớ chương t r i n h

AT89vS52 có 8 kbyte Flash ROM ircn chip, khi chân /E A (chân sô' 31) đươc đặt ở mức logic cao (+5V), bô vi điều khiển sẽ thực hiện chương trình trong bộ nhớ này bát dáu từ địa chỉ OOOOH Số lần lập trìiih (gh i) cho bộ nhớ này là khoáiìg 1000 lần

K hi chân /E A được đặt ở mức logic (hấp, bộ vi điều khiển sẽ thực hiện chương trình ở bộ nhớ chương irình ngoài (EPPOM ngoài), tuy nhiên đc có dược điều này thi cần phải có một mạch phối ghép AT89S52 với Flash/EPROM như trong hình 2.8 V i mạch chốt (L a lch )

sẽ tácli riêng Bus đa hợp địa chỉ và dữ liệu A D 0 -A D 7 trôn port 0 của

8951, tuỳ theo dung lượng của EPROM sẽ có sô' đường địa chỉ tương ứng được dùng Tín hiệu điểu khiển đoc ROM là tín hiệu /PSEN

AT89S52

P2 ALE PO

A7;0

D7:0 OE

Hình 2.8 Sơ đồ ghép nối AT89S52 vài EPROM.

2 lìô nhớ dữ liê u

AT89S52 có 256 byte R A M nội (bảng 2.7) được phân chia như sau:

* Các bank í hanh ghi có địa chỉ ĩừOOỈi ổến 1FH.

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à RO - R7 và theo mặc định sau khi reset hô thống, các thanh ghi này có các địa chỉ từ OOH - 07H

Các lệnh dùng các thanh ghi RO - R7 sẽ ngắn hơn và nhanh hơn so với các iệnh có chức năng lươ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 sử dụng một trong các thanh ghi này

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 ghi RO - R7, để chuyển đổi việc truy xuất các bank thanh ghi ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái

29

Trang 13

* RAM dịa chỉ Ììoá từng bit có dịa chỉ từ 20H cíến 2FỈÌ.

AT89S52 có 128 bit có chứa các byte dịnh địa chi theo b it từ 2()Hđến 2FH Ý tưởng truy xuất từng bit bằng phần mém là các đặc tính mạnh của các bộ vi điéu khiển nói chung Các b it có thể đưực đặt, xóa (A N D , O R ) với 1 lệnh đơn

* RAM da dụng íừSOH dến F F ỈỈ.

* Các llianh íị I i ì chức năng đặc hiệt íừHOIỈ dến F F IỈ.

B Ả N G 2 7 B Ộ N H Ớ D Ữ L IỆ U T R Ê N C H IP C Ủ A A T 8 9 S 5 2

FF 7F

Trang 14

Hinh 2.9 Sd đo ghép nòi 8051 với RAM ngoài.

31

Trang 15

Bộ Iihớ dử ỉiôu ngoài là bộ nìỉở RAM (!ưv;c đọc ỉioặc ghi bởi tín

hiệu /R D và A \ ’R Các RAM có ihc ^iao tiép NỚi \ Í'89S52 urưng tự

cách thức như EPROM ngoai trừ chđn /Rl ) cùa AT8‘)S32 nối với chân /O E (O utput Enable) cua RAM \à chân /\VR cua A'r89S32 nối với chân /W E của R A M (hình 2.9)

Nếu có nhiều vi inạch

R O M và R A M cùng dược

ghép nối với AT89S52 í hì có

ihể dùng thêm vi mach giải

mã 74LS138 (hình 2.10)

Như đã nói ở trên, bộ nhớ

cliưcmg trình và bộ nhớ dữ liệu

của AT89S52 có thể trùng địa

chỉ, điều này cho phép người

thiết kế có ihể xây dựng một

bộ nhớ dữ liệu chứa chương

2.2.4 Các thanh ghi chức năng

1 T ừ t r a n g t h á i chương t r ì n h (PSW: ProỊịram Status Word)

Từ trạng thái chương trình ở dịa chỉ DOH được tóm tát như sau:

00 = Bank 0, address 00H-; 07H

01 = Bank 1: address 08H-^0FH

10 = Bank 2, address 10H -17H

11 = Bank 3 address 18H^ 1FH Overlow Flag

Reserved Even Parity Fiag

32

Trang 16

Chức năng từng hit của từ trạng thái chưmig trình:

- Cờ nhớ CY (Carry Flag): Cờ nhớ có lác dụng kép Thông ỉhườiig

nó (lượ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ờ nhớ phụ A C (A u x ilia ry Carry Flag):

K h i cộng những giá trị BCD (Binary Code Decim al), cờ nhớ phụ

AC được thiết iập nếu kết quả 4 bit íhấp nằm trong phạm vi điểu khiển OAH - OFH Ngược lạ i A C = 0

- Cờ 0 (Flag 0): Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứiig dụng cùa người đùng

Trang 17

- Bit ch ọn b a nk lh an h ghi triỉV xuát RSU, R S l:

R S l v à RSO quyô't địnli d ã y ihianh ịji! l íc h circ C h ú n g đ ư ợ c x ó a

s a u kh i r e s e t hệ thống V?1 được tliay điổi bừi pháii incm khi c ầ n ihìếl

Tùy theo R S l, RSO - 00, 01, lCí, ] 1 sẽ dược chọn Bank tích cực tương ứng là BankO, B ankl, Bank2, Bamk3

- Cờ tràn ov (Over Flag):

Cờ tràn được thiết lập sau một hoat động cộng hoạc trừ nếu có sự tràn toán học K h i các sô có dấu đươc cộng hoạc trừ với nhau, phần mểm có ihể kiểm tra b ii này để xác đinh xem kếl quả có nằm irong tầm xác định không Khi các số khống có dấu được cộng, b it o v ttược

bỏ qua Các kết quả ỉớn hơn +127 hoãc nhỏ hơn -128 thì bit o v = 1

- B it Parity (P):

B it tự động được thiết lập liav xóa (V mỗi chu kỳ máy để lập bit chẵn lẻ (P arity) chán với thanh ghi A đếm các bit 1 trong ihanh glìi

A cộng với b it chẩn lỏ lu6n luôn chẵn V í clụ A chứa 10101 lO lB thì bit

p đạt lên 1 để tổng số bit 1 trong A và p là chẫn

B it chẩn lẻ thường được (lùng trong sư kếi hợp với những thủ lục của Port nối liế p đe tạo rẽ Int chấn lẻ ưước khi plìấl hoặc- kiểin Ua bit chẵn lẻ sau kh i thu

2 T h a n h g h i B

Thanh ghi B ở dịa chì Ĩ-OỈỈ được dùng cùng với thanh ghi A trong các phép toán nhân chia Lệnh MUL A B sẽ iihẠn những giá tr ị không dấu 8 bit trong hai thanh ghi A và B, rồi trá vé kếí quá 16 b ìi trong A (byte cao) và B (byte thấp) Lênh D IV A B láy A chia B, kêl quả phần nguyên của phép chia đậi vào A, phần dư đật vào B

Thanh ghi B cũng có ĩhê dược dùng như một thanh ghi trung giíin, ihanh ghi này được định địa chỉ theo bit lừ FOH đến f'7FỈ

Trang 18

3 Con t r ỏ n g á n xếp S P (Stack Pointer)

Con trỏ ngăn xếp là m ộl thanh ghi 8 bii ỏ địa chỉ 81H dùng dể chứa địa chỉ của đỉnh ngăn xcp Các lệiilì thao lác vứi ngăn xếp bao gồm các lệnh cấl dữ liệu vào ngăn xếp (PUSỈI) và lấy dữ liệu ra khỏi ngăn xếp (POP) Lệnh cất dữ liệu vào ngăn xếp sẽ iàm tãng SP và lệnh

lấy ra khỏi ngăn xếp sẽ làm giảm SP Ngăn xếp của AT89S52 là 128

byte đầu của R A M nội

4 Con trỏ dữ l i ê u D P T R ( D a t a Pointer)

Con :rỏ dữ liệu ( D I^ R ) được dùng dé’ truy x L iâ ì bộ nhớ ngoài Con trỏ dữ liệu ỉà một thanh ghi 16 bit ở địa chi 82H (DPL: byte thấp) và 83H (DPH: byte cao)

\ ' í dụ: 03 lộnh sau sẽ ghi 1211 vào RAM ngoài ở địa chí 1200H:

MOV D P T R , # 1 2 0 0 H MOV 0 D P T R , A

5 T h a n h g h i của các cổng (Port Register)

Các thanh ghi cùa các Port của AT89S52 bao gồm thanh ghi của Port 0 ở địa chỉ 80H, thanh ghi của Port 1 ở địa chỉ 90H, thanh ghi của Pori 2 ở địa chỉ AOH, và thanh ghi của Port 3 ờ địa chỉ BOH Tấl cả các thanh ghi của các Port này đều có ihe iruy xuất theo b il và theo byte

6 T h a n h g h i của các bô đ ịn h thài ( T i m e r Reg is ter)

AT89S52 có chứa ba bộ dếni/dịiih thời (Timer/Counter) 16 bit dược dùng cho việc dịnh thời hoậc dê'ni sự kiện Bộ định thời 0 (T im er 0) ở clịa chỉ 8AH (TLO : byte thấp) và 8CH (TÍĨO : byte cao); T im e r 1 ở địa chỉ 8BH ( T L l: byle thấp) và 8DH ( Ĩ H I : byte cao) T im e r 2 ở địa chỉ CCH (TL2: byte thấp) và CDH (TH2: bytc cao) Các thanh ghi này khòiig được định dịa chỉ bit

7 T h a n h g h i của công nôi tiếp ( S e r i a l P ort R egis ter)

AT89S52 chứa một Port nối tiêp phục vụ cho viộc trao đổi ihông tin với các thiết bị có khả năng giao tiếp nối tiếp như máy lính (qua cổng com), modem hoặc các bộ vi dicu khiển khác có cùng chức năng Thanh ghi đôm dữ liệu nối liếp (SBUF) ở dịa chỉ 99H làm cả hai nhiệm

vụ truyền và nhận dữ liệu K hi iruyén dữ liệu được ghi lên SBƯF, khi nhạn dữ liệu được đọc từ SBUF Thanh ghi này cũng không được định

đ ịa chỉ b il.

35

Trang 19

8 T h a n h g h i r ĩ ị Ị ă t ( I n t e r r u p t Register)

AT89S52 có 6 nguổii ngát, 2 nniức ưu liên C á c ngãi bị cấm sau khi

bị reset hệ thống và sẽ được cho phép bầnp vièc ihiêì lâp các bit của thanh ghi cho phép ngát (IE ) ở địa chỉ A 8 ỈỈ thứ lự ưu tiên của các ngái

được đặt bằng cách seỉ các bil ở íhatilì ghi ưu tiên ngát (IP) ở địa chỉ B8H Cả hai thanh ghi Iiày đều được đinh địa chỉ theo bit

9 T h a n h g h i điêu khiển nguồn P C O N (I^otver Control Register)

PCON gổm 8 bit nằm ử địa ch i 87H, Thanh ghi này không được định địa chỉ th eo b it, V nghĩa của lừ b ii như sau:

Bit 7 (S M O D ) : Bit lãng tốc độ baud ở mode 1, 2, 3 của cổng nối tiếp

: Không sử dụng

: Bil cờ đa năng 1

: Bit cờ đa năng 2

: B il khởi tạo chế độ Power Down

: Bit khởi tạo chế độ IDLE

AT89S52 có mội bộ chia

tần số bên tron g chiip, bộ này

sẽ cấp xung c lo c k cho các khối

trên chip từ nguồn dao động

bên ngoài qua 2 chân X T A L I

Chế độ X2:

ở chế độ này tárii sổ' thạch anh được chia 6 lần, chế độ này được đặt bằng cách đặt các bit ở ĩhanh ghi CLKCONO và thanh ghi C L K C O N l.Thanh ghi CLKCONO:

Hinh 2.12 Mạch tạo dao động.

36

Trang 20

Cho phep dSt he so chia cho Timer 2;

0: he so chia la 6 1: he so chia la 12.

Cho phep dat h§ so chia cho Timer 1:

1: he so chia la 12.

0: he s6 chia Ici 6 1; he so chia la 12.

0: he s6 chia 14 12 (ch^ d 6 X 1 )

1 :h e s 6 chia la 6 (ch^ d6 X2).

khi truy xuất ngoại vi:

0: hệ số chia là 12 (chế độ X I) 1: hệ số chia là 6 (chế độ X2)

37

X

Trang 21

Hinh 2.13 MÔ tả hoạttđộntg của bộ chia tần.

2 M ạ c h R E S E T

Có 4 cách để RRSET AT89S52 lẩm 1 ưm là: RESET k h i cấp nguồn,

RESET bời W D T , RESET bằng phán miềiĩi và RESET bằng mạch ngoài qua chân RST (hình 2.14)

Trong một hệ thông gổiTi nhiổu V!Ì mạch khả trình thì một mạch RESET lích hợp cá 2 cách RESET khi biật Iguổn và RESET bởi mạch ngoài thường được sử dụng (hình 2 15)

38

Trang 22

HInh 2.14 Reset AT89S52.

+ 5 V

RST

Hình 2.15 Mạch reset AT89S52.

2.:.6 Lập trình cho vỉ điểu khiển

l 4 p trình cho vi điều khiển họ 8051 trang b ị bộ nhớ chương trình kiỂu Flash cần điện áp 12V làm tín hiệu cho phép lập trình để tương

t h t h với các bộ lập trình Flash hoâc EPROM chuyên dụng

Các chân phục vụ viêc lập trình cho 8051/8951 được cho trên hình

2 6, trong đó các tín hiệu địa chỉ, dữ liêu và điều khiển phải tuân thủ theo bảng 2.9 Thuật toán lập trình:

l3ước 1: Đưa các địa chỉ lên các đường dây địa chỉ

Bước 2: Đưa byte dữ liộu lên các đường dây dữ liệu

Bước 3: Kích hoạt các đường dây điều khiển

Bước 4: Nâng điện áp chân /E A lên 12V

Bước 5; Hạ điộn áp chân A LE/#P R O G xuống mức thấp để ghi một b\te vào Flash

39

Trang 23

Hình 2.16 Mạch lập trình cho bộ nhớ Flash của AT89S51

BẢNG 2.9 LẬP TRÌNH SONG SONG CHO FLASH

PV7-0 r«ss WrIeCodflData 5V H L

0

A7^ A7^ Rtiad Coda Data 5V H L H H L L L H H Door A11-0

Notes: 1

2 Each pulM is 200 ns-SOOtw lor Write Code Data.

3 Each pulse Is 200 r e - 500 tw tor Write IjOCkBKs.

4 n [7f/8SY signal is ou^ut on P3.0 during prognmning.

V ớ i các bộ v i điều khiển có trang b ị giao diện lập trình nối tiếp ISP như 89S51, 89S52 thì.việc lập trình được thực hiện kh i điện áp chân reset (RST) của v i điều khiển bàng Vcc như trong hình 2.17

40

Trang 24

Enable Serial Programming wtule RST is Ngh

array Read Program Memory

Read data from Proyam memory in the byte rrKxie Write Program Merrtory

5 5 Í5 5ỈÍ< S Write data to Program memory in the byte modeWrite Lock Bits''* 101Ũ 1100 1110 o o sa xxxx xxxx xxxx xxxx Write Lock bits See Note (1)

Read back ojrrent status of

the Uxkbits (a proyammod lock bit reads back as a "1")

Signature Byte Read Signatufe Byte

Read Program Memory

Bytel

Byte 255

Read dala from Program memory in the Page Mode (256 bytes)

- "I

Wrie Program Memory

(Page Mode) 0 1 0 ! 0 0 0 0 xxxx ^00100 ByteO

Bytel

Byte 255

Write data to Program memory in the Page Mode (256 bytes)

4 1

Trang 25

2.3 GIỚI THIỆU TẬP LỆNH CỦA 8051 • » •

Tập lệnh của 8051 được chia thành 5 nhóm như sau:

từ tổng của hai số nguyên dương, hoặc kết quả dương được tạo ra từ lổng hai số nguyên âm Ngược lại các cờ trên bị xóa

• A D D C A, nguồn; A = A 4- nguồn + CY

Chức năng: Cộng có nhớ

Mô tà: Lênh ADD được dùng để cộng đồng thời aội dung của hai toán hạng và cờ nhớ, kết quả lưu vào thanh chứa A Toán hạng đích luôn ỉà thanh ghi A trong khi đó toán hạng nguồn có thể là m ộl thanh ghi dữ liệu trực tiếp hoậc là ở trong bộ nhớ Nếu có nhớ lừ bit 7 hoặc bit 3 các cờ nhớ (C Y ) và cờ nhớ phụ (A C ) được thiết lập K h i cộng liai sô' nguyên không dấu, cờ nhớ được thiết lập bằng 1 khi phép toán bịtrằn Cờ tràn (O V ) được th iết lập nếu có nhớ từ b it 6 nhưng khổng cónhớ từ bií 7 hoậc có nhớ từ bit 7 nhưng không có nhớ từ bit 6 Cờ tràn cho biết kết quả âm được tạo ra từ tổng của hai số nguyên dương, hoặc kết quả dương được tạo ra từ tổng hai số nguyên âm Ngược lại các cờ trên bị xóa

SUBB A , nguồn; A = A - nguồn - C Y

Clìức nâng: Trừ có mượn.

Mô tả: Trong 8051 chỉ có m ộl lệnh SUBB duy nhất SUBB thực hiện trừ nội dung của thanh chứa A với toán hạng nguồn cùng với cờ nhớ và cất kết quả vào Ihanh chứa Nếu có mượn cần đến cho b it 7 hoặc bit 3 các cờ nhớ (C Y ) và cờ nhớ phụ (AC ) được thiết lập Cờ tràn

6 v e K UCB

42

Trang 26

(O V ) dược thiêì lập nếu có mượn được cần đến cho bit 6 nhưng không pliái cho bit 7 hoặc có mượn được cần đến cho bit 7 nhưng không phải cho bit 6 K h i trừ hai sô' nguyên không dấu, cờ tràn cho biếí kết quả

âm dược lạo ra khi Irừ m ộl sô' dương cho một số âm hoặc kết quả dương được tạo ra kh i trừ một số âm cho một số dương Ngược lại các

dữ liệu 16 b ii được đặt trong A và B

• DIV AB

Chức nâng: Chia A cho B.

byic, tử số (số bị chia) phải ở trong thanh ghi A và mẫu số (số chia) phải

ở trong thanh ghi B Sau khi lênh chia D IV được thực hiện thì thương số được đặt trong A, còn số dư đuợc đặt trong B Xét ví dụ duới đây:

M O V B , #10H ;N ạ p s ố ch ia v à o B = 10H

K h i thực hiên D IV AB, CY = 0 và o v = 0 nếu tử số không phải là sô' 0 Nếu tử sô' là số 0 (B = 0) thì o v = 1 báo lỗ i và CY = 0

2.3.2 Nhóm lệnh logic

• A N L đích, nguồn

Chức nâng: Thực hiện phép nhân Ịogic (A N D ).

Mô tả: A N L thực hiện phép toán A N D lừng bit trên hai íoáii hạng đích và nguồn, đặt kết quả vào đích, các cờ không bị ảnh hưởng Toán hạng đích thường là thanh ghi lổng (tích lu ỹ), toán hạng nguồn có thể

43

Trang 27

là thanh ghi trong bộ nhớ hoặc giá trị cho sẩn A N L thường được dùng

đế che (đại vê 0) những b it nhất định của một toán hạng Cho biết kcì quả của đoạn mã ở ví dụ dưới đây:

Lời giải:

86H 1 0 0 0 0 1 1 0 OFH 0 0 0 0 1 1 1 1

• O R L đích, nguồn

Clĩức năng: Thực hiộn phép cộng log ic (OR).

Mô tả: O R L thực hiện phép toán OR từng bit trên hai toán hạng

đích và nguồn, đặt kết quả vào đích, các cờ không bị ảnh hưởng Toán hạng đích thường ỉà thanh ghi tổng (tích lu ỹ) hoặc địa chỉ trực tiếp, loán hạng nguồn có thể là thanh ghi trong bộ nhớ hoặc giá trị cho sẵn

A N L thường được dùng để th iế l lập (đặl lên 1) những b it nhất định của một toán hạng Cho biết kết quả của đoạn mã ở v í dụ dưới đây:

Chức nâng: Thực hiện phép irừ logic (X O R )

Mô tà: X R L thực hiộn phép toán X O R từng b it trên hai toán hạng đích và nguổn, đặt kết quả vào đích, các cờ không bị ảnh hưởng Toán hạng đích thường là ỉhanh ghi tổng (tích lu ỹ ) hoặc địa chỉ trực tiếp, toán hạng nguổn có thể là thanh ghi trong bộ nhớ hoăc giá trị cho sần Lệnh X R L có thể được dùng để xoá nội dung của m ột Ihanh ghi bằ.ng cách XO R nó với chính nó hoặc X R L cũng có thể được dùng để so sánh xem hai toán hạng có giá tr ị giống nhau không Cho biết kết quả của đoạn mã ở ví dụ dưới đây:

a )

MOV A #55H XRL A, #79H

44

Trang 28

5 4 H 0 1 0 1 0 1 0 0

5 4 H 0 1 0 1 0 1 0 0

• CPJ A

Chức năng: L ấy bù nội dung của thanh ghi A.

Mô tá: Nội dung của thanh ghi A được lấ y bù log ic (phép biến đổi

các b it 0 thành các bit 1 và đổi các b it 1 sang b it 0) Các cờ không bị ảnh hưởng

• CPL bít

Chức nâng: Lấy bù bit.

Mô tá: N ội dung của b it chỉ ra trong lệnh được lấy bù log ic (đổi

các bit 0 thành các bít 1 và đổi các bit 1 sang b it 0) Các cờ không bị ảnh hưởng CPL có thể được thao tác trên cờ nhớ và trên m ột b it bất kỳ được định địa chỉ bit

• CJNE đích, nguồn, địa chỉ tương đối

Chức năng: So sánh và nhảy nếu không bằng nhau.

Mồ tả: Lệnh CJNE so sánh hai toán hạng nguồn và đích và rẽ

nhánh đến địa chỉ tương đối nếu hai toán hạng không bằng nhau Ngoài ra cờ nhớ C Y được lập nếu toán hạng đích nhỏ hơn toán hạng nguồn Các toán hạng vẫn giữ nguyên không thay đổi

Chức nâng: Quay các b it thanh ghi A sang phải.

Mô tả: Lệnh RR thực hiện quay các b it của ihanh ghi A sang phải

một vị trí, bít DO rời từ vỊ trí b it thấp nhất và chuyển sang b it cao nhất D7 Các cờ không bị ảnh hưởng V í dụ:

45

Trang 29

Chức nâng: Quay các bit thanh ghi A sang trái.

Mô rả: Lộnh R L thực hiện quay các bit của ihanh ghi A sang trái

một vị trí, bit D7 rời từ vị trí bit cao nhất và chuyển sang bit thấp Iihâi

DO Các cờ không bị ảnh hưởng V í dụ:

Chức năng: Quay trái qua cờ nhớ.

Mô tả: Lệnh R LC thực hiện quay các bit của thanh ghi A sang trái

một vị trí, bit MSB vào cờ nhớ (CY), sau đó bit CY được chuyển vào bit LSB Cờ nhớ CY lác động như là một b it bộ phận của thanh ghi A làm nó trở thành thanh ghi 9 bil V í dụ:

A, #6AH

A

A A

Chức nâtìg: Quay phải qua cờ nhớ.

Mỏ tả: Lệnh RRC thực hiện quay các bit của thanh ghi A sang

phải một vị irí, bit LSB vào cờ nhớ (C Y ), sau đó bit CY được chuyển vào bit MSB V í dụ:

Trang 30

Mô tả: SW AP hoán đổi 4 bit nửa phần cao của byte và 4 bit thấp

của byie với nhau, SWAP chỉ hoạt động trên thanh ghi A Các cờ không

Chức ỉìăng: D i chuyển bit nguồn đến b il đích.

Mô tả: N ội dung của bit được chỉ ra bởi toán hạng nguồn được sao

chép vào vị trí bií ở toán hạng thứ nhất M ột trong hai toán hạng phải là

cờ nhớ, toán hạng còn lại là bit bất kỳ được định địa chỉ bit, bit nguổn không bị ảnh hưởng, các thanh ghi khác và các cờ không bị ảnh hưỏfng

; Bit PO.O bị xóa vé 0

; Bit cờ nhớ được thiết lập

; Bit cờ chuyển vâo P0.1 (bằng 1)

; Bit cở bị xóa vé 0

CLR PO.O

S E ĨB C MOV P0.1, C MOV C PO.O

• X C H đích, nguồn

Chức nàng: Hoán chuyển nội dung của toán hạng đích và toán

hạng nguồn

Mô tả: Toán hạng đích phải là thanh ghi chứa A , lệnh X C H hoán

chuyển nội dung của byte nguồn với thanh ghi chứa

• X C H D A, @Ri

Cliửc năng: Tương lự như lệnh XC H , X C H D chỉ trao đổi nửa thấp

của các byte với nhau

Các lênh trên chỉ irao đổi dữ liệu trong R A M nội, để cho phép dữ liêu được di chuyển giữa R A M nội với R A M ngoài ta phải sử dụng kiểu đ ịn h địa ch ỉ gián tiếp

2, Các lệ n h d ị c h chuyển d ữ l i ệ u t r o n g R A M n g o à i

Có hai lênh di chuyển dữ liộu dành cho việc đọc cạc bảng tìm kiếm trong bộ nhớ

47

Trang 31

• M o v e A, @A + DPTR

Chức năng: D i chuyển b it nguồn đến bit đích.

trình Đ ịa chỉ của byte được nạp là tổng của giá tr ị 8 bit không d â u ban đầu chứa trong thanh chứa với nội dung của thanh ghi địa chỉ sở (thanh ghi cơ sở có thể là thanh ghi con trỏ dữ liệu hoặc PC) Tn)iig trường hợp sau, PC được tăng để chỉ đến địa chỉ của lênh tiếp tlieo trước kh i được cộng với nội dung của thanh ghi chứa; các thanh g lii đ ịa

chỉ cơ sở không bị thay đổi Phép cộng b it thứ 16 do số nhớ từ 8 bit thấp có thể truyền qua các b it cao Các cờ không bị ảnh hưởng

• M O V C A, @A+PC

Cũng hoạt động tương tự như lệnh trên, ngoại trừ đây bộ đếm

chương trình được dùng để chứa địa chỉ cơ sở và bảng được truy xuất nhờ vào một chương trình con Trước tiên số của điểm nhập yêu cầũ được nạp cho thanh chứa A , sau đó chương trình con được gọi Chuỗi lệnh cho phép khởi động và gọi có thể !à;

MOV A, ENTRY_NUMBER CALL LO OK.UP

MOVC A @A+PC RET

Bảng được định nghĩa sau lệnh RET trong chương trình, lệnh tă n g

được cần đến do PC trỏ tới lệnh RET k h i lệnh M O V C được thực thi Việc tãng nội dung thanh ghi chứa sẽ bỏ qua lệnh RET

2.3.4 Nhóm lệnh xử lý bit

Bộ xử lỷ của 8051 chứa một bộ xử lý logic trên bit cho phép ta thực hiện các phép toán đơn bit Do đó 8051 có khả nâng tru y cập clến lừng bit một thay vì phải truy cập cả byte như ở các bô vi xử lý Các thanh ghi, R A M và các cổng cần được đánh địa chỉ theo b it vì có rấi nhiểu ứng dụng thì ta chỉ cần thay đổi giá trị của một b it chẳng hạn như là bật hoặc tắt m ột thiết bị R A M nội chứa 128 b it và không gian SFR hỗ trợ thêm đến 128 b it được định địa chỉ Tất cả các Port ro , P l, P2, P3 cũng đểu được định địa chỉ bit Các bit có ihể được lập và được xoá chỉ bằng một lệnh Dưới đây là bảng các lệnh dùng cho các phép tính m ôl bit

48

Trang 32

Nhảy về đích nếu bit = 1 và sau đó xóa bit

• SETB b it

Chức tìãníi: Thiết lập bit.

thao lác trên các cờ nhớ hoặc các bit được định địa chỉ bit V í dụ:

Bốn cổng I/O 8 bit là PO, P l, P2 và P3 của bộ vi điều khiển 8051

có thể truy cập toàn bộ 8 bit hoặc theo một b il bất kỳ mà không làm thay đổi các b il khác còn lại K h i truy cập một cổng iheo lừng b il, chúng ta sử dụng cú pháp “ SETB X , Y ” với X là tên của cổng PO, P l,P2 hoặc P3, còn Y là vị trí các bit dữ liêu từ 0 đến 7 V í dụ;

Lộnh trên khi được hợp dịch nó trở thàtih “ SETB 81H ” vì PO.l có địa chỉ trong R A M là 81H

• C L R b ỉt

Chức năng: Xóa bit.

Mỏ tả: C LR xoá bit được chỉ ra Irong lệnh về 0, CLR có ihể thao lác trớn các cờ nhớ hoạc các b il được định địa chỉ bii V í dụ:

CLR TRO

• C P L b it

Cỉìửc iìăng: Lấy bù bit.

Mô tả: CPL được chỉ ra irong lênh được iấy bù, một b il có giá irị l

dược dổi ihành 0 và ngược lại CPL có thể Ihao tác trên các cờ nhớ hoặc các b ii được định địa chi bit V í dụ;

49

Ngày đăng: 06/01/2020, 23:43

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm