Bộ nhớ trong 89S52 bao gồm ROM và RAM. RAM trong 89S52 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 bit, cỏc bank thanh ghi và cỏc thanh ghi chức năng đặc biệt.
AT89S52 cú bộ nhớ được tổ chức 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 89S52 nhưng 89S52 vẫn cú thể kết nối với 64K byte bộ nhớ chương trỡnh và 64K byte dữ liệu bờn ngoài
40
Bảng 2.2 Bản đồ bộ nhớ Data bờn trong Chip 89S52 được tổ chức như sau:
RAM bờn trong AT89S52 được phõn chia như sau: - Cỏc bank thanh ghi cú địa chỉ từ 00H đến 1FH. - RAM địa chỉ húa từng bit cú địa chỉ từ 20H đến 2FH. - RAM đa dụng từ 30H đến 7FH.
- Cỏc thanh ghi chức năng đặc biệt từ 80H đến FFH.
- RAM đa dụng
RAM đa dụng cú địa chỉ từ 30h – 7Fh cú thể truy xuất mỗi lần 8 bit bằng cỏch dựng chế độ định địa chỉ trực tiếp hay giỏn tiếp.
Cỏc vựng địa chỉ thấp từ 00h – 2Fh cũng cú thể sử dụng cho mục đớch
Địa chỉ
byte
41
- RAM cú thể định địa chỉ bit
Vựng địa chỉ từ 20h -2Fh gồm 16 byte cú thể thực hiện như vựng RAM đa dụng (truy xuõt mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng cỏc lệnh xử lý bit.
Cỏc bank thanh ghi
Vựng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h – 07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18 – 1Fh. Cỏc bank thanh ghi này được đại diện bằng cỏc thanh ghi từ R0 đến R7. Sau khi khởi động thỡ hệ thống bank 0 được chọn sử dụng.
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 R0 đến R7. Việc thay đổi bank thanh ghi được thực hiện thụng qua thanh ghi từ trạng thỏi chương trỡnh (PSW).
Cỏc thanh ghi cú chức năng đặc biệt
Cỏc thanh ghi trong 89S52 được định dạng như một phần của RAM trờn chip vỡ vậy mỗi thanh ghi sẽ cú một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trỡnh và thanh ghi lệnh vỡ cỏc thanh ghi này hiếm khi bị tỏc động trực tiếp). Cũng như R0 đến R7, 89S52 cú 21 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 0FFH.
Chức năng từng bit trạng thỏi chương trỡnh
- Cờ Carry CY (Carry Flag):
Cờ nhớ 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.
42
Khi cộng những giỏ trị BCD (Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit 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 (F0) là 1 bit cờ đa dụng dựng cho cỏc ứng dụng của người dựng.
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dóy thanh ghi tớch cực. Chỳng được xúa sau khi reset hệ thống và được thay đổi bởi phần mềm khi cần thiết.
Tựy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tớch cực tương ứng là Bank 0, Bank1, Bank2 và Bank3.
Bảng 2.3 Bit chọn Bank thanh ghi
- Cờ tràn 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.
- Bit Parity (P):
Bit tự động được set hay Clear ở mỗi chu kỳ mỏy để lập Parity chẵn 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ụ
RS1 RS0 BANK
0 0 0
0 1 1
1 0 2
43
A chứa 10101101B thỡ bit P set lờn một để tổng số bit 1 trong A và P tạo thành số chẵn.
Bit Parity thường được dựng trong sự kết hợp với những thủ tục của Port nối tiếp để tạo ra bit Parity trước khi phỏt đi hoặc kiểm trabit Parity sau khi thu.
- Cỏc thanh ghi định thời (Timer)
AT89S52 chứa 2 bộ định thời 2 bộ định thời/đếm 16 bit được dựng cho việc định thời hoặc đếm sự kiện. Timer 0 ở địa chỉ 8AH (TL0: Byte thấp) và 8DH (TH1: 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, chỉ cú TCON được địa chỉ húa từng bit.
- Cỏc thanh ghi nối tiếp
AT89S52 chứa một Port nối tiếp 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 giao tiếp nối tiếp với cỏc IC khỏc. Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền và dữ liệu 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 ghi điều khiển port nối tiếp SCON ở địa chỉ 98H.
-Cỏc thanh ghi ngắt
Thực tế ở 89S52 chỉ cú 5 ngắt dành cho người dựng, song nhiều tài liệu kỹ thuật của cỏc nhà sản xuất vẫn núi rằng cú 6 ngắt vỡ họ tớnh cả lệnh reset bố trớ sỏu ngắt của 8051 như sau:
- Reset: khi chõn reset được kớch hoạt thỡ 8051 nhảy về địa chỉ 0000.
- Hai ngắt dành cho bộ định thời timer 0 và timer 1, địa chỉở bảng vector ngắt của hai ngắt này tương ứng với timer 0 và timer 1 là 000B4 và 001B4. Hai ngắt
44
phần cứng dành cho cỏc thiết bị bờn ngoài nối tới chõn 12 (P3.2) và 13 (P3.3) của cổng P3 là INT0 và INT1 tương ứng. Cỏc ngắt ngoài cũng được gọi là EX1 và EX2. Vị trớ nhớ trong bảng vector ngắt của hai ngắt INT0 và INT1 này là 0003H và 0013H .
Truyền thụng nối tiếp cú một ngắt cho cả thu lẫn phỏt, địa chỉ của ngắt này trong bảng vector ngắt 0023H
Bảng vector ngắt của 8051:
Bảng 2.4 Bảng vector ngắt của 8051
- Cho phộp ngắt và cấm ngắt:
Khi reset thỡ tất cả mọi ngắt bị cấm, cú nghĩa là khụng cú ngắt nào được bộ vi điều khiển đỏp ứng nếu chỳng được kớch hoạt, cỏc ngắt phải được cho phepw bằng phần mềm để bộ vi điều khiển cú thể đỏp ứng được. Cú một thanh ghi được
45
gọi là cho phộp ngắt IE(Interrup Enable), chịu trỏch nhiệm về việc cho phộp ngắt và cấm cỏc ngắt IE là thanh ghi cú thể định địa chỉ bit.
-Thanh ghi cho phộp ngắt IE:
Bảng 2.5 Thanh ghi cho phộp ngắt IE
- Cỏc bước thực hiện khi cho phộp một ngắt
Để cho phộp 1 ngắt, trỡnh tự thực hiện cỏc bước như sau:
+ Bit D7 của thanh ghi IE là EA phải được bật lờn cao cho phộp cỏc bit cũn lại của thanh ghi cú hiệu lực.
+ Nếu EA=1 thỡ tất cả mọi ngắt đều được phộp và sẽ được đỏp ứng nếu cỏc bit tương ứng của cỏc ngắt này trong IE cú mức cao.
+ Nếu EA=0 thỡ khụng cú ngắt nào được đỏp ứng cho dự bớt tương ứng trong IE cú giỏ trị cao.
46
- Thanh ghi TIMER.
Vi Điều Khiển 89S52 cú 3 timer 16 bit, mỗi timer cú bốn cỏch làm việc. Người ta sử dụng cỏc timer để:
o Định khoảng thời gian.
o Đếm sự kiện.
o Tạo tốc độ baud cho port nối tiếp trong 89S52.
Trong cỏc ứng dụng định khoảng thời gian, người ta lập trỡnh timer ở những khoảng đều đặn và đặt cờ tràn timer. Cờ được dựng để đồng bộ húa chương trỡnh để thực hiện một tỏc động như kiểm tra trạng thỏi của cỏc ngừ vào hoặc gửi sự kiện ra cỏc ngừ ra. Cỏc ứng dụng khỏc cú thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trụi qua giữa hai sự kiện (vớ dụ đo độ rộng xung).
- Thanh ghi chế độ Timer Mode (TMOD):
Cả hai bộ định thời timer 0 và timer 1 đều dựng chung một thanh ghi được gọi là TMOD để thiết lập cỏc chế độ làm việc khỏc nhau của bộ định thời. Thanh ghi TMOD là thanh ghi 8 bit gồm cú 4 bit dành cho bộ timer 0 và 4 bit dành cho timer 1. Trong đú hai bit thấp của chỳng dựng để thiết lập chế độ của bộ định thời, cũn 2 bit cao dựng để xỏc định phộp toỏn.
47
Dưới đõy chỳng ta sẽ tỡm hiểu về cỏc phộp toỏn:
48