YOMEDIA
ADSENSE
Bài giảng Vi điều khiển: Chapter 8 - Ngô Như Khoa
68
lượt xem 8
download
lượt xem 8
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Chapter 8 trình bày về các bộ định thời và cổng nối tiếp. Các nội dung cần làm rõ trong chương này gồm có: Hoạt động bộ định thời mode 1, đo giá trị thời gian, các chế độ khác của bộ định thời, sử dụng làm bộ đếm, các bộ định thời: cổng ngoài, truyền thông nối tiếp,...và một số nội dung liên quan khác. Mời các bạn cùng tham khảo.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Vi điều khiển: Chapter 8 - Ngô Như Khoa
- CÁC BỘ ĐỊNH THỜI VÀ CỔNG NỐI TIẾP Microcontroller Chapter 8 Ngo Nhu Khoa Department of Computer Engineering DCE ThaiNguyen University of Technology
- 1. Hoạt động bộ định thời mode 1 z Là bộ đếm 16 bit. – Nạp vào bộ đếm 1 số và lập TR để bắt đầu đếm – Khi bộ đếm vượt qua giá trị đếm lớn nhất và trở về giá trị 0x0000, nó sẽ lập cờ TF và phát sinh một ngắt TF nếu được cho phép Xtal Divide by 12 TH TL TF Oscillator TF=1 if TH:TL goes from TR 0xFFFF to 0x0000 10/1/2005 2 DCE
- 2. Đo giá trị thời gian z Bộ định thời có thể được sử dụng để đo khoảng thời gian đã trôi qua – Hữu ích cho việc lập lịch các tác vụ – Tương tự như chức năng “cron” – Không chính xác như 1 RTC, nhưng rẻ hơn nhiều! z Xung đồng hồ của bộ định thời là 1/12 xung nhịp của 8051. –xung nhịp của 8051 là 11.0592MHz Dxung nhịp của bộ Timer là 921.6KHz – Thời gian của 1 chu kỳ “tăng 1 - count” là 1/921.6K = 1.085us – Thời gian tương ứng với chuỗi các số đếm được đến khi quay về 0 là: số đếm x 1.085us z Vd: Bộ định thời được nạp giá trị 0xFFF2 – Số đếm để quay trở lại về 0x0000 là 0xFFFF-0xFFF2 +1 = 14 – Thời gian trôi qua là = 14 x 1.085us 10/1/2005 3 DCE
- 2. Đo giá trị thời gian ... z Làm thế nào để tính toán được các giá trị nạp vào ban đầu để nhận được 1 koảng thời gian trễ T theo yêu cầu? – Chia T cho 1.085us để nhận được n – Tìm m = 65536 – n – Chuyển m sang hệ hex, m = 0xUUVV – Nạp TH C 0xUU và TL C 0xVV z Với thời gian trễ lớn hơn? – Sử dụng vòng lặp lồng nhau – Sử dụng RTC 10/1/2005 4 DCE
- 3. Các chế độ khác của bộ định thời z Mode 0 – Hoàn toàn giống như Mode1, nhưng nó là 1 bộ định thời 13bit – Chuỗi các số đếm, từ 0x0000 đến 0x1FFF z Mode 2 – bộ định thời 8 bit, tự động nạp lại – nạp giá trị đếm vào thanh ghi TH và kích hoạt bộ định thời – 8051 sẽ nạp vào TL giá trị trong TH (TL C TH) – Khi TL tràn và trở về 0x00, bộ định thời sẽ dựng cờ TF (và ngắt xảy ra) – Sau khi cờ TF bị xoá bởi lệnh trong ISR, TL sẽ được nạp lại một cách tự động với giá trị trong TH và 1 chu kỳ mới lại tiếp tục 10/1/2005 5 DCE
- 4. Sử dụng làm bộ đếm z Bộ đếm là thiết bị xác định có bao nhiêu sự kiện đã xảy ra – Bao nhiêu bit 1 trong 1 chuỗi bit? – Bao nhiêu sản phẩm đã đi qua bộ cảm biến trong 1 dây chuyền lắp ráp? z Các bộ đếm tăng giá trị đếm của chúng khi nhận được 1 tín hiệu (xung đếm) z Các bộ định thời của 8051 có thể phục vụ như các bộ đếm – Bit C/T trong thanh ghi TMOD phải được đặt bằng 1 để cho phép thực hiện hoạt động đếm – Hai chân của chip 8051 nhận các xung đếm: z P3.4 (T0, chân 14) : xung đếm ngoài cho Timer0 z P3.5 (T1, chân 15) : xung đếm ngoài cho Timer1 10/1/2005 6 DCE
- Ví dụ về bộ đếm z Đếm các xung trên chân của bộ đếm T1 (P3.5) và hiển thị giá trị đếm trên P2. Bộ đếm ở mode 2 START: mov TMOD, #01100000B ;counter 1, mode 2, C/T=1 mov TH1, #0 ;đếm từ 0x00 to 0xFF setb P3.5 ;cấu hình cho P3.5 vào AGAIN: setb TR1 ;kích hoạt bộ đếm BACK: mov A, TL1 ;đọc giá trị của TL1 mov P2, A ;hiển thị nó ở P2 jnb TF1, back ;thăm dò TF1, có thể dùng INT1 clr TR1 ;dừng bộ đếm clr TF1 ;xoá cờ TF1 sjmp AGAIN ;while(1) 10/1/2005 7 DCE
- 6. Các bộ định thời: Cổng ngoài z Cổng ngoài cung cấp tính thuận tiện cho việc điều khiển bộ định thời với 1 thiết bị ngoài – Có thể sử dụng các phím bấm để kích hoạt hoặc loại bỏ bộ định thời – Phím Snooze trong 1 đồng hồ dùng 8051! z Lập GATE=1 trong TMOD, sau đó bộ định thời có thể được điều khiển từ 1 cổng ngoài – Chân P3.2 (INT0) cho Timer0 – Chân P3.3 (INT1) cho Timer1 z Với GATE=1, bộ định thời được kích hoạt nếu – TRx được lập bởi phần mềm (setb TR0) – và, INT0 (Pin P3.2) phải được kéo lên mức cao bởi phần cứng 10/1/2005 8 DCE
- 6. Truyền thông nối tiếp z Truyền dữ liệu nối tiếp và sonng song là 2 cơ chế đối ngược nhau z Các các chế độ: Simplex, Duplex and half-Duplex z Synchronous, Asynchronous, UART, USART z Khung truyền – Start bit, Stop bit, mark, space – Start bit, LSB, MSB, Stop bit – Tuỳ chọn bit parity bit – Có thể có 1 hoặc 2 bit Stop z Tốc độ truyền dữ liệu – Bps, baud z Giao thức RS232 – Không tương thích với các mức TTL (-3 đến –25 với mức 1 và +3 đến +25 với mức 0) 10/1/2005 9 DCE
- 7. Các tín hiệu của chuẩn RS232 z RS232 có nhiều đường tín hiệu, nhưng phần lớn không được sử dụng trong hệ vi điều khiển z Trong chế độ không bắt tay, chỉ có 3 tín hiệu – Pin2 : RxD – received data – Pin3 : TxD – transmitted data – Pin5 : GND z Đối với sự giao tiếp giữa 8051 với cổng nối tiếp của PC (COMx) connection, sử dụng theo quy tắc: – RxD của 8051 nối với TxD của PC – TxD của 8051 nối với RxD của PC – GND với GND – Cần phải thiết lập chế độ truyền để sử dụng phần mềm điều khiển luồng (XON/XOF) 10/1/2005 10 DCE
- 8. Mức logic trong giao tiếp RS232 z RS232 sử dụng các mức logic không tương thích với TLL z Cần các bộ biến đổi mức để giao tiếp giữa 8051 với giao thức RS232 z Thường sử dụng MAX232, MAX233 cho mục đích này – Hai kênh kép – Đơn nguồn, +5V – MAX233 không cần các tụ điện ngoài 10/1/2005 11 DCE
- 9. Cổng nối tiếp của 8051 z 8051 có 1 bộ UART nội – Tốc độ truyền được thiết lập bởi bộ định thời Timer1 z Các thanh ghi điều khiển – SBUF : Serial Buffer Register z Dữ liệu được chuyển từ SBUF đến chân Tx-ed để truyền z Dữ liệu nối tiếp Rx-ed được lưu trữ bởi 8051 trong thanh ghi SBUF – SCON : Serial Control Register z Lập trình xác lập chế độ (start bit, stop bit, data bits length) – Chỉ chế độ 1 (8, 1, 1) là được quan tâm, các chế độ khác gần như không sử dụng z Cho phép/không phép nhận z RI và TI, là các ngắt nhận và ngắt truyền 10/1/2005 12 DCE
- 10. Thiết lập tốc độ truyền z Timer 1 là bộ điều khiển thời gian cho cổng nối tiếp của 8051 z Xung nhịp cho Timer1 trong UART là – XTAL /12 /32 = 28,800Hz (với XTAL = 11.0592MHz) – Thiết lập SMOD (bit 7 của thanh ghi PCON) để lập trình cho 8051 để sử dụng bộ chia 1/16 z XTAL / 12 / 16 = 56,700Hz z Thực tế, tần số này gấp đôi tốc độ truyền z Bộ định thời Timer1 phải được lập trình: – Mode 2, chế độ 8 bit, tự động nạp lại – Nạp vào thanh ghi TH1 giá trị yêu cầu z Các giá trị của TH – Tốc độ: 9600 = 28800/3 D TH1 = -3 = 0xFD – Tốc độ: 2400 = 28800/12 D TH1 = -12 = 0xF4 10/1/2005 13 DCE
- 11. Thanh ghi SCON z SCON.0 = RI (Receive interrupt flag) – Cờ ngắt nhận. 1 byte hợp lệ được nhận trong SBUF z SCON.1 = TI (Transmit interrupt flag) – Cờ ngắt truyền. 1 Byte trong SBUF đã được truyền thành công. z SCON.4 = REN (Receive enable) – Cho phép nhận. Lập bằng 1 để cho phép nhận, xoá sẽ chỉ cho phép truyền. z SCON.7:SCON.6 = SM0:SM1 – Thiết lập chế độ – 01 = Mode 1 là chế độ được sử dụng rộng rãi nhất z 8bit data, 1start bit and 1 stop bit z Tất cả các bit khác đều được đặt về 0 10/1/2005 14 DCE
- 12. Ví dụ 1: Truyền 1 ký tự z Truyền mã ASCII của ký tự “A” ở chế độ nối tiếp, với tốc độ 9600 một cách liên tục START: mov TMOD, #20H ;T1 is mode2 mov TH1, #-3 ;9600 baud mov SCON, #50H ;8b, 1stop, 1start, REN enabled setb TR1 ;start T1 AGAIN: mov SBUF, #’A’ ;letter A is transmitted HERE: jnb TI, HERE ;poll TI until all the bits are ;transmitted clr TI ;clear TI for the next character sjmp AGAIN ;while(1) 10/1/2005 15 DCE
- 12. Ví dụ 2: Nhận dữ liệu z Nhận các bytes nối tiếp và hiển thị chúng ở cổng, một cách liên tục. START: mov TMOD, #20H ;T1 in mode 2 mov TH1, #-3 ;9600 baud mov SCON, #50H ;8b, 1start, 1stop setb TR1 ;start T1 HERE: jnb RI, HERE ;wait until one byte is Rx-ed mov A, SBUF ;read the received byte from ;SBUF mov P1, A ;display on P1 clr RI ;ready to Rx next byte sjmp HERE ;while (1) 10/1/2005 16 DCE
- 13. Ngắt của cổng nối tiếp z Sử dụng cổng nối tiếp với các ngắt của nó là cách thức sử dụng được mong đợi của nhà thiết kế. z Cả hai cờ RI và TI đều lập nên ngắt nối tiếp (S0), nếu nó được kích hoạt. z Trường hợp đơn giản – Truyền dữ liệu được thực hiện theo phương thức hỏi vòng, dựa trên cờ thăm dò TI (Poll TI flag) còn nhận dữ liệu được điều khiển bởi ngắt – Truyền dữ liệu được điều khiển bởi ngắt còn nhận dữ liệu được thực hiện theo phương thức hỏi vòng dựa vào cờ RI. z Trong các trường hợp trên, ISR của S0 sẽ kiểm tra cờ thích hợp và thực hiện công việc tương ứng là Copy dữ liệu đến thanh ghi SBUF hay từ thanh ghi SBUF. 10/1/2005 17 DCE
- 13. Ngắt của cổng nối tiếp … z Trường hợp chung – 8051 ở trong chế độ full-duplex, có nghĩa là việc nhận và truyền dữ liệu được thực hiện một cách liên tục – Cả việc truyền và nhận được điều khiển bởi ngắt z Viết thường trình phục vụ ngắt ISR cho S0 sao cho: – ISR đầu tiên phải kiểm tra một trong các cờ RI và TI để xác định cờ nào đã gây ra ngắt S0 – Nếu RI được lập, thì đọc dữ liệu từ SBUF rồi lưu lại và xoá cờ RI – Nếu TI được lập, thì copy ký tự kế tiếp được truyền vào SBUF và xoá TI. 10/1/2005 18 DCE
- 14. Ví dụ : Trường hợp đơn giản z 8051 nhận dữ liệu từ P1 và gửi nó đến P2 một cách liên tục, trong khi vẫn đang nhận dữ liệu từ cổng nối tiếp. Dữ liệu từ cổng nối tiếp được hiển thị ở cổng P0 org 0 org 100H ljmp MAIN ;avoid the IVT SERIAL: jb TI, TRANS org 23H ;serial port ISR mov A, SBUF ljmp SERIAL ;copy received org 30H ;data MAIN: mov P1, #0FFH ;P1 as input port mov P0, A mov TMOD, #20 ;T1 in mode 2 ;display in on P0 mov TH1, #-3 ;9600 baud clr RI ;clear RI mov SCON, #50H; 8b, 1start, 1stop RETI mov IE, #10010000B ;enable S0 interrupt TRANS: clr TI ;do nothing setb TR1 ;enable T1 RETI BACK: mov A, P1 ;ISR does mov P2, A ;not handleTX sjmp BACK end 10/1/2005 19 DCE
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn