Bài 5: Lập trình 8051 ghép nối với các bộ chỉ thị
2. Lập trình ghép nối Led 7 đoạn
2.2. Giới thiệu về các bộ timer của vi điều khiển 8051
- Vi điều khiển 8051 có hai bộ Timer: Timer0 và Timer1. Với VĐK 8052 có 3 bé Timer.
- Chúng có thể được dùng như các bộ định thời để tạo một bộ trễ thời gian hoặc như các bộ đếm để đếm các sự kiện xảy ra bên ngoài bộ VĐK.
- Các bộ Timer của VĐK đều là 16 bit và được chia làm 2 byte.
THx TLx
Byte cao Byte thÊp Timer0: TH0, TL0; Timer1: TH1, TL1; Timer2: TH2,TL2.
2.2.1. Các thanh ghi điều khiển và trạng tháI của timer a. Thanh ghi TMOD (Timer Mode)
TMOD là thanh ghi 8 bit, truy nhập ở mức byte. Cả hai bộ định thời Timer 0 và Timer 1 đều dùng chung một thanh ghi TMOD để thiết lập các chế độ làm việc khác nhau của bộ định thời. Thanh ghi TMOD có 4 bit thấp dành cho bộ Timer 0 và 4 bit cao dành cho Timer 1. Trong đó hai bit M1, M0 dùng để thiết lập chế độ hoạt động (mode) của bộ định thời.
- Thanh ghi Tmod:
- Chức năng các bit:
+ Các bit M1, M0:
Là các bit chọn chế độ của các bộ Timer 0 và Timer 1. Các chế độ được thiết lập theo trạng thái của M1 và M0 như sau:
M1 M0 Chế độ Chế độ hoạt động
0 0 0 Bộ định thời 13 bit (số đếm lớn nhất 8191) 0 1 1 Bộ định thời 16 bit (số đếm lớn nhất 65535)
1 0 2 Bộ định thời 8 bit tự nạp lại (số đếm lớn nhất 255)
1 1 3 Bộ timer/counter 0 được tách thành 2 bộ timer/counter 8 bit
Khi lập trình ta chủ yếu khai thác ở chế độ 1 và 2.
+ Bit C/T ( Counter/ Timer – Bộ đếm / bộ định thời ).
Bit C/T là bit lựa chọn Timer hoạt động ở chức năng bộ đếm hay bộ định thời. Nếu C/T=1, timer tương ứng hoạt động ở chức năng bộ đếm. Lúc này bộ Timer sẽ đếm xung ở bên ngoài đưa tới chân P3.4(T0) với bộ đếm của Timer0, chân P3.5 (T1) với bộ đếm của Timer1. Nếu C/T=0, timer hoạt động ở chức năng
(MSB)
GATE C/T M1 M0
Timer1 GATE C/T M1 M0 Timer0
(MSB)
bộ định thời, lúc này Timer sẽ thực hiện đếm xung từ dao động thạch anh chia cho 12.
+ Bit GATE
Là bit chọn khởi động Timer tương ứng bằng phần cứng hoặc phần mềm.
Nếu Gate =1, khởi động Timer bằng phần cứng. Để timer hoạt động, ngoài điều kiện bit TRx (x=0,1) được xác lập bằng 1, cần điều kiện ngoài như sau:
Timer0 Timer1
P3.2=1 RUN P3.2=0 STOP P3.3=1 RUN P3.3=0 STOP Nếu Gate =0, khởi động Timer bằng phần mềm. Việc khởi động và dừng bộ định thời được điều khiển bằng phần mềm bởi các bit khởi động bộ định thời TR0 và TR1. Các lệnh dùng để đặt hoặc xóa bit TRx (x=0,1) là “SETB TR1” và “CLR TR1” đối với bộ Timer1 và “SETB TR0” và “CLR TR0” đối với bộ Timer0.
Chú ý: Dù là khởi động Timer bằng phần cứng khi Gate =1 thì ta vẫn phải đặt bit TRx của Timer tương ứng thì Timer đó mới chạy.
b. Thanh ghi TCON (Timer Control)
TCON là thanh ghi 8 bit và định địa chỉ mức bit.
Bit TF1 là cờ tràn của bộ Timer1. Cờ này được đặt bằng 1 bởi phần cứng khi timer1 tràn và được xoá về 0 bằng phần mềm (Clr TF1) hoặc phần cứng khi gặp lệnh RETI của chương trình phục vụ ngắt Timer tương ứng.
Bit TR1 là bit điều khiển hoạt động của Timer1. Nó được thiết lập và xoá
bởi phần mềm để cho phép timer1 hoạt động hay dừng.
Bit TF0 tương tự như TF1 dành cho Timer0.
Bit TR0 tương tự như TR1 dành cho Timer0.
Bit IE1 cờ ngắt ngoài INT1. Bit này được thiết lập bởi CPU khi ngắt ngoài
được phát hiện. Nó được xóa bởi CPU khi gặp lệnh RETI từ chương trình phục vụ ngắt ngoài tương ứng.
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
D7 D0
Bit IT1 là bit điều khiển kiểu ngắt. Bit này được thiết lập và xoá bởi phần mềm để xác định kiểu ngắt ngoài theo sườn xuống hay mức thấp. Nếu IT1=1, ngắt tại sườn xuống; nếu IT1=0, ngắt tại mức thấp.
Bit IE0 tương tự như IE1 dành cho ngắt ngoài 0.
Bit IT0 tương tự như bit IT1 dành cho ngắt ngoài 0.
2.2.2. Mô tả hoạt động của bộ Timer
Để hiểu về hoạt động của bộ Timer ta tìm hiểu cụ thể hai hình mô tả dưới
®©y.
a. Timer0:
b. Timer1:
XTAL
oscillator 12
0 0 /T C
1 0 /T T0 Pin C
Pin 3.4
Gate 0
TR0
2 . 3
0 Pin
Pin INT
TH0 TL0 TF0
XTAL
oscillator 12
0 1 /T C
1 1 /T T1 Pin C
Pin 3.5
Gate 1
TR1
3 . 3
1 Pin
Pin INT
TH1 TL1 TF1