Tổ chức bộ nhớ của AT89S52

Một phần của tài liệu Tra cứu thông tin và điều khiển thiết bị điện qua tin nhắn SMS (Trang 40)

Hình 3-2 Tổ chức bộ nhớ AT89S52

AT8951 được xây dựng theo cấu trúc Harvard, nghĩa là bộ nhớchương trình và bộ nhớ dữ liệu nằm tách rời nhau.

Khảo sát bộ nhớ 8951

Bộ nhớ mở rộng và bộ nhớchương trình bên trong không có gì đặc biệt, chỉ có chức năng lưu trữ dữ liệu và chương trình.

Bộ nhớ RAM nội:Là bộ nhớđặc biệt, có 256 byte và được phân chia:  Các bank thanh ghi (00H – 1FH).

 RAM truy xuất từng bit (20H – 2FH).  RAM đa dụng (30H – 7FH).

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 28

Hình 3-3 Bộ nhớ

Các bank thanh ghi 00H – 1FH:

Nằm ở 32 byte thấp địa chỉ từ 00H-1FH. AT8951 có 8 thanh ghi đặc biệt có tên R0-R7

Khi Reset R0-R7 được gán cho 8 ô nhớcó địa chỉ 00H-07H. Tổ chức 4 bank thanh ghi:

Bank 0: 00H – 07H. Bank 1: 08H – 0FH. Bank 2: 10H – 17H. Bank 3: 18H - 1FH. RAMđa dụng 7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54 53 52 51 50 4F 4E 4D 4C 4B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35 34 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 Bank3 Bank2 Bank1 Bank 0 F7 F6 F5 F4 F3 F2 F1 F0 E7 E6 E5 E4 E3 E2 E1 E0 D7 D6 D5 D4 D3 D2 D1 D0 - - - BC BB BA B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 AF AC AB AA A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 9F 9E 9D 9C 9B 9A 99 98 97 96 95 94 93 92 91 90 8F 8E 8D 8C 8B 8A 89 88 87 86 85 84 83 82 81 80 00 1F 20 2A 2F 30 7F 89 90 98 A0 A8 B0 B8 D0 E0 F0 FF 99 8A 8B 8C 8D B ACC PSW IP P3 IE P2 SCON SBUF P1 TH1 TH0 TL1 TL0 TMOD TCON

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 29 Vùng nhớ RAM truy xuất từng bit:

Có 210 ô nhớ bit có thể truy xuất từng bit.

Có 128 bit nằm ở ô nhớbyte có địa chỉ từ 20H – 2FH, và có thể truy xuất từng bit hoặc từng byte.

Vùng RAM đa dụng:

Có 80 byte nằm ởđịa chỉ 30H – 7FH.

Vùng nhớ các bank thanh ghi cũng là vùng nhớRAM đa dụng.

Các thanh ghi đặc biệt:

AT8951 có 21 thanh ghi đặc biệt nằm địa chỉ 80H – FFH -Các Port:

+Có 4 Port là Port0, Port1, Port2 và Port3. +Các Port có thể truy xuất từng bit.

-Thanh ghi SP:

+Là thanh ghi con trỏngăn xếp. +Quản lý bộ nhớngăn xếp.

+Lệnh cất dữ liệu làm tăng địa chỉSP trước khi cất.

+Lệnh lấy dữ liệu thì ngược lại, lấy dữ liệu rối mới giảm SP. +Khi Reset thì địa chỉ SP=07H.

-Thanh ghi con trỏ dữ liệu DPTR:

+Thanh ghi DPL (byte thấp) có địa chỉ 82H. +Thanh ghi DPH (byte cao) có địa chỉ 83H.

+Kết hợp lại ta có DPTR=DPH+DPL là thanh ghi 16 bit.

+Có thể sử dụng độc lập DPL, DPH như thanh ghi 8bit, hoặc kết hợp thành thanh ghi 16bit là DPTR.

-Thanh ghi PCON:Thanh ghi điều khiển công suất của VĐK. -Thanh ghi Timer/Counter:

+Bao gồm các thanh ghi TCON, TMOD, TH0, TL0, TH1 và TL1. +Chỉ có thanh ghi TCON mới có thể truy xuất từng bit.

+Hai thanh ghi phục vụ cho Timer/Counter:TCON (Timer Control), TMOD (Timer Mode).

+Thanh ghi lưu trữ giá trị đếm:TH0 và TL0 kết hợp thành thanh ghi 16 bit lưu trữxung đếm cho Timer/Counter0, TH1 và TL1 kết hợp thành thanh ghi 16 bit lưu trữxung đếm cho Timer/Counter1.

-Thanh ghi SCON, SBUF:

SCON (Series Control): điều khiển truyền dữ liệu nối tiếp. SBUF (Series Buffer): thanh gi đệm dữ liệu nối tiếp. -Thanh ghi IE, IP:

IE (Interrup Enable): điều khiển cho phép/ không cho phép ngắt. IP (Interrup Prierity): điều khiển ưu tiên ngắt.

-Thanh ghi PSW:PSW (Program Status Word): thanh ghi trạng thái. -Thanh ghi ACC

-Thanh ghi B: ởđịa chỉF0H được dùng cùng với thanh ghi 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 và B rồi trả về kết quả 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 quả nguyên trong A và phần dư trong B.

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 30 3.1.3 Timer

AT89S52 có 3 bộ Timer 16 bit, mỗi Timer có 4 mode hoạt động, riêng timer 2 chỉ có 3 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 nối tiếp.

Thanh ghi điều khiển timer T2CON

Bảng 3-2 Chức năng thanh ghi T2CON

Bit Ký hiệu Chức năng

7 TF2 Bit cờ tràn timer 2 6 EXF2 Cờ ngoài Timer2

5 RCLK Cho phép nhận xung đồng hồ 4 TCLK Cho phép truyền xung đồng hồ. 3 EXEN2 Cho phép dùng Timer2 ngoài 2 TR2 Cho phép ngừng/khởi động Timer2

1 C/T2 Bằng 0 hoạt động ở chếđộ timer, bằng 1 hoạt động như counter 0 CP/RL2 Nạp lại giá trị.

Bảng 3-3 Các mode hoạt động của timer 2

Thanh ghi điều khiển chếđộ timer TMOD (timer mode register)

Thanh ghi mode gồm hai nhóm 4 bit là: 4 bit thấp đặt mode hoạt động cho Timer 0 và 4 bit cao đặt mode hoạt động cho Timer 1,8 bit của thanh ghi TMOD được tóm tắt như sau:

GATE C/T M1 M0 GATE C/T M1 M0

7 6 5 4 3 2 1 0

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 31 Bit Ký hiệu Timer Chức năng

7 GATE 1 Khi GATE = 1, Timer chỉ làm việc khi INT1=1 6 C/T 1 Bit cho đếm sự kiện hay ghi giờ

C/T = 1 : Đếm sự kiện C/T = 0 : Ghi giờđều đặn

5 M1 1 Bit chọn mode của Timer 1

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

3 GATE 0 Bit cổng của Timer 0

2 C/T 0 Bit chọn Counter/Timer của Timer 0

1 M1 0 Bit chọn mode của Timer 0

0 M0 0 Bit chọn mode của Timer 0

Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1

Bảng 3-5 Chọn MODE Timer

M1 M0 MODE Chức năng

0 0 0 Mode Timer 13 bit

0 1 1 Mode Timer 16 bit

1 0 2 Mode tựđộng nạp 8 bit

1 1 3 Mode Timer tách ra :

Timer 0 : TL0 là Timer 8 bit được điều khiển bởi các bit của Timer 0. TH0 tương tựnhưng được điều khiển bởi các bit của mode Timer 1. Timer 1 : Được ngừng lại.

Thanh ghi điều khiển timer TCON (timer control register):

Thanh ghi đ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 và Timer 1. Thanh ghi TCON có bit định vị. Hoạt động của từng bit được tóm tắt như sau

Bảng 3-6Chức năng thanh ghi TCON Bit Ký hiệu Chức năng

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 32

TCON.7 TF1 Cờtràn Timer 1 được set bởi phần cứng ở sựtràn, được xóa bởi phần mềm hoặc bởi phần cứng khi các vectơ xử lí đến thủ tục phục vụ ngắt ISR

TCON.6 TR1 Bit điều khiển chạy Timer 1 được set hoặc xóa bởi phần mềm để chạy hoặc ngưng chạy Timer.

TCON.5 TF0 Cờ tràn Timer 0(hoạt động tương tự TF1) TCON.4 TR0 Bit điều khiển chạy Timer 0 (giống TR1)

TCON.3 IE1 Cờ kiểu ngắt 1 ngoài. Khi cạnh xuống xuất hiện trên INT1 thì IE1 đượ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 IT1 Cờ kiểu ngắt 1 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.1 IE0 Cờ cạnh ngắt 0 ngoài TCON IT0 Cờ kiểu ngắt 0 ngoài.

3.1.4 Truyền dữ liệu nối tiếp

Thanh ghi điều khiển nối tiếp SCON

Thanh ghi SCON là thanh ghi 8 bit được dùng để lập trình việc đóng khung bit bắt đầu

Start, bit dừng Stop và các bit dữ liệu và chon mode hoạt động của truyền dữ liệu.

Các bit trong thanh ghi SCON:

SM0 SM1 SM2 REN TB8 RB8 T1 R1 Trong đó: Bit SM0 và SM1 dùng để chọn mode hoạt động Bảng 3-7 Chọn chếđộ truyền SM0 SM1 Chếđộ truyền 0 0 Chế độ nối tiếp 0

0 1 Chế độ nối tiếp 1(8 bit dữ liệu, Start, Stop)

1 0 Chế độ nối tiếp 2

1 1 Chế độ nối tiếp 3

-Bit SM2là bit D5 của thanh ghi SCON. Bit này cho phép khả năng đa xử lý của

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 33

chúng ta đặt SM2 = 0 vì ta không sử dụng 8051 trong môi trường đa xử lý.

-Bit REN là bit cho phép thu (Receive Enable). Bit REN =1 cho phép nhận dữ liệu, bit

REN=0 cho phép truyền dữ liệu

-Bit TB8 và RB8:

+Bit TB8 là bit được dùng để cho chế độ nối tiếp 2 và 3.

+Bit RB8 Trong chế độ nối tiếp 1 thì bit này nhận một bản sao của bit Stop khi một

dữ liệu 8 bit được nhận. Bit này cũng như bit TB8 rất hiếm khi được sử dụng.

-Các bit TI và RI:

Các bit ngắt truyền TI và ngắt thu RI là các bit D1 và D0 của thanh ghi SCON.

Các bit này là cực kỳ quan trọng của thanh ghi SCON. Khi 8051truyền xong một ký tự 8

bit thì nó bật TI để báo rằng nó sẵn sàng truyền một byte tiếp theo. Cờ RI sau khi nhận

hoàn tất 1 byte cờ RI lên 1 để báo rằng nó đã nhận xong một byte.

Tốc độ truyền dữ liệu:

Truyền dữ liệu nối tiếp nếu hoạt động ở mode 0 và 2 thì tốc độ truyền là không đổi bằng

1/12 tốc độ chip. Ở mode 1 và 3 thì tốc độ truyền có thể thay đổi theo lập trình người sử

dụng. Các tốc độ Baud trong mode 1 và 3 được xác định bởi tốc độ tràn của Timer 1.

Muốn có tốc độ Baud thì phải khởi tạo thanh ghi TMOD ở kiểu 8 bit tự động nạp lại và đặt

giá trị nạp lại vào thanh ghi TH1 của Timer 1 để tạo ra tốc độ tràn chính xác.

Bảng 3-8Tóm tắt tốc độBaud tương ứng với 2 loại thạch anh 12MHz và 11,059Mhz Tốc độ

Baud

Tần số thạch

anh

SMOD Giá trị nạp cho

TH1 Tốc độ thực Sai số 9600 12MHz 1 -7 (F9H) 8923 7 2400 12MHz 0 -13 (F3H) 2404 0,16 1200 12MHz 0 -26 (E6H) 1202 0 19200 11,059MHz 1 -3 (FDH) 19200 0 9600 11,059MHz 0 -3 (FDH) 9600 0 2400 11,059MHz 0 -12 (F4H) 2400 0 1200 11,059MHz 0 -24 (E8H) 1200 0

Lập trình 8051 để truyền dữ liệu nối tiếp

Khi lập trình 8051 để truyền các byte ký tự nối tiếp thì cần phải thực hiện các bước sau đây:

1. Nạp thanh ghi TMOD giá trị 20H báo rằng sử dụng Timer1 ở mode 2 để thiết lập chế độ

baud.

2. Nạp thanh ghi TH1 các giá trị cho trong bảng trên để thiết lập chế độ baud truyền dữ

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 34

3. Nạp thanh ghi SCON giá trị 50H báo chế độ nối tiếp 1 đểđóng khung 8 bít dữ liệu, 1 bít

Start và 1 bít Stop.

4. Bật TR1 = 1 để khởi động Timer1.

5. Xoá bít TI bằng lệnh “CLR TI”

6. Byte ký tự cần phải truyền được ghi vào SBUF.

7. Bít cờ TI được hiển thị bằng lệnh “JNB TI, xx” để báo ký tự đã được truyền hoàn tất chưa.

8. Để truyền ký tự tiếp theo quay trở về bước 5.

3.1.5 Tóm tắt tập lệnh của vi điều khiển AT89S52

*Tập lệnh của 8951 được chia thành 5 nhóm:  Số học

 Luận lý

 Chuyển dữ liệu  Chuyển điều khiển

Chi tiết thiết lập lệnh:

Rn : Thanh ghi R0 đến R7. @Ri : Thanh ghi R0 hoặc R1. #data : Dữ liệu 8 bit.

#data 16 : Dữ liệu 16 bit. Addr16 : Địa chỉ 16 bit. Addr11 : Địa chỉ 16 bit.

Bit : Bit được định địa chỉ trực tiếp trong RAM hoặc các thanh ghi đặc biệt.

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

ADD A,Rn : Cộng nội dung thanh ghi Rn 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 nội dung RAM tại địa chỉđược khai báo trong Ri vào A. ADD A,#data : Cộng dữ liệu vào A.

ADD A,data : Cộng trực tiếp byte dữ liệu và cờ nhớ vào A.

ADDC A,@Ri : Cộng nội dung RAM tại địa chỉ trong Ri và cờ C vào A. ADDC A,#data : Cộng dữ liệu 8bit và cờ C vào A.

SUBB A,Rn : Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ C. SUBB A,data : Trừ nội dung A cho một số và cờ C.

SUBB A,@Ri : Trừ nội dung A cho một số tại địa chỉlưu trong Ri và cờ C. SUBB A,#data : Trừ nội dung A cho dữ liệu 8 bit và cờ C.

INC A : Tăng nội dung thanh ghi A lên 1. 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 nội dung RAM tại địa chỉlưu trong Ri lên 1. DEC A : 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 1

DEC @Ri : Giảm nội dung RAM tại địa chỉlưu trong Ri xuống 1. INC DPTR : Tăng nội dung con trỏ dữ liệu lên 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.

“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 35

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

Nhóm lệnh luận lý:

ANL A,Rn : AND nội dung thanh ghi A với nội dung thanh ghi 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 dữ liệu gián tiếp trong RAM. ANL A,#data : AND nội dung thanh ghi với dữ liệu 8 bit.

ANL data,A : AND một dữ liệu trực tiếp với A.

ANL data,#data : AND một dữ liệu trực tiếp với một dữ liệu 8bit. ANL C,bit : AND cờ C với 1 bit.

ANL C,/bit : AND cờ C với bù 1bit.

ORL A,Rn : OR nội dung thanh ghi A với nội dung thanh ghi Rn. ORL A,data : OR thanh ghi A với một dữ liệu trực tiếp.

ORL A,@Ri : OR thanh ghi A với một dữ liệu gián tiếp. ORL A,#data : OR thanh ghi A với một dữ liệu 8bit. ORL data,A : OR một dữ liệu trực tiếp với thanh ghi A.

ORL data,#data : OR một dữ liệu trực tiếp với một dữ liệu tức thời. ORL C,bit : OR cờ nhớ với một bit trực tiếp.

ORL C,/bit : OR cờ nhớ với bù của một bit trực tiếp.

XRL A,Rn : XOR nội dung thanh ghi A với nội dung thanh ghi Rn. XRL A,data : XOR thanh ghi A với mộ dữ liệu trực tiếp.

XRL A,@Ri : XOR thanh ghi A với một dữ liệu gián tiếp. XRL A,#data : XOR thanh ghi A với mộ dữ liệu tức thời. XRL data,A : XOR một dữ liệu trực tiếp với thanh ghi A.

XRL dara,#data : XOR một dữ liệu trực tiếp với một dữ liệu tức thời.

SETB C : C=1.

SETB bit : bit=1.

CLR A : Xóa nội dung trong thanh ghi A. CLR C : Xóa cờ nhớ.

CPL A : Bù nội dung thanh ghi A. CPL C : Bù cờ nhớ.

CPL bit : Bù một bit trực tiếp.

RL A : Xoay trái nội dung thanh ghi A.

RLC A : Xuay trái nội dung thanh ghi A qua cờ nhớ. RR A : Xuay phải nội dung thanh ghi A.

RRC A : Xuay phải nội dung thanh ghi A qua cờ nhớ. SWAP A : Đảo 4 bit cao với 4 bit thấp trong thanh ghi A.

Nhóm lệnh di chuyển dữ liệu:

MOV A,Rn : Chuyển nội dung thanh ghi Rn vào thanh ghi A. MOV A,data : Chuyển dữ liệu trực tiếp vào thanh ghi A. MOV A,@Ri : Chuyển dữ liệu gián tiếp vào thanh ghi A. MOV A,#data : Chuyển dữ liệu tức thời vào thanh ghi A. MOV Rn,data : Chuyển dữ liệu trực tiếp vào thanh ghi Rn. MOV Rn,#data : Chuyển dữ liệu tức thời vào thanh ghi Rn. MOV data,A : Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp.

MOV data,Rn : Chuyển nội dung thanh ghi Rn vào một dữ liệu trực tiếp. MOV data,data : Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp. MOV data,@Ri : Chuyển một dữ liệu gián tiếp vào một dữ liệu gián tiếp. MOV data,#data : Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp.

Một phần của tài liệu Tra cứu thông tin và điều khiển thiết bị điện qua tin nhắn SMS (Trang 40)

Tải bản đầy đủ (PDF)

(173 trang)