Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm CHƯƠNG IV: HOẠT ĐỘNG ĐỊNH THỜI MỞ ĐẦU : Một định thời chuỗi flipflop với flipflop mạch chia hai, chuỗi nhận tín hiệu ngõ vào làm nguồn xung clock Xung clock đặt vào flipflop thứ flipflop chia đôi tần số xung clock Ngõ flipflop thứ trở thành nguồn xung clock cho flipflop thứ hai, nguồn xung clock chia cho 2, v.v Vì tần chia định thời có n tầng chia tần số xung clock ngõ vào cho Ngõ tần cuối làm xung clock cho flipflop báo tràn định thời hay gọi cờ tràn (overflow flag), cờ tràn kiểm tra phần mềm tạo ngắt.Giá trị nhị phân flipflop định thời số đếm xung clock từ định thời bắt đầu đếm Thí dụ định thời 16 bit đếm từ 0000H đến FFFH Cờ tràn set xảy tràn số đếm từ FFFFH xuống 0000H Hình 4.1 Sơ đồ khối hoạt động định thời Hoạt động định thời đơn giản minh họa hình bên trên, định thời bit Mỗi tầng D-FF kích khởi cạnh âm hoạt động mạch chia cho ta nối ngõ Q đảo với ngõ vào D Flipflop cờ đơn giản mạch chốt D set tầng cuối định thời Giản đồ thời gian hình cho thấy tầng thứ (Q0) chia hai tần số xung clock, tầng thứ hai chia tần số xung clock v.v… Số đếm (count) ghi dạng thập phân kiểm tra dễ dàng cách khảo sát trạng thái flipflop Thí dụ số 24 Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm đếm xuất Q2=1, Q1=0 Q0=0 (410=1002) Các flipflop hình flipflop tác động cạnh âm (nghĩa ngõ Q flipflop đổi trạng thái theo cạnh âm cuả xung clock) Khi số đếm tràn từ 1112 xuống 0002, ngõ Q2 có cạnh âm(1→0) làm cho trạng thái flipflop cờ đổi từ lên (ngõ vào D flipflop luôn logic 1) Bộ định thời sử dụng hầu hết ứng dụng hướng điều khiển 8051 với định thời chip trường hợp ngoại lệ 8051 có hai định thời 16 bit, có chế độ hoạt động Bộ định thời thứ với ba chế độ hoạt động thêm vào chip 8052 Các định thời dùng để: Định thời khoảng thời gian Đếm kiện Tạo tốc độ baud cho port nối tiếp chip 8051 Với định thời 16 bit ,tầng cuối (tầng thứ 16)chia tần số xung clock ngõ vào định thời cho 216 = 65536 Bảng 4.1 Các ghi chức đặc biệt dùng cho hoạt động định thời SFR định thời Mục đích Địa Định địa bit TCON Điều khiển 88H Có TMOD Chọn chế độ 89H Không TL0 Byte thấp định thời 8AH Không TL1 Byte thấp định thời 8BH Không TH0 Byte cao định thời 8CH Không TH1 Byte cao định thời 8DH Không T2CON Điều khiển định thời C8H Có RCAP2H Nhận byte thấp định thời CAH Không RCAP2L Nhận byte cao định thời CBH Không TL2 Byte thấp định thời CCH Không TH2 Byte cao định thời CDH Không Trong ứng dụng định thời khoảng thời gian, định thời lập trình cho tràn sau khoãng thời gian quy định set cờ tràn định thời Cờ tràn sử dụng để đồng chương trình nhằm thực công việc kiểm tra trạng thái ngõ nhập gửi liệu đến ngõ xuất Các ứng dụng khác sử dụng xung 25 Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm clock định thời để đo khoảng thời gian hai kiện (thí dụ đo độ rộng xung) Việc đếm kiện dùng để xác định số lần xuất kiện đo thời gian kiện Từ "sự kiện" kích thích bên cung cấp chuyển trạng thái từ xuống tới chân chip 8051 Các định thời cung cấp xung clock tốc độ baud cho port nối tiếp bên 8051 Các định thời 8051 truy xuất cách sử dụng ghi chức đặc biệt Với định thời thứ chip 8052, ta có thêm ghi chức đặc biệt để truy xuất định thời THANH GHI CHẾ ĐỘ ĐỊNH THỜI (TMOD): Thanh ghi TMOD (timer mode register) chứa hai nhóm bit dùng để thiết lập chế độ hoạt động cho định thời định thời TMOD không định địa bit Một cách tổng quát, TMOD nạp lần phần mềm thời điểm bắt đầu chương trình để khởi động chế độ hoạt động định thời Sau định thời dừng, bắt đầu, v.v…bằng cách truy xuất ghi chức đặc biệt khác định thời Bảng 4.2 Các bit chọn chế độ định thời M1 M0 Chế độ Mô tả 0 Chế độ định thời 13 bit 1 Chế độ định thời 16 bit Chế độ tự động nạp lại bit 1 Chế độ định thời chia sẻ Bảng 4.3 Mô tả ghi chế độ định thời TMOD Bit Tên GATE Bộ định thời Mô tả Bit điều khiển cổng Khi set lên 1, định thời hoạt động INT1 đảo mức cao C/ T Bit chọn chức đếm định thời = đếm kiện = định thời khoảng thời gian M1 Bit chọn chế độ thứ M0 Bit chọn chế độ thứ hai GATE Bit điều khiển cổng cho định thời 26 Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm C/T Bit chọn chức đếm định thời cho định thời M1 Bit chọn chế độ thứ M0 Bit chọn chế độ thứ hai THANH GHI ĐIỀU KHIỂN ĐỊNH THỜI (TCON): Thanh ghi TCON chứa bit điều khiển, bit trạng thái định thời định thời Bốn bit cao TCON (TCON4-TCON7) dùng để điều khiển cho định thời hoạt động, ngưng (TR0, TR1) để báo định thời tràn (TF0, TF1) Bốn bit thấp TCON(TCON0-TCON3) không dùng để điều khiển định thời, chúng dùng để phát khởi động ngắt Bảng 4.4 Mô tả ghi điều khiển định thời TCON Bit Ký Địa Mô tả TCON.7 TF1 8FH Cờ tràn định thời 1.Cờ set phần TCON.6 TR1 8EH Bit điều khiển hoạt động định thời 1.Bit TCON.5 TF0 8DH Cờ tràn định thời TCON.4 TR0 8CH Bit điều khiển hoạt động định thời TCON.3 IE1 8BH Cờ ngắt bên Cờ set phần TCON.2 IT1 8AH Bit chọn ngắt thuộc loại tác động cạnh hay TCON.1 IE0 89H Cờ ngắt bên (kích khởi cạnh) TCON.0 IT0 88H Bit chọn ngắt thuộc loại tác động cạnh hay CÁC CHẾ ĐỘ ĐỊNH THỜI VÀ CỜ TRÀN: Do ta có hai định thời chip 8051, kí hiệu “x” sử dụng để định thời định thời 1.Thí dụ : THx TH0 hay TH1 tùy theo định thời hay 4.1 Chế độ định thời 13 bit (chế độ 0): Chế độ định thời chế độ định thời 13 bit cung cấp khả tương thích với vi điều khiển tiền nhiệm 8048.Chế độ không dùng cho thiết kế Byte cao định thời THx ghép cascade với bit thấp byte thấp định thời THx để tạo thành định thời 13bit Ba bit cao TLx không sử dụng 27 Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm Hình 4.2 Chế độ định thời 13 bit 4.2 Chế độ định thời 16 bit (chế độ 1): Chế độ định thời 16 bit có cấu hình giống chế độ định thời 13 bit Khi có xung clock định thời đếm lên: 0000H, 0001H, 0002H … FFFFH (65535) Một tràn xuất có chuyển số đếm từ FFFFH xuống 0000H, kiện set cờ tràn (TFx = 1) định thời tiếp tục đếm Bit có ý nghĩa lớn (MSB : Most significant bit) giá trị ghi định thời bit THx bit có ý nghĩa thấp (LSB : Least significan bit) bit TLx Các ghi định thời (THx,TLx) đọc ghi phần mềm thời điểm Hình 4.3 Chế độ định thời 16 bit 4.3 Chế độ tự nạp lại bit (chế độ 2): Chế độ chế độ tự nạp lại 8bit Byte thấp định thời (TLx) hoạt động định thời bit byte cao định thời lưu giữ giá trị nạp lại Khi số đếm tràn từ FFH xuống 00H không cờ tràn định thời set lên mà giá trị THx nạp vào TLx, việc đếm tiếp tục từ giá trị xảy lần tràn kế tiếp, v.v… Hình 4.4 Chế độ định thời bit tự nạp lại 4.4 Chế độ định thời chia sẻ (chế độ 3): Chế độ chế độ định thời chia sẻ có hoạt động khác cho định thời Bộ định thời chế độ chia thành định thời bit hoạt động riêng lẻ TL0 TF1, định thời set cờ tràn tương ứng TF0 TF1 xảy tràn Bộ định thời không hoạt động chế độ khởi động bắng cách chuyển định thời vào chế độ khác Giới hạn cờ tràn TF1 định thời không bị ảnh hưởng định thời xảy tràn TF1 nối với 28 Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm định thời TH0 Chế độ chủ yếu cung cấp thêm định thời bit nữa, nghĩa 8051 có thêm định thời thứ Khi định thời chế độ 3, định thời hoạt động ngưng cách chuyển khỏi chế độ vào chế độ Bộ định thời sử dụng port nối tiếp (lúc định thời làm nhiệm vụ tạo xung clock tốc độ baud) sử dụng theo cách không yêu cầu ngắt (vì định thời lúc không nối với TF1) NGUỒN XUNG CLOCK ĐỊNH THỜI: Có khả tạo nguồn xung clock này, việc lựa chọn nguồn xung clock ta thiết lập bit C/ T (counter/timer) ghi TMOD hay định thời khởi động Một nguồn xung clock dùng để định thời khoảng thời gian, nguồn xung clock lại dùng để đếm kiện 5.1 Định thời khoảng thời gian: Nếu C/T = 0, hoạt động định thời chọn nguồn xung clock định thời mạch dao động bên chip tạo Một mạch chia 12 tầng thêm vào để giảm tần số xung clock đến giá trị thích hợp với hầu hết ứng dụng Lúc định thời dùng để định thời khỏang thời gian Các ghi định thời (TLx/THx) đếm lên với tần số xung clock 1/12 tần số mạch dao động chip (nghĩa thạch anh 12MHz, tần số xung clock 1MHz) Bộ định thời tràn sau số xung clock cố định phụ thuộc vào giá trị ban đầu nạp cho ghi định thời( TLx/THx) 5.2 Đếm kiện: Nếu C/T = 1, định thời cung cấp xung clock từ nguồn tạo xung bên Trong đa số ứng dụng, nguồn xung clock cung cấp cho định thời xung dựa việc xảy kiện định thời đếm kiện Số kiện xác định phần mềm cách đọc ghi định thời (TLx/THx), giá trị 16 bit ghi tăng theo kiện Hai chân port (P3.4 P3.5) trở thành ngõ vào xung clock cho định thời Chân P3.4 ngõ vào xung clock cho định thời (ta gọi chân T0 ngữ cảnh này), chân P3.5 ngõ vào xung clock cho định thời (T1) Trong ứng dụng đếm kiện, ghi định thời tăng xảy chuyển trạng thái từ xuống ngõ vào Tx (T0 T1) Ngõ vào Tx lấy mẫu suốt chu kỳ máy, ngõ vào mức cao chu kỳ mức thấp chu kỳ kế, số đếm 29 Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm tăng Phải chu kỳ máy (2us) để nhận biết chuyển trạng thái từ xuống 0, tần số cực đại nguồn xung clock bên 500KHz (với giả định chip vi điều khiển hoạt động với thạch anh 12 MHz) KHỞI ĐỘNG, DỪNG VÀ ĐIỀU KHIỂN CÁC BỘ ĐỊNH THỜI: Cách đơn giản để khởi động dừng định thời sử dụng bit điều khiển hoạt động TRx ghi TCON TRx xoá thiết lập hệ thống; nghĩa định thời ngưng hoạt động Ngược lại ta set bit TRx nghĩa cho phép định thời hoạt động Do ghi TCON ghi định địa bit, ta dễ dàng khởi động dừng định thời chương trình Một phương pháp khác để điều khiển định thời sử dụng bit GATE ghi TMOD ngõ vào /INTx Bằng cách set bit GATE lên ta cho phép định thời điều khiển /INTx KHỞI ĐỘNG VÀ TRUY XUẤT CÁC THANH GHI ĐỊNH THỜI: Các định thời thường khởi động lần thời điểm bắt đầu chương trình để thiết lập chế độ hoạt động yêu cầu Trong thân chương trình, định thời điều khiển hoạt động, dừng, kiểm tra bit cờ xoá, ghi định thời đọc cập nhật tuỳ theo yêu cầu ứng dụng TMOD ghi khởi động trước tiên ghi thiết lập chế độ hoạt động Ex: Khởi động định thời hoạt động chế dộ 16-bit (chế độ 1), xung clock cấp từ mạch dao động chip (định thời khoảng thời gian) MOV TMOD, #00010000B Kết lệnh thiết lập M1=0 M0=1 để ấn định chế độ 1, C/T=0 GATE =0 để sử dụng xung clock chip, xóa bit chọn chế độ định thời Dĩ nhiên thực tế định thời không bắt đầu công việc định thời bit điều khiển hoạt động TR1 set Trong trường hợp cần đến số đếm ban đầu, ghi định thời TL1/TH1 phải khởi động Cần nhớ định thời đếm lên thiết lập cờ tràn xảy tràn số đếm từ FFFFH xuống 0000H, khoảng thời gian 100us định thời cách khởi động TL1/TH1 chứa số đếm nhỏ 0000H lượng 100 nghĩa -100 hay FF9CH Các lệnh sau thực điều MOV TL1, #9CH MOV TH1,#0FFH 30 Tài liệu tham khảo Kỹ thuật Vi xử lý GVHD: Trần Hoài Tâm Kế đến định thời bắt đầu hoạt động cách thiết lập bit điều khiển hoạt động sau: SETB TR1 Cờ tràn tự động sau khoảng thời gian 100us Phần mềm chứa vòng lặp trì hoãn thời gian 100us cách sử dụng lệnh rẽ nhánh lặp lại lệnh cờ tràn chứa set WAIT: JNB TF1, WAIT Khi định thời tràn ta cần dừng định thời xóa cờ tràn phần mềm: CLR TR1 CLR TF1 Đọc định thời hoạt động: Trong số ứng dụng ta cần phải đọc giá trị (nội dung) chứa ghi định thời hoạt động.Do ta phải đọc ghi định thời dòng lệnh liên tiếp (do lệnh đọc đồng thời hai ghi định thời này), sai pha xuất có tràn từ byte thấp chuyển sang byte cao hai lần đọc đọc giá trị cần đọc Giải pháp đưa trước tiên ta phải đọc byte cao đọc byte thấp đọc byte cao lần Nếu byte cao thay đổi giá trị, ta lặp lại thao tác đọc vừa nêu Các lệnh sau đọc nội dung ghi định thời TL1/TH1, đưa vào ghi R6/R7 giải vấn đề vừa nêu: AGAIN : MOV A, TH1 MOV R6, TL1 CJNE A, TH1, AGAIN MOV R7, A Ex: Viết chương trình tạo sóng vuông 10KHz chân P0.0 cách sử dụng định thời (Thạch anh 12MHz) ORG 0030H ; thiết lập gốc chương trình MOV TMOD, #00000010B ; (#02H) chế độ tự nạp lai MOV TH0, #206 ; TH0 chứa giá trị 206 = 0CEH = -50 31 Tài liệu tham khảo Kỹ thuật Vi xử lý SETB TR0 GVHD: Trần Hoài Tâm ; cho phép định thời hoạt động LOOP: JNB TF0, LOOP ; chờ timer tràn CLR TF0 ; xóa cờ tràn chuẩn bị cho lần sau CPL P0.0 ; đổi trạng thái bit P0.0 SJMP LOOP ; nhảy nhãn LOOP, lăp lại END Ex: Viết chương trình tạo sóng vuông 1KHz chân P1.0 sử dụng định thời ORG 0030H ; thiết lập gốc chương trình MOV TMOD, #00000001B ; chế độ định thời 16 bit LOOP: MOV TH0, #0FEH ; nạp trước cho TH0 byte cao -500 MOV TL0, #0CH ; nạp trước cho TL0 byte thấp -500 SETB TR0 ; cho phép định thời hoạt động WAIT: JNB TF0, WAIT ; chờ timer tràn CLR TR0 ; dừng định thời CLR TF0 ; xóa cờ tràn CPL P1.0 ; lấy bù SJMP LOOP ; lặp lại END 32 ... chế độ hoạt động cho định thời định thời TMOD không định địa bit Một cách tổng quát, TMOD nạp lần phần mềm thời điểm bắt đầu chương trình để khởi động chế độ hoạt động định thời Sau định thời dừng,... Chế độ định thời bit tự nạp lại 4.4 Chế độ định thời chia sẻ (chế độ 3): Chế độ chế độ định thời chia sẻ có hoạt động khác cho định thời Bộ định thời chế độ chia thành định thời bit hoạt động riêng... động cạnh hay CÁC CHẾ ĐỘ ĐỊNH THỜI VÀ CỜ TRÀN: Do ta có hai định thời chip 8051, kí hiệu “x” sử dụng để định thời định thời 1.Thí dụ : THx TH0 hay TH1 tùy theo định thời hay 4.1 Chế độ định thời