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
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
19 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 451 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Microcontroller - Chương 8: 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:
- bai_giang_microcontroller_chuong_8_cac_bo_dinh_thoi_va_cong.pdf