B: Nội dung
2.1.4. Bộ Timer/Counter và Các ngắt của 8051
a. Bộ Timer/ Counter ( bộ định thời/ bộ đếm )
8051/8031 có 2 timer 16 bit, mỗi timer có bốn cách làm việc. Ngời ta sử dụng các timer để : a) định khoảng thời gian, b) đếm sự kiện hoặc c) tạo tốc độ baud cho port nối tiếp trong 8051/8031.
Truy xuất timer của 8051dùng 6 thanh ghi chức năng đặc biệt cho trong bảng 2.2:
Bảng 2.2: Thanh ghi chức năng đặc biệt dùng timer
SFR mục đích Địa chỉ Địa chỉ hóa
từng bit TCON TMOD TL0 TL1 TH0 TH1
Điều khiển timer Chế độ timer
Byte thấp của timer/couter 0 Byte thấp của timer / couter1 Byte cao của timer / couter 0 Byte cao của timer / couter1
88H 89H 8AH 8BH 8CH 8DH Có Không Không Không Không Không
Cấu tạo timer 0, timer 1.
Trong vi mạch VĐK có 1 bộ đếm xung thời gian ( định thời ) và đếm xung ngoài ( Counter ). Đó là bộ đếm 16 bít, có 4 chế độ hoạt động ( do thanh ghi TMOD điều khiển). Bộ đếm này có thể hoạt động cho chế độ định thời ( timer ) hay ở chế độ bộ đếm (counter). ở chế độ định thời dùng để đếm chuỗi xung nhịp của VĐK với tần số chia cho 12. ở chế độ đếm xung ngoài ,bộ đếm trên đếm xung ngoài vào các lối vào T0, T1.
Cấu trúc chung:
Hình 2.4 Cấu tạo bộ định thời/ đếm
Các VĐK 8051/ 8052 đều có hai bộ timer/ counter 0,1. Mỗi bộ có cấu trúc nh hình 2..4 gồm nguồn xung đếm, hai bộ đếm 8 bít TH, TL và cơ cấu điều khiển gồm các thanh ghi ở chế độ TMOD và điều khiển trạng thái TCON.
XTAL oscillator ữ12 C/T=1 T1,2 Gate TR1,2 /INT1,2 Bộ đếm TH,T L S1 C/T=0 S2
Các thanh ghi đếm
Mỗi một timer/ counter có 3 thanh ghi: thanh ghi đệm dữ liệu và đếm TL ( 8 bít ), TH ( 8 bít ), thanh ghi chế độ TMOD ( 8 bít ) và thanh ghi điều khiển TCON.
- Thanh ghi điều khiển trạng thái TCON
Thanh ghi này có các bít nh hình 2.5 và đặc tính các bít nh bảng 2.3 Thanh ghi này là thanh ghi xử lý bít, có thể xóa ( bởi lệnh CLR ) hay xác lập ( bởi lệnh SETB ) từng bít.
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IE0
Hình 2.5: Các bít của thanh ghi TCON
Bảng 2.3: Các bít của thanh ghi điều khiển trạng thái TCON
-Thanh ghi chế độ timer (TMOD)
D7 D6 D5 D4 D3 D2 D1 D0
Gate C/T M1 M0 Gate C/T M1 M0
Hình 2.6 Các bit của thanh ghi TMOD
Cả hai bộ timer/couter 0,1 của họ 8051 chỉ có một thanh ghi điều khiển chế độ TMOD nh hình 2.6.Trong đó 4 bit cao dùng cho timer 1,4 bit thấp cho timer 0.
Ký hiệu Vị trí ý nghĩa
TF1 TCON.7
Bít trạng thái cờ đếm tràn của timer1. Xác lập bởi phần cứng khi đếm tràn về 0000H. Xóa bởi lệnh hay xử lý ngắt chơng trình
TR1 TCON.6 Bít điều khiển timer 1. Xác lập/ xóa bởi lệnh để khởi động hay dừng đếm cho timer1
TF0 TCON.5
Bít trạng thái cờ đếm tràn của timer0. Xác lập bởi phần cứng khi đếm tràn về 0000H. Xóa bởi lệnh hay xử lý ngắt chơng trình
TR0 TCON.4 Bít điều khiển timer 0. Xác lập/ xóa bởi lệnh để khởi động hay dừng đếm cho timer 0.
IE1 TCON.3 Bít trạng thái cờ ngắt sờn xung 1. Xác lập bởi phần cứng khi phát hiện ngắt ngoài INT1. Xóa khi xử lý ngắt.
IT1 TCON.2 Bít điều khiển ngắt ngoài 1. Xác lập/ xóa bởi lệnh để chỉ sờn xuống/ mức thấp của ngắt ngoài
IE0 TCON.1 Bít trạng thái cờ ngắt sờn xung 0. Xác lập bởi phần cứng khi phát hiện ngắt ngoài INT0. Xóa khi xử lý ngắt.
IT0 TCON.0 Bít điều khiển ngắt ngoài 0. Xác lập/ xóa bởi lệnh để chỉ sờn xuống/ mức thấp của ngắt ngoài
Chức năng của các bit đợc thể hiện ở bảng Bảng 2.4 Các bit của thanh ghi TMOD
Bit Tên Timer Chức năng
7 Gate 1 Khi GATE =1 Timer chỉ làm việc khi ITN0
6 C/T 1 Bit điều khiển đếm xung cho timer(=0) hay đếm xung ngoài cho couter (=1)
5 M1 1 Bit chọn chế độ của timer 1
4 M0 1 Bit chọn chế độ của timer 1
3 Gate 0 Khi GATE =1 Timer chỉ làm việc khi ITN1
2 C/T 0 Bit điều khiển đếm xung cho timer(=0) hay đếm xung ngoài cho couter (=1)
1 M1 0 Bit chọn chế độ của timer 0
0 M0 0 Bit chọn chế độ của timer 0
Các chế độ timer
Hai bit M0,M1 xác định chế độ làm việc cho bộ định thời nh bảng 2.5 Bảng 2.5 Các chế độ của TMOD
M0 M1 Chế độ Đặc điểm
0 0 0 Hai thanh ghi TH,TL là bộ đếm 13 bit
0 1 1 Hai thanh ghi TH,TL là bộ đếm 16 bit
1 0 2 TL là bộ đếm 8 bit ,TH đa giá trị nạp lại cho TL
1 1 3 TH,TL là hai bộ đếm độc lập 8 bit
b. Các ngắt của 8051.
Ngắt là sự đáp ứng các sự kiện bên trong hoặc bên ngoài nhằm thông báo cho bộ vi điều khiển biết thiết bị đang cần đợc phục vụ
Hình 2.7: Thực hiện chơng trình không ngắt(a) và có ngắt chơng trình(b) ở 8051 có 5 nguồn ngắt:
- 2 ngắt ngoài - 2 ngắt từ timer. - 1 ngắt port nối tiếp.
Ch ơng trình chính
C/T Ngắt 1 C/T Ngắt 2
Đoạn C/T Chính 1 Đoạn C/T Chính 2 Đoạn C/T Chính 3 Thời gian
Thời gian a
Tất cả các ngắt sẽ không đợc đặt sau khi reset hệ thống và cho phép ngắt riêng rẽ bởi phần mềm.
Các thanh ghi quy định ngắt
- Cho phép và không cho phép ngắt.
Mỗi nguồn ngắt đợc cho phép hoặc không cho phép từng ngắt một qua thanh ghi chức năng đặt biệt cố định địa chỉ bit IE ở hoặc cấm toàn bộ đợc xóa để cấm tất cả các ngắt hoặc đợc đặt lên 1 để cho phép tất cả các ngắt.
D7 D6 D5 D4 D3 D2 D1 D0
EA - - ES ET1 EX1 ET0 EX0
a
Kí hiệu Vị trí Chức năng
EA D7 Cho phép ngắt toàn cục:Cho phép (IE=1) hay cấm (IE=0) tất
cả các ngắt.
- D6 Cha sử dụng
- D5 Cha sử dụng
ES D4 Cho phép(ES=1) hay cấm(ES1=0) ngắt nối tiếp
ET1 D3 Cho phép(ET1=1) hay cấm(ET1=0) ngắt timer 1
EX1 D2 Cho phép(EX1=1) hay cấm(EX1=0) ngắt ngoái int1
ET0 D1 Cho phép(ET0=1) hay cấm(ET0=0) ngắt timer 0
EX0 D0 Cho phép(EX0=1) hay cấm(EX0=0) ngắt ngoái int0
b
Hình 2.8. Thanh ghi IE
a.Các bit của IE b.Chức năng của các bit
- Ưu tiên ngắt.
Mỗi nguồn ngắt đợc lập trình riêng vào một trong hai mức u tiên qua thanh ghi chức năng đặc biệt đợc địa chỉ bit IP (Interrupt priority : u tiên ngắt) ở địa chỉ B8H.
D7 D6 D5 D4 D3 D2 D1 D0 - - - PS PT1 PX1 PT0 PX0 Kí hiệu Vị trí Chức năng - D7 Cha sử dụng - D6 Cha sử dụng - D5 Cha sử dụng
PS D4 Ưu tiên ngắt nối tiếp
PT1 D3 Ưu tiên ngắt timer1: PT1=0 u tiên mức thấp
PT1=1u tiên mức cao
PX1 D2 Ưu tiên ngắt ngoai int1: PX1=0 u tiên mức thấp
PX1=1u tiên mức cao
PT0 D1 Ưu tiên ngắt timer0: PT0=0 u tiên mức thấp
PT0=1u tiên mức cao
PX0 D0 Ưu tiên ngắt ngoai int0: PX0=0 u tiên mức thấp
PX0=1u tiên mức cao Hình 2.9. Thanh ghi IP
a.Các bit của PI b.Chức năng của các bit
Ngắt có mức u tiên cao hơn có thể ngắt chơng trình phục vụ ngắt có mức u tiên thấp hơn. Sau khi chơng trình ngắt có mức u tiên cao hơn đợc phục vụ sẽ quay trở về thực hiện tiếp chơng trình phục vụ ngắt có mức u tiên thấp hơn tại vị trí bị gián đoạn.
Khi không sử dụng thanh ghi u tiên ngắt thì thứ tự u tiên ngắt mặc định nh sau: INT0 -> T0 -> INT1 -> T1 -> S.
Các ngắt u tiên đợc xóa sau khi reset hệ thống để đặt ở tất cả các ngắt ở mức u tiên thấp hơn.
2.1.5. Phần mềm mô phỏng.
Ngời ta đã viết chơng trình mô phỏng cấu trúc và hoạt động của VĐK trên máy tính PC để học tập và lập trình cho VĐK.Nghĩa là chúng ta có thể :
- Mô tả cấu trúc và hoạt động của các khối của VĐK 8051/8052 bằng chơng trình của PC.
- Mô tả hoạt động của hệ lệch của VĐK sang hệ lệch của máy tính. Nói khác đi, các lệch của VĐK 8051/52 đợc dịch chéo sang hệ lệch của PC và thực hiện chúng trên PC. Do đó chơng trình viết cho VĐK 8051/52 đợc dịch, liên kết và chạy thử trên PC theo từng bớc và cả chơng trình.
Nh vậy, không cần VĐK 8051/52, với chơng trình mô phỏng VĐK 8051/52, chúng ta cố thể tìm hiểu về cấu trúc, hoạt động và lập trình cho vđk 8051/52 chỉ trên PC. Với ch- ơng trình đã hợp dịch và liên kết (đuôi .HEX) trên PC băng chơng trình mô phỏng, ngời ta có thể nạp vào VĐK đê chạy hay có thể chuyển sang bộ nhớ RAM ngoài để chạy trên hệ VĐK.
Có hai loại chơng trình mô phỏng cho 8051/52, loại trên môi trờng hệ điều hành MS_DOS và loại trên môi trờng hệ điều hành WINDOWS .
Loại trên môi trờng hệ điều hành MS_DOS, thông dụng có hai chơng trình SIM51 và AVSIM.
Loại trên môi trờng hệ điều hành WINDOWS : 8051 IDE, 8052 SIMULATOR, PINNACLE ,PROTEUS. . .
Đặc điểm của chơng trình mô phỏng trên MSDOS là:
- Thực hiện chơng trình trong môi trờng MS_DOS bằng lệch MSDOS Prompt. - Trong quá trình hợp dịch, liên kết,biến đổi dữ liệu phải gõ t bàn phím từng tên ch- ơng trình và tên các tệp tơng ứng. Trên màn hình có thông báo lỗi khi biên dịch chơng trình nguồn có dạng hợp ngữ (đuôi .ASM).
- Chơng trình mô phỏng hiện lên màn hình toàn bộ hay từng các bộ phận (các thanh ghi, vùng nhớ, các timer/counter, các cổng song song ,nối tiếp...) để ngời sử dụng theo dõi sự thay đổi nội dung của chúng trong quá trình thực hiện lệnh của chơng trình đã biên dịch, kết nối .
Đặc điểm của chơng trình mô phỏng trên môi trờng WINDOWS:
- Thực hiện trên môi trờng WINDOWS nên không phải chuyển sang môi trờng DOS .
- Trong quá trình hợp dịch liên kết, biến đổi dữ liệu không phải gõ từ bàn phím từng tên chơng trình và tên các tệp tơng ứng mà chỉ cần nháy đúp chuột vào tên hay biểu tợng của các chơng trình cần thực hiện .Trên màn hình có báo lỗi khi biên dịch chơng trình nguồn dạng hợp ngữ (đuôi.ASM ).
- Phải gọi hiển thị từng bộ phận của vi điều khiển của chơng trình mô phỏng lên màn hình. Ta không có một bức tranh toàn cảnh về cấu trúc của VDK. Điều này hạn chế và có khó khăn cho việc theo dõi kết quả thực hiện lệnh của chơng trình, tuy nhiên chúng ta có thể theo dõi một cách tờng minh sự thay đổi của các thanh ghi
Và các bộ phận của VĐK nh định thời/đếm, trao đổi tin nối tiếp, ngắt .
Tuy có hạn chế này chơng trình mô phỏng trên WINDOWS vẫn đợc a chuộng hơn vì việc sử dụng đơn giản thuận tiện và nhanh chóng, chỉ nháy chuột thay cho gõ từng ký tự của lệnh và tên tệp từ bàn phím nh chơng trình trong môi trờng MSDOS .
Trong tài liệu này chúng ta chỉ nghiên cứu chơng trình mô phỏng trên môi trờng WINDOWS .
Chơng trình mô phỏng PINNACLE 52 .
Chơng trình PINNACLE 52 là một IDE (thiết bị tích hợp ) gồm : - Chơng trình soạn thảo (EDIT) chơng trình .
- Chơng trình biên dịch (compiler), kết nối và xếp đặt lại (relocatable) chơng trình hợp ngữ .
- Chơng trình biến đổi dạng HEX sang BIN và ngợc lại.
- Chơng trình mô phỏng (simulator) để chạy thử trên PC (chạy từng bớc, từng ch- ơng trình con ,và cả chơng trình
Chơng trình mô phỏng PROTEUS .
Trong thiết kế và chạy mô phỏng sơ đồ điện tử mới xuất hiện chơng trình mô phỏng proteus có cả mô phỏng mạch với vi điều khiển các loại nh MCS-51 của INTEL, PIC của MICROCHIP, AVR của ATMEL, MC68H11 của motorola...chơng trình này còn mô phỏng đợc các mạch số và tơng tự thay cho WORKBENCH và CIRCUIT MAKER,PROTEL.
Nhợc điểm cơ bản của PROTEUS là không hợp dịch dợc các ngôn ngữ khác nhau trên dao diện mà chỉ chạy mô phỏng đợc chơng trình dạng đuôi HEX. Muốn chạy đợc mạch vi điều khiển các loại ta phải :
- Thiết kế mạch nguyên lý với chơng trình ISIS.
- Viết chơng trình và hợp dịch thành file. Hex với các chơng trình hợp dịch tơng ứng với ngôn ngữ đó .
VD: - PINNACLE cho họ MCS-51 của INTEL. - AVR STUDIO cho AVR của ATMEL. - MPASM cho PIC của MICROCHIP.