Nhìn tổng thể thì bộ vi xử lí chỉ có chứa trên một chip những chức năng cần thiết để xử lí chương trình theo một trình tự, còn tât cả bộ phận phụ trợ khác cần thiết như: bộ nhớ dữ liệu,
Trang 1NGUYỄN VIỆT HÙNG NGUYỄN LAM
10101104 01ĐĐT2
r m v m PHÒL-J<TCN
THƯ VIỆN
Trang 2
BỘ GIÁO DỤC & DÀO TẠO
TRƯONG ĐẠI HỌC DL K Ỹ THUẬT CÔNG NGHỆ
KHOA ĐIỆN - ĐIỆN TỬ
*********
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc
— 0O0- —
NHIỆM VỤ LUẬN ÁN TÔT NGHIỆP
Chú í : sv phải đóng bản nhiệm vụ này vào trang thứ nhâ'l của luận án
4 Ngày hoàn thành nhiệm vụ : G /4 / '2006
1/
2 /
AkưVLỊ
Nội dung và yêu cầu LATN đã được thông qua
Ngày ,A?T tháng .lủ năm 20oS”
TRƯỞNG KHOA
( KÝ và ỊỊỈti rò họ tên)
NGƯỜI HƯỚNG DẪN CHÍNH
Ị Kỷ vỉ, /~v< rò hụ tôn)
Trang 3LUẬN VĂN TỐT NGHIỆP ĐỒNG HỒ ĐIỆN TỬ
Xin cảm ơn quí Thầy Cô khoa Điện - Điện tử và các bạn sinh viên cùng khóa đã đóng góp những ý kiến quí báu để quyển luận văn này hoàn thành đúng thời hạn
Trang 4LUẬN VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ
MỤC LỤC
PHẦN A: DẪN N H Ậ P
I ĐẶT VẤN Đ E 6
II GIỚI HẠN ĐỀ T À I zzzz.zzzzzzzzzzzzzzz;6 III MỤC ĐÍCH NGHIÊN C Ứ ư Z Z Z Z Z Z Z Z Z Z Z Z Z " ! l 6 IV MỞ RỘNG ĐỀ TÀI 6
PHẦN B: KIẾN THỨC LIÊN QUAN 7
CHƯƠNG I: GIỚI THIỆU AT89C51 Z Z Z Z Z Z Z Z Z Z Z I I Z 7 I ĐỊNH NGHĨA VI ĐIÊU KHIÊN 7
II LỊCH SỬ PHÁT TRIỂN CỦA CÁC BỘ VI ĐIÊU KHIÊN 7
III GIỚI THIỆU S ơ LƯỢC 89C51 8
IV S ơ ĐỒ VÀ CHỨC NĂNG TỪNG CHÂN CỦA 89C51 9
V TỔ CHỨC BỘ NHỚ 12
1 RAM đa dụng 13
2 RAM địa chỉ hóa từng b it 15
3 Các bank thanh g h i 15
VI CÁC THANH GHI CHỨC NĂNG ĐẶC B IỆ T 15
1 Từ trạng thái chương trình 16
2 Thanh ghi B 17
3 Con trỏ ngăn xếp 18
4 Con trỏ dữ liệu 18
5 Các thanh ghi port xuất nhập 18
6 Các thanh ghi tim er 19
7 Các thanh ghi port nổí tiếp 19
8 Các thanh ghi điều khiển n g ắ t 19
9 Thanh ghi điều khiển công suâlt 19
VII BỘ NHỚ NGOÀI 20
L Truy xuất bộ nhớ chương trình ngoài 20
2 Truy xuất bộ nhơ dữ liệu ngoài 22
VIII LỆNH RESET 23
IX pO ẠT ĐỘNG CỦA BỘ ĐỊNH THỜI (T im er) 24
1 Giời thiệu 24
2 Thanh ghi c h ế độ tiiiier (TMOD) 25
3 !Thanh ghi điều khiển timer (TCON) 26
4 ịCác ch ế độ tim er 26
5 Nguồn tạo xung nhịp 27
6.iBắt đầu, dừng và diều khiển các tim er 28
Trang 5LUẬN Ị VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ
XI.
7 Khởi động và truy xua't các thanh ghi tim er 29
lỉ Các khoảng ngắn và các khoảng d ài 30
X ỊNGẮT (INTERRUPT) Z Z Z Z Z Z Z ! 31 Giới thiệu .32
t Tô’ chức ngắt của 89C51 32
Xử lý n g ắ t Z Z Z Z Z 34 Thiêt kê chương trình dùng các n g ắ t 35
Các ngắt của 89C 51 , 35
1 HOẠT ĐỘNG PORT N ố i T m p Z Z Z Z Z Z Z Z Z Z Z " Z Z Z 37 Giới thiệu 37
!• Thanh ghi điều khiển port nốì tiếp 38
1 Khởi động và truy xuẩìt các thanh ghi cểng nốĩ tiế p 39
XII TẬP LỆNH CỦA 89C51: 1 1 1 ”*42
1 Các chê'độ đánh địa c h ỉ 42
2 Các nhóm lệnh của 89C 51 44
CHƯƠNG II: GIỚI THIỆU MODULE LC d ZZZZZZZZZZZZZZ” 51 LCẤU TRÚC PHẦN CỨNG CỦA MODULE LCD Z Z Z Z Z Z Z Z ! 51 1 Giởi thiệu 53
2, c ấ ủ trúc phần cứng của module L C D 53
3, Câu trúc các thanh ghi bên trong L C D 54
II MÃ LỆNH ĐIỀU KHIỂN CỦA LCD ZZZZZZZZZZZZZ 56 Display C lea r 55
Return H om e 55
Entry Mode S e t 55
Display ON/OFF Control 55
Cursor or Display Shift 57
Function S e t 5g Set CGRAM Address 58
Set DDRAM Address 58
Read Busy Flag & A ddress 58
10 Write Data To RAM Z Z Z Z Z Z Z Z Z Z Z 59 11 Read Data To R A M .59
HI ] ỉộ ĐỊNH THỜI (Timing characteristics) 59
1 Write Operation 59
2 Read O peration 50
CHƯƠNG III: GIỚI THIỆU DS1307 Z 62
I GIỚI TH IỆU ! Z Z Z Z Z Z Z Z Z Z Z Z I Z Z Z Z 62 II C 4C CHAN CỦA DS1307zzzzzzzzzzzzzzzzzzz 64 III I [OẠT ĐỘNG CỦA DS1307ZZZZZZZZZ-ZZZZZZZZ' 64 1 Hạch tạo dao động 55
2 : )ộ chính xác của đổng h ồ 55
1
2.
3
4
5.
6
7,
8
9.
Trang 6LUẬN VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ
Bus dữ liệu I2C
:: THIẾT KẾ VÀ THI CÔ NG
ƠNGI: THIẾT KẾ VÀ THI CÔNG
PHẦN CỨNG
] Thiết k ế các khối
í I Sơ đồ nguyên lý mạch hoàn chỉnh
2 Nguyên lý hoạt động của m ạch
< Tính toán giá trị các linh kiện của mạch
„73 73 73 7 4 .7 8 .7 8 103
Trang 7LUẬN VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ
LỜI NÓI ĐẦU
Trong thời đại ngày nay cùng với sự phát triển của xã hội, khoa hoc kỹ thuật cũng không ngừng tiến bộ để đáp ứng những nhu cầu trong cuộc sống hàng ngày của COE người Những thiết bị tiên tiến như: Tivi, đầu Video, Walkman, đầu VCD
và đầu DVD đã được tạo ra nhằm đáp ứng phần nào những nhu cầu này
Vì trong cuộc sống hiện đại thời gian giữ vai trò rất quan trọng nên những thiết
bị báo thời gian cũng góp phần không nhỏ trong việc định thời gian chính xác cho mọi người trong công việc cũng như trong các hoạt động vui chơi Còn rất nhiều mạch đổng hồ tiên tiên khác nhau nhưng ở quyển luận văn này chỉ khảo sát mạch báo thờ: gian dùng vi điều khiển Qua quyển luận văn này sẽ giúp em hiểu rõ hơn
về bộ vi điều khiển và những kiến thức liên quan đến đề tài
Do tiờ i gian và kiến thức có hạn nên quyển luận văn này sẽ không tránh khỏi những thiếu sót Rât mong sự đóng góp ý kiến của quí Thầy Cô cùng các bạn
Trường Đại Học Dân Lập Kỹ Thuật Công Nghệ
Sinh viên thực hiện luận văn
Nguyễn Lam
Trang 8Ngày nay cùng với sự phát triển vượt bậc của khoa hoc kỹ thuật, công nghệ
;n tl’f P Í Ì n ơ n h á t t r i ể n r n n r r r ã i t o n r o h ò n n I n o t nViíVnr, cũng phát triển rộng rãi, tạo ra hàng loạt những thiết bi có các đăc điểm U4 „X -».t _
như độ chính xác cao, gọn nhẹ và tiện nghi cho người sử dụng,
trong những ứng dụng rất quan trọng trong công nghệ điện tử là tự động làm việc theo yêu cầu, thời gian định trước của con người đã góp phần nâng cao chất lương cuộc sống của con người Xuất phát từ những ứng dụng trên, em đã thiết kế và thi công mạch đồng hồ điện tử
ĨI GIỎ ĩ HAN ĐỂ TẰT:
Do kiến thức và thời gian có hạn nên trong luận án này chỉ thi công mạch đồng
ô có chức năng hiển thị giờ, báo chuông và ngày-tháng-năm của dương
t l ơ p n riliiV r» n o n r r H i ố r» NTV» 1 1 *n rr tv» A Ẩ r» rr U Ầ • AI 1 _ 1 _ • Ạ7
hồ có
lịch,khổng có chức năng khác Nhưng mạch đồng hồ hiển thị số dùng vi điều khiển
là một dề tài thực tế ứng dụng rất nhiều trong cơ quan, xí nghiệp, nhà máy Hơn nữa với sự phát triển không ngừng của khoa học kĩ thuật trong lĩnh vực vi xử lý vi điều kh ển đồng hồ không chỉ là báo thời gian mà còn có các chức năng đặc biệt khác míing lại sự thoải mái cho con người Với sự ứng dụng của vi điều khiển điều này được thực hiện dễ dàng hơn
ĩ ĩ ĩ MUC Đ ÍC H NGHTÊN CỨU:
Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học để ¿tủ điều kiện ra trường
Cụ thể khi nghiên cứu thực hiện đề tài là em muốín phát huy những thành quả ứng dụng của vi điều khiển nhằm tạo ra những sản phẩm, những thiết bị tiên tiến hơn, và ĩạt hiệu quả sản xuất cao hơn
M ặt khác quyển luận văn này cũng có thể làm tài liệu tham khảo cho những sinh viên khóa sau Giúp họ hiểu rõ hơn về những ứng dụng của vi điều khiển
Ngoẵ i ra quá trình nghiên cứu thực hiện đề tài là một cơ hội để em tự kiểm tra lại những kiến thức đã được học ở trường, đồng thời phát huy tính sáng tạo, khả năng giải quyết một vấn đề theo yêu cầu đặt ra Và đây cũng là dịp đe chúng em
tự khẳng định mình trước khi ra trường để tham gia vào các hoạt động sản xuất của
đề này và năng cao tính hữu dụng của nó ta thiết k ế cho mạch đồng hồ một remote điều k h iln từ xa Hoặc vận dụng các remote tivi đầu máy làm remote cho đồng
hồ Trong trường hợp này ta chỉ thiết k ế bộ phận thu hồng ngoại gắn trực tiếp trên mạch đồng hồ
Trang 9Phẩn ĩ : Kiến thức liên quan Chương ĩ: Giđi thiệu vi điều khiển AT89C51
PHẨNB: KIẾN THỨC LBÊN QUAN
CHƯƠNG l i GIỚI THIỆU VI ĐIÊU K H lỂ N AT89C51
L ĐINH NGHĨA V ĩ Đ lỂ lI K HĩỂN;
Bộ ñ đ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ể i ậ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ệnl I 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 ti n, đo thời gian và tiến hành đóng mở một cơ cấu nẩo đó
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 độịig của ti vi, máy giặt, đầu đọc laser, điện thoại, lò vi b a , 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ệ hông càng thông minh thì vai trò của hệ vi điều khiển càng quan trọng ĨLLỊCĨ1 SỬ PH Á T T R IỂN CỦA CÁC BỐ V ĩ Đ ĩỀ ĩĩ KHTFN-
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 1 ỉộ vi điều khiển được phát ữiển từ bộ vi xử lí, từ những năm 70 do sự phát triển và hoàn thiện về công nghệ vi điện tử dựa ưên kỹ thuật MOS (Metal - Oxide
- Semic onductor), 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
Năm 1971, xuất hiện bộ vi xử lí 4 bit loại TMS1000 do công ty Texas Instruments vừa là nơi phát minh vừa là nhà sản xuất Nhìn tổng thể thì bộ vi xử lí chỉ có chứa trên một chip những chức năng cần thiết để xử lí chương trình theo một trình tự, còn tât cả bộ phận phụ trợ khác cần thiết như: bộ nhớ dữ liệu, bộ nhớ chương 1 rình, bộ chuyển đổi AID, khôi điều khiển, khối hiển thị, điều khiển máy
in, khôi lồng hồ và lịch là những linh kiện nằm ở bên ngoài được nối vào bộ vi xử
lí Ị
Mãi nên năm 1976, cồng ty INTEL (Interlligen - 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 8048 Bên cạnh bộ vi xử lí trung tâ n , 8048 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 ^:ông ty khác cũng lần lượt cho ra đời các bộ vi điều khiển 8 bit tương tự như 8041Î và hình thành họ vi điều khiển MCS - 48 (Microcontroller - system - 48)
Đên lăm 1980, công ty INTEL cho ra đời th ế hệ thứ hai của bộ vi điều k h iể n
với tên gọi 8051 Và sau đó hàng loạt các vi điều khiển cùng loại với
lay họ vi điều khiển 8 bit MCS-51 đã có đến 250 thành viên và hầu hết
ty đều là những công ty hàng đầu th ế giới về chế tạo Đứng đầu là công
- và rất nhiều công ty khác nhứ: AMD, SIEMENS, PHILIPS, DALLAS,
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ư:
Trang 10Phần ĩ : Kiến thức liên quan Chương L Giđi thiệu vi điều khiển AT89C51
•
II GIC
89C
các đặc
Họ ST62 của công ty SGS - THOMSON
Họ H8 của công ty Hitachi
Họ PIC của công ty Microchip
64 KByte không gian bộ nhớ chương ữình mở rộng
64 KByte không gian bộ nhớ dữ liệu mở rộng
210 bit được địa chỉ hóa (nằm trong vùng RAM nội)
Bộ nhân/chia 4 |ÌS
Trang 11Phần ĩ Ị: Kiến thức liên quan Chương I: Giời thiệu vi điều khiển AT89C51
Phần chính của vi điều khiển 89C51 là bộ xử lí trung tâm (CPU: Central Processing Unit) bao gồm:
Thanh ghi tích lũy A
Thanh ghi tích lũy B, dùng cho phép nhân và phép chia
Đơn vị logic học (ALU: Arithmetic Logical Unit)
Từ trạng thái chương trình (PSW: Program Status Word)
Bốn băng thanh ghi
Chương trình đang chạy có thể cho dừng lại nhờ một khôi điều khiển ngắt ở
bên ngqài Các nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn bộ đếm định
thời hoặịc cũng có thể là giao diện nối tiếp
Hai )ộ định thời 16 bit hoạt động như một bộ đếm
Các cổng (port 0, port 1, port 2, port 3) sử dụng vào mục đích điều khiển
Ở CC ng 3 có thêm các đường dẫn điều khiển dùng để trao đổi với một bộ nhớ
bên ngoỊài, hoặc để đầu nôì giao diện nối tiếp, cũng như các đường ngắt dẫn bên ngoài.
Giad diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việc độc lập với nhau Tốc độ truyền qua cổng nối tiếp có thể đặt trong vảy rộng
và đươclân định bằng một bộ định thời
Đơn
Trong vi điều khiển 89C51 có hai thành phần quan trọng khác đó là bộ nhớ và các than 1 ghi, trong đó:
• Bộ nhớ gồm có bộ nhớ RAM và ROM dùng để lưu trữ dữ liệu và mã lệnh
• Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình xử lí Khi CPU làm việc nó làm thay đổi nội dung của các thanh ghi
IV- S ơ ĩ 'Ổ VẢ CHỨC NĂNG TỪNG CHẮN CỦA 89C51:
Trong đ(
89C^1 là 1 vi mạch có 40 chân mỗi chân có 1 chức năng đặc biệt khác nhau,
ng đ(' có 24 chân có công dụng kép, mỗi đường có thể hoạt động như đường xuât nhậ p hoặc như đường điều khiển hoặc là thành phần của bus dữ liệu và bus địa chỉ
Trang 12Phần ĩ : Kiến thức liên quan Chương I: Giời thiệu vi điều khiển AT89C51
6
7, 8 _9 19 18
23 24 25 26 27 28 39 38 37 36 35 34 33 32 31 30 29
là bus dữ liệu 8 bit
2 P a rt 1: Port 1 là một port I/O trên chân 1 - 8 Các chân được ký hiệu P l.o
P l l cp thể dùng cho giao tiếp với các thết bị ngoài nếu cần Port 1 không có chức năng khác, và vậy chúng chỉ dùng cho giao tiếp với các thiết bị ngoài hoặc trao đổi ilữ liệu với các hệ thống khác
3 P o rt 2: Port 2 là một port công dụng kép ưên các chân 21- 28 được dùng như
g xuât nhập hoặc là byte cao của bus địa chỉ với các thiết k ế dùng bộ nhớ
4 Poit_3: Port 3 là một porkcông dụng kép trên các chân 10 -17 Mỗi chân của
* f n ồ v t n V o r * r \ n n r t Ỷ T t y-x A Ẫ ì y l í ĩ » K A , , SJ « „ X ~ x „ — S í i y _ 1 _ ■ A M 1 9
vừa có chức năng trao đổi dữ liệu vừa có các chức năng đặc biệt như ở
Trang 13Phẩn B ; Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51
P3.0 RXD Dữ liệu nhận cho port nối tiếp.P3.1 TXD Dữ liệu phát cho port nối tiếp.
! P3.5 TI Ngõ vào của timer/couter 1.
P3.6
P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài.
5 PSEN (Program Store Enable): PSEN là tín 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 để cho phép đọc các byte mã lệnh.PSEịịN 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 đtỊợc đọc từ EPROM qua bus dữ liệu và được chốt vào thành ghi lệnh của 89C51 ậể giải mã lệnh Khi thi hành chương trình trong ROM nội PSEN sẽ ở mức thụ độnậ (mức cao)
6 AỊLE (Address Latch Enable): Tín hiệu ra ALE trên chân 30 tương hơp với
các thiêậ bị làm việc với vi xử lý 8080, 8085, 8088, 8086 89C51 dùng ALE một cách tư(jfng tự cho việc giải kênh các bus địa chỉ và dữ liệu, khi port 0 được dùng trong clỊế độ chuyển đổi của nó: vừa là bus dữ liệu vừa là byte thấp của bus địa chỉ, ALÉ 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 0 dùng để xuất nhập dữ liệu trong nữa sau của chu kỳ 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 và có thể được dùng làm nguồn xung nhịp cho các phần khác của hệ thống 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 các loại có ROM nội
Í
7 EA (External Access):Tín hiệu vào EA trên chân 31 thường được mắc lên
mức cao (+5V) hoặc mức thấp (GND) Nếu ở mức cao, 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, chương trình chỉ
được thi hành từ bộ nhớ mở rộng Nêu EA được nối mức thấp bộ nhớ bên trong chương {rình 89C51 sẽ bị cấm và chương trình thi hành từ EEPROM mở rộng Người taịcòn dùng EA làm chân cấp điện áp Vp khi lập trình cho ROM trong
i (Reset):Ngõ vào RST trên chân 9 là ngõ reset của 89C51 Khi tín hiệu
này đượệ đưa lên mức cao (trong ít nhất 2 chu kì máy), các thanh ghi bên trong 89C51 được tải những giá trị thích hợp để khội động hệ thống
9 C^c ngõ vào bô dao đỏng tr ẽ n chip: 89C51 có một bộ dao động trên chip
Nó thườiịg được nối với một thạch anh giữa hai chân 18 và 19 Các tụ giữ cũng cần
Trang 1410 |Các chân nguồn: 89C51 sử dụng nguồn đơn +5V Vcc được nói vào chân
40 và Ỹss (GND) được nối vào chân 20
V TỔ CHỨC BỎ NHỚ:
89C|51 có bộ nhớ theo câu trúc Harvart: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong; 4ù 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 KByte bộ nhớ chương trình và 64KByte bộ nhớ dữ liệu
Bộ ịihđ bên trong bao gồm ROM nội và RAM trên chip, RAM trên chip bao gồm nh|ề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 gỊii và các thanh ghi chức năng đặc biệt
Trang 15Phẩn lị: Kiến thức liên quan Chương ĩ: Giđi thiệu vi điều khiển AT89C51
1 B AM đa dunff:
Địa chỉ byte Địa chỉ bit
RAM ĐA DỤNG 0
Trang 16Phần 11: Kiến thức liên quan Chương ĩ: Giời thiệu vi điều khiển AT89C51
90
8
8C8B8A89
88
87
83828180
k h ô n g đ ư ợ c đ ịa chỉ h óa bit
k h ô n g đ ư ợ c đ ịa chỉ hóa bit
k h ô n g đ ư ợ c đ ịa chỉ h óa bit
không được địa chỉ hóa bit
k h ô n g đ ư ợ c đ ịa chỉ hóa bit 8E 8D 8C 8B 00 > 00 05
k h ô n g đ ư ợ c đ ịa chỉ h óa bit
khô n g đ ư ợ c đ ịa chi hóa bit không đ ư ợ c đ ịa chỉ h óa bit khô n g đ ư ợ c đ ịa chỉ hóa bit
P1
THITHOTL1TLOTMODTCONPCON
DPHDPLSPPO
Tóm tắt bộ nhớ dữ liệu trên chip của Các thanh ghi chức năng đặc biệt
dù trên hình cho thây 80 byte RAM đa dụng chiếm các địa chỉ từ 30H- Dyte dưới cùng từ OOH đến 1FH cũng có thể được dùng với mục đích tương
Ậù các địa chỉ này đã có mục đích khác)
Trang 17Phẩn ĩ : Kiến thức liên quan Chương I: Giởi thiệu vi điều khiển AT89C51
Mọ địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đá nh địa chỉ trực tiếp hay 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, 5FHLệnh này di chuyển một bit dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “đia chỉ nguồn” (5FH) Đích nhận dữ liệu được ngầm xác định ữong mã lệnh
là 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 R l Ví dụ, sau khi thi hành cùng nhiệm vụ như lệnh đơn ở trên:
MOV RO, #5FHMOV A, @R0Lện 1 đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi RO và lệnh thứ hai dùng địa chỉ trực tiếp để di chuyển dữ liệu “được trỏ bởi RO” vào thanh ghi tích lũy
2 RAM đia chỉ hóa từng bit;
89C 51 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H đên 2FÍ [ và phần còn lại là trong các thanh ghi chức năng đặc biệt
Ý tư ẳng truy xuất từng bit riêng rẽ bằng 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 vi xử lý đòi hỏi một chuỗi lệnh đọc - sửa - ghi để đạt được hiệu ủatương tự Hơn nữa, các port I/O cũng được địa chỉ hóa từng bit làm đơn giản phần mé m xuất nhập từng bit
Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH Các địa chỉ này được truv xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dừng
3 dác bank thanh ghi:
32 bvte thấp nhất của bộ nhớ nội là dành cho các bank thanh hi Bộ lệnh của 8051/80B1 hỗ trợ 8 thanh ghi (RO đến R7) và theo mặc định (sau khi Reset hệ thông) cac thanh ghi này ở các địa chỉ 00H-07H
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)
Ý 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)
Vĩ CẮC THANH GHI CHỨC NẤNG ĐẢC BĨỂT:
Các Ihanh ghi trong MCS51 được định dạng như một phần của RAM trên chip
Trang 18Phẩn ĩ : Kiến thức liên quan _ Chương ĩ: Giđi thiệu vi điều khiển AT89C51
thanh ghi lệnh và các thanh ghi bày hiếm khi bị tác động trực tiếp, nên không có lợi khi lìặc chúng trong RAM trên chip) Cũng như RO đến R7 có 21 thanh ghi chức năng đầc biệt (SFR: Special Function Register) ở vùng trên 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, ¿ h ỉ có 21 địa chỉ SFR là được định nghĩa
Ngoại trừ thanh ghi 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 SFR có thể được địa chỉ hóa bit hoặc byte Người thiết k ế phải thận trọng trong truy xuất bit và byte Ví dụ lệnh sau:
SETB OEOH
sẽ set b It 0 trong thanh ghi tích lũy, các bit khác không thay đổi Ta thấy rằng EOH
đồng thpi 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 ghi tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là ca hiệu quả
1 T if trang thái chương trình:
Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ DOH chứa các bit t ang thái như bảng tóm tắt sau:
ov
Địa chỉ
D7HD6HD5HD4HD3H
D2HD1HDOH
Ý nghĩa
Cờ nhớ
Cờ nhớ phụ CỜOBit 1 chọn bank thanh ghi Bit 0 chọn bank thanh ghi
00 = bank 0: địa chỉ OOH - 07H
01 = bank 1: địa chỉ 08H - OFH
Trang 19Phần ĩ : Kiến thức liên quan Chương I: Giổi thiệu vi điều khiển AT89C51
Cờ ihớ (CY) có công dụng kép Thông thường nó được dùng cho các lệnh toán học: nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phé|p trừ Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh sau:
ADD A, #1
sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSW
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 bit Ví dụ, lệnh sau sẽ AND bit 25 với cờ nhớ và đặt kết quả trở vào cờ nhớ:
Cờ ( (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người dùng
* Cá c bit chon bank thanh ghi:
Các bit chọn bank thanh ghi (RSO và RS1) xác định bank thanh ghi được tích cực Chiing được xóa sau khi reset hệ thông và được thay đổi bằng phần mềm nếu cần Ví ỉụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 ( ỉịa chỉ byte 1FH) đến thanh ghi tích lũy:
SETB RS1SETB RSOMOV A, R7Khi chương trình được hợp dịch, các địa chỉ bit đúng được thay thế cho các ký hiệu “RS1 ” và “RSO ” Vậy, lẹnh SETB RS1 sẽ giống như lệnh SETB 0D4H
* Cờ tràn:
Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có một phép toán bị tràn Khị 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 này để xác định xem kết quả có nằm trong tầm xác định không Khi các số không dâu được cộng, bit ov có thể được bỏ qua Các kết quả lớn hơn ( +127 ) hoặc nhỏ hơn (-12B) sẽ set bit ov.
Trang 20Phẩn BỊ: Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51
jon trỏ ngăn xếp:
Cod trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81h Nó chứa địa chỉ của byte dũi 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 tha® tác cât dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp Lệnh cất dữ liệu vàổ ngăn xếp sẽ làm tang SP trước khi ghi dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn x rp sẽ đọc dữ liệu và giảm SP Ngăn xếp của 8051/8031 đượ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 89C51
Đ ể 1 hởi động lại SP với ngăn xếp bắt đầu tại 60h, lệnh sau được dùng:
MOV SP,#5FH
Trêr 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à : FH Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất dữ liệu đầu
vùng R / M này đã được dùng làm ngăn xếp
Ngări 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à lay 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, LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại bộ đếm chương tịình
Ị trỏ dữ liêu:
Con jrỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi
16 bit ở ẩịa chỉ 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, #55HMOV DPTR, #1000HMOV @DPTR, ALệ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 dữ 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 dữ liệu trong A
(55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR (1000H)
5 Cái: thanh ghi port xuất nhâp;
Các p:>rt của 89C51 bao gồm pòrt 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H, Port 2
ở địa chỉ A.0H và Port 3 ở địa chỉ BOH Tất cả các port đều được địa chỉ hóa từng bit Điều ló cung cấp một khả năng giao tiếp thuận lợi Ví dụ nếu một motor được
Trang 21Phần ĩ : Kiến thức liên quan _ Chương ĩ; Giời thiệu vi điều khiển AT89C51
nôi quaị một cuộn dây có transistor lái đến bit 7 của Port 1, nó có thể được bật và tắt bằng một lệnh đơn:
SETB P1.7 ; bật motorCLR P1.7 ; tắt motorlệnh trên dùng dấu chấm để xác định một bit trong một byte Trình hợp thi hành sự chuyển đổi cần thiết, vì vậy hai lệnh sau đây là như nhau:
CLR P1.7CLR 97H
ở địa chỉ 8BH (TL1: byte thấp) và 8DH (THI: byte cao) Việc vận hành
er được set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi
n timer (TCON) ở địa chỉ 88H Chỉ có TCON được địa chỉ hóa từng bit
c thanh ghi port nốì tiếp:
51 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với
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 iếp nối tiếp (các bộ chuyển đổi A/D, các thanh ghi dịch ) Một thanh ghi đệm dự liệu nối tiếp (SBƯF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBƯF Các
n hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (được địa chỉ hóa từng bit) ở địa chỉ 98H
c thanh ghi điều khiến ngắt;
89C Í1 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 thành ghi cho phép ngắt (IE) ở địa chỉ A8H Cảl hai thanh ghi được địa chỉ hóa từng bit
9 Thanh ghi điểu khiển công suất;
khiển
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều
Trang 22Phần I : Kiến thức liên quan Chương I: Giời thiệu vi điểu khiển AT89C51
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 1, 2 và 3 của port nối tiếp
1 PD Giảm công suất, được set để kích
hoạt mode giảm công suất, chỉ thoát khi reset
0 IDL Mode chờ, set để kích hoạt mode
chờ, chỉ thoát khi có ngắt hoặc reset hệ thống
VĨL BC NHỚ NGOẢI:
89CM có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chương trình và 64K
bộ nhớ 4ữ liệu bên ngoài Do đó, có thể dùng thêm ROM và RAM nếu cần
nửa đầu của mỗi chu kỳ của bộ nhớ, byte thấp của địa chỉ được cấp trong được chốt bằng xung ALE Một IC chốt 74HC373 (hoặc tương đương) sẽ địa chỉ thấp trong phần còn lại của chu kỳ bộ nhớ Trong nửa sau của chu port 0 được dùng như bus dữ liệu và được đọc hoặc ghi tùy theo lệnh
1 Ti uv xuất bô nhờ chương trình ngoài;
Bộ n
Hình sai
lớ chương trình ngoài là một IC ROM được cho phép bởi tín hiệu PSEN
mô tả cách nối một EPROM vào MCS51:
Trang 23Phân ĩ : Kiến thức liên quan Chương ĩ: Giời thiệu vi điều khiển AT89C51
Một
được lái
:hu kỳ máy của 89C51 có 12 chu kỳ xung nhịp Nếu bộ dao động trên chip bởi một thạch anh 12Mhz thì một chu kỳ máy kéo dài 1 micro giây Trongmột chu
- Giản đồ thời gian đọc bộ nhớ chương trình ngoài
RVơHG 0KOL - K ' CN;
Trang 24ần ỉ : Kiê
Phần ĩ : K iến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51
2 T ruv xuất bỏ nhđ dữ liêu ngoài:
và RI xem như thanh ghi địa chỉ
[STATE 4.1STATE a ISTATE 6 [STATE 1 1 STATE 2 [STATE 3 [STATE 4 | STATE 5 |
D PLORRI OUT
Trang 25IS EXTERNAL
OPLGRRI OUT
r * i DATA OUT o u r
lối bus địa chỉ và bus dữ liệu giữa RAM và 89C51 cũng giống như
và do đó cũng có thể lên đến 64Kbyte bộ nhớ RAM Ngoài ra, chân RD
1 đưỢc nối tới chân cho phép xuất (OE) của RAM và chân WR đươc nối
được kích khi cấp điện dùng mạch RC
Mach reset hê thốnọ
hái của tất cả các thanh ghi của 89C51 sau khi reset hệ thông được tóm
Trang 261 Thanh ghi Nôi dung
RAM trê ỉì chip không bị thay đổi bởi lệnh reset.
ĨX HOA T ĐÔNG CỦA BỐ ĐINH THỜĨ.-rTimerì
1 Gii ti thiêu:
Một ( ịnh nghĩa đơn giản của timer là một thanh ghi có khả năng tự động tăng
giá trị lên 1 sau mỗi xung nhịp Ngõ ra của tầng CUÔ 1 làm xung nhịp cho flip-flop
báo tràn ;ủa timer (flip-flop cờ) Giá trị nhị phân trong các flip-flop của timer có
như số đếm số xung nhịp (hoặc các sự kiện) từ khi khởi động timer Ví dụ
àếm lên từ 0000H đến FFFFH Cờ báo tràn sẽ lên 1 khi số đếm tràn
ứng dụng định khoảng thời gian, người ta lập trình timer ở một khoảng
à đặt cờ tràn timer Cờ được dùng để đồng bộ hoá chương trình để thực
á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
c ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để troi qua giữa hai sự kiện (ví dụ: đo độ rộng xung)
í n
Trang 27Phần B : Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51
Đên I sự kiện dùng để xác định sô" lần xảy ra của một sự kiện Một sự kiện là bâ"t cứ ác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của 89C51 Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho port nối tiếp
Truy XI ât các timer của 89C51 dùng sáu thanh ghi chức năng đặc biệt cho trong bảng sa 1:
SFR Mục đích Địa chỉ Địa chỉ hoáTCON Điều khiểu timer 88 H Có
TMOD C hế độ timer 89 H Không
TLO Byte thấp của Timer 0 8A H KhôngTL1 Byte thấp của Timer 1 8B H KhôngTHO Byte cao của Timer 0 8C H KhôngTHI Byte cao của Timer 1 8D H
2 T tanh ghi chê" đô timer (TMOD):
Thanh g li TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0 và Timer 1
7 GATE 1 Bit (mở) cổng, khi lên 1, timer chỉ chạy khi INT1 ở
mức cao
6 C/T 1 Bit chọn ch ế độ counter/timer
1 = bộ đếm sự kiện
0 = bộ định khoảng thời gian
5 MI 1 Bit 1 của chế độ (mode)
4 MO 1 Bit 0 của chế độ:
00: chế độ 0: timer 13 bit 01: chế độ 1: timer 16 bit 10: chế độ 2: tự động nạp lại 8 bit 11: ch ế độ 3: tách timer
Trang 28Phần B : Kiến thức liên quan Chương Ĩĩ Giđi thiệu vi điểu khiến AT89C51
3 T lanh ghi điều khiển timer (TCON):
Thanh í hi TCON chứa các bit trạng thái và các bit điều khiển Timer 0 và Timer 1
TCON 7 TF1 8FH Cờ báo tràn timer 1 Đặt bởi phần cứng khi
tràn, được xóa bởi phầm mềm hoặc phần cứng khi bộ xử lý chỉ đến chương trình phục vụ ngắt.TCON 6 TRI 8EH Bit điều khiển timer 1 chạy Đặt/xóa bằng phần
mềm để cho timer chạy/ngưhg
TCON 5 TF0 8DH Cờ báo tràn Timer 0
TCON 4 TRO 8CH Bit điều khiển Timer 0 chạy
TCON 3 IE1 8BH Cờ cạnh ngắt 1 bên ngoài Đ ặt bởi phần cứng
khi phát hiện một cạnh xuống ở INT1; xóa bằng phần mềm hoặc bằng phần cứng khi CPU chỉ đến chương trình phục vụ ngắt
TCON 2 IT1 8AH Cờ kiểu ngắt 1 bên ngoài ĐặƯxóa bằng phần
mềm để ngắt ngoài tích cực cạnh xuống/mức thấp
TCON 1 EO 89H Cờ cạnh ngắt 0 bên ngớài
TCON 0 ITO 88H Cờ kiểu ngắt 0 bên ngoài
a Cỉ ế đô 0 - chế đô timer 13 bit:
này tương thích với các họ vi điều khiển thế hể cũ
b.Cht 'đô 1 - ch ế đô timer 16 bit:
ng như timer 16 bit đầy đủ
tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phần mềm
ỉa giá trị trong các thanh ghi timer là bit 7 của THx và LSB là bit 0 của thanh ghi timer (TLx/THx) có thể được đọc hoặc ghi bất cứ lúc nào bằng
Trang 29Phần B : Kiến thức liên quan Chương ĩ: Giời thiệu vi điểu khiển AT89C51
c c xế đô 2 - ch ế đô tư đông nạp lai 8 bit:
t động như một timer 8 bit, trong khi đó THx vẫn giữ nguyên giá trị được
i sô" đếm tràn từ FFH đến 00H, không những cờ timer được set mà giá trị
ix đồng thời được nạp vào TLx, việc đếm tiếp tục từ giá trị này lên đến
ng 00H và nạp lại v.v C hế độ này rất thông dụng vì sự tràn timer xảy ra
1 ững khoảng thời gian nhất định và tuần hoàn một khi đã khởi động TMOD
Xung nhịp timer
d C h í đô 3 - ch ế đô tách timer:
er 0 ở chế độ 3, có thể cho timer 1 chạy và nguhg bằng cách chuyển nó ra vào chế độ 3 Nó vẫn có thể được sử dụng bởi port nối tiếp như bộ tạo tốc hoặc nó có thể được sử dụng bằng bất cứ cách nào không cần ngắt (vì nó
n được nối với TF1)
Xung nhòp timer
Xung nhịp timer
Trang 30Phần I : Kiến thức liên quan Chương I: Giđi thiệu vi điều khiển AT89C51
Nguồn tạo xung nhịp
Đi ìh khoáng thời gian ('interval timingl:
C/T = 0, hoạt động timer liên tục được chọn và timer được dùng cho việc
>ảng thời gian Lúc đó, timer lấy xung nhịp từ bộ dao động trên chip Bộ
ỉược thêm vào để giảm tần số xung nhịp đến giá trị thích hợp cho phần lớn
dụng Như vậy, thạch anh 12 MHz sẽ cho tốc độ xung nhịp timer 1 MHz
timer xảy ra sau một số (cố định) xung nhịp, phụ thuộc vào giá trị ban
nạp vào các thanh ghi timer TLx/THx
sự kiên (event counting):
n xung nhịp ngoài có từ thay đổi chức năng của các chân Port 3 Bit 4 của 4) dùng làm ngõ vào tạo xung nhịp bên ngoài cho timer 0 và được gọi là
à P3.5 hay “ TI ” là ngõ vào tạo xung nhịp cho timer 1
các ứng dụng bộ đếm, các thanh ghi timer được tăng thêm 1 tương ứng
n từ 1 xuống 0 ở ngõ vào bên ngoài: Tx Ngõ vào bên ngoài được lấy
g S5P2 của mọi chu kỳ máy Như vậy, khi ngõ vào cao trong một chu kỳ rong một chu kỳ k ế thì sô" đếm được tăng thêm 1 giá trị mới xuất hiện thanh ghi S3P1 của chu kỳ theo sau chu kỳ trong đó phát hiện sự chuyển
ĩó, mât 2 chu kỳ máy (2 micro giây) để ghi nhận một sự chuyển 1 sang 0,
ài tôi đa là 500 KHz (giả sử hoạt động ở 12 MHz)
£0
đầu, dừng và điểu khiển cấc timer:
g pháp đơn giản nhât để bắt đầu ( cho chạy) và dừng các timer là dùng
su khiển chạy: TRx trong TCON TRx bị xóa sau khi reset hệ thông Như
timer theo mặc nhiên là bị câm (bị dừng) TRx được đặt lên 1 bằng phần :ho các timer chạy
Trang 310 = lên: timer dừng
1 = xuốíng: timer chạy
Cho chạy và dừng các timer
ở trong thanh ghi TCON có địa chỉ bit, nên dễ dàng cho việc điều khiển
;r trong chương trình Ví dụ, cho timer 0 chạy bằng lệng:
SETB TRO
và dừng bằng lệnh:
SETB TRObiên dịch sẽ thực hiện việc chuyển đổi ký hiệu cần thiết từ “ TRO” sang
t đúng SETB TRO chính xác giông như SETB 8CH
ìhương pháp khác để điều khiển các timer là dùng bit GATE trong TMOD 'ào bên ngoài INTx Đặt GATE = 1 cho phép timer sẽ được điều khiển
Tx Việc này hữu dụng cho việc đo độ rộng xung như sau: giả sử INTO ở nhưhg các xung ở mức cao trong khoảng thời gian đo Khởi động timer ở (chế độ timer 16 bit), với TLO/THO = 0000H, GATE = 1 và TRO = 1 Khi
n ứ c cao, timer được “ mở cổng” và được cấp xung nhịp 1 MHz Khi INTO
ấp, timer bị “đóng cổng” và thời khoảng của xung tính bằng micro giây là ìược trong TLO/THO (Có thể lập trình INTO để tạo ra mọt ngắt khi no
"p)
UI im
Timer 1 hoạt động ở ch ế độ 0
U n li đông và truv xuất các thanh phi timer:
thường các thanh ghi được khởi động một lần ở đầu chương trình để đặt
n việc đúng Sau đó, trong thân chương trình, các timer được cho chạy bit cờ được kiểm tra và xóa, các thanh ghi timer đươ£ đọc và cậo theo đòi hỏi của các ứng dụng.TMOD là thanh ghi thứ nhất được khởi
I đặt chê độ hoạt động Ví dụ, các lệnh sau khởi động timer 1 như timer
Trang 32Phần I : Kiến thức liên quan Chương I: Giởi thiệu vi điều khiển AT89C51
3 nội và xóa các bit chế độ timer 0 Dĩ nhiên, timer thật sự không bắt đầu
i cho đến khi bit điều khiển chạy TRI được đặt lên 1
cần số đếm ban đầu, các thanh ghi timer TL1/TH1 cũng phải được khởi
hớ lại là các timer đếm lên và đặt cờ báo tràn khi có sự chuyển tiếp sang 0000H Một khoảng 100 micro giây có thể được định thời bằng cách
g trị cho TL1/TH1 là FF9CH:
MOV TL1, #9CH MOV THI, #0FFH imer được cho chạy bằng cách đặt bit điều khiển chạy như sau:
SETB TRItràn được tự động đặt lên 1 sau 100 micro giây,
mềm có thể đợi trong 100 micro giây bằng cách dùng lệnh rẽ nhánh có nhảy đến chính nó trong khi cờ báo tràn chưa được đặt lên 1:
WAIT: JNB TF1, WAIT imer tràn, cần dừng timer và xóa cờ báo ưàn trong phần mềm:
CLR TRI CLRTF1timer dang chav:
;, k ế đó đọc byte thấp rồi đọc byte cao lại một lần nữa Nếu byte cao đã thì lặp lại các hoạt động đọc Các lệnh dưới đây đọc nội dung của các timer TL1/TH1 vào các thanh ghi R6/R7:
AGAIN: MOV A, THI MOV R6, TL1 CJNZ A, THI, AGAIN MOV R7, A
khoáng ngắn và các khoảnp dài:
Ig thời gian ngắn nhất có thể có bị giới hạn không chỉ bởi tần sô' xung timer mà còn bởi phần mềm Do ảnh hưởng của khoảng thời gian thực lệnh, lệnh ngắn nhâ't của 89C51 là 1 chu kỳ máy hay 1 micro giây Sau
ng tóm tắt các kỹ thuật để tạo những khoảng thời gian có chiều dài khác
Choảng thời gian tôi đa Kỹ thuật
(micro giây)
Trang 33P h ần I : K iến thức liên quan Chương I: Giởi thiệu vi điều khiển AT89C51
gần = 10
256 65535Không giới hạn
-Bằng phần mềm-Timer 8 bit với tự động nạp lại-Timer 16 bit
-Timer 16 bit cộng với các vòng lặp phần mềm
hệ thông được điều khiển bằng ngắt cho ảo giác là làm nhiều đồng thời CPU mỗi lần không thể thực thi hơn một lệnh Nhưng nó có thể tạm treo
' thi một chương trình để thực thi chương trình khác, rồi quay về chương
nhât Theo cách này, nó giống như một chương trình con, nhưng có sự trong hệ thông được điều khiển bằng ngắt là sự ngắt quãng không xảy ra quả của một lệnh (lệnh CALL subroutine), mà là đáp ứng với một “ sự
y ra bâ't đồng bộ với chương trình chính Người ta không biết khi nào và ở
ng trình chính sẽ bị ngắt quãng
Ig trình giải quyêt ngắt được gọi là chương trình phục vụ ngắt ưupt Service Routine) hoặc bộ xử lý ngắt ISR thực thi khi đáp ứng ngắt thường thực hiện tác vụ mhập hay xuất với một thiết bị Khi ngắt xay ra
•ình chính tạm thời bị treo và rẻ nhánh đến ISR: ISR thực thi và kết thúc trở về từ ngặt, chương ữình chính tiếp tục thực thi ở chỗ mà nó tạm ường người ta xẻm chương trình chính như thực thi ở mức nền (cơ sở) el) và các ISR thực thi ở mức ngắt (interrupt-level) Người ta cũng dùng ngữ foreground chỉ mức nền và background chỉ mức ngắt Hình ảnh khái :ác ngắt được mô tả trong hình sau:
Thời g ỉap
I Chươi Ig trình chính
a.Thực thi chương trình không có ngắt
▲
* , ỉ ** l Jr ** 1l i
Trang 34Phẩn B : Kiến thức liên quan Chương I: Giời thiệu vi điểu khiến AT89C51
ó hai hoặc nhiều ngắt đồng thời, hoặc một ngắt vảy ra trong khi một ngắt
tg được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức xác định việc thực hiện các ngắt Việc hỏi vòng tuần tự thì cố định nhưng
Bit Ký hiệu Địa chỉ bit Mô tả (1 = cho phép, 0 = cấm)
IE.7 EA AFH Cho phép/cấm toàn bộ
IE.6 - AEH Không được định nghĩa
IE.5 ET2 ADH Cho phép ngắt từ timer 2
IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài
IE.l ETO A9H Cho phép ngắt từ timer 0
IE.O EXO A8H Cho phép ngắt ngoài 0
pit phải được đặt lên 1 để cho phép bất kỳ ngắt nào: bit cho phép riêng và
ép toàn bộ Ví dụ, các ngắt từ timer 1 được cho phép như sau:
SETB ET1 ; cho phép ngắt từ timer 1 SETB EA ; đặt bit cho phép toàn bộ
có thể sử dụng lệnh sau:
MOV IE, #10001000B
lù hai cách này có cùng hiệu quả sau khi reset hệ thống, nhưhg hiệu quả lếu IE được ghi ở giữa chương trình Cách thứ nhất không ảnh hưởng đến : trong thanh ghi IE, trái lại cách thứ hai sẽ xóa các bit khác Nên khởi trị ( ách thứ hai ở đầu chương trình (nghĩa là sau khi mở máy hoặc reset hệ
Trang 35Phần I : Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51
Bit Ký hiệu Địa chỉ bit Mô tả (1 = mức cao hơn, 0 = mức thấp hơn)
IP.' - - Không được định nghĩa
IP.< - - Không được định nghĩa
IP.' PT2 BDH Ưu tiên cho ngắt từ timer 2
IP.; PS BCH Ưu tiên cho ngắt port nối tiếp
IP; PT1 BBH Ưu tiên cho ngắt từ timer 1
i p: PX1 BAH Ưu tiên cho ngắt ngoài
IP PTO B9H Ưu tiên cho ngắt từ timer 0
IP ( PXO B8H Ưu tiên cho ngắt ngoài 0
Tóm tắt thanh ghi IP
xóa sau khi reset hệ thống để (mặc nhiên) đặt tất cả các ngắt ở mức ưu hơn Ý tưởng “ưu tiên ” cho phép một ISR sẽ bị ngắt bởi một ngắt nếu
độ ưu tiên cao hơn ngắt đang phục vụ Nếu một ISR có ưu tiên thấp đang khi một ngắt có ưu tiên cao xảy ra thì ISR bị ngắt ISR có ưu tiên cao
sau minh họa 5 nguồn ngắt, cơ chế riêng biệt và toàn bộ, hỏi vòng tuần tự
ức ưu tiên Trạng thái của tất cả các nguồn ngắt khả dụng qua các bit cờ trong các SFR Dĩ nhiên, nếu có bât kỳ ngắt nào bị cấm, ngắt không xảy phần mềm vẫn có thể kiểm ưa cờ ngắt
m
Trang 36Phần ỉ : Kiến thức liên quan Chương ĩ: Giời thiệu vi điều khiển AT89C51
ector ngắt:
cfiâp nhận ngắt, giá trị được nạp vàp PC được gọi là vector ngắt Nó là địa
u của ISR cho nguồn tạo ngắt Các vector ngắt được cho ở bảng sau:
Trang 37Phần I : Kiến thức liên quan Chương ĩ: Giđi thiệu vi điểu khiển AT89C51
Ngắt Cờ Địa chỉ vectorReset hệ thông RST 0000H
‘chỉ đến một n g ắt”, cờ gây ngắt tự động bị xóa bởi phần cứng Các ngoại
và TI với các ngắt port nối tiếp Vì có hai nguồn có thể có cho ngắt này, tỊiực tế để CPU xóa cờ ngắt này Các bit phải được kiểm tra trong ISR để nguồn ngắt và cờ tạo ngắt sẽ được xóa bằng phần mềm Thông thường hánh xảy ra với một phản ứng thích hợp, phụ thuộc vào nguồn ngắt,
íc vector ngắt ở phần đầu của bộ nhớ chương trình, lệnh thứ nhất của rình chính thường là lệnh nhảy qua vùng nhớ này, ví dụ như LJMP 0030h
or reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo
ĩa này, nó giông ngắt: nó ngắt chương trình chính và nạp cho PC giá trị
:hương trình phục vụ ngắt phải bắt đầu ở gần phần đầu của bộ nhớ chương
< ác địa chỉ trong bảng Các vector ngắt Mặc dù chỉ có 8 byte ở giữa các
0 ngắt, thường đủ bộ nhớ để thực hiện hoạt động mong muôn và quay về rình chính từ ISR
chỉ có một nguồn ngắt được sử dụng, ví dụ timer 0, thì có thể sử dụng
; điểm vào timer 0
; ISR cho timer 0 bắt đầu
; quay về chương trình chính
; chương trình chính
ử dụng nhiều ngắt, phải cẩn thận, bảo đảm là chúng bắt đầu ở vị trí đúng : chạy quá sang ISR kế Vì chỉ có một ngắt được sử dụng trong ví dụ trên,
t ình chính có thể bắt đầu ngay sau lệnh RETI
1 chươns trình vhuc vu nsắt có kích thước lớn:
Nếu SR dài hơn 8 byte, có thể cần chuyển nó tới nơi nào đó trong bộ nhớ
Trang 38P h ầ ^ : Kiến thức liên quan Chương ĩ: Giời thiệu vi điểu khiển AT89C51
bắt đầi
dụ lúc
với lệnh nhảy đến vùng nhớ khác ở đó có thể mở rộng chiều dài ISR Ví
I ày chỉ xét timer 0, có thể sử dụng khung sau:
ORG OOOOH ; điểm vào reset
; điểm vào timer 0
; các vector ngắt tiếp theo
; ISR cho timer 0
; quay về chương trình chínhgian, chương trình của chúng ta sẽ chỉ làm một việc lúc đầu Chương 'i động timer, port nối tiếp và các thanh ghi ngắt cho thích hợp và rồi
m gì cả Công việc hoàn toàn được làm trong ISR Sau các lệnh khởi íơng trình chính chứa lệnh sau:
HERE: SJMP HEREviết gọn như sau:
SJMP $xảy ra, chương trình chính bị ngắt quãng tạm thời trong khi ISR thực RETI ở cuối ISR trả điều khiển về chương trình chính và nó tiếp tục
n gì ca Trong nhiêu ứng dụng điều khiển, nhiều công việc thật ra được hoàn toàn trong ISR
dụng ngắt, nên lệnh SJMP $ (HERE: SJMP HERE) có thể được thaycác lệnh thực hiện các công việc khác cần trong ứng dụng
n g ắt của 89C51:
a Cái • ngắt timer:
;ắt timer có địa chỉ vector ngắt là 000BH (timer 0) và 001BH (timer 1)
T xảy ra khi các thanh ghi timer (TLx/THx) tràn và set cờ báo ưàn (TFx)
rằng các cờ timer (TFx) không bị xóa bằng phần mềm Khi cho phép các
tự động xóa bằng phần cứng khi CPU chuyển đến ngắt
ngắt cổng nối tiếp:
t ổng nối tiếp xảy ra khi hoặc cờ ngắt phát (TI) hoặc cờ ngắt thu (RI) được Ngắt phát xảy ra khi truyền một ký tự vừa được ghi vào SBUF Ngắt thu
một ký tự đã được nhận xong và đang đợi trong SBUF để được đọc
ong nôi tiêp hơi khác với nhắt timer Cờ gây ra ngắt cổng nối tiếp không
Ịg phần cứng khi CPU chuyển tới ngắt Nguyên do là có hai nguon ngắt
liêp: TI và RI Nguồn ngắt phải được xác định trọng ISR và cờ ngắt sẽ
1 >ằng phần mềm
ngắt ngoài:
Trang 39ngăt ngoài xảy ra khi có một mức thâp hoặc cạnh xuống trên chân INTO
TI của 89C51 Đây là các chức năng chuyển đổi của các bit Port 3: P3 2 ỉ) và P3.3 (chân 13)
cờ tạo các ngắt này là các bit IEO và IE1 trong TCON Khi quyền điều
í chuyển đên ISR, cờ tạo ra ngắt chỉ được xóa nếu ngắt được tích cực bằng ống Nếu ngắt được tích cực theo mức, thì nguồn yeu cầu ngắt bên ngoai khien mức của cờ thay cho phần cứng
chọn ngắt tích cực mức thấp hay tích cực cạnh xuống được lập trình qua
TO và IT1 trong TCON Ví dụ, nếu IT1 = 0, ngắt ngoài 1 được ¿ c h khởi
"c thâp ở chân INT1 Nếu IT1 = 1, ngắt ngoài 1 sẽ được kích khởi bằng
■ong ch ế độ này, nếu các mẫu liên tiếp của trên chân INT1 chỉ mức cao
ỷ t chu kỳ và thấp trong chu kỳ kế, cờ yêu cầu ngắt IE1 trong TCON đươc Rồi bit cờ IE1 yêu cầu ngắt
c chân ngắt ngoài được lấy mẫu một lần ở mỗi chu kỳ máy, ngõ vào nên trong tối thiểu 12 chu kỳ dao động để bảo đảm lây mẫu đúng Nếu ngắt
Ợc tác động theo cạnh xuông, nguồn bên ngoài phải giữ chân yêu cầu cao một chu kỳ và giữ nó ỏ mức thấp thêm một chu kỳ nữa để bảo đảm phát
c cạnh xuống IEO và IE1 tự động được xóa khi CPU chuyển tới ngắt
Ìgắt ngoài được tác động theo mức, nguồn bên ngoài phải giữ yêu cầu tác đến khi ngắt được yêu cầu thật sự được tạo ra Rồi nó phải không tác câu trước khi ISR được hoàn tât, nêu không một ngắt khác sẽ được lặp thường khi vào ISR người ta làm nguồn yêu cầu đưa tín hiệu tạo ngắt vềkhông tác động
r ĐÔNG PO RT NỐI TTF.P;
1 Gi< i thiêu:
có một port nối tiếp trong chip có thể hoạt động ở nhiều ch ế độ trên một rọng Chức năng chủ yêu của port nối tiêp là thực hiện chuyển đổi song noi tiep đoi VỚI dữ liệu xuât, và chuyển đổi nôi tiêp sang song song với lập
:uất phần cứng đến port nối tiếp qua các chân TXD và RXD Các chân năng khác với hai bit của port 3: P3.1 ở chân 11 (TXD) và P3.0 ở chânhức
5Ì tiếp cho hoạt động song công (full duplex: thu và phát đồng thời) và
IU (receiver buffering) cho phép một kí tự sẽ được thu và được giữ trong thứ hai được nhận Nếu CPU đọc kí tự thứ nhất trước khi kí tự thứ hai được thì dữ liệu sẽ không bị mất
inh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port nối
UF và SCON Bộ đệm port nối tiếp (SBUF) ở địa chỉ 99H thật sự là hai iêt vào SBUF để nạp dữ liệu sẽ được phát, và đọc SBUF để truy xuâ't dữ JỢc Đây là hai thanh ghi riêng biệt: thanh ghi chỉ ghi để phát và thanh
để thu
Trang 40Phần I : Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51
DThanh ghi dịchCLK
Xung nhịp tốc độ baud (thu)
5^2.
SBUF (chỉ đọc)
li > port nối tiếp, và các bit trạng thái báo kết thúc việc phát hoặc thu kí tự
t rạng thái có thể được kiểm tra bằng phần mềm hoặc có thể được lập trình '■¡ắt
ố làm việc của port nối tiếp còn gọi là tốc độ baud có thể cố định (lây từ ( ộng trên chip) Nếu sử dụng tốc độ baud thay đổi, timer 1 sẽ cung cấp tốc độ baud và phải được lập trình
nh ghi điều khiển p o rt nối tiếp:
( ọ
n3
ộ hoạt động của port nôi tiêp được đặt bằng cách ghi vào thanh ghi chế )i tiếp (SCON) ở địa chỉ 98H Sau đây là bảng tóm tắt thanh ghi SCON và
ộ của port nôi tiếp:
Bit Ký hiệu Địa chỉ Mô tả
SCON.7 SM0 9FH Bit 0 của chế độ port nối tiếp
SCON.6 SM1 9EH Bit 1 của chế độ port nôi tiếp
SCON.5 SM2 9DH Bit 2 của chế độ port nối tiếp Cho phép truyền
thông đa xử lí trong các chế độ 2 và 3; RI sẽ không bị tác động nếu bit thứ 9 thu được là 0
SCON.4 REN 9CH Cho phép bộ thu phải được đặt lên 1 để thu
(nhận) các kí tự
SCON.3 TB8 9BH Bit 8 phát, bit thứ 9 được phát trong các chế độ 2
và 3, được đặt và xóa bằng phần mềmSCON.2 RB8 9AH Bit 8 thu, bit thứ 9 thu được.
SCON.l TI 99H Cờ ngắt phát Đặt lên 1 khi kết thúc phát kí tự,
được xóa bằng phần mềm