Vi điều khiển (Microcontroller)

Chia sẻ: Hoang Cuong | Ngày: | Loại File: DOC | Số trang:55

0
195
lượt xem
82
download

Vi điều khiển (Microcontroller)

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bộ điều khiển (MCU - Micro Controller Unit) là một hệ thống vi xử lý cơ bản tích hợp trong cùng một chip, thông thường trong một MCU có một bộ vi xử lý (CPU), một dung lượng nhớ khoảng vài KB, và một số giao tiếp vào ra cơ bản thích hợp cho các ứng dụng điều khiển nhỏ.

Chủ đề:
Lưu

Nội dung Text: Vi điều khiển (Microcontroller)

  1. ̀ ̉ VI ĐIÊU KHIÊN (MICROCONTROLLER). 1
  2. ̀ ̉ VI ĐIÊU KHIÊN (MICROCONTROLLER). 1. CÂU TRUC CUA BỘ VI ĐIÊU KHIÊN. ́ ́ ̉ ̀ ̉ 1.1 Giới thiêu về cac bộ vi điêu khiên. ̣ ́ ̀ ̉ Bộ vi điêu khiên (MCU – Micro Controller Unit) là môt hệ thông vi xử lý cơ ban tich hợp ̀ ̉ ̣ ́ ̉ ́ trong cung môt chip, thông thường trong môt MCU có môt bộ vi xử lý (CPU), môt dung ̀ ̣ ̣ ̣ ̣ lượng nhớ khoang vai KB, và môt số giao tiêp vao ra cơ ban thich hợp cho cac ứng dung ̉ ̀ ̣ ́ ̀ ̉ ́ ́ ̣ điêu khiên nho. Với câu truc như mô tả trên, người sử dung có thể nhanh chong thực hiên ̀ ̉ ̉ ́ ́ ̣ ́ ̣ môt hệ thông phân cứng điêu khiên lâp trinh băng cach nôi môt số it linh kiên cơ ban như ̣ ́ ̀ ̀ ̉ ̣ ̀ ̀ ́ ́ ̣ ́ ̣ ̉ thanh anh, tụ điên, điên trở … vao bộ vi điêu khiên. Măt khac do không phai thực hiên cac ̣ ̣ ̣ ̀ ̀ ̉ ̣ ́ ̉ ̣ ́ đường mach nôi giữa cac khôi CPU, bộ nhớ và vao ra nên khả năng chông nhiêu cua hệ ̣ ́ ́ ́ ̀ ́ ̃ ̉ thông cao thich hợp cho môi trường công nghiêp. Hiên nay cac bộ vi điêu khiên đã trở nên ́ ́ ̣ ̣ ́ ̀ ̉ khá phổ biên trong nhiêu linh vực với rât nhiêu hang san xuât như: hoc MCU 8051 cua ́ ̀ ̃ ́ ̀ ̃ ̉ ́ ̣ ̉ Atmel, họ 68HC11 cua Motorola, họ Z80MCU cua Zilog … ̉ ̉ 1.2 Câu truc tông quat cua cac bộ vi điêu khiên. ́ ́ ̉ ́ ̉ ́ ̀ ̉ Sơ đồ khôi tông quat cua môt bộ vi điêu khiên bao gôm cac khôi cơ ban như trinh bay trên ́ ̉ ́ ̉ ̣ ̀ ̉ ̀ ́ ́ ̉ ̀ ̀ ̀ hinh 8.1: Power Control Power monitoring store Reset Input & Processor Reset control Output port I/O pins Clock & Clocking timing RAM Hinh 8.1: Sơ đồ khôi tông quat cua môt bộ vi điêu khiên . ̀ ́ ̉ ́ ̉ ̣ ̀ ̉ - Khôi xử lý (Processor) đong vai trò quyêt đinh tât cả cac hoat đông cua cac bộ phân ́ ́ ́ ̣ ́ ́ ̣ ̣ ̉ ́ ̣ ́ khac bên trong vi điêu khiên. ̀ ̉ - Bộ nhớ điêu khiên (Control store) thường là loai bộ nhớ ROM có dung lượng vai KB ̀ ̉ ̣ ̀ chứa cac chương trinh điêu khiên. ́ ̀ ̀ ̉ - Bộ nhớ RAM thường có dung lượng nhỏ sử dung cho viêc khai bao cac biên trung ̣ ̣ ́ ́ ́ gian, thông thường cac thanh ghi cua vi điêu khiên cung năm trong phân bộ nhớ nay. ́ ̉ ̀ ̉ ̃ ̀ ̀ ̀ - Khôi tao xung nhip và đinh thời (Clock & timing) đong vai trò tao xung nhip đinh thời ́ ̣ ̣ ̣ ́ ̣ ̣ ̣ cac hoat đông cua hệ thông. Thông thường ở cac bộ vi điêu khiên tich hợp săn bộ tao ́ ̣ ̣ ̉ ́ ́ ̀ ̉ ́ ̃ ̣ xung nhip bên trong, tân số hoat đông cua hệ thông sẽ được xac đinh băng thach anh ̣ ̀ ̣ ̣ ̉ ́ ́ ̣ ̀ ̣ nôi vao mach từ bên ngoai. ́ ̀ ̣ ̀ - Khôi điêu khiên reset có nhiêm vụ thiêt lâp lai cac trang thai cua hệ thông, cho phep nó ́ ̀ ̉ ̣ ́ ̣ ̣ ́ ̣ ́ ̉ ́ ́ băt đâu hoat đông trở lai giông như khi mới câp nguôn. ́ ̀ ̣ ̣ ̣ ́ ́ ̀ 1
  3. - Khôi giam sat nguôn (power monitoring) cho phep toan bộ chip hoat đông ở chế độ chờ ́ ́ ́ ̀ ́ ̀ ̣ ̣ (standby) khi không có yêu câu điêu khiên với công suât rât nho. Vì câu truc vi điêu ̀ ̀ ̉ ́ ́ ̉ ́ ́ ̀ khiên cho phep thực hiên môt hệ thông nhỏ gon, nên nó được sử dung nhiêu trong cac ̉ ́ ̣ ̣ ́ ̣ ̣ ̀ ́ thiêt bị điêu khiên câm tay và di đông có nguôn cung câp băng pin, với khôi giam sat ́ ̀ ̉ ̀ ̣ ̀ ́ ̀ ́ ́ ́ nguôn vi điêu khiên có thể hoat đông theo đinh thời hoăc chỉ khi có yêu câu từ bên ̀ ̀ ̉ ̣ ̣ ̣ ̣ ̀ ngoai. ̀ - Cac công vao ra (I/O): thông thường vi điêu khiên có môt vai công giao tiêp song song ́ ̉ ̀ ̀ ̉ ̣ ̀ ̉ ́ để giao tiêp điêu khiên cac thiêt bị bên ngoai, đôi khi cac công nay sử dung như cac ́ ̀ ̉ ́ ́ ̀ ́ ̉ ̀ ̣ ́ Bus (dữ liêu, đia chỉ và điêu khiên) cua môt bộ vi xử lý thông thường, cho cac hệ thông ̣ ̣ ̀ ̉ ̉ ̣ ́ ́ có yêu câu mở rông về dung lượng bộ nhớ cung như cac công vao ra. Ngoai cac công ̀ ̣ ̃ ́ ̉ ̀ ̀ ́ ̉ vao ra song song, vi điêu khiên con có cac công vao ra nôi tiêp theo chuân RS232 hoăc ̀ ̀ ̉ ̀ ́ ̉ ̀ ́ ́ ̉ ̣ IEEE448. Trong môt số bộ vi điêu khiên con tich hợp cả cac khôi A/D và D/A, khi đó ̣ ̀ ̉ ̀ ́ ́ ́ sẽ có cả cac đường vao ra cho cac khôi nay. ́ ̀ ́ ́ ̀ 2. MÔ TẢ PHÂN CỨNG CAC BỘ VI ĐIÊU KHIÊN HỌ MSC-51. ̀ ́ ̀ ̉ 2.1 Giới thiêu chung. ̣ Họ IC vi điêu khiên MSC-51 được phat triên, chế tao và ban ở thị trường bởi hang Intel. ̀ ̉ ́ ̉ ̣ ́ ̃ Cac nhà chế tao IC khac như Siemens cua Đức, Advanced Micro Devices, Fujitsu, Philips, ́ ̣ ́ ̉ Atmel … là cac nhà cung câp những thiêt bị họ MCS-51 được câp giây phep bang quyên ́ ́ ́ ́ ́ ́ ̉ ̀ thứ 2. 8051 là bộ vi điêu khiên đâu tiên được thương mai hoá trên thị trường, sau đó nhiêu ̀ ̉ ̀ ̣ ̀ thế hệ khac trong họ ra đời, cac đăc tinh khac nhau cua môt số bộ vi điêu khiên trong họ ́ ́ ̣ ́ ́ ̉ ̣ ̀ ̉ nay được mô tả trong bang sau: ̀ ̉ ̣ Loai Bộ nhớ chương Bộ nhớ dữ liêu ̣ Số timer ̀ trinh 8051 4K ROM 128 byte 2 8031 0K ROM 128 byte 2 8751 4K EPROM 128 byte 2 8052 8K ROM 256byte 3 8032 0K ROM 256byte 3 8752 8K EPROM 256byte 3 8951 4K EEROM 256 byte 2 892051 2K EEROM 128 byte 0 2.2 Tông quat về phân cứng 8051. ̉ ́ ̀ • Sơ đồ khôi và chức năng cac khôi. ́ ́ ́ Cac bộ vi điêu khiên 8051, 8031, 8751, 8951 trong họ MSC – 51 có chung môt số đăc tinh ́ ̀ ̉ ̣ ̣ ́ như: - 4 KB bộ nhớ loai ROM để ghi cac chương trinh điêu khiên. ̣ ́ ̀ ̀ ̉ - 128 byte RAM. ̉ ̀ - 4 công vao ra 8 bit. - 2 bộ đinh thời (timer) 16 bit. ̣ ̣ ̉ ́ ́ ́ ̉ - Môt công giao tiêp nôi tiêp chuân RS 232. 1
  4. - Có thể quan lý được 64 KB bộ nhớ mở rông cho chương trinh và 64 KB bộ nhớ mở ̉ ̣ ̀ rông cho dữ liêu. ̣ ̣ - Môt bộ xử lý cac phep toan logic có thể thao tac trên từng bit. ̣ ́ ́ ́ ́ - 210 bit RAM nôi được đia chỉ hoa. ̣ ̣ ́ - Bộ nhân/chia 4 µs. Câu truc kêt nôi phân cứng cua cac bộ vi điêu khiên trong họ gân tương tự như nhau, môt ́ ́ ́ ́ ̀ ̉ ́ ̀ ̉ ̀ ̣ số khac biêt giữa chung cung được biêu diên trên sơ đồ khôi hinh 8.2. ́ ̣ ́ ̃ ̉ ̃ ́ ̀ INT1 INT0 T2EX Timer 2 (8032/52) Timer 1 128 byte ROM TIMER 2 T2 Timer 0 RAM 0K – 8031/32 (8032, 8052) Serial Port (8032, 8052) 4K – 8051/8951 TIMER 1 T1 8K – 8052/8752 INTERRUPT OTHER 128 Byte TIMER 0 T0 CONTROL REGISTER RAM CPU BUS I/O SERIAL Oscillator CONTROL PORTS PORT EA ALE RST PSEN P0 P2 P1 P3 TxD RxD Address/data Hinh 8.2: Sơ đồ khôi vi điêu khiên MCS – 51. ̀ ́ ̀ ̉ Khôi xử lý trung tâm (CPU) nhân tin hiêu xung nhip từ bộ dao đông, tân số ra cua bộ tao ́ ̣ ́ ̣ ̣ ̣ ̀ ̉ ̣ dao đông sẽ tuỳ thuôc vao tân số thach anh bên ngoai. Hâu hêt cac bộ vi điêu khiên trong ̣ ̣ ̀ ̀ ̣ ̀ ̀ ́ ́ ̀ ̉ họ đêu có it nhât 128 byte RAM bên trong. Cac thanh ghi thông thường năm trong phân ̀ ́ ́ ́ ̀ ̀ RAM. Ngoai 8031/32 cac vi điêu khiên con lai đêu có bộ nhớ ROM lưu trữ chương trinh ̀ ́ ̀ ̉ ̀ ̣ ̀ ̀ điêu khiên. Bộ nhớ ROM nay có thể là Mask-ROM chỉ lâp trinh được bởi nhà san xuât, có ̀ ̉ ̀ ̣ ̀ ̉ ́ thể là EPROM hoăc EEROM có thể lâp trinh lai nhiêu lân bởi người sử dung. ̣ ̣ ̀ ̣ ̀ ̀ ̣ Cac bộ đinh thời lâp trinh được có thể đêm theo xung cung câp từ bên ngoai hoăc xung ́ ̣ ̣ ̀ ́ ́ ̀ ̣ chuân từ bộ tao dao đông, có bộ đêm nay có ứng dung rât phổ biên trong điêu khiên tự ̉ ̣ ̣ ́ ̀ ̣ ́ ́ ̀ ̉ ̣ đông. Bộ điêu khiên Bus cung câp cac tin hiêu điêu khiên giao tiêp với bên ngoai, và kiêm soat ̀ ̉ ́ ́ ́ ̣ ̀ ̉ ́ ̀ ̉ ́ hoat đông cua cac công vao ra dữ liêu song song. Hai trong bôn công vao ra song song (P0 ̣ ̣ ̉ ́ ̉ ̀ ̣ ́ ̉ ̀ 1
  5. và P2) có thể sử dung lam cac Bus đia chỉ và dữ liêu trong chế độ giao tiêp bộ nhớ ngoai. ̣ ̀ ́ ̣ ̣ ́ ̀ Công vao ra nôi tiêp có hai đường truyên và nhân dữ liêu nôi tiêp với cac thiêt bị khac. ̉ ̀ ́ ́ ̀ ̣ ̣ ́ ́ ́ ́ ́ Bộ điêu khiên ngăt tich hợp trong chip cho phep nhân hai yêu câu ngăt cung câp thăng từ ̀ ̉ ́ ́ ́ ̣ ̀ ́ ́ ̉ bên ngoai, hoăc từ công nôi tiêp và cac bộ đinh thời bên trong. ̀ ̣ ̉ ́ ́ ́ ̣ • Cac tin hiêu cua 8051. ́ ́ ̣ ̉ 8051/8951 đêu có 40 chân tin hiêu giông nhau. Ngoai cac chân nhân cac nguôn nuôi và cac ̀ ́ ̣ ́ ̀ ́ ̣ ́ ̀ ́ linh kiên tao dao đông, cac chân con lai hoat đông giông như cac đường vao ra. Tuy nhiên, ̣ ̣ ̣ ́ ̀ ̣ ̣ ̣ ́ ́ ̀ trong đó có 24 chân có hai công dung, môi đường nay có thể hoat đông như đường xuât ̣ ̃ ̀ ̣ ̣ ́ nhâp, hoăc như đường điêu khiên, hoăc là môt đường trong cua BUS dữ liêu và BUS đia ̣ ̣ ̀ ̉ ̣ ̣ ̉ ̣ ̣ chi. Cac công vao ra song song thường có câu truc cai. ̉ ́ ̉ ̀ ́ ́ ̀ Cac thiêt kế cua 8051 có thể ở hai chế đô: chế độ tôi thiêu, hoăc chế độ mở rông bộ nhớ ́ ́ ̉ ̣ ́ ̉ ̣ ̣ hoăc cac thanh phân khac. Môi công 8 đường có thể hoat đông giông như môt đơn vị giao ̣ ́ ̀ ̀ ́ ̃ ̉ ̣ ̣ ́ ̣ tiêp với cac thiêt bị vao ra song song như: may in, cac bộ biên đôi A/D, D/A …, hoăc môi ́ ́ ́ ̀ ́ ́ ́ ̉ ̣ ̃ đường có thể điêu khiên môt cach đôc lâp để có thể giao tiêp với cac thiêt bị chỉ yêu câu ̀ ̉ ̣ ́ ̣ ̣ ́ ́ ́ ̀ môt bit như: cac công tăc, cac LED, cac solenoid, đong mở đông cơ…. Viêc giao tiêp theo ̣ ́ ́ ́ ́ ́ ̣ ̣ ́ từng bit, có thể điêu khiên băng cac lênh thao tac bit là môt điêm manh cua cac bộ vi điêu ̀ ̉ ̀ ́ ̣ ́ ̣ ̉ ̣ ̉ ́ ̀ khiên so với cac bộ vi xử lý thông thường. ̉ ́ Công 0: Công 0 (cac chân 32–39) là môt công hai chức năng. Trong cac thiêt kế tôi thiêu ̉ ̉ ́ ̣ ̉ ́ ́ ́ ̉ (không dung bộ nhớ mở rông), nó có chức năng như cac đường I/O. Đôi với cac thiêt kế ̀ ̣ ́ ́ ́ ́ mở rông về bộ nhớ, nó là Bus đa hợp giữa BUS đia chỉ và BUS dữ liêu. ̣ ̣ ̣ Công 1: Công 1 (cac chân 1–8) là môt công vao ra thông thường. Cac đường trong công ̉ ̉ ́ ̣ ̉ ̀ ́ ̉ được ký hiêu P1.0, P1.1, P1.2,.… Công1 không có chức năng khac, vì vây chung chỉ được ̣ ̉ ́ ̣ ́ dung cho giao tiêp với cac thiêt bị ngoai. ̀ ́ ́ ́ ̀ Công 2: Công 2 (cac chân 21–28): là môt công có công dung kep, nó được dung như cac ̉ ̉ ́ ̣ ̉ ̣ ́ ̀ ́ đường vao ra, hoăc là byte cao cua BUS đia chỉ đôi với cac thiêt kế dung bộ nhớ mở rông. ̀ ̣ ̉ ̣ ́ ́ ́ ̀ ̣ Công 3: Công 3 (cac chân 10–17): là môt công công dung kep. Cac đường cua công nay ̉ ̉ ́ ̣ ̉ ̣ ́ ́ ̉ ̉ ̀ có nhiêu chức năng. Ngoai công dung như cac đường vao ra thông thường, chung con có ̀ ̀ ̣ ́ ̀ ́ ̀ cac công dung khac như biêu diên ở bang sau: ́ ̣ ́ ̉ ̃ ̉ Bit Tên Đia chỉ bit ̣ Chức năng P3.0 RxD B0H Nhân dữ liêu cho công nôi tiêp. ̣ ̣ ̉ ́ ́ P3.1 TxD B1H Truyên dữ liêu cho công nôi tiêp. ̀ ̣ ̉ ́ ́ P3.2 INT0 B2H Nhân tin hiêu yêu câu ngăt (0) từ bên ngoai. ̣ ́ ̣ ̀ ́ ̀ P3.3 INT1 B3H Nhân tin hiêu yêu câu ngăt (1) từ bên ngoai. ̣ ́ ̣ ̀ ́ ̀ P3.4 T0 B4H Ngõ vao bên ngoai cho Timer 0. ̀ ̀ P3.5 T1 B5H Ngõ vao bên ngoai cho Timer 1. ̀ ̀ P3.6 WR B6H Tin hiêu điêu khiên ghi cho bộ nhớ bên ngoai. ́ ̣ ̀ ̉ ̀ P3.7 RD B7H Tin hiêu điêu khiên đoc cho bộ nhớ bên ngoai. ́ ̣ ̀ ̉ ̣ ̀ 8051 có 4 tin hiêu điêu khiên. ́ ̣ ̀ ̉ 1
  6. PSEN (Program Store Enable): PSEN (chân 29) là tin hiêu ngõ ra, nó là tin hiêu điêu ́ ̣ ́ ̣ ̀ khiên để cho phep bộ nhớ chương trinh mở rông, trong hệ thông tin hiêu nay thường được ̉ ́ ̀ ̣ ́ ́ ̣ ̀ nôi đên chân OE (Output Enable) cua môt EPROM, để cho phep đoc cac byte mã lênh. ́ ́ ̉ ̣ ́ ̣ ́ ̣ PSEN sẽ ở mức thâp trong thời gian lây mã lênh. Cac mã nhị phân cua chương trinh, ́ ́ ̣ ́ ̉ ̀ được đoc từ EPROM qua BUS dữ liêu đưa vao thanh ghi lênh cua 8051 để giai ma. Khi ̣ ̣ ̀ ̣ ̉ ̉ ̃ thi hanh chương trinh trong ROM nôi (8051), PSEN sẽ ở mức không tich cực (mức cao). ̀ ̀ ̣ ́ ALE (Address Latch Enable): Tin hiêu ra ALE (chân 30), có chức năng tương tự như ́ ̣ trong cac vi xử lý 8085, 8088, 8086, nó được dung cho viêc tach kênh cac Bus đa hợp (đia ́ ̀ ̣ ́ ́ ̣ chỉ và dữ liêu). Trong câu hinh bộ nhớ mở rông (tin hiêu EA = 1), công 0 vừa là BUS dữ ̣ ́ ̀ ̣ ́ ̣ ̉ liêu vừa là byte thâp cua BUS đia chi, ALE được sử dung để chôt đia chỉ vao môt bộ cai ̣ ́ ̉ ̣ ̉ ̣ ́ ̣ ̀ ̣ ̀ bên ngoai trong chu kỳ xung nhip đâu tiên cua chu kỳ truy câp bộ nhớ. Sau đo, cac đường ̀ ̣ ̀ ̉ ̣ ́ ́ công 0 dung để xuât hoăc nhâp dữ liêu trong thời gian con lai cua chu kỳ truy câp bộ nhớ. ̉ ̀ ́ ̣ ̣ ̣ ̀ ̣ ̉ ̣ Tin hiêu ALE có tân số băng 1/6 lân tân số dao đông trên chip, nó có thê ̉ đ ược dung lam ́ ̣ ̀ ̀ ̀ ̀ ̣ ̀ ̀ nguôn xung nhip cho cac phân khac cua hệ thông. Nêu xung nhip trên 8051 là 12 MHz, thì ̀ ̣ ́ ̀ ́ ̉ ́ ́ ̣ ALE có tân số 2 MHz, chỉ ngoai trừ khi thi hanh lênh MOVX, môt xung ALE sẽ bị mât. ̀ ̣ ̀ ̣ ̣ ́ Chân nay cung được lam ngõ vao cho xung lâp trinh cho EPROM trong 8051. ̀ ̃ ̀ ̀ ̣ ̀ EA (External Access): Tin hiêu vao EA (chân 31) thường được nôi lên mức cao (+5V) ́ ̣ ̀ ́ hoăc mức thâp (GND). Nêu ở mức cao, 8051 thi hanh chương trinh từ ROM nôi trong ̣ ́ ́ ̀ ̀ ̣ khoang đia chỉ thâp (4K). Nêu ở mức thâp, chương trinh chỉ được thi hanh từ bộ nhớ mở ̉ ̣ ́ ́ ́ ̀ ̀ rông. Khi dung 8031, EA luôn được nôi mức thâp vì không có bộ nhớ chương trinh trong ̣ ̀ ́ ́ ̀ chip. Nêu EA được nôi mức thâp, bộ nhớ bên trong chương trinh 8051 sẽ bị câm, và ́ ́ ́ ̀ ́ chương trinh thi hanh từ EPROM mở rông. EA con được dung lam ngõ vao câp điên ap ̀ ̀ ̣ ̀ ̀ ̀ ̀ ́ ̣ ́ 21V khi lâp trinh cho EPROM trong 8051. ̣ ̀ RST (Reset): Ngõ vao RST (chân 9) là ngõ reset cua 8051. Khi tin hiêu nay được đưa lên ̀ ̉ ́ ̣ ̀ mức cao (trong it nhât 2 chu kỳ may), cac thanh ghi bên trong 8051 được nap những giá trị ́ ́ ́ ́ ̣ thich hợp để khởi đông hệ thông. ́ ̣ ́ Cac ngõ vao bộ dao đông trên chip (X1, X2): Như trong sơ đồ khôi, 8051 có môt bộ ́ ̀ ̣ ́ ̣ dao đông trong chip. Nó thường được nôi với môt thach anh giữa hai chân 18 và 19 cung ̣ ́ ̣ ̣ ̀ với cac tụ điên. Với 8051 tân số thach anh thông thường là 12 MHz. ́ ̣ ̀ ̣ Cac chân nguôn: 8051 hoat đông với nguôn đơn +5V. VCC được nôi vao chân 40 và VSS ́ ̀ ̣ ̣ ̀ ́ ̀ (GND) được nôi vao chân 20. ́ ̀ • Tổ chức bộ nhớ cua 8051. ̉ Cac hệ thông vi xử lý thường thực hiên viêc phân biêt cac vung nhớ riêng cho dữ liêu và ́ ́ ̣ ̣ ̣ ́ ̀ ̣ chương trinh, vì vây trong may tinh thông thường chương trinh và dữ liêu sẽ được nap từ ̀ ̣ ́ ́ ̀ ̣ ̣ đia vao cac vung nhớ khac nhau cua RAM hệ thông. Cac bộ vi điêu khiên thực hiên viêc ̃ ̀ ́ ̀ ́ ̉ ́ ́ ̀ ̉ ̣ ̣ quan lý bộ nhớ theo môt cach khac. ̉ ̣ ́ ́ 8051 không có đia để lưu trữ cac chương trinh, nó có dung lượng nhớ giới han ngay bên ̃ ́ ̀ ̣ trong chip. Dung lượng nhớ nay sẽ được sử dung riêng rẽ cho chương trinh và dữ liêu. ̀ ̣ ̀ ̣ Tuy nhiên chung có thể được mở rông bên ngoai lên đên tôi đa 64 Kbytes bộ nhớ chương ́ ̣ ̀ ́ ́ trinh và 64 Kbytes bộ nhớ dữ liêu. ̀ ̣ Bộ nhớ RAM trên chip được sử dung cho rât nhiêu muc đich như: phân lưu trữ đa dung, ̣ ́ ̀ ̣ ́ ̀ ̣ phân lưu trữ đia chỉ hoá từng bit, cac thanh ghi đa năng và cac thanh ghi chức năng đăc ̀ ̣ ́ ́ ̣ biêt. Có hai đăc tinh nôi bât trong vi điêu khiên la: Cac thanh ghi và cac công vao ra được ̣ ̣ ́ ̉ ̣ ̀ ̉ ̀ ́ ́ ̉ ̀ 1
  7. ban đồ hoá trong bộ nhớ RAM, chung có thể truy câp giông như cac ô nhớ bât kỳ khac. ̉ ́ ̣ ́ ́ ́ ́ Ngăn xêp cung năm ở bộ nhớ RAM bên trong chip, mà không ở RAM ngoai như cac hệ ́ ̃ ̀ ̀ ́ thông vi xử lý thông thường ́ • Mô tả về bộ nhớ RAM trong chip cua 8051. ̉ RAM bên trong 8051 mô tả trên hinh 8.3 bao gôm: 4 tâp thanh có đia chỉ 00H tới 1FH, ̀ ̀ ̣ ̣ môi tâp có 8 thanh ghi được ký hiêu từ R0 tới R7, viêc đôi qua cac tâp thanh ghi khac nhau ̃ ̣ ̣ ̣ ̉ ́ ̣ ́ được thực hiên băng hai bit cua thanh ghi trang thai. Vung nhớ đia chỉ hoá theo bit có đia ̣ ̀ ̉ ̣ ́ ̀ ̣ ̣ chỉ từ 20H tới 2FH, viêc truy câp cac bit nay theo cac đia chỉ từ 00 tới 7FH. Vung nhớ đa ̣ ̣ ́ ̀ ́ ̣ ̀ dung từ 30H tới 7FH. Và cac thanh ghi chức năng đăc biêt từ 80H tới FFH, môt số thanh ̣ ́ ̣ ̣ ̣ ghi trong vung nay cung được đia chỉ hoá theo bit. ̀ ̀ ̃ ̣ RAM đa dung: Ngoai 80 byte RAM đa dung chiêm cac đia chỉ từ 30H–7FH, 32 byte dưới ̣ ̀ ̣ ́ ́ ̣ cung từ 00H đên 1FH cung có thể được dung với muc đich tương tự (măc dù cac đia chỉ ̀ ́ ̃ ̀ ̣ ́ ̣ ́ ̣ nay đã có muc đich khac). ̀ ̣ ́ ́ Moi đia chỉ trong vung RAM đa dung đêu có thể truy xuât với chế độ đia chỉ trực tiêp ̣ ̣ ̀ ̣ ̀ ́ ̣ ́ hoăc gian tiêp. Ví du, để đoc nôi dung ở đia chỉ 5FH cua RAM nôi vao thanh ghi tich luy, ̣ ́ ́ ̣ ̣ ̣ ̣ ̉ ̣ ̀ ́ ̃ có thể dung lênh sau: ̀ ̣ MOV A, 5FH Lênh nay di chuyên 1 byte dữ liêu dung đinh vị đia chỉ trực tiêp để xac đinh “đia chỉ ̣ ̀ ̉ ̣ ̀ ̣ ̣ ́ ́ ̣ ̣ nguôn” (5FH). Đich nhân dữ liêu là thanh ghi tich luy A. ̀ ́ ̣ ̣ ́ ̃ RAM nôi cung có thể được truy xuât băng đinh vị đia chỉ gian tiêp qua R0 hay R1. Ví du, ̣ ̃ ́ ̀ ̣ ̣ ́ ́ ̣ hai lênh sau thi hanh cung nhiêm vụ như lênh ở trên: ̣ ̀ ̀ ̣ ̣ MOV R0, #5FH MOV A, @R0 Lênh đâu dung đia chỉ tức thời để di chuyên giá trị 5FH vao thanh ghi R0, và lênh thứ hai ̣ ̀ ̀ ̣ ̉ ̀ ̣ dung đia chỉ trực tiêp để di chuyên dữ liêu “được trỏ bởi R0” vao thanh ghi tich luy A. ̀ ̣ ́ ̉ ̣ ̀ ́ ̃ RAM đia chỉ hoá từng bit: 8051 chứa 210 bit được đia chỉ hoa, trong đó 128 bit là ở cac ̣ ̣ ́ ́ đia chỉ byte 20H đên 2FH, và phân con lai là trong cac 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 tinh tiên lợi cua vi điêu ́ ̀ ̀ ̀ ̣ ̣ ́ ̣ ̉ ̀ khiên noi chung. Cac bit có thể được đăt, xoa, AND, OR,... băng môt lênh. Đa số cac vi xử ̉ ́ ́ ̣ ́ ̀ ̣ ̣ ́ lý đoi hoi môt chuôi lênh đoc-sửa-ghi để đat được hiêu quả tương tự. Ngoai ra, cac công ̀ ̉ ̣ ̃ ̣ ̣ ̣ ̣ ̀ ́ ̉ vao ra cung được đia chỉ hoá từng bit, lam đơn gian phân mêm xuât nhâp từng bit. ̀ ̃ ̣ ̀ ̉ ̀ ̀ ́ ̣ Có 128 bit được đia chỉ hoá đa dung ở cac byte 20H đên 2FH. Cac đia chỉ nay được truy ̣ ̣ ́ ́ ́ ̣ ̀ xuât như cac byte hoăc như cac bit phụ thuôc vao lênh được dung. Ví du, để lâp bit 67H, ta ́ ́ ̣ ́ ̣ ̀ ̣ ̀ ̣ ̣ dung lênh sau: ̀ ̣ Chú ý răng “đia chỉ bit 67H” là bit có trong số lớn nhât (MSB) ở “đia chỉ byte 2CH”. Lênh ̀ ̣ ̣ ́ ̣ ̣ trên sẽ không tac đông đên cac bit khac ở đia chỉ nay. Ở cac vi xử lý công viêc tương tự ́ ̣ ́ ́ ́ ̣ ̀ ́ ̣ sẽ phai thi hanh như sau: ̉ ̀ MOV A, 2CH ; đoc cả byte ̣ ORL A, #10000000B ; set MSB MOV 2CH,A ; ghi lai cả byte ̣ SETB 67H 1
  8. FF 7F F0 F7 F6 F5 F4 F3 F2 F1 F0 B General Purpose E0 E7 E6 E5 E4 E3 E2 E1 E0 Acc RAM D0 D7 D6 D5 D4 D3 D2 - D0 PSW 30 B8 BC BB BA B9 B8 IP 2F 7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 A8 AF AE AD AC AB AA A9 A8 IE 57 56 55 54 53 52 51 50 4F 4E 4D 6C 4B 4A 49 48 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 68 99 Not bit addressable SBUF 37 36 35 34 33 36 31 30 98 9F 9E 9D 9C 9B 9A 99 98 SCON 2F 2 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 90 97 96 95 94 93 92 91 90 P1 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 8D Not bit addressable TH1 0F 0E 0D 0C 0B 0A 09 08 8C Not bit addressable TH0 8B Not bit addressable TL1 20 07 06 05 04 03 02 01 00 8A Not bit addressable TL0 1F Bank 3 89 Not bit addressable TMOD 18 88 8F 8E 8D 8C 8B 8A 89 88 TCON 17 Bank 2 87 Not bit addressable PCON 10 0F Bank 1 83 Not bit addressable DPH 08 82 Not bit addressable DPL 07 Bank 0 (default) 81 Not bit addressable SP Cac tâp thanh ghi (register banks): 32 byte 80 ́ 87 86bộ nhớ83 82là danh cho cac tâp thanh ́ ̣ ̉ thâp cua 85 84 nôi 81 80 P0 ̣ ̀ ́ ̣ ̣ ̣ 00 ̉ ghi. Tâp lênh cua 8051 cho phep truy câp 8 thanh ghi (R0 đên R7), và theo măc đinh (sau ́ ̣ ́ ̣ ̣ khi reset hệ thông) cac thanh ghi nay ̀ ở cacớ RAM̉ 00H–07H. cua 8051 đây sẽ đoc nôi dung ́ ̀ ́ Hinh 8.3: Vung nh đia chi trong chip Lênh sau ̀ ́ ̣ ̣̉ ̣ ̣ ở đia chỉ 05H cua RAM vao thanh ghi tich luy: ̣ ̉ ̀ ́ ̃ MOV A, R5 Đây là lênh 1 byte dung đinh vị đia chỉ trực tiêp thanh ghi. Tât nhiên, công viêc trên cung̣ ̣ ̀ ̣ ̣ ́ ́ ̣ ̃ có thể thực hiên băng lênh 2 byte dung đinh vị đia chỉ trực tiêp năm trong byte thứ hai: ̣ ̀ ̣ ̀ ̣ ̣ ́ ̀ MOV A, 05H Cac lênh dung cac đinh vị trực tiêp thanh ghi (R0 đên R7) sẽ ngăn hơn và nhanh hơn cac ́ ̣ ̀ ́ ̣ ́ ́ ́ ́ lênh tương ứng nhưng dung đinh vị đia chỉ trực tiêp. Cac dữ liêu được sử dung thường ̣ ̀ ̣ ̣ ́ ́ ̣ ̣ xuyên trong chương trinh, nên dung môt trong cac thanh ghi nay. ̀ ̀ ̣ ́ ̀ 1
  9. Tâp thanh ghi có thể chuyên đôi, băng cach thay đôi cac bit chon tâp thanh ghi trong từ ̣ ̉ ̉ ̀ ́ ̉ ́ ̣ ̣ trang thai (PSW). Giả sử răng tâp thanh ghi thứ 3 được chon, thì lênh sau sẽ ghi nôi dung ̣ ́ ̀ ̣ ̣ ̣ ̣ cua thanh ghi tich luy vao đia chỉ 18H: ̉ ́ ̃ ̀ ̣ MOV R0, A Ý tưởng dung “cac tâp thanh ghi” cho phep “chuyên hướng” chương trinh nhanh và hiêu ̀ ́ ̣ ́ ̉ ̀ ̣ qua, từng phân cua chương trinh sẽ có môt bộ thanh ghi riêng không phụ thuôc vao cac ̉ ̀ ̉ ̀ ̣ ̣ ̀ ́ phân khac. ̀ ́ • Cac thanh ghi chức năng đăc biêt: ́ ̣ ̣ Cac thanh ghi nôi cua trong hâu hêt cac vi xử lý được truy xuât ngâm đinh trong tâp lênh. ́ ̣ ̉ ̀ ́ ́ ́ ̀ ̣ ̣ ̣ Ví dụ lênh “INC A” sẽ tăng nôi dung cua thanh ghi tich luy A lên 1. Tac đông nay đ ược ̣ ̣ ̉ ́ ̃ ́ ̣ ̀ ngâm đinh trong mã lênh. ̀ ̣ ̣ Cac thanh ghi trong 8051 là môt phân cua RAM nôi. Vì vây môi thanh ghi sẽ có môt đia ́ ̣ ̀ ̉ ̣ ̣ ̃ ̣ ̣ chỉ (ngoai trừ thanh ghi đêm chương trinh và thanh ghi lênh vì cac thanh ghi nay hiêm khi ̣ ́ ̀ ̣ ́ ̀ ́ bị truy câp trực tiêp, nên chung không được đăt trong RAM nôi). Đây là lý do giai thich tai ̣ ́ ́ ̣ ̣ ̉ ́ ̣ sao 8051 có nhiêu thanh ghi. Cung như R0 đên R7, 21 thanh ghi chức năng đăc biêt (SFR: ̀ ̃ ́ ̣ ̣ Special Function Register) cua 8051 năm trong RAM nôi từ đia chỉ 80H đên FFH. Chú ý ̉ ̀ ̣ ̣ ́ răng hâu hêt 128 đia chỉ từ 80H đên FFH không được đăt tên. Chỉ có 21 đia chỉ SFR là ̀ ̀ ́ ̣ ́ ̣ ̣ được đinh nghia. ̣ ̃ Ngoai thanh ghi tich luy (A) có thể được truy xuât ngâm băng đinh vị ngâm đinh, đa số ̀ ́ ̃ ́ ̀ ̀ ̣ ̀ ̣ cac SFR được truy xuât băng đinh vị đia chỉ trực tiêp. Môt số SFR có thể được đia chỉ hoá ́ ́ ̀ ̣ ̣ ́ ̣ ̣ theo bit hoăc theo byte. Người lâp trinh phai chú ý khi truy xuât theo bit và theo byte. Ví ̣ ̣ ̀ ̉ ́ dụ lênh: ̣ SETB 0E0H Sẽ lâp bit 0 trong thanh ghi tich luy, cac bit khac không đôi. Có thể thây răng E0H đông ̣ ́ ̃ ́ ́ ̉ ́ ̀ ̀ thời là đia chỉ byte cua thanh ghi tich luy, và là đia chỉ bit cua bit có trong số nhỏ nhât trong ̣ ̉ ́ ̃ ̣ ̉ ̣ ́ thanh ghi tich luy. Nhưng vì lênh SETB chỉ tac đông trên bit, nên đia chỉ bit sẽ tac đông ́ ̃ ̣ ́ ̣ ̣ ́ ̣ trong lênh. ̣ Từ trang thai chương trinh (PSW: Program Status Word):năm ở đia chỉ D0H chứa cac bit ̣ ́ ̀ ̀ ̣ ́ trang thai như trong bang sau: ̣ ́ ̉ BIT Tên Đia chỉ ̣ Chức năng PSW.7 CY D7 Cờ nhớ. PSW.6 AC D6 Cờ nhớ phu.̣ PSW.5 F0 D5 Cờ Zero. PSW.4 RS1 D4 ̣ ̣ Chon tâp thanh ghi. PSW.3 RS0 D3 ̣ ̣ Chon tâp thanh ghi. PSW.2 OV D2 Cờ tran. ̀ PSW.1 - D1 Dự phong.̀ PSW.0 P D0 Cờ chăn le. ̃ ̉ * Cờ nhớ (CY): Thông thường được dung cho cac lênh số hoc: nó sẽ được lâp nêu có môt ̀ ́ ̣ ̣ ̣ ́ ̣ số nhớ sinh ra bởi phep công hoăc có môt số mượn bởi phep trừ. Ví du, nêu thanh ghi tich ́ ̣ ̣ ̣ ́ ̣ ́ ́ luy chứa FFH thì lênh: ̃ ̣ 1
  10. ADD A, #1 sẽ trả về thanh ghi tich luy kêt quả 00H và lâp cờ nhớ trong PSW. ́ ̃ ́ ̣ Cờ nhớ cung có thể xem như môt thanh ghi 1 bit cho cac lênh xử lý bit. Ví du, lênh sau sẽ ̃ ̣ ́ ̣ ̣ ̣ AND bit 25H với cờ nhớ và đăt kêt quả năm trong cờ nhớ: ̣ ́ ̀ ANL C, 25H * Cờ nhớ phu: Khi công cac số BCD, cờ nhớ phụ (AC) được lâp nêu kêt quả cua 4 bit thâp ̣ ̣ ́ ̣ ́ ́ ̉ ́ trong khoang 0AH đên 0FH. Nêu cac giá trị được công là số BCD, thì sau lênh công cân ̉ ́ ́ ́ ̣ ̣ ̣ ̀ hiêu chinh thâp phân băng lênh DAA, để cac kêt quả lớn hơn 9 trở về tâm từ 0 ÷ 9. ̣ ̉ ̣ ̀ ̣ ́ ́ ̀ * Cờ Zero (F0): la1 bit cờ được sử dung trong nhiêu chức năng, nó được lâp băng 1 khi ̀ ̣ ̀ ̣ ̀ kêt quả cac phep tinh băng 0. ́ ́ ́ ́ ̀ * Cac bit chon tâp thanh ghi (RS0 và RS1): xac đinh tâp thanh ghi được tich cực. Chung ́ ̣ ̣ ́ ̣ ̣ ́ ́ được xoa sau khi reset hệ thông và được thay đôi băng phân mêm nêu cân. Ví du, ba lênh ́ ́ ̉ ̀ ̀ ̀ ́ ̀ ̣ ̣ sau cho phep truy câp tâp thanh ghi thứ 3, và di chuyên nôi dung cua thanh ghi R7 (đia chỉ ́ ̣ ̣ ̉ ̣ ̉ ̣ byte 1FH) đên thanh ghi tich luy: ́ ́ ̃ SETB RS1 SETB RS0 MOV A, R7 Khi chương trinh được hợp dich, cac đia chỉ bit đung được thay thế cho cac ký hiêu ̀ ̣ ́ ̣ ́ ́ ̣ “RS1” và “RS0”. Tức la, lênh SETB RS1 hoan toan giông như lênh SETB 0D4H. ̀ ̣ ̀ ̀ ́ ̣ * Cờ tran (OV): được lâp sau môt lênh công hoăc trừ nêu xay ra tran số hoc. Khi cac số có ̀ ̣ ̣ ̣ ̣ ̣ ́ ̉ ̀ ̣ ́ dâu được công hoăc trừ với nhau, phân mêm có thể kiêm tra bit nay để xac đinh dai kêt ́ ̣ ̣ ̀ ̀ ̉ ̀ ́ ̣ ̉ ́ quả thich hợp. Khi công cac số không dâu thì không cân xet tới OV. Cac kêt quả lớn hơn ́ ̣ ́ ́ ̀ ́ ́ ́ +127 hoăc nhỏ hơn -128 sẽ lâp OV. Ví du, phep công sau bị tran và bit OV được lâp: ̣ ̣ ̣ ́ ̣ ̀ ̣ 0FH + 7FH = 8EH tức là 15 +127 = 142. Kêt quả là môt số có dâu 8EH được xem như -116, không phai là kêt quả đung (142), vì ́ ̣ ́ ̉ ́ ́ vây bit OV được lâp, khi kiêm tra cờ OV chung ta có thể hiêu chinh lai kêt quả cho thich ̣ ̣ ̉ ́ ̣ ̉ ̣ ́ ́ hợp. Thanh ghi B: năm ở đia chỉ F0H được dung cung với thanh ghi tich luy A trong cac lênh ̀ ̣ ̀ ̀ ́ ̃ ́ ̣ nhân và chia. Lênh MUL AB, sẽ nhân cac 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. Thanh ghi B cung có thể đ ược xem như môt ́ ̀ ̃ ̣ thanh ghi đa dung. Nó được đia chỉ hoá theo bit (F0H đên F7H). ̣ ̣ ́ Con trỏ ngăn xêp (SP): là môt thanh ghi 8 bit có đia chỉ 81H. Nó chứa đia chỉ cua byte dữ ́ ̣ ̣ ̣ ̉ liêu hiên hanh trên đinh cua ngăn xêp. Cac lênh trên ngăn xêp bao gôm: cât dữ liêu vao ̣ ̣ ̀ ̉ ̉ ́ ́ ̣ ́ ̀ ́ ̣ ̀ ngăn xêp và lây dữ liêu ra khoi ngăn xêp. Lênh cât dữ liêu vao ngăn xêp sẽ lam tăng SP, và ́ ́ ̣ ̉ ́ ̣ ́ ̣ ̀ ́ ̀ lênh lây dữ liêu ra khoi ngăn xêp sẽ giam SP. Ngăn xêp cua 8051 được giữ trong RAM ̣ ́ ̣ ̉ ́ ̉ ́ ̉ nôi, và được giới han cac đia chỉ có thể truy xuât băng đia chỉ gian tiêp. Chung la128 byte ̣ ̣ ́ ̣ ́ ̀ ̣ ́ ́ ́ ̀ đâu cua 8051. ̀ ̉ Lênh sau sẽ khởi đông lai SP để đinh ngăn xêp băt đâu tai 60H: ̣ ̣ ̣ ̉ ́ ́ ̀ ̣ MOV SP, #5FH Sau lênh trên ngăn xêp cua 8051 bị giới han trong 32 byte, vì đia chỉ cao nhât cua RAM ̣ ́ ̉ ̣ ̣ ́ ̉ trên chip là 7FH. Giá trị 5FH được dung vì SP sẽ tăng lên 60H trước khi cât byte dữ liêu ̀ ́ ̣ đâu tiên. ̀ 1
  11. Khi người sử dung không khởi đông lai con trỏ ngăn xêp, thì SP lây giá trị măc đinh là ̣ ̣ ̣ ́ ́ ̣ ̣ 07H khi reset hệ thông, và kêt quả là ngăn đâu tiên để cât dữ liêu có đia chỉ là 08H. Khi đó ́ ́ ̀ ́ ̣ ̣ cac tâp thanh ghi 1 (có thể cả 2 và 3) sẽ không dung được vì vung RAM nay đã đ ược sử ́ ̣ ̀ ̀ ̀ ̣ dung lam ngăn xêp. ̀ ́ Ngăn xêp được truy xuât trực tiêp băng cac lênh PUSH và POP để lưu trữ tam thời và lây ́ ́ ́ ̀ ́ ̣ ̣ ́ lai dữ liêu, hoăc được truy xuât ngâm băng cac lênh goi chương trinh con (ACALL, ̣ ̣ ̣ ́ ̀ ̀ ́ ̣ ̣ ̀ LCALL) hay cac lênh trở về (RET, RETI) để cât và lây lai bộ đêm chương trinh. ́ ̣ ́ ́ ̣ ́ ̀ Thanh ghi con trỏ dữ liêu (DPTR – data pointer register): được dung để truy xuât bộ nhớ ̣ ̀ ́ ngoai, nó là môt thanh ghi 16 bit có đia chỉ 82H (DPL: byte thâp) và 83H (DPH: byte cao). ̀ ̣ ̣ ́ Ba lênh sau sẽ ghi 55H vao RAM ngoai ở đia chỉ 1000H: ̣ ̀ ̀ ̣ MOV A, #55H MOV DPTR, #1000H MOVX @DPTR, A Lênh đâu tiên dung đinh vị tức thời để nap dữ liêu 55H vao thanh ghi A. Lênh thứ hai ̣ ̀ ̀ ̣ ̣ ̣ ̀ ̣ cung dung đinh vị tức thời, lân nay để nap dữ liêu 16 bit (1000H) vao con trỏ dữ liêu. ̃ ̀ ̣ ̀ ̀ ̣ ̣ ̀ ̣ Lênh thứ ba dung đinh vị gian tiêp để di chuyên dữ liêu trong A (55H) đên RAM ngoai có ̣ ̀ ̣ ́ ́ ̉ ̣ ́ ̀ đia chỉ chứa trong DPTR (1000H). ̣ Cac thanh ghi công vao ra: Cac công cua 8051 bao gôm công 0 ở đia chỉ 80H, công 1 ở ́ ̉ ̀ ́ ̉ ̉ ̀ ̉ ̣ ̉ đia chỉ 90H, công 2 ở đia chỉ A0H và công 3 ở đia chỉ B0H. Tât cả cac công đêu được đia ̣ ̉ ̣ ̉ ̣ ́ ́ ̉ ̀ ̣ chỉ hoá từng bit. Điêu đó cung câp môt khả năng giao tiêp thuân lợi theo bit. Ví dụ nêu môt ̀ ́ ̣ ́ ̣ ́ ̣ đông cơ được nôi qua môt cuôn dây có transistor lai đên bit 7 cua Công 1, nó có thể được ̣ ́ ̣ ̣ ́ ́ ̉ ̉ bât và tăt băng môt lênh: ̣ ́ ̀ ̣ ̣ SETB P1.7 ; bât motor ̣ CLR P1.7 ; tăt motor ́ Dâu châm trong lênh để xac đinh môt bit trong công. Trinh hợp dich sẽ thực hiên viêc ́ ́ ̣ ́ ̣ ̣ ̉ ̀ ̣ ̣ ̣ chuyên đôi ra đia chỉ tương ứng cua bit đo, ví dụ hai lênh sau thực hiên cung môt công ̉ ̉ ̣ ̉ ́ ̣ ̣ ̀ ̣ viêc: ̣ CLR P1.7 CLR 97H Xet môt ví dụ khac, giao tiêp đên môt thiêt bị với môt bit trang thai goi là BUSY, được lâp ́ ̣ ́ ́ ́ ̣ ́ ̣ ̣ ́ ̣ ̣ khi thiêt bị đang bân và được xoa khi thiêt bị đã săn sang. Nêu BUSY được nôi tới P1.5, ́ ̣ ́ ́ ̃ ̀ ́ ́ vong lăp sau sẽ được dung để chờ thiêt bị trở lai trang thai săn sang: ̀ ̣ ̀ ́ ̣ ̣ ́ ̃ ̀ WAIT: JB P1.5, WAIT Lênh nay có nghia là “nêu bit P1.5 được lâp thì nhay tới nhan WAIT”. Noi cach khac ̣ ̀ ̃ ́ ̣ ̉ ̃ ́ ́ ́ “quay trở lai và kiêm tra lân nữa”. ̣ ̉ ̀ Cac thanh ghi cua bộ đinh thời (timer): 8051 có hai bộ đinh thời/đêm 16 bit được dung ́ ̉ ̣ ̣ ́ ̀ cho viêc đinh thời hoăc đêm sự kiên. Timer 0 có đia chỉ 8AH (TL0: byte thâp) và 8CH ̣ ̣ ̣ ́ ̣ ̣ ́ (TH0: byte cao). Timer 1 có đia chỉ 8BH (TL1: byte thâp) và 8DH (TH1: byte cao). Viêc ̣ ́ ̣ thiêt lâp hoat đông cac timer được thực hiên băng cach nap cac giá trị thich hợp cho thanh ́ ̣ ̣ ̣ ́ ̣ ̀ ́ ̣ ́ ́ ghi chế độ Timer (TMOD - Timer Mode) ở đia chỉ 89H, và thanh ghi điêu khiên timer ̣ ̀ ̉ (TCON – Timer Control) ở đia chỉ 88H. Chỉ có TCON được đia chỉ hoá từng bit. ̣ ̣ Cac thanh ghi công nôi tiêp: 8051 có môt công nôi tiêp trong chip danh cho viêc trao đôi ́ ̉ ́ ́ ̣ ̉ ́ ́ ̀ ̣ ̉ thông tin với cac thiêt bị nôi tiêp như may tinh, modem hoăc với cac IC khac có giao tiêp ́ ́ ́ ́ ́ ́ ̣ ́ ́ ́ 1
  12. nôi tiêp (cac bộ chuyên đôi A/D, cac thanh ghi dich...). Môt thanh ghi goi là bộ đêm dữ liêu ́ ́ ́ ̉ ̉ ́ ̣ ̣ ̣ ̣ ̣ nôi tiêp (SBUF) ở đia chỉ 99H sẽ giữ cả hai dữ liêu truyên và nhân. Khi truyên dữ liêu thì ́ ́ ̣ ̣ ̀ ̣ ̀ ̣ ghi lên SBUF, khi nhân dữ liêu thì đoc SBUF. Cac chế độ hoat đông khac nhau được lâp ̣ ̣ ̣ ́ ̣ ̣ ́ ̣ trinh qua thanh ghi điêu khiên công nôi tiêp (SCON) được đia chỉ hoá từng bit có đia chỉ ̀ ̀ ̉ ̉ ́ ́ ̣ ̣ 98H. Cac thanh ghi ngăt: 8051 có câu truc điêu khiên ngăt, cho phep 5 nguôn yêu câu ngăt, với ́ ́ ́ ́ ̀ ̉ ́ ́ ̀ ̀ ́ 2 mức ưu tiên. Cac ngăt bị câm sau khi reset hệ thông, và sẽ được cho phep băng viêc ghi ́ ́ ́ ́ ́ ̀ ̣ dữ liêu vao thanh ghi cho phep ngăt (IE) ở đia chỉ A8H. Cả hai thanh ghi được đia chỉ hoá ̣ ̀ ́ ́ ̣ ̣ từng bit. Thanh ghi điêu khiên công suât: Thanh ghi điêu khiên công suât (PCON) ở đia chỉ 87H ̀ ̉ ́ ̀ ̉ ́ ̣ bao gôm nhiêu bit điêu khiên. Ý nghia cua chung được tom tăt trong bang sau: ̀ ̀ ̀ ̉ ̃ ̉ ́ ́ ́ ̉ BIT Tên ký hiêu ̣ Chức năng 7 SMOD Khi lâp cho phep tăng gâp đôi tôc độ baud công nôi tiêp. ̣ ́ ́ ́ ̉ ́ ́ Không đinh nghia.̣ ̃ 6 - Không đinh nghia. ̣ ̃ 5 - Không đinh nghia. ̣ ̃ 4 - Cờ đa dung 1. ̣ 3 GF1 Cờ đa dung 0. ̣ 2 GF0 Khi lâp cho phep 8051 hoat đông trong chế độ giam ̣ ́ ̣ ̣ ̉ 1 PD ̀ nguôn (Power down). Khi lâp cho phep 8051 hoat đông trong chế độ rôi (Idle). ̣ ́ ̣ ̣ ̃ 0 IDL Trong chế độ rôi CPU sẽ không thực hiên môt lênh nao khac. Lênh lâp bit IDL là lênh cuôi ̃ ̣ ̣ ̣ ̀ ́ ̣ ̣ ̣ ́ cung mà CPU thực hiên trước khi chuyên qua chế độ rôi. Trong chế độ rôi nguôn xung ̀ ̣ ̉ ̃ ̃ ̀ nhip bên trong sẽ bị căt không cung câp tới CPU, nhưng vân cung câp tới bộ điêu khiên ̣ ́ ́ ̃ ́ ̀ ̉ ngăt, cac bộ đinh thời và công nôi tiêp. Trang thai hiên tai cua CPU và cac thanh ghi sẽ ́ ́ ̣ ̉ ́ ́ ̣ ́ ̣ ̣ ̉ ́ được giữ nguyên, cac công vao ra cung được duy trì mức logic hiên tai. ALE và PSEN ́ ̉ ̀ ̃ ̣ ̣ được giữ ở mức cao. Chế độ rôi sẽ kêt thuc khi có yêu câu ngăt (được cho phep), bit IDL ̃ ́ ́ ̀ ́ ́ sẽ được xoa. ́ Tương tự như chế độ rôi, lênh lâp bit PD sẽ là lênh cuôi cung mà CPU thực hiên trước ̃ ̣ ̣ ̣ ́ ̀ ̣ khi chuyên qua chế độ giam nguôn. Trong chế độ giam nguôn, bộ dao đông tao xung nhip ̉ ̉ ̀ ̉ ̀ ̣ ̣ ̣ sẽ ngưng hoat đông, điêu nay lam tât cả cac khôi chức năng bên trong ngưng hoat đông. ̣ ̣ ̀ ̀ ̀ ́ ́ ́ ̣ ̣ Nôi dung cua Ram nôi sẽ được giữ nguyên, mức logic cua cac công cung được giữ ̣ ̉ ̣ ̉ ́ ̉ ̃ nguyên và ALE và PSEN sẽ được giữ ở mức thâp. Chế độ nay chỉ được thoat khoi khi ́ ̀ ́ ̉ reset hệ thông. Trong chế độ giam nguôn, nguôn cung câp Vcc có thể giam xuông 2V. Chú ́ ̉ ̀ ̀ ́ ̉ ́ ý không được giam nguôn xuông 2V trước khi chuyên qua chế độ giam nguôn, và phai ̉ ̀ ́ ̉ ̉ ̀ ̉ phuc hôi lai Vcc = 5V sau 10 chu kỳ xung nhip trước khi tin hiêu RST quay về mức thâp ̣ ̀ ̣ ̣ ́ ̣ ́ trở lai. ̣ • Giao tiêp với bộ nhớ ngoai. ́ ̀ 8051 có khả năng mở rông thêm 64K bộ nhớ chương trinh và 64K bộ nhớ dữ liêu bên ̣ ̀ ̣ ngoai. Do đó có thể dung thêm ROM và RAM nêu cân. Cung có thể sử dung chức năng ̀ ̀ ́ ̀ ̃ ̣ 1
  13. mở rông dung lượng bộ nhớ, để tăng thêm dung lượng công vao ra, luc nay cac công vao ̣ ̉ ̀ ́ ̀ ́ ̉ ̀ ra sẽ được truy câp giông như cac ô nhớ mở rông. ̣ ́ ́ ̣ Khi sử dung bộ nhớ ngoai, công 0 không con là môt công vao ra nữa. Nó được ghep kênh ̣ ̀ ̉ ̀ ̣ ̉ ̀ ́ giữa phân thâp cua BUS đia chỉ (A0–A7), và BUS dữ liêu (D0–D7). Tin hiêu ALE sẽ tac ̀ ́ ̉ ̣ ̣ ́ ̣ ́ đông mức cao khi băt đâu môi chu kỳ truy câp bộ nhớ để chôt byte thâp cua đia chi. Công ̣ ́ ̀ ̃ ̣ ́ ́ ̉ ̣ ̉ ̉ 2 thông thường được dung cho byte cao cua BUS đia chi. ̀ ̉ ̣ ̉ Trong nửa đâu cua môi chu kỳ truy câp bộ nhớ, byte thâp cua đia chỉ được câp ra công 0 ̀ ̉ ̃ ̣ ́ ̉ ̣ ́ ̉ và được chôt băng xung ALE. Có thể sử dung môt IC chôt 74HC373 (hoăc tương đương) ́ ̀ ̣ ̣ ́ ̣ để giữ byte đia chỉ thâp trong phân con lai cua chu kỳ truy câp bộ nhớ. Trong nửa sau cua ̣ ́ ̀ ̀ ̣ ̉ ̣ ̉ chu kỳ bộ nhớ công 0 được dung như BUS dữ liêu, chiêu truyên dữ liêu trên nó sẽ tuy ̉ ̀ ̣ ̀ ̀ ̣ ̀ theo lênh.̣ Truy xuât bộ nhớ chương trinh ngoai: Bộ nhớ chương trinh ngoai là môt bộ nhớ ROM ́ ̀ ̀ ̀ ̀ ̣ được cho phep bởi tin hiêu PSEN. Hinh 8.4 mô tả môt ví dụ về cach nôi môt EPROM vao ́ ́ ̣ ̀ ̣ ́ ́ ̣ ̀ 8051: 8051 D0 – D7 Port 0 D Q A0 – A7 EA ALE G EPROM 74HC373 Port 2 A8 – A15 PSEN OE Môt chu kỳ may cua 8051 gôm 12̣ chụ nhớxung nhip. ̀ Nêu ngõ vao bộ dao đông nôi là ̣ ́ Hinh 8.4: Truy câp bô kỳ chương ̣ trinh bên ngoai. ̉̀ ̀ ́ ̀̀ ̣ ̣ thach anh 12 MHz thì môt chu kỳ may keo dai 1 µs. Trong môt chu kỳ may sẽ có hai xung ̣ ̣ ́ ́ ̀ ̣ ́ ALE, và hai byte được đoc từ bộ nhớ chương trinh (nêu lênh hiên hanh là lênh 1 byte thì ̣ ̀ ́ ̣ ̣ ̀ ̣ byte thứ hai sẽ được loai bo). Gian đồ thời gian cua môt lân lây lênh được trinh bay trên ̣ ̉ ̉ ̉ ̣ ̀ ́ ̣ ̀ ̀ ̀ hinh 8.5: S1 S2 S3 S4 S5 S6 S1 CK P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 ALE PSEN Port 2 PCH (Program counter high byte) PCH Port 0 Byte 2 PCL Opcode PCL 1 Hinh 8.5: Gian đồ thời gian truy câp bộ nhớ chương trinh ngoai. ̀ ̉ ̣ ̀ ̀
  14. Truy xuât bộ nhớ dữ liêu ngoai: Bộ nhớ dữ liêu ngoai là môt bộ nhớ RAM được cho ́ ̣ ̀ ̣ ̀ ̣ phep ghi/đoc băng cac tin hiêu WR và RD (P3.6 và P3.7). Viêc truy xuât bộ nhớ dữ liêu ́ ̣ ̀ ́ ́ ̣ ̣ ́ ̣ ngoai có thể thực hiên với lênh MOVX dung con trỏ dữ liêu (DPTR), hoăc R0 và R1 xem ̀ ̣ ̣ ̀ ̣ ̣ như thanh ghi đia chi. ̣ ̉ S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 ALE PSEN RD Port 2 PCH DPH (Data pointer high byte) Port 0 PCL Opcode DPL Data in Kêt nôi BUS điaHinhvà BUS dữ liêuờgigian truy câp̀ 8051 cung giông như EPROM, do đó ́ ́ ̣ chỉ 8.6: Gian đồ th i ữa RAM va bộ nhớ dữ liêu ngoai. ̀ ̉ ̣ ̣ ̃ ̣́ ̀ cung có thể mở rông bộ nhớ RAM lên đên 64Kbyte. Tin hiêu yêu câu đoc RD cua 8051 ̃ ̣ ́ ́ ̣ ̀ ̣ ̉ được nôi tới chân cho phep xuât (OE) cua RAM, và tin hiêu yêu câu ghi WR được nôi tới ́ ́ ́ ̉ ́ ̣ ̀ ́ ́ chân cho phep ghi (WR) cua RAM.̉ 8051 D0 – D7 Port 0 D Q A0 – A7 EA ALE G EPROM 74HC373 P2.0 A8 P2.1 A9 RD OE WR WE PSEN NC CS Gian đồ thời giaǹ cho lênh đoc bộ bộ ớ dữngoaingoaicâu ̉ truc trang. hinh 8.6 cho lênh đoc ̉ Hinh 8.7:̣ Truy ̣ câp nh nhớ liêù theò biêu diên trên ̀ ̣ ̣ ́ ́ ̃ ̣ ̣ (MOVX A, @DPTR). 1
  15. Gian đồ thời gian cho lênh ghi (MOVX @DPTR, A) cung tương tự chỉ khac đường WR ̉ ̣ ̃ ́ sẽ thay vao đường RD và dữ liêu được xuât ra trên công 0, trong chu kỳ ghi RD giữ mức ̀ ̣ ́ ̉ cao. Băng cac đinh vị đia chỉ gian tiêp thanh ghi sử dung R0 và R1, cung có thể truy câp bộ ̀ ́ ̣ ̣ ́ ́ ̣ ̃ ̣ nhớ ngoai theo câu hinh phân trang. Trong chế độ nay công 2 được truy câp giông như ̀ ́ ̀ ̀ ̉ ̣ ́ môt công vao ra thông thường. Công 0 vân được sử dung lam Bus đa hợp (cung câp 8 bit ̣ ̉ ̀ ̉ ̃ ̣ ̀ ́ đia chỉ trong nửa chu kỳ đâu, sau đó sử dung lam Bus dữ liêu). Như vây cac đia chỉ cung ̣ ̀ ̣ ̀ ̣ ̣ ́ ̣ câp từ công 0 cho phep truy câp 256 byte nhớ môi trang, viêc chon trang có thể sử dung ́ ̉ ́ ̣ ̃ ̣ ̣ ̣ cac bit môt công khac. Hinh 8.7 mô tả sơ đồ ghep nôi 8051 với dung l ượng RAM 1KB ́ ̣ ̉ ́ ̀ ́ ́ truy câp theo cach phân trang, với cac trang được chon băng P2.0 và P2.1. ̣ ́ ́ ̣ ̀ Khi cac bit P2.0 và P2.1 được thiêt lâp để chon môt trong 4 trang, thì lênh MOVX sẽ đoc ́ ́ ̣ ̣ ̣ ̣ ̣ hoăc ghi dữ liêu trong trang đo. Ví dụ với sơ đồ hinh 8.7, nêu P2.0 = P2.1 = 0 thì cac lênh ̣ ̣ ́ ̀ ́ ́ ̣ sau sẽ đoc dữ liêu trong ô nhớ 0050H cua RAM vao thanh ghi chứa: ̣ ̣ ̉ ̀ MOV R0,#50H MOVX A,@R0 D0 –D7 D0 –D7 PSEN RD OE OE WR WE A0 –A12 A0 –A12 A0 –A12 A0 –A12 CS CS CS CS A15 CS CS C 0 A14 B 1 A13 A 2 VCC 3 G1 ̣ ̣ Chon mach cho cać G2A bộ nhớ khac ́ G2B 7 Hinh 8.8: Giai mã đia chỉ trong hệ thông có nhiêu bộ nhớ ngoai. ̀ ̉ ̣ ́ ̀ ̀ Để đoc được đia chỉ 3FFH cua RAM thì hai bit chon trang cân được lâp lên 1, Cac lênh ̣ ̣ ̉ ̣ ̀ ̣ ́ ̣ sau có thể sử dung: ̣ SETB P2.0 SETB P2.1 MOV R0,#0FFH 1
  16. MOV A,@R0. Giai mã đia chi: Nêu cân sử dung nhiêu EPROM va/hoăc nhiêu RAM bên ngoai, thì cân ̉ ̣ ̉ ́ ̀ ̣ ̀ ̀ ̣ ̀ ̀ ̀ phai giai mã đia chi. Mach giai mã cung tương tự như cac hệ vi xử lý khac. Ví dụ trên hinh ̉ ̉ ̣ ̉ ̣ ̉ ̃ ́ ́ ̀ 8.8 mô tả môt hệ thông với nhiêu bộ nhớ EPROM 2764 (8 KB) cho chương trinh, và nhiêu ̣ ́ ̀ ̀ ̀ bộ nhớ RAM 6264 (8KB) cho dữ liêu. ̣ Bộ nhớ ngoai sử dung chung cho chương trinh và dữ liêu: Vì bộ nhớ chương trinh là ̀ ̣ ̀ ̣ ̀ ROM, nên nay sinh môt vân đề bât tiên khi phat triên phân mêm cho 8051. Đó là lam cach ̉ ̣ ́ ́ ̣ ́ ̉ ̀ ̀ ̀ ́ nao phân mêm có thể sửa đôi chương trinh và ghi trở lai khi nó được chứa trong bộ nhớ ̀ ̀ ̀ ̉ ̀ ̣ “chỉ đoc”. Cach giai quyêt là sử dung chung môt vung nhớ RAM cho cả chương trinh và ̣ ́ ̉ ́ ̣ ̣ ̀ ̀ dữ liêu. Điêu nay có thể thực hiên băng cach nôi đường OE cua RAM vao môt mach logic ̣ ̀ ̀ ̣ ̀ ́ ́ ̉ ̀ ̣ ̣ AND cua PSEN và RD như mô tả trên hinh 8.9. Luc nay môt chương trinh có thể được ̉ ̀ ́ ̀ ̣ ̀ nap vao RAM băng cach ghi RAḾ như bộ nhớ dữ liêu, và thực hiên băng cach truy xuât ̣ ̀ ̀ ́ ̣ ̣ ̀ ́ ́ RAḾ như bộ nhớ chương trinh. ̀ RAM WR RD Psen Hinh 8.9: Sử dung bộ nhớ ngoai chung cho chương trinh và dữ liêu. ̀ ̣ ̀ ̀ ̣ • Hoat đông reset. ̣ ̣ 8051 được reset băng cach giữ chân RST ở mức cao it nhât trong hai chu kỳ may và trả ̀ ́ ́ ́ ́ nó về mức thâp. Sau khi reset thanh ghi đêm chương trinh được đăt lai 0000H. Khi RST ́ ́ ̀ ̣ ̣ trở lai mức thâp, viêc thi hanh chương trinh luôn băt đâu ở đia chỉ đâu tiên trong bộ nhớ ̣ ́ ̣ ̀ ̀ ́ ̀ ̣ ̀ chương trinh (đia chỉ 0000H). Nôi dung cua RAM nôi không bị thay đôi bởi lênh Reset. ̀ ̣ ̣ ̉ ̣ ̉ ̣ 2.2.1 Hoat đông cua bộ đinh thời (timer). ̣ ̣ ̉ ̣ • Giới thiêu. ̣ Bộ đinh thời bên trong vi điêu khiên là môt bộ đêm được tao thanh từ môt chuôi cac flip- ̣ ̀ ̉ ̣ ́ ̣ ̀ ̣ ̃ ́ flop nôi tiêp với nhau, môi flip-flop là môt bộ chia 2. Ngõ vao cua Timer là nguôn xung ́ ́ ̃ ̣ ̀ ̉ ̀ nhip. Ngõ ra cua tâng cuôi lam xung nhip cho flip-flop bao tran cua timer (con goi là cờ cua ̣ ̉ ̀ ́ ̀ ̣ ́ ̀ ̉ ̀ ̣ ̉ timer), cờ sẽ được kiêm tra băng phân mêm để tao ra ngăt. Giá trị nhị phân trong cac flip- ̉ ̀ ̀ ̀ ̣ ́ ́ flop cua timer thay đôi như trong môt bộ đêm nhị phân, nó sử dung cho viêc đêm số xung ̉ ̉ ̣ ́ ̣ ̣ ́ nhip (hoăc cac sự kiên) từ thời điêm timer được khởi đông. Ví dụ timer 16 bit sẽ đêm lên ̣ ̣ ́ ̣ ̉ ̣ ́ từ 0000H đên FFFFH. Cờ bao tran sẽ lên 1 khi số đêm tran từ FFFFH đên 0000H. 8051 có ́ ́ ̀ ́ ̀ ́ hai timer 16 bit, môi timer có bôn chế độ lam viêc. Cac timer được sử dung đê: đinh ̃ ́ ̀ ̣ ́ ̣ ̉ ̣ khoang thời gian, đêm sự kiên hoăc tao tôc độ baud cho công nôi tiêp trong 8051. ̉ ́ ̣ ̣ ̣ ́ ̉ ́ ́ Trong cac ứng dung đinh khoang thời gian, cac timer được lâp trinh đêm trong môt ́ ̣ ̣ ̉ ́ ̣ ̀ ́ ̣ khoang nhât đinh và lâp cờ tran để thông bao. Cờ sẽ được chương trinh kiêm tra, để đinh ̉ ́ ̣ ̣ ̀ ́ ̀ ̉ ̣ thời thực hiên môt tac đông như: kiêm tra trang thai cua cac ngõ vao hoăc tac đông cac ngõ ̣ ̣ ́ ̣ ̉ ̣ ́ ̉ ́ ̀ ̣ ́ ̣ ́ ra. Môt số ứng dung khac có thể sử dung timer tao xung nhip để đo khoang thời giữa hai ̣ ̣ ́ ̣ ̣ ̣ ̉ sự kiên (ví du: đo độ rông xung). ̣ ̣ ̣ 1
  17. Đêm sự kiên dung để xac đinh số lân xay ra cua môt sự kiên. Môt “sự kiên” có thể là tac ́ ̣ ̀ ́ ̣ ̀ ̉ ̉ ̣ ̣ ̣ ̣ ́ đông ngoai nao đó lam chuyên trang thai ở môt ngõ vao cua 8051. Cac timer cung có thể ̣ ̀ ̀ ̀ ̉ ̣ ́ ̣ ̀ ̉ ́ ̃ cung câp xung nhip xac đinh tôc độ baud cho công nôi tiêp trong 8051. ́ ̣ ́ ̣ ́ ̉ ́ ́ Viêc truy xuât cac timer cua 8051 sử dung sau thanh ghi chức năng đăc biêt trong bang ̣ ́ ́ ̉ ̣ ́ ̣ ̣ ̉ sau: SFR Chức năng Đia chỉ ̣ Đia chỉ theo bit ̣ TCON ̀ Điêu khiên ̉ 88H Có TMOD Chế độ 89H Không TL0 ́ Byte thâp cua timer 0 ̉ 8AH Không TL1 ́ Byte thâp cua timer 1 ̉ 8BH Không TH0 Byte cao cua timer 0̉ 8CH Không TH1 Byte cao cua timer 1 ̉ 8DH Không • Thanh ghi chế độ cua timer (TMOD). ̉ Thanh ghi TMOD chứa hai nhom 4 bit dung để đăt chế độ lam viêc cho Timer 0 và Timer ́ ̀ ̣ ̀ ̣ 1 như mô tả trong bang sau: ̉ BIT Tên Timer Chức năng 7 GATE 1 Khi =1 timer chỉ chay khi INT1 ở mức cao. ̣ 6 C/T 1 1: đêm sự kiên bên ngoai; 0: đinh khoang thời gian ́ ̣ ̀ ̣ ̉ 5 M1 1 bit đinh chế độ cho timer 1. ̣ 4 M0 1 bit đinh chế độ cho timer 1. ̣ 3 GATE 0 ̉ Bit công cho timer 0 2 C/T 0 ̣ Bit chon counter/timer cho timer 0 1 M1 0 bit đinh chế độ cho timer 0. ̣ 0 M0 0 bit đinh chế độ cho timer 0. ̣ Bôn chế độ cua môi timer sẽ được chon tuỳ theo giá trị khởi đông cho cac bit M1 và M0 ́ ̉ ̃ ̣ ̣ ́ tương ứng cua nó như mô tả trong bang sau: ̉ ̉ M1 M0 Chế độ Chức năng 0 0 0 Chế độ đinh thời 13 bit. ̣ 0 1 1 Chế độ đinh thời 16 bit. ̣ 1 0 2 Chế độ tự đông nap lai 8 bit. ̣ ̣ ̣ 1 1 3 Chế độ đinh thời tach biêt: ̣ ́ ̣ Timer 0: TL0 là bộ đinh thời 8 bit điêu khiên bởi chế độ ̣ ̀ ̉ cua timer 0. TH0 tương tự nhưng được điêu khiên bởi ̉ ̀ ̉ chế độ cua timer 1. ̉ Timer 1: ngưng hoat đông. ̣ ̣ Thanh ghi TMOD không được đia chỉ hoá theo bit vì không cân thiêt. Thông thường giá trị ̣ ̀ ́ cua nó được nap môt lân khi băt đâu chương trinh, để khởi đông chế độ cua cac timer. Sau ̉ ̣ ̣ ̀ ́ ̀ ̀ ̣ ̉ ́ 1
  18. đó cac timer có thể cho băt đâu hoat đông hoăc ngưng lai … băng cach truy câp cac thanh ́ ́ ̀ ̣ ̣ ̣ ̣ ̀ ́ ̣ ́ ̣ ̣ ́ ̉ ghi đăc biêt khac cua timer. • Thanh ghi điêu khiên timer (TCON). ̀ ̉ Thanh ghi TCON chứa cac bit trang thai và cac bit điêu khiên cho Timer 0 và Timer 1 như ́ ̣ ́ ́ ̀ ̉ mô tả trong bang sau: ̉ BIT Tên Đia chỉ ̣ Chức năng 7 TF1 Cờ bao tran cua timer 1, được lâp bởi phân cứng khi 8FH ́ ̀ ̉ ̣ ̀ xay ra tran; được xoá băng phân mêm hoăc phân cứng ̉ ̀ ̀ ̀ ̀ ̣ ̀ khi phuc vụ chương trinh ngăt. ̣ ̀ ́ 6 TR1 8EH Bit điêu khiên chay cua timer 1. Được lâp xoá băng ̀ ̉ ̣ ̉ ̣ ̀ phân mêm để điêu khiên timer1 on/off. ̀ ̀ ̀ ̉ 5 TF0 8DH Cờ bao tran cho timer 0. ́ ̀ 4 TR0 8CH ̀ Bit điêu khiên chay cho timer 0. ̉ ̣ 3 IE1 8BH Cho phep ngăt INT1: được lâp băng phân cứng khi có ́ ́ ̣ ̀ ̀ canh xuông ở ngõ vao INT1; được xoá băng phân ̣ ́ ̀ ̀ ̀ mêm hoăc phân cứng khi phụ vụ ngăt. ̀ ̣ ̀ ́ 2 IT1 8AH Chon kiêu tac đông ngăt INT1: được lâp xoá băng ̣ ̉ ́ ̣ ́ ̣ ̀ phân mêm để chon kiêu tac đông ngăt băng canh xuông ̀ ̀ ̣ ̉ ́ ̣ ́ ̀ ̣ ́ hoăc băng mức thâp. ̣ ̀ ́ 1 IE0 89H Cho phep ngăt INT0. ́ ́ 0 IT0 Timer 88H Chon kiêu ̣ TLx ̉ ngăt cho INT0. ́ THx TFx Clock (5 bit) (8 bit) Bôn bit thâp cua TCON không sử dung cho cac timer, chung được sử dung để phat hiên ́ ́ ̉ ̣ ́ ́ ̣ ́ ̣ và khởi đông kiêu tac đông cho cac a) Mode 0 ̣ ̉ ́ ̣ ́ ngăt bên ngoai. ́ ̀ • Cac chế độ timer và cờ bao tran. ́ ́ ̀ Timer TLx Cac timer 0 và 1 có cac chế độ hoat đông (8 bit) đương nhau, nên trong phân nay chỉ số ́ Clock ́ (5 bit) ̣ ̣ tTHxng ươ TFx ̀ ̀ ‘x’ được sử dung để chỉ thị cho môt timer bât ky. Ví dụ THx có thể chỉ thị cho TH0 hoăc ̣ ̣ ́ ̀ ̣ TH1. Timer TLx TFx Clock (8 bit) ̣ ̣ Nap lai THx (5 bit) c) Mode 2 Timer TLx THx Clock (5 bit) (8 bit) Timer TL0 TF0 Clock (8 bit) Timer TH0 TF1 Clock (8 bit) d) Mode 3 1 Hinh 8.10: Cac chế đông hoat đông cua cac timer ̀ ́ ̣ ̣ ̣ ̉ ́
  19. Chế độ 0 (mode 0) - chế độ timer 13 bit: Chế độ nay được thực hiên tương thich với 8048 ̀ ̣ ́ (bộ vi điêu khiên có trước 8051). Hoat đông cua chế độ nay biêu diên trên hinh 8.10a. 5 bit ̀ ̉ ̣ ̣ ̉ ̀ ̉ ̃ ̀ thâp cua TLx cung với THx sẽ tao thanh bộ đinh thời 13 bit, 3 bit cao cua TLx không s ử ́ ̉ ̀ ̣ ̀ ̣ ̉ dung. ̣ Chế độ 1 – chế độ timer 16 bit: Chế độ nay tương tự như chế độ 0, ngoai trừ viêc cac ̀ ̣ ̣ ́ timer hoat đông đây đủ 16 bit (hinh 8.10b). Khi nhân được xung nhip bộ đêm sẽ đêm lên ̣ ̣ ̀ ̀ ̣ ̣ ́ ́ từ 0000H, và cờ tran sẽ bao khi bộ đêm chuyên trang thai từ FFFFH về 0000H, sau đó bộ ̀ ́ ́ ̉ ̣ ́ đêm vân tiêp tuc đêm. Cờ bao tran là bit TFx trong TCON có thể đoc hoăc ghi băng phân ́ ̃ ́ ̣ ́ ́ ̀ ̣ ̣ ̀ ̀ mêm. ̀ Chú ý MSB bộ đêm là bit 7 cua THx và LSB là bit 0 cua TLx. Cac thanh ghi timer ́ ̉ ̉ ́ (TLx/THx) có thể được đoc hoăc ghi bât cứ luc nao băng phân mêm. ̣ ̣ ́ ́ ̀ ̀ ̀ ̀ Chế độ 2 - chế độ tự đông nap lai 8 bit: trong chế độ nay TLx hoat đông như môt timer 8 ̣ ̣ ̣ ̀ ̣ ̣ ̣ bit, con THx vân giữ nguyên giá trị cân nap lai. Khi số đêm tran từ FFH đên 00H, không ̀ ̃ ̀ ̣ ̣ ́ ̀ ́ những cờ timer được lâp mà giá trị trong THx đông thời được nap vao TLx, viêc đêm ̣ ̀ ̣ ̀ ̣ ́ được thực hiên liên tuc từ giá trị trong THx lên đên FFH xuông 00H và nap lai.… Chế độ ̣ ̣ ́ ́ ̣ ̣ nay rât thông dung vì sự tran timer xay ra trong những khoang thời gian nhât đinh và tuân ̀ ́ ̣ ̀ ̉ ̉ ́ ̣ ̀ hoan môt khi đã khởi đông TMOD và THx. ̀ ̣ ̣ Chế độ 3 - chế độ timer tach biêt: trong chế độ nay timer 0 tach thanh hai timer 8 bit. (TL0 ́ ̣ ̀ ́ ̀ và TH0), TL0 có cờ bao tran là TF0 và TH0 có cờ bao tran là TF1. Timer 1 không hoat ́ ̀ ́ ̀ ̣ đông ở chế độ 3, nhưng có thể được khởi đông băng cach chuyên sang chế độ khac. Giới ̣ ̣ ̀ ́ ̉ ́ han duy nhât là cờ bao tran TF1 không con bị tac đông khi timer 1 bị tran vì nó đã được ̣ ́ ́ ̀ ̀ ́ ̣ ̀ nôi tới TH0. ́ Khi timer 0 ở chế độ 3, có thể cho timer 1 chay và ngưng băng cach chuyên nó ra ngoai và ̣ ̀ ́ ̉ ̀ vao chế độ 3. Nó vân có thể được sử dung bởi công nôi tiêp để tao tôc độ baud, hoăc nó có ̀ ̃ ̣ ̉ ́ ́ ̣ ́ ̣ thể được sử dung cho cac ứng dung khac khi không cân ngăt (vì nó không con được nôi ̣ ́ ̣ ́ ̀ ́ ̀ ́ với TF1). • Nguôn tao xung nhip. ̀ ̣ ̣ Có thể sử dung hai nguôn tao xung nhip cung câp cho cac timer. Chung được chon băng ̣ ̀ ̣ ̣ ́ ́ ́ ̣ ̀ ́ ̀ cach ghi vao bit C/T (counter/timer) trong TMOD. Môt nguôn tao xung nhip dung cho đinh ̣ ̀ ̣ ̣ ̀ ̣ khoang thời gian, cai khac cho đêm sự kiên. ̉ ́ ́ ́ ̣ Đinh khoang thời gian (interval timing): Nêu C/T = 0, hoat đông timer liên tuc được chon ̣ ̉ ́ ̣ ̣ ̣ ̣ và timer được dung cho viêc đinh khoang thời gian. Luc đo, timer lây xung nhip từ bộ dao ̀ ̣ ̣ ̉ ́ ́ ́ ̣ đông trong chip. Xung nhip ngõ ra bộ tao dao đông được giam tân số băng bộ chia 12 ̣ ̣ ̣ ̣ ̉ ̀ ̀ 1
  20. trước khi câp vao timer để thich hợp cho phân lớn cac ứng dung. Như vây với thach anh ́ ̀ ́ ̀ ́ ̣ ̣ ̣ 12 MHz, thì tôc độ xung nhip cung câp cho timer sẽ la1 MHz. Bao tran timer xay ra sau ́ ̣ ́ ̀ ́ ̀ ̉ môt số (cố đinh) xung nhip, tuỳ thuôc vao giá trị ban đâu được nap vao cac thanh ghi timer ̣ ̣ ̣ ̣ ̀ ̀ ̣ ̀ ́ TLx/THx. Đêm sự kiên (Event counting): Nêu C/T = 1, timer lây xung nhip từ nguôn bên ngoai. ́ ̣ ́ ́ ̣ ̀ ̀ Trong hâu hêt cac ứng dung, nguôn bên ngoai nay cung câp cho timer môt xung khi xay ra ̀ ́ ́ ̣ ̀ ̀ ̀ ́ ̣ ̉ môt “sự kiên” – timer dung đêm sự kiên. Số sự kiên được xac đinh băng phân mêm băng ̣ ̣ ̀ ́ ̣ ̣ ́ ̣ ̀ ̀ ̀ ̀ cach đoc cac thanh ghi TLx/THx, vì giá trị 16 bit trong cac thanh ghi nay tăng thêm 1 cho ́ ̣ ́ ́ ̀ môi sự kiên.̃ ̣ Nguôn xung nhip ngoai được cung câp băng cac chân công 3. Bit 4 cua công 3 (P3.4) ̀ ̣ ̀ ́ ̀ ́ ̉ ̉ ̉ dung lam ngõ vao tao xung nhip bên ngoai cho Timer 0 và được goi là “T0”, con P3.5 hay ̀ ̀ ̀ ̣ ̣ ̀ ̣ ̀ “T1” là ngõ vao tao xung nhip cho Timer 1. ̀ ̣ ̣ Trong cac ứng dung đêm, cac thanh ghi timer được tăng thêm 1 tương ứng với sự chuyên ́ ̣ ́ ́ ̉ trang thai logic từ 1 xuông 0 ở ngõ vao bên ngoai (Tx). Ngõ vao bên ngoai được lây mâu ̣ ́ ́ ̀ ̀ ̀ ̀ ́ ̃ trong S5P2 cua moi chu kỳ may. Như vây, khi ngõ vao cao trong môt chu kỳ và thâp trong ̉ ̣ ́ ̣ ̀ ̣ ́ môt chu kỳ kế thì số đêm được tăng thêm 1. Giá trị mới xuât hiên trong cac thanh ghi trong ̣ ́ ́ ̣ ́ S3P1 cua chu kỳ theo sau chu kỳ phat hiên sự chuyên trang thai. Do đó cân 2 chu ky ̀ may ̉ ́ ̣ ̉ ̣ ́ ̀ ́ (2 µs) để ghi nhân môt sự chuyên trang thai1 sang 0, tân số ngoai tôi đa là 500 KHz (giả ̣ ̣ ̉ ̣ ́ ̀ ̀ ́ sử hệ thông hoat đông ở 12 MHz). ́ ̣ ̣ Bộ tao dao đông ̣ ̣ ̣ nôi ÷ 12 Timer Clock Tx C/T Hinh 8.11: Sơ đồ cung câp xung nhip cho timer ̀ ́ ̣ • Cho chay, dừng và điêu khiên cac timer. ̣ ̀ ̉ ́ Hinh 8.10 mô tả cac câu hinh khac nhau cho cac thanh ghi TLx, THx và TFx cua timer. Hai ̀ ́ ́ ̀ ́ ́ ̉ nguôn xung nhip có thể cung câp cho timer như trên hinh 8.11. Phương phap đơn gian nhât ̀ ̣ ́ ̀ ́ ̉ ́ để băt đâu (cho chay) và dừng cac timer là dung cac bit điêu khiên chay (TRx) trong ́ ̀ ̣ ́ ̀ ́ ̀ ̉ ̣ TCON. TRx bị xoa sau khi reset hệ thông, như vây cac timer theo măc đinh là bị câm (bị ́ ́ ̣ ́ ̣ ̣ ́ dừng) sau khi reset. TRx được đăt lên 1 băng phân mêm để cho cac timer chay. ̣ ̀ ̀ ̀ ́ ̣ Vì TRx ở trong thanh ghi TCON có đia chỉ theo bit, nên viêc cho chay và dừng timer co ́ ̣ ̣ ̣ thể thực hiên dễ dang trong chương trinh. Ví du, cho timer 0 chay băng lênh: ̣ ̀ ̀ ̣ ̣ ̀ ̣ SETB TR0 Và dừng băng lênh: CLR TR0 ̀ ̣ 1
Đồng bộ tài khoản