Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
501,34 KB
Nội dung
1 Bài Gỉang Môn Học VI ĐIỀU KHIỂN TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP HCM KHOA ĐIỆN – ĐIỆN TỬ Biên sọan : Th.S Trần Vĩnh An Naêm 2008 2 Ký hiệu Đòa chỉ byte Đònh đòa chỉ bit Chức năng TMOD 89h Không Điều khiển chọn chế độ đònh thời / đếm (Timer/Counter) Bit Tên Timer Mô tả 7 GATE 1 Bit điều khiển (mở) cổng của Timer-1. Khi bit TR1 = 1 (trong TCON) và GATE = 1, Timer chỉ chạy khi chân INT1 = 1 (điều khiển cứng). Khi GATE=0, Timer chỉ chạy khi TR1 = 1 (điều khiển mềm) 6 C / T 1 Bit chọn chế độ Counter/Timer (đếm sự kiện hay đònh thời) của Timer-1. C/T = 1 : Đếm sự kiện (dùng xung clock nhận từ ngõ vào T1) C/T = 0 : Đònh thời (dùng xung clock nội của hệ thống) 5 M1 x Bit-1 chọn chế độ của Timer-1 (Xem bảng dưới) 4 M0 x Bit-0 chọn chế độ của Timer-1 (Xem bảng dưới) 3 GATE 0 Bit điều khiển (mở) cổng của Timer-0. Khi bit TR0 = 1 (trong TCON) và GATE = 1, Timer chỉ chạy khi chân INT0 = 1 (điều khiển cứng). Khi GATE=0, Timer chỉ chạy khi TR0 = 1 (điều khiển mềm) 2 C / T 0 Bit chọn chế độ Counter/Timer (đếm sự kiện hay đònh thời) của Timer-0. C/T = 1 : Đếm sự kiện (dùng xung clock nhận từ ngõ vào T0) C/T = 0 : Đònh thời (dùng xung clock nội của hệ thống) 1 M1 x Bit-1 chọn chế độ của Timer-0 (Xem bảng dưới) 0 M0 x Bit-0 chọn chế độ của Timer-0 (Xem bảng dưới) M1 M0 CHẾ ĐỘ Mô tả 0 0 0 Chế độ đònh thời 13 bit (tương thích họ vi điều khiển 8048) 0 1 1 Chế độ đònh thời / đếm 16 bit 1 0 2 Chế độ đònh thời / đếm 8bit tự động nạp lại 1 1 3 Chế độ Timer tách ra : Timer 0 : TL0 là Timer 8 bit được điều khiển bởi các bit của Timer 0. TH0 tương tự nhưng được điều khiển bởi các bit của chế độ Timer 1. Timer 1 : Được ngừng lại. Thanh ghi chế độ đònh thời TMOD Bit 7 6 5 4 3 2 1 0 TMOD GATE C / T M1 M0 GATE C / T M1 M0 3 THANH GHI ĐIỀU KHIỂN TCON (Timer/Counter Control Register) : Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển của Timer-0 và Timer-1. Thanh ghi TCON có đònh đòa chỉ bit. - 4 bit cao (TF1, TR1, TF0, TR0) được dùng để điều khiển Timer hoạt động/hay ngưng (TR0, TR1) hoặc để báo tràn (TF0, TF1) - 4 bit thấp (IE1, IT1, IE0, IT0) không dùng để điều khiển mà được sử dụng để phát hiện và khởi động các ngắt-ngoài. Hoạt động của thanh ghi TCON được tóm tắt như sau : Ký hiệu Đòa chỉ byte Đònh đòa chỉ bit Chức năng TCON 88h Có Điều khiển bộ đònh thời / đếm Bit 7 6 5 4 3 2 1 0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Bit Ký hiệu Đòa chỉ bit Mô tả TCON.7 TF1 8FH Cờ tràn Timer-1 được set bởi phần cứng ở sự tràn, được xóa bởi phần mềm hoặc bởi phần cứng khi các vectơ xử lý đến thủ tục phục vụ ngắt ISR TCON.6 TR1 8EH Bit điều khiển chạy Timer-1 được set hoặc xóa bởi phần mềm để chạy hoặc ngưng chạy Timer. TCON.5 TF0 8DH Cờ tràn Timer 0(hoạt động tương tự TF1) TCON.4 TR0 8CH Bit điều khiển chạy Timer 0 (giống TR1) TCON.3 IE1 8BH Cờ ngắt ngoài 1 tác động cạnh xuống. Được set bỡi phần cứng khi phát hiện có ngắt ngoài tác động cạnh xuống xuất hiện trên chân INT1; được xóa bỡi phần cứng khi ngắt được xử lý. TCON.2 IT1 8AH Bit điều khiển chọn loại ngắt 1 ngoài. Được set/xóa để xác đònh ngắt ngoài thuộc loại tác động cạnh xuống hay tác động mức thấp. TCON.1 IE0 89H Cờ ngắt ngoài 0 tác động cạnh xuống. Được set bỡi phần cứng khi phát hiện có ngắt ngoài tác động cạnh xuống xuất hiện trên chân INT0; được xóa bỡi phần cứng khi ngắt được xử lý. TCON IT0 88H Bit điều khiển chọn loại ngắt 0 ngoài. Được set/xóa để xác đònh ngắt ngoài thuộc loại tác động cạnh xuống hay tác động mức thấp. Tóm tắt thanh ghi điều khiển đònh thời / đếm TCON 4 TLx (8 bit) TFx Xung Clock Cho bộ đònh thời THx (8 bit) TLx (8 bit) THx (8 bit) TFx Xung Clock Cho bộ đònh thời TLx (5 bit) THx (8 bit) TFx Xung Clock Cho bộ đònh thời Xung Clock i CÁC CHẾ ĐỘ ĐỊNH THỜI VÀ CỜ TRÀN : 1. Chế độ Timer-13 bit (Mode 0) : Cờ tràn Hình Chế độ 0 2. Chế độ Timer 16-bit (Mode 1) : Cờ tràn Hình : Chế độ 1 Chế độ 1 là Chế độ Timer 16-bit, tương tư như Cheat độ 0 ngoại trừ Timer này hoạt động như một Timer đầy đủ 16 bit, xung clock được dùng với sự kết hợp các thanh ghi cao và thấp (TLx,THx). Khi xung clock được nhận vào, bộ đếm Timer tăng lên 0000H, 0001H,0002H, . . ., và một sự tràn sẽ xuất hiện khi có sự chuyển trên bộ đếm Timer từ FFFFH sang 0000H và sẽ set cờ tràn Timer (bit TFx trong thanh ghi TCON), sau đó Timer đếm tiếp. Bit có trọng số lớn nhất (MSB) của giá trò trong thanh ghi Timer là bit 7 của THx và bit có trọng số thấp nhất (LSB) là bit 0 của TLx. LSB MSB B0 B1 B2 B3 B4 B5 B6 B7 B0 B1 B2 B3 B4 B5 B6 B7 Thanh ghi TLx (8bit) Thanh ghi THx (8bit) Bit LSB đổi trạng thái ở tần số clock vào được chia 2 16 = 65.536. Các thanh ghi Timer TLx và Thx có thể được đọc hoặc ghi tại bất kỳ thời điểm nào bởi phần mềm. 3. Chế độ tự động nạp 8- bit (Mode 2) Cờ tràn Nạp lại Hình : Chế độ 2 5 Chế độ 2 là chế độ tự động nạp 8-bit, byte thấp TLx của Timer hoạt động như một Timer 8-bit trong khi byte cao THx của Timer giữ giá trò nạp lại (Reload). Khi bộ đếm tràn từ FFH sang 00H, không chỉ cờ tràn được set mà giá trò trong THx cũng được nạp vào TLx : Bộ đếm được tiếp tục từ giá trò này lên đến sự chuyển trạng thái từ FFH sang 00H kế tiếp và cứ thế tiếp tục. Chế độ này khá tiện lợi do bỡi việc tràn bộ đònh thời xảy ra ở những khoảng thời gian xác đònh và tuần hoàn một khi các thanh ghi TMOD và THx đã được khởi động TL1 (8 bit) TH1 (8 bit) TL0 (8 bit) TH0 (8 bit) TF0 Xung Clock cho bộ đònh thời Xung Clock cho bộ đònh thời Xung Clock cho bộ đònh thời TF1 Cờ tràn Cờ tràn 4. Chế độ tách Timer (Mode 3) : Hình : Chế độ 3 Chế độ 3 là chế độ tách Timer và là sự khác biệt cho mỗi Timer. Timer-0 ở chế độ 3 được chia là 2 timer 8-bit. TL0 và TH0 hoạt động như những Timer-8bit riêng lẻ với các cờ tràn tương ứng : TL0 gắn với cờ tràn TF0, TH0 gắn với cờ tràn TF1. Timer-1 bò dừng lại ở chế độ 3, nhưng có thể được khởi động bởi việc ngắt nó vào một trong các chế độ khác (Do khuyết điểm là cờ tràn TF1 của Timer-1 không bò ảnh hưởng vì cờ này đã được dùng bỡi TH0). Khi Timer-0 ở chế độ-3, thì Timer-1 có thể hoạt động hoặc ngưng bằng cách chuyển Timer-1 ra khỏi chế độ-3 hoặc vào chế độ-3. Timer-1 có thể được sử dụng bỡi port nối tiếp (lúc này Timer-1 làm nhiệm vụ của bộ tạo xung clock tốc độ baud) hoặc sử dụng theo một cách nào đó nhưng không yêu cầu ngắt (vì Timer-1 không còn nối đến TF1. 6 Ví dụ 1 : Tạo xung 250 KHz Viết chương trình tạo dạng xung tuần hoàn trên chân P1.0 có tần số cao có thể có được. Tần số và chu kỳ nhiệm vụ của xung là bao nhiêu ? Giải : Các khoảng thời gian rất ngắn (tức tần số cao) có thể được lập trình mà không cần sử dụng đến các bộ Timer như sau : ORG 8100h Loop : SETB P1.0 ; 1 chu kỳ máy = 1µ s CLR P1.0 ; 1 chu kỳ máy = 1µ s SJMP Loop ; 2 chu kỳ máy = 2µ s END 4µ s v.v… SETB P1.0 SJMP Loop CLR P1.0 SETB P1.0 1 chu kỳ máy = 1µ s Chân P1.0 Chương trình trên tạo ra dạng xung trên chân P1.0, xung có chu kỳ 4 µ s : thời gian mức cao là 1 µ s và thời gian mức thấp là 3 µ s. Tần số của xung là : 1MHz /4 = 1000KHz/4 = 250 KHz và chu kỳ nhiệm vụ là ¼ = 25%. Bắt đầu lệnh SETB Kết thúc SETB, bắt đầu CLR Kết thúc CLR, bắt đầu SJMP Kết thúc SJMP, bắt đầu SETB 7 Ví dụ 2 : Tạo sóng vuông 10 KHz Viết chương trình tạo dạng sóng vuông 10KHz trên chân P1.0 bằng cách sử dụng bộ đònh thời 0 Giải : Do fOSC = 12MHz nên chu kỳ máy = 1 μs. Sóng vuông f = 10KHz yêu cầu chu kỳ máy T = 1/f = 1/10KHz = 1/10000Hz = 0.1ms =100 µ s với thời gian mức cao là : 50 µ s và thời gian mức thấp là : 50 µ s. Do khoảng thời gian này < 256 µ s nên Chế độ 2 (chế độ tự nạp lại 8-bit) được sử dụng. Do Timer-0 đếm lên, nên một tràn xảy ra sau mỗi 50 µ s yêu cầu một giá trò số đếm nhỏ hơn 00h một lượng +50 phải được nạp và nạp lại cho TL0, nghóa là giá trò nạp cho TH0 là : -50. Chương trình theo yêu cầu như sau : ORG 8100h MOV TMOD, #02h ; Timer-0 : Mode-2 (chế độ tự nạp lại 8-bit) MOV TH0, #-50 ; TH0 chứa giá trò -50 (Do Timer-0 đếm lên) SETB TRO ; Khởi động bộ đònh thời, cho phép Timer-0 chạy Loop : JNB TF0, Loop ; Nếu Timer-0 chưa tràn thì chờ tràn CLR TF0 ; Xóa cờ tràn CPL P1.0 ; Đảo trạng thái bit P1.0 để tạo xung vuông SJMP Loop END 0100000002h M 0 M 1 C/ T GA TE M 0 M 1 C/ T GA TE TM OD 01234567Bit 8 Ví du 3ï : Tạo sóng vuông 1KHz Viết chương trình tạo sóng vuông 1KHz trên chân P1.0 sử dụng bộ đònh thời 0. Giải : Sóng vuông f = 1KHz yêu cầu chu kỳ T = 1/f = 1/1KHz = 1/1000Hz = 1000 µ s với thời gian mức cao là : 500 µ s và thời gian mức thấp là : 500 µ s. Do khoảng thời gian này > 256 µ s nên không thể sử dụng Chế độ-2 (chế độ tự nạp lại 8-bit) được, mà phải sử dụng Chế độ-1 (chế độ đònh thời 16-bit). Sự khác nhau trong phần mềm của 2 chế độ này là : ở Chế độ-1, do không có giá trò nạp lại, nên các thanh ghi đònh thời TL0, TH0 phải được khởi động lại sau mỗi lần tràn : ORG 8100h MOV TMOD, #01h Batdau : MOV TH0, #0FEh ; Byte cao của -500 MOV TL0, #0Ch ; Byte thấp của -500 ; Hoặc dùng cặp lệnh giả HIGH, LOW như sau : ; MOV TH0, #High(-500) ; MOV TL0, #Low(-500) SETB TR0 ; Khởi động bộ đònh thời, cho Timer-0 chạy Wait : JNB TF0, Wait ; Nếu Timer chưa tràn thì Chờ tràn CLR TF0 ; Xóa cờ tràn CPL P1.0 ; Đảo bit ngõ P1.0 để tạo xung vuông CLR TR0 ; Ngừng bộ đònh thời SJMP Batdau ; lặp lại và nạp lại giá trò cho TH0-TL0 END 1000000001h M 0 M 1 C/ T GA TE M 0 M 1 C/ T GA TE TM OD 01234567Bit 9 Vớ du 4ù : Taùo 2 soựng vuoõng 1KHz vaứ 10KHz Vit chng trỡnh to : xung vuụng tn s f = 10KHz ti P1.0 dựng timer 0 v xung vuụng tn s f = 1 KHz ti P1.1 dựng timer 1. Giaỷi : Phõn tớch cho cỏc thanh ghi ging nh cỏc phn vớ d nờu trờn, nhng lu ý rng quỏ trỡnh kim tra timer trn s khỏc: thc hin kim tra timer 0, nu cha trn thỡ kim tra timer 1 v kim tra tng t cho timer 1. MOV TMOD, #12h ; Timer-1 : Mode-1, Timer-0 : Mode-2 MOV TH1, #High(-500) ; P1.1 = Timer-1 = 1000à s MOV TL1, #Low(-500) ; Xung vuụng = 500à s + 500à s MOV TH0, #(-50) ; P1.0 = Timer-0 = 100à s MOV TL0, #(-50) ; Xung vuụng = 50à s + 50à s SETB TR0 SETB TR1 KtrT0: JNB TF0, KtrT1 CLR TF0 CPL P1.0 KtrT1: JNB TF1, KtrT0 CLR TF1 CPL P1.1 MOV TH1, #High(-500) MOV TL1, #Low(-500) SJMP KtrT0 END Lu ý, xung vuụng to bng cỏch nh trờn cú th khụng chớnh xỏc khi 2 timer trn cựng lỳc. 0100100012h M 0 M 1 C/ T GA TE M 0 M 1 C/ T GA TE TM OD 01234567Bit Timer-0 = 100à s Timer-1 = 1000à s Khi cú c TF0 thỡ : Kim tra c TF1 10 Ví dụ 5 : Tạo sóng vuông 1Hz Viết chương trình tạo xung vng tần số f = 1Hz tại P1.2 dùng timer 1 Giải : f = 1 Hz → T = 1/f = 1 s = 1.000.000 μs → một chu kỳ sóng vng chiếm khoảng thời gian 500.000 chu kỳ máy → thời gian trì hỗn cần thiết là 500.000 chu kỳ máy. Giá trị đếm là 500.000, vượt q khả năng của timer (tối đa chỉ đếm được 65.536 chu kỳ) nên phải thực hiện tạo vòng lặp đếm nhiều lần cho đến khi đạt đến giá trị 500.000 (có thể đếm mỗi lần 50.000 và thực hiện vòng lặp 10 lần). Chương trình thực hiện như sau: MOV TMOD,#10h ; Mode-1 Batdau: MOV R7,#10 ; Lặp 10 lần Lap: MOV TH1, #High(-50000) MOV TL1, #Low(-50000) SETB TR1 KtrT1: JNB TF1,KtrT1 CLR TF1 CLR TR0 DJNZ R7,Lap ; Giảm R7 đi 1 và Nếu R7 ≠ 0 thì lặp lại CPL P1.2 ; Đảo bit để tạo xung SJMP Batdau END 0000100010h M 0 M 1 C/ T GA TE M 0 M 1 C/ T GA TE TM OD 01234567Bit . 1 Bài Gỉang Môn Học VI ĐIỀU KHIỂN TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP HCM KHOA ĐIỆN – ĐIỆN TỬ Biên sọan : Th.S Trần. GATE 0 Bit điều khiển (mở) cổng của Timer-0. Khi bit TR0 = 1 (trong TCON) và GATE = 1, Timer chỉ chạy khi chân INT0 = 1 (điều khiển cứng). Khi GATE=0, Timer chỉ chạy khi TR0 = 1 (điều khiển mềm) 2. thích họ vi điều khiển 8048) 0 1 1 Chế độ đònh thời / đếm 16 bit 1 0 2 Chế độ đònh thời / đếm 8bit tự động nạp lại 1 1 3 Chế độ Timer tách ra : Timer 0 : TL0 là Timer 8 bit được điều khiển bởi