Điện, điện tử - Các bộ định thời và cổng nối tiếp

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

pdf19 trang | Chia sẻ: Mr Hưng | Lượt xem: 681 | Lượt tải: 0download
Nội dung tài liệu Điện, điện tử - Các bộ định thời và cổng nối tiếp, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
DCE CÁC BỘ ĐỊNH THỜI VÀ CỔNG NỐI TIẾP Microcontroller Chapter 8 Ngo Nhu Khoa Department of Computer Engineering ThaiNguyen University of Technology 10/1/2005 2 DCE 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 Oscillator Divide by 12 TH TL TF TF=1 if TH:TL goes from 0xFFFF to 0x0000TR 10/1/2005 3 DCE 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 2. Đo giá trị thời gian 10/1/2005 4 DCE 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 THC 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 2. Đo giá trị thời gian ... 10/1/2005 5 DCE 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 3. Các chế độ khác của bộ định thời 10/1/2005 6 DCE 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 4. Sử dụng làm bộ đếm 10/1/2005 7 DCE 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 Ví dụ về bộ đếm 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 8 DCE 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 6. Các bộ định thời: Cổng ngoài 10/1/2005 9 DCE 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) 6. Truyền thông nối tiếp 10/1/2005 10 DCE 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) 7. Các tín hiệu của chuẩn RS232 10/1/2005 11 DCE 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 8. Mức logic trong giao tiếp RS232 10/1/2005 12 DCE 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 9. Cổng nối tiếp của 8051 10/1/2005 13 DCE 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. Thiết lập tốc độ truyền 10/1/2005 14 DCE 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 11. Thanh ghi SCON 10/1/2005 15 DCE 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 12. Ví dụ 1: Truyền 1 ký tự 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 16 DCE 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. 12. Ví dụ 2: Nhận dữ liệu 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 17 DCE 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. 13. Ngắt của cổng nối tiếp 10/1/2005 18 DCE 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. 13. Ngắt của cổng nối tiếp 10/1/2005 19 DCE 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 14. Ví dụ : Trường hợp đơn giản org 0 ljmp MAIN ;avoid the IVT org 23H ;serial port ISR ljmp SERIAL org 30H MAIN: mov P1, #0FFH ;P1 as input port mov TMOD, #20 ;T1 in mode 2 mov TH1, #-3 ;9600 baud mov SCON, #50H; 8b, 1start, 1stop mov IE, #10010000B ;enable S0 interrupt setb TR1 ;enable T1 BACK: mov A, P1 mov P2, A sjmp BACK org 100H SERIAL: jb TI, TRANS mov A, SBUF ;copy received ;data mov P0, A ;display in on P0 clr RI ;clear RI RETI TRANS: clr TI ;do nothing RETI ;ISR does ;not handleTX end

Các file đính kèm theo tài liệu này:

  • pdfchap8_8051_timers_and_serial_port_0228.pdf