Mục LụcChương 1: CẤU TẠO VI XỬ LÝ 89V51RB211.1. Tóm tắt phần cứng11.2. Sơ đồ khối, sơ đồ chân, chức năng các chân11.2.1.Sơ đồ khối11.2.2.Sơ đồ chân11.2.3.Chức năng các chân21.2.4.Các Port21.2.5.Các chân tín hiệu điều khiển31.3. Tổ chức bộ nhớ41.3.1.Bộ nhớ trong51.3.2.Bộ nhớ ngoài101.3.3.Hoạt động Reset111.3.4.Lệnh số học121.3.5.Lệnh logic121.3.6.Lệnh rẽ nhánh131.3.7.Các lệnh di chuyển dữ liệu131.3.8.Các lệnh luận lý141.4. Hoạt động của các Port nối tiếp141.4.1.Thanh ghi điều khiển các Port nối tiếp SCON141.4.2.Khởi dộng và truy xuất thanh ghi Prot nối tiếp161.5. Hoạt động ngắt của 89V51RB2171.5.1.Tổ chức ngắt181.5.2.Sự cho phép ngắt và sự cấm ngắt181.5.3.Sử lý các ngắt19Chương 2: TÌM HIỂU VỀ HỒNG NGOẠI212.1 Hồng ngoại là gì?212.2 Hồng ngoại trong điện tử212.3 Điều khiển TV sony232.4 Thiết bị thu và phát27Chương 3: SƠ ĐỒ VÀ NGUYÊN LÝ HOẠT ĐỘNG283.1 Sơ đồ nguyên lý283.2 Nguyên lý hoạt động283.3 Lưu đồ thuật toán điều khiển ngõ ra P2293.4 Mã chương trình303.5 Sơ đồ mạch in34Chương 4: HƯỚNG PHÁT TRIỂN CỦA ĐỒ ÁN35Chương 5: TÀI LIỆU THAM KHẢO36CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB21.1. Tóm tắt phần cứngMCS-51 là họ IC vi điều khiển do hãng INTEL sản xuất. Các IC tiêu biểu cho họ là 8031, 8051, 8951… Những đặc điểm chính và nguyên tắc hoạt động của các bộ vi điều khiển này khác nhau không nhiều. Khi đã sử dụng thành thạo một vi điều khiển thì ta có thể nhanh chóng vận dụng kinh nghiệm để làm quen và làm chủ các ứng dụng của bộ vi điều khiển khác. Vì vậy để có những hiểu biết cụ thể về các bộ vi điều khiển cũng như để phục vụ cho đề tài này ta bắt đầu tìm hiểu một bộ vi điều khiển thông dụng nhất, đó là họ MCS-51 1.2. Sơ đồ khối, sơ đồ chân, chức năng các chân:1.2.1 Sơ đồ khối:
Trang 1KHOA CÔNG NGHỆ ĐIỆN
TỬ
ĐIỀU KHIỂN TỪ
XA DÙNG REMOTE
ĐỒ ÁN 1
ĐỀ TÀI:
GVHD: ThS.Trần Minh Hồng
SVTH: Nguyễn Văn Pháp MSV : 06064201
Lớp : ĐHĐT2B1
Trang 2Tp HCM Ngày 13 Tháng 06 Năm 2009
Em xin chân thành cảm ơn ThS.Trần Minh Hồng cùng toàn thể quýthầy cô trong khoa điện tử Trường Đại Học Công Nghiệp TPHCM đã giúp đỡ
em trong thời gian làm đồ án
Do kiến thức còn nhiều hạn chế nên trong quá trình làm đồ án emkhông thể tránh khỏi thiếu sót Rất mong được sự chỉ bảo của thầy cô để em
có hướng đi cao hơn trong học tập
Em xin chân thành cảm ơn!
Lời cảm Ơn
Trang 3Ngày nay khoa học kỹ thuật điện tử ngày càng phát triển mạnh với tốc
độ ngày càng nhanh Trong đó kỹ thuật số đóng vai trò quan trọng trong sựphát triển của công nghệ điện tử Kỹ thuật số hoạt động đơn giản là chỉ dựavào hai mức (cao và thấp) lên nó có độ chính xác cao và ít ảnh hưởng bởinhiễu Do đó kỹ thuật số phát triển mạnh mẽ, đặc biệt nhờ sự ra đời của Viđiều khiển – Vi xử lý năm 1971 đã thúc đẩy sự phát triển và ứng dụng của kỹthuật số lên một bước ngoặt mới Vi xử lý ra đời đã giúp con người có thểgiao tiếp được với IC thông qua các ngôn ngữ lập trình
Việc nạp cho IC các phần mềm viết bằng một số ngôn ngữ đặc biệt, đãgiúp con người điều khiển các thiết bị hoạt động theo ý muốn thông quachúng Vì vậy VXL được ứng dụng rất nhiều trong cuộc sống của con người.Một số ứng dụng của VXL có thể được liệt kê trong bảng dưới đây:
Thiết bị nội thất gia
Lò vi sóngMáy sao chụpMáy in lazerMáy in màu Máy tin nhắn
Máy tính hành trìnhĐiều khiển động cơTúy đệm khí
Thiết bị ABS
Đo lường
Hệ thống bảo mậtĐiều khiển truyền tinGiải trí
Điều hào nhiệt độ
Mở của tự độngLời Nói
Đầu
Trang 4Các loại nhạc cụ điện tử
Máy khâu
Điều khiển ánh sáng
Trong nhiều ứng dụng trên, ứng dụng điều khiển từ xa là một ứng dụng rất thú vị Thay vì phải đứng dậy bật quạt, tắt điện, bật điện….thì giờ đây chỉ với một chiếc điều khiển từ xa trong tay ta có thể ở nguyên vị trí trong nhà mà
có thể điều khiển được tất cả thiết bị điện tắt mở theo ý muốn Xuất phát từ thực tế đó, em quyết định chọn đề tài này Ý tưởng thực hiện là sử dụng hồng ngoại để điều khiển, dùng một bộ phát hồng ngoại như Remote TV có mã hóa với nhiều nút bấm, mỗi nút bấm với một mã hóa riêng điều khiển một thiết bị Việc giải mã được lập trình trên Vi xử lý 8051
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 5
CHỮ KÝ GVHD Mục Lục Chương 1: CẤU TẠO VI XỬ LÝ 89V51RB2 .1
1.1 Tóm tắt phần cứng 1
1.2 Sơ đồ khối, sơ đồ chân, chức năng các chân 1
1.2.1 Sơ đồ khối 1
1.2.2 Sơ đồ chân 1
1.2.3 Chức năng các chân 2
1.2.4 Các Port 2
1.2.5 Các chân tín hiệu điều khiển 3
1.3 Tổ chức bộ nhớ 4
1.3.1 Bộ nhớ trong 5
1.3.2 Bộ nhớ ngoài 10
1.3.3 Hoạt động Reset 11
1.3.4 Lệnh số học 12
1.3.5 Lệnh logic 12
1.3.6 Lệnh rẽ nhánh 13
1.3.7 Các lệnh di chuyển dữ liệu 13
1.3.8 Các lệnh luận lý 14
1.4 Hoạt động của các Port nối tiếp 14
1.4.1 Thanh ghi điều khiển các Port nối tiếp SCON 14
1.4.2 Khởi dộng và truy xuất thanh ghi Prot nối tiếp 16
1.5 Hoạt động ngắt của 89V51RB2 17
1.5.1 Tổ chức ngắt 18
1.5.2 Sự cho phép ngắt và sự cấm ngắt .18
1.5.3 Sử lý các ngắt 19
Chương 2: TÌM HIỂU VỀ HỒNG NGOẠI 21
2.1 Hồng ngoại là gì? 21
2.2 Hồng ngoại trong điện tử 21
Trang 62.3 Điều khiển TV sony 23
2.4 Thiết bị thu và phát 27
Chương 3: SƠ ĐỒ VÀ NGUYÊN LÝ HOẠT ĐỘNG 28
3.1 Sơ đồ nguyên lý 28
3.2 Nguyên lý hoạt động 28
3.3 Lưu đồ thuật toán điều khiển ngõ ra P2 29
3.4 Mã chương trình 30
3.5 Sơ đồ mạch in 34
Chương 4: HƯỚNG PHÁT TRIỂN CỦA ĐỒ ÁN 35
Chương 5: TÀI LIỆU THAM KHẢO 36
CHƯƠNG 1:
CẤU TẠO VI XỬ LÝ 89V51RB2
1.1 Tóm tắt phần cứng
MCS-51 là họ IC vi điều khiển do hãng INTEL sản xuất Các IC tiêu biểu cho họ là 8031, 8051, 8951… Những đặc điểm chính và nguyên tắc hoạt động của các bộ vi điều khiển này khác nhau không nhiều Khi đã sử dụng thành thạo một vi điều khiển thì ta có thể nhanh chóng vận dụng kinh nghiệm
để làm quen và làm chủ các ứng dụng của bộ vi điều khiển khác Vì vậy để có những hiểu biết cụ thể về các bộ vi điều khiển cũng như để phục vụ cho đề tài này ta bắt đầu tìm hiểu một bộ vi điều khiển thông dụng nhất, đó là họ
MCS-51
1.2 Sơ đồ khối, sơ đồ chân, chức năng các chân:
1.2.1 Sơ đồ khối:
Trang 71.2.2 Sơ đồ chân:
1.2.3.Chức năng các chân:
89V51RB2 có 40 chân trong đó 32 chân có công dụng xuất/ nhập.Trong 32 chân đó có 24 chân có tác dụng kép (nghĩa là 1 chân có 2 chứcnăng), mỗi một đường có thể hoạt động xuất/ nhập, hoạt động như một đườngđiều khiển hoặc hoạt động như một đường địa chỉ/ dữ liệu của bus địa chỉ/ dữliệu đa hợp
Trang 8- Port 0 có chức năng là bus địa chỉ byte thấp và bus dữ liệu đa hợp(AD0 – AD7) trong các thiết kế cỡ lớn có sử dụng bộ nhớ ngoài.
Port 0:Port Port 0:1:
Địa chỉ bit
Chức năng
P3.0RxD
B0HChân nhận dữ liệu của port nối tiếp
P3.1TxD
B1HChân phát dữ liệu của port nối tiếp
P3.2INT0
\B2HNgõ vào ngắt ngoài 0
P3.3INT1
\B3HNgõ vào ngắt ngoài 1
P3.4T0
B4HNgõ vào của bộ định thời/ đếm 0
P3.5T1
B5HNgõ vào của bộ định thời/ đếm 1
P3.6WR
\B6HĐiều khiển ghi vào RAM ngoài
P3.7RD
\B7H
Điều khiển đọc từ RAM ngoài
Bảng Port 0:tóm Port 0:tắt Port 0:chức Port 0:năng Port 0:các Port 0:chân Port 0:của Port 0:Port Port 0:3
1.2.5 Các chân tín hiệu điều khiển.
Port 0:Chân Port 0:PSEN:
- PSEN (Program Store Enable): cho phép bộ nhớ chương trình, chân
số 29
Trang 9- Chân PSEN\ có chức năng là tín hiệu cho phép truy xuất (đọc) bộnhớ chương trình (ROM) ngoài hoặc là tín hiệu truy xuất, tích cực mức thấp.
- PSEN ở mức thấp trong thời gian CPU tìm - nạp lệnh từ ROMngoài Khi CPU sử dụng ROM trong, PSEN sẽ ở mức cao
- Khi sử dụng bộ nhớ chương trình bên ngoài, chân PSEN\ thườngđược nối với chân OE\ của ROM ngoài để cho phép CPU đọc mã lệnh từROM ngoài
Port 0:Chân Port 0:ALE:
- ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30
- Chân ALE có chức năng là tín hiệu cho phép chốt địa chỉ để thựchiện việc giải đa hợp cho bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 –AD7) Ngoài ra chân ALE còn là tín hiệu xuất, tích cực mức cao
- Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trênchíp và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống.Chân ALE được dùng làm ngõ vào xung lập trình (PGM\)
Port 0:Chân Port 0:EA\:
- EA ( External Access): truy xuất ngoài, chân số 31
- Tín hiệu vào EA\ thường được mắc lên mức 1 hoặc mức 0 Nếu ởmức 1, 89V51RB2 thi hành chương trình từ ROM nội Nếu ở mức 0,89V51RB2 thi hành chương trình từ ROM ngoài
- Khi lập trình cho ROM trong chip thì chân EA đóng vai trò là ngõvào của điện áp lập trình (Vpp = 12V – 12,5V cho 89V51RB2)
Port 0:Chân Port 0:RST:
- RST (Reset): thiết lập lại, chân số 9
- Khi ngõ vào RST đưa lên cao ít nhất 2 chu kỳ máy, 89V51RB2 thiếtlập lại trạng thái ban đầu Khi ngõ vào RST ở mức thấp IC hoạt động bìnhthuờng
Port 0:Chân Port 0:XTAL1, Port 0:XTAL2:
- XTAL (Crystal): tinh thể thạch anh, chân số 18 – 19
- XTAL1: ngõ vào mạch tạo xung clock trong chip
- XTAL2: ngõ ra mạch tạo xung clock trong chip
- Bộ dao động được tích hợp bên trong 89V51RB2, khi sử dụng89V51RB2 người thiết kế chỉ cần nối thêm thạch anh (tần số thạch anhthường sử dụng là 12MHZ) và tụ
Trang 10 Port 0:Chân Port 0:Vcc, Port 0:GND:
- Vcc: chân số 40, cung cấp nguồn điện cho chip hoạt động
0000H
Bộ nhớ
dữ liệu
Bộ nhớ ngoài chip
Trang 11Bảng Port 0:tóm Port 0:tắt Port 0:bộ Port 0:nhớ Port 0:dữ Port 0:liệu Port 0:trên Port 0:chip Port 0:89V51 ( Special Function Register: Thanh ghi chức năng đặc biệt )
1.3.1 Bộ nhớ trong:
Bộ nhớ trong 89V51RB2 bao gồm ROM và RAM RAM trong89V51RB2 bao gồm nhiều thành phần: RAM đa chức năng, RAM định địachỉ bit và các dãy thanh ghi
1.3.1.1 Port 0:Bộ Port 0:nhớ Port 0:ROM Port 0:( Port 0:Bộ Port 0:nhớ Port 0:chương Port 0:trình):
Bộ nhớ chương trình dùng để lưu trữ chương trình điều khiển chochip hoạt động
Trang 121.3.1.2 Port 0:Bộ Port 0:nhớ Port 0:RAM Port 0:(Bộ Port 0:nhớ Port 0:dữ Port 0:liệu):
Bộ nhớ dữ liệu dùng để lưu trữ các dữ liệu và tham số
1.3.1.3 Port 0: Port 0:RAM Port 0:đa Port 0:chức Port 0:năng:
- Trên hình vẽ cho thấy 80 byte RAM đa chức năng chiếm địa chỉ từ30H đến 7FH
- Mọi địa chỉ trong vùng RAM đa chức năng đều có thể truy xuất tự
do dùng kiểu định địa chỉ trực tiếp hoặc gián tiếp
1.3.1.4 Port 0: Port 0:RAM Port 0:định Port 0:địa Port 0:chỉ Port 0:bit:
- RAM định địa chỉ bit gồm 128 bit được định địa chỉ chứa các byte
có địa chỉ từ 20H đến 2FH
- RAM định địa chỉ bit có 3 kiểu truy xuất dữ liệu: trực tiếp, gián tiếphoặc theo từng bit
1.3.1.5 Port 0: Port 0:Các Port 0:dãy Port 0:thanh Port 0:ghi:
- 32 vị trí thấp của bộ nhớ nội chứa các dãy thanh ghi Các lệnh của89V51RB2 hỗ trợ 8 thanh ghi từ R0 – R7 thuộc dãy 0 và theo mặc định saukhi Reset hệ thống các thanh ghi này ở các địa chỉ từ 00H đến 07H
- Các lệnh dùng các thanh ghi R0 đến R7 sẽ ngắn hơn và nhanh hơn
so với các lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữliệu được dùng thường xuyên nên dùng một trong các thanh ghi này
- Do có 4 dãy thanh ghi nên tại một thời điểm chỉ có một dãy thanhghi tích cực Dãy thanh ghi tích cực có thể được thay đổi bằng cách thay đổibit chọn dãy trong từ trạng thái chương trình PSW
1.3.1.6 Các Port 0:thanh Port 0:ghi Port 0:chức Port 0:năng Port 0:đặc Port 0:biệt:
- Các thanh ghi nội của hầu hết các bộ vi xử lý đều được truy xuất rõràng bởi một tập lệnh
- Các thanh ghi nội của 89V51RB2 được cấu hình thành một phầncủa RAM trên chip, vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanhghi 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ư các thanh ghi từ R0 đến R7, ta có 21 thanh ghi
Trang 13chức năng đặc biệt (SFR: Special Function Register) chiếm phần trên củaRAM nội từ địa chỉ 80H đến FFH.
- Ngoại trừ thanh ghi A có thể được truy xuất rõ ràng còn lại hầu hếtcác thanh ghi chức năng đặc biệt được truy xuất bằng kiểu định địa chỉ trựctiếp
Thanh Port 0:ghi Port 0:từ Port 0:PSW Port 0:( Port 0:Program Port 0:Status Port 0:Word Port 0:):
Bit
Ký hiệuĐịa chỉ
Mô tả bit
PSW.7CY
D7H
Cờ nhớ
PSW.6AC
D6H
Cờ nhớ phụ
PSW.5F0
D5H
Cờ 0
PSW.4RS1
D4HChọn dãy thanh ghi (bit 1)
PSW.3RS0
D3HChọn dãy thanh ghi (bit 0)
:
00 = dãy 0: địa chỉ từ 00H đến 07H
01 = dãy 1: địa chỉ từ 08H đến 0FH
10 = dãy 2: địa chỉ từ 10H đến 17H
11 = dãy 2: địa chỉ từ 18H đến 1FH
PSW.2OV
D2H
Cờ tràn
PSW.1-
D1H
Dự trữ
PSW.0P
D0H
Cờ kiểm tra chẵn lẻ
Thanh Port 0:ghi Port 0:PSW
Thanh Port 0:ghi Port 0:A:
- Thanh ghi A là thanh ghi tích lũy có công dụng chứa dữ liệu của cácphép toán mà vi điều khiển xử lý Ví dụ lệnh MUL AB sẽ nhân những giá trịkhông dấu 8 bit có trong hai thanh ghi 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ẽ lấy A chia B, kết quả sốnguyên đặt vào A, số dư đặt vào B
- Thanh ghi A có địa chỉ byte là E0H và địa chỉ bit từ E0H – E7H
Trang 14 Thanh Port 0:ghi Port 0:B:
- Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi A cho cácphép toán nhân chia
- Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đamục đích Nó là những bit định vị thông qua những địa chỉ từ F0H – F7H
Thanh Port 0:ghi Port 0:SP:
- Con trỏ ngăn xếp (SP: Stack Pointer) là một thanh ghi 8 bit ở địa chỉbyte là 81H, dùng để lưu trữ tạm thời các dữ liệu Đây là thanh ghi khôngđịnh địa chỉ bit Thanh ghi này chứa địa chỉ của byte dữ liệu hiện hành trênđỉnh ngăn xếp Các lệnh trên ngăn xếp bao gồm lệnh cất dữ liệu vào ngăn xếp(PUSH) và lệnh lấy dữ liệu ra khỏi ngăn xếp (POP) Lệnh cất dữ liệu vàongăn xếp sẽ làm tăng SP trước khi ghi dữ liệu và lệnh lấy ra khỏi ngăn xếp sẽlàm giảm SP Đối với chip 8051 thì vùng nhớ được dùng để làm ngăn xếpđược lưu giữ trong RAM nội
- Để sử dụng ngăn xếp thì ta phải khởi động thanh ghi SP (nghĩa lànạp giá trị cho thanh ghi SP) => vùng nhớ của ngăn xếp có địa chỉ bắt đầu là(SP) +1 và địa chỉ kết thúc là 7FH
- Sau khi reset IC, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầutiên sẽ được cất vào ô nhớ ngăn xếp có địa chỉ 08H Nếu phần mềm ứng dụngkhông khởi động SP một giá trị mới thì dãy thanh ghi 1, có thể cả 2 và 3 sẽkhông dùng được vì vùng RAM này đã được dùng làm ngăn xếp Ngăn xếpđược truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời vàlấy lại dữ liệu, hoặc truy xuất ngầm bằng lệnh gọi chương trình con (ACALL,LCALL) và các lệnh trở về (RET, RETI) để lưu trữ giá trị của bộ đếm chươngtrình khi bắt đầu thực hiện chương trình con và lấy lại khi kết thúc chươngtrình con
Thanh Port 0:ghi Port 0:DPTR:
Trang 15- Con trỏ dữ liệu (DPTR: Data Pointer Register) là thanh ghi 16 bitchứa địa chỉ của ô nhớ cần truy xuất thuộc ROM trong hoặc ngoài và RAMngoài
- Thanh ghi DPTR có địa chỉ byte là 82H (DPL: byte thấp) và 83H(DPH: byte cao) Thanh ghi này không định địa chỉ bit
Thanh Port 0:ghi Port 0:port Port 0:xuất Port 0:nhập:
- Các Port của 89V51RB2 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địachỉ 90H, Port 2 ở địa chỉ A0H, Port 3 ở địa chỉ B0H Tất cả các Port này đều
có thể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp
Thanh Port 0:ghi Port 0:port Port 0:nối Port 0:tiếp:
- 89V51RB2 chứa một port nối tiếp cho việc trao đổi thông tin vớicác thiết bị nối tiếp như máy tính hoặc giao tiếp nối tiếp với các IC khác Mộtthanh ghi đệm dữ liệu nối tiếp (SBUF: Serial Buffer) ở địa chỉ 99H sẽ giữ cả
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 Ngoài ra còn có thanh ghi điều khiển port nối tiếp(SCON: Serial Control) có địa chỉ byte 98H dùng để báo trạng thái và điềukhiển quá trình hoạt động của port nối tiếp
Thanh Port 0:ghi Port 0:định Port 0:thời:
- 89V51RB2 có chứa hai bộ định thời/ bộ đếm 16 bit được dùng choviệc định thời hoặc đếm sự kiện Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và8CH (TH0: byte cao) Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1:byte cao) Việc khởi động Timer được SET bởi Timer Mode (TMOD) ở địachỉ 89H và thanh ghi điều khiển Timer (TCON) ở địa chỉ 88H Chỉ có TCONđược địa chỉ hoá từng bit
Thanh Port 0:ghi Port 0:ngắt:
- Thanh ghi IE (Interrupt Enable: cho phép ngắt) có địa chỉ byte A8H
và địa chỉ bit A8H – AFH có công dụng cho phép hoặc không cho phép cácngắt hoạt động (có thể từng ngắt riêng rẽ hoặc tất cả các ngắt)
Trang 16- Thanh ghi IP (Interrup Priority: ưu tiên ngắt) có địa chỉ byte B8H vàđịa chỉ bit B8H – BCH có công dụng thiết lập mức ưu tiên cho các ngắt (ưutiên thấp hoặc ưu tiên cao)
Thanh Port 0:ghi Port 0:điều Port 0:khiển Port 0:nguồn:
- Thanh ghi PCON (Power Control: điều khiển nguồn) không có bitđịnh vị Nó ở địa chỉ 87H chứa nhiều bit điều khiển Thanh ghi PCON đượctóm tắt như sau:
Bit 7 (SMOD) => cho phép tăng gấp đôi tốc độtruyền dữ liệu nối tiếp (tốc độ baud) khi SMOD = 1
Bit 6, 5, 4 => không có địa chỉ
Bit 3, 2 (GF1, GF0) => cho phép người lập trìnhdùng với mục đích riêng
Bit 1 (PD) => dùng để quy định chế độ nguồn giảm
Bit 0 (IDL) => dùng để quy định chế độ nghỉ
Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cảcác IC họ MCS – 51 nhưng chỉ được thi hành trong sự biên dịch của CMOD
1.3.2 Bộ nhớ ngoài:
- 89V51RB2 có khả năng mở rộng không gian bộ nhớ chương trìnhlên đến 64KB và không gian bộ nhớ dữ liệu lên đến 64KB
- Khi dùng bộ nhớ ngoài, Port 0 không còn chức năng I/O nữa mà đó
là bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) Port 2 là bus địachỉ byte cao (A8 - A15) Port 3 là các tín hiệu điều khiển (WR\, RD\
Kết nối và truy xuất bộ nhớ dữ liệu ngoài:
D0 – D7
A0 – A7 CS\
A8– A15
OE\
RAM 64KB
WR\
D Q G
A8 –
A15 RD\
8951
WR\
Trang 17Sơ Port 0:đồ Port 0:kết Port 0:nối Port 0:và Port 0:truy Port 0:xuất Port 0:bộ Port 0:nhớ Port 0:dữ Port 0:liệu Port 0:ngoài
Bộ nhớ dữ liệu ngoài là bộ nhớ đọc/ ghi được cho phép bởi các tínhiệu RD\ và WR\ ở các chân P3.7 và P3.6 Lệnh dùng để truy xuất bộ nhớ dữliệu ngoài là MOVX, sử dụng con trỏ dữ liệu 16 bit DPTR hoặc R0, R1 làmthanh ghi chứa địa chỉ
Giải mã địa chỉ:
Nếu trường hợp ROM và RAM được kết hợp từ nhiều bộ nhớ códung lượng nhỏ hoặc cả hai giao tiếp với chip 89V51 thì cần phải giải mã địachỉ Việc giải mã này cần cho hầu hết các bộ vi xử lý
Ví dụ nếu các ROM và RAM có dung lượng 8KB được sử dụng thìtầm địa chỉ mà chip 89V51 quản lý (0000H – FFFFH) cần phải được giải mãthành từng đoạn 8KB để chip có thể chọn từng IC nhớ trên các giới hạn 8KBtương ứng: IC1: 0000H – 1FFFH, IC2: 2000H – 3FFFH,…
IC chuyên dùng cho việc tạo tín hiệu giải mã là 74HC138, các ngõ racủa IC này lần lượt nối với các ngõ vào chọn chip CS\ tương ứng của các ICnhớ để cho các IC nhớ hoạt động (tại một thời điểm chỉ có một IC nhớ đượcphép hoạt động) Cần lưu ý là do các đường cho phép IC nhớ hoạt động riêng
lẻ cho từng loại (PSEN\ cho bộ nhớ chương trình, RD\ và WR\ cho bộ nhớ dữliệu) nên 89V51 có thể quản lý không gian nhớ lên đến 64KB cho ROM và64KB cho RAM
Các không gian nhớ chương trình và dữ liệu gối nhau:
Vì bộ nhớ chương trình là bộ nhớ chỉ đọc, một tình huống khó xửđược phát sinh trong quá trình phát triển phần mềm cho 8951 Làm thế nào
Trang 18phần mềm được viết cho một hệ thống đích để gỡ rối nếu phần mềm chỉ cóthể được thực thi từ không gian bộ nhớ chương trình chỉ đọc.
Giải pháp tổng quát là cho các bộ nhớ chương trình và dữ liệu ngoàigối lên nhau Vì PSEN\ được dùng để đọc chương trình và RD\ được dùng đểđọc bộ nhớ dữ liệu, một RAM có thể chiếm không gian nhớ chương trình và
dữ liệu bằng cách nối chân OE\ tới ngõ ra cổng AND có các ngõ vào làPSEN\ và RD\
1.3.3 Hoạt động Reset:
89V51RB2 có ngõ vào Reset tác động ở mức cao trong khoảng thờigian 2 chu kỳ xung máy, sau đó xuống mức thấp để 89V51RB2 bắt đầu làmviệc RST có thể kích bằng tay bởi một nút nhấn thường hở hoặc RST khi cấpnguồn, sơ đồ mạch Reset tổng hợp như sau:
Trạng thái của các thanh ghi sau khi Reset hệ thống:
Các thanh ghi định thời 00H
Thanh ghi SCON 00H
Trang 19 Thanh ghi SBUF 00H
Thanh ghi PCON (HMOS) 0xxxxxxxB
Thanh ghi PCON (CMOS) 0xxx0000B
: (B) ← HIGH [(A) x (B)]; cờ Carry được xoá
DIV AB : (A) ← Integer result of [(A) / (B)]; cờ OV
: (B) ← Remainder of [(A) / (B)]; cờ Carry xoá
1.3.5 Các lệnh logic
Tất cả các lệnh logic sử dụng thanh ghi A như là một trong những toánhạng thực thi một chu kì máy, ngoài A mất 2 chu kì máy Những hoạt độnglogic có thể được thực hiện trên bất kì byte nào trong vị trí nhớ dữ liệu nội màkhông thông qua thanh ghi A
Các hoạt động logic được tóm tắt như sau:
ANL <dest-byte>,<src-byte>
ORL <dest-byte><src-byte>
XRL <dest-byte>,<src-byte>
RL A : Quay thanh ghi A qua trái 1 bit
RLC A : Quay vòng thanh ghi A qua trái 1 bit có cờ Carry
RR A : Quay thanh A ghi sang phải 1 bit
1.3.6 Các lệnh rẽ nhánh
JB bit,rel : Nhảy đến “Rel” nếu (bit) =1
JNB bit,rel : Nhảy đến “rel” nếu (bit) =0
Trang 20JBC bit, rel : Nhảy đến “rel” nếu (bit) =1 và xoá bit.
ACALL addr 11 : Lệnh gọi tuyệt đối trong Page 2K
LCAL Addr 16 :Lệnh gọi dài chương trình con trong 64 K
RET : Kết thúc chương trình con trở về chương trình chính
RETI : Kết thúc thủ tục phục vụ ngắt quay về chương trìnhchính
AJMP addr11 : Nhảy tuyệt đối không điều kiện trong 2 K
LJMP addr16 : Nhảy dài không điều kiện trong 64 K
SJMP rel : Nhảy ngắn không điều kiện trong (-128 ¿ 127)byte
CJNE A, direct, rel : so sánh và nhảy đến A nếu A ¿ direct
DJNZ direct, rel : Giảm và nhảy nếu direct ¿ 0
1.3.7 Các lệnh dịch chuyển dữ liệu
Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2chu kỳ máy Mẫu lệnh MOV <destination>, <source> cho phép di chuyển dữliệu bất kỳ 2 vùng nhớ nào của RAM nội hoặc các vùng nhớ của các thanh ghichức năng đặc biệt mà không thông qua thanh ghi A Vùng Stack của 8051chỉ chứa 128 byte RAM nội, nếu con trỏ Stack SP được tăng quá địa chỉ 7FHthì các byte được PUSH vào sẽ mất đi vào các byte POP ra thì không biết rõ.Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị giántiếp Địa chỉ gián tiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte(@ DPTR) Tất cả các lệnh dịch chuyển hoạt động trên toàn bộ nhớ ngoàithực thi trong 2 chu kỳ máy và dùng thanh ghi A làm toán hạngDESTINATION
Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trìnhthực thi của lệnh MOVX, còn bình thường RD và WR không tích cực (mức1)
1.3.8.Các lệnh luận lý
Trang 21CLR C : Xoá cờ Carry xuống 0 Có ảnh hưởng cờ Carry.
CLR BIT : Xoá bit xuống 0 Không ảnh hưởng cờ Carry.
SET C : Set cờ Carry lên 1 Có ảnh hưởng cờ Carry
SET BIT : Set bit lên 1 Không ảnh hưởng cờ Carry.
CPL C : Đảo bit cờ Carry Có ảnh hưởng cờ Carry
CPL BIT : Đảo bit Không ảnh hưởng cờ Carry.
ANL C, BIT : Có ảnh hưởng cờ Carry.
ANL C, BIT : Không ảnh hưởng cờ Carry.
ORL C, BIT : Tác động cờ Carry
ORL C, : Tác động cờ Carry
MOV C, BIT : Cờ Carry bị tác động
MOV BIT, C : Không ảnh hưởng cờ Carry.
1.4 Hoạt động của các Port nối tiếp.
Phần cứng truy xuất tới Port nối tiếp qua các chân TxD (P3.1) và RxD(P3.0) Port nối tiếp tham dự hoạt động đầy đủ (sự phát và thu cùng lúc), vàthu vào bộ đệm mà nó cho phép 1 ký tự nhận vào và được cất ở bộ đệm trongkhi ký tự thứ hai được nhận vào Nếu CPU đọc ký tự thứ nhất trước khi ký tựthứ hai được nhận vào hoàn toàn thì dữ liệu không bị mất
Hai thanh ghi chức năng đặc biệt cung cấp cho phần mềm truy xuấtđến Port nối tiếp là SBUF và SCON Sự đệm Port nối tiếp (SBUF) ở địa chỉ99H là 2 sự đệm thật sự: Ghi lên SBUF (nạp dữ liệu phát) và đọc SBUF (truyxuất dữ liệu đã nhận) Đây là hai thanh ghi riêng biệt và rõ rệt, và thanh ghiphát chỉ ghi còn thanh ghi thu chỉ đọc
1.4.1 Thanh ghi điều khiển Port nối tiếp SCON
Mode hoạt động của Port nối tiếp được set bởi việc ghi lên thanh ghimode của Port nối tiếp SCON ở địa chỉ 99H Bảng tóm tắt thanh ghi điềukhiển Port nối tiếp SCON như sau:
Bit
Ký hiệu Địa chỉ
Mô tả hoạt động
Trang 229FHBit 0 của mode Port nối tiếp
SCON.6SM1
9EHBit 1 của mode Port nối tiếp
SCON.5SM2
9DHBit 2 của mode Port nối tiếp cho phép sự
truyền của bộ xử lý đa kênh ở mode 2 và 3; RI
sẽ không tích cực nếu bit thứ 9 đã thu vào là 0
SCON.4REN
9CHREN = 1 sẽ cho phép thu ký tự
SCON.3TB8
9BHPhát bit 8 Bit 9 phát trong mode 2 và 3, được
set và xóa bởi phần mềm
SCON.2RB8
9AHThu bit 8 Bit thứ 9 nhận được
SCON.1TI
99H
Cờ ngắt phát Cờ này được set ngay khi kết
thúc việc phát một ký tự; được xóa bởi phần
mềm
SCON.0RI
98H
Cờ ngắt thu Cờ này được set ngay khi kết thúc
việc thu một ký tự; được xóa bởi phần mềm
SM 0
SM 1
MODE
MÔ TẢ TỐC ĐỘ BAUD
00
0Thanh ghi dịch
Cố định (tần số dao động/12)
01
1UART 8 bit
Thay đổi (thiết lập bởi bộ định thời)
10
2UART 9 bit
Cố định (tần số dao động /12 hoặc /64)
11
3UART 9 bit
Thay đổi (thiết lập bởi bộ định thời)
Trước khi dùng Port nối tiếp, SCON phải được định đúng chế độ VD:
Để khởi tạo Port nối tiếp chế độ 1 (SM0/SM1 = 0/1), cho phép thu (REN = 1),
và set cờ ngắt của việc phát sẵn sàng hoạt động (TI = 1), ta dùng lệnh sau :
MOV SCON, #01010010H
Port nối tiếp của 8051 có 4 mode hoạt động tùy thuộc theo trạng thái củaSM0/SM1
Ba trong 4 mode cho phép truyền động bộ với mỗi ký tự thu hoặc phát
sẽ được bố trí bởi bit Start hoặc bit Stop
Bảng Chức Port 0:năng Port 0:của Port 0:thanh Port 0:ghi Port 0:SCON
Các Port 0:chế Port 0:độ Port 0:hoạt Port 0:động Port 0:của Port 0:port Port 0:nối Port 0:tiếp