Thiết kế mạch nối tiếp 8 Led đơn với cổng P1 của 8051 . Viết chương trình để khi có ngắt timer 0 các có 4 led sáng và khi có ngắt timer 1 thì các bóng đều tắt.

10 758 3
Thiết kế mạch nối tiếp 8 Led đơn với cổng P1 của 8051 . Viết chương trình để khi có ngắt timer 0 các có 4 led sáng và khi có ngắt timer 1 thì các bóng đều tắt.

Đang tải... (xem toàn văn)

Thông tin tài liệu

Giới thiệuBộ đếmBộ định thời: Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản: đếm các xung nhịp. Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trị của bộ đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiếnđếm lên) hay giảm đi 01 đơn vị (trong chế độ đếm lùiđếm xuống).Xung nhịp đưa vào đếm có thể là một trong hai loại:+ Xung nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động bên trong IC và các linh kiện phụ bên ngoài nối với IC. Trong trường hợp sử dụng xung nhịp loại này, người ta gọi là các bộ định thời (timers). Do xung nhịp bên loại này thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá chính xác.+ Xung nhịp bên ngoài IC: Đó là các tín hiệu logic thay đổi liên tục giữa 02 mức 01 và không nhất thiết phải là đều đặn. Trong trường hợp này người ta gọi là các bộ đếm (counters). Ứng dụng phổ biến của các bộ đếm là đếm các sự kiện bên ngoài như đếm các sản phầm chạy trên băng chuyền, đếm xe ravào kho bãi… Một khái niệm quan trọng cần phải nói đến là sự kiện “tràn” (overflow). Nó được hiểu là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó có thể biểu diễn và quay trở về giá trị 0. Với bộ đếm 8 bit, giá trị tối đa là 255 (tương đương với FF trong hệ Hexa) và là 65535 (FFFFH) với bộ đếm 16 bit. 8051 có 02 bộ đếmbộ định thời. 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. Trong bài này chúng ta sẽ tìm hiểu về cách lập trình cho chúng và sử dụng chúng như thế nào. Phần 1 là Lập trình bộ định thời, và phần 2 là Lập trình cho bộ đếm.

Bài tập lớn môn Hệ Thống Nhúng (full slide demo báo cáo file zip) Đề tài Thiết kế mạch nối tiếp Led đơn với cổng P1 8051 Viết chương trình để ngắt timer led sáng ngắt timer bóng tắt Nhóm 5: Vương Quang Tuyên Nguyễn Mạnh Báo Đinh Hồng Phúc Vũ Hải Anh Phùng Hữu Khánh Giới thiệu Bộ đếm/Bộ định thời: Đây ngoại vi thiết kế để thực nhiệm vụ đơn giản: đếm xung nhịp Mỗi thêm xung nhịp đầu vào đếm giá trị đếm tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm 01 đơn vị (trong chế độ đếm lùi/đếm xuống) - Xung nhịp đưa vào đếm hai loại: + Xung nhịp bên IC: Đó xung nhịp tạo nhờ kết hợp mạch dao động bên IC linh kiện phụ bên nối với IC Trong trường hợp sử dụng xung nhịp loại này, người ta gọi định thời (timers) Do xung nhịp bên loại thường đặn nên ta dùng để đếm thời gian cách xác + Xung nhịp bên IC: Đó tín hiệu logic thay đổi liên tục 02 mức 0-1 không thiết phải đặn Trong trường hợp người ta gọi đếm (counters) Ứng dụng phổ biến đếm đếm kiện bên đếm sản phầm chạy băng chuyền, đếm xe ra/vào kho bãi… - Một khái niệm quan trọng cần phải nói đến kiện “tràn” (overflow) Nó hiểu kiện đếm đếm vượt giá trị tối đa mà biểu diễn quay trở giá trị Với đếm bit, giá trị tối đa 255 (tương đương với FF hệ Hexa) 65535 (FFFFH) với đếm 16 bit 8051 02 đếm/bộ định thời Chúng dùng định thời để tạo trễ thời gian đếm để đếm kiện xảy bên VĐK Trong tìm hiểu cách lập trình cho chúng sử dụng chúng Phần Lập trình định thời, phần Lập trình cho đếm Các định thời 8051 8051 hai định thời Timer Timer 1, phần bàn ghi chúng sau trình bày cách lập trình chúng để tạo độ trễ thời gian 1.1 Các ghi sở định thời Cả hai định thời Timer Timer độ dài 16 bit truy cập hai ghi tách biệt byte thấp byte cao Chúng ta bàn riêng ghi 1.1.1 Các ghi Timer Thanh ghi 16 bit Timer truy cập byte thấp byte cao: Ø Thanh ghi byte thấp gọi TL0 (Timer0 Low byte) Ø Thanh ghi byte cao gọi TH0 (Timer0 High byte) Các ghi truy cập, đọc ghi khác chẳng hạn A, B, R0, R1, R2 v.v Hình 1: Các ghi Timer 1.1.2 Các ghi Timer Giống timer 0, định thời gian Timer dài 16 bit ghi 16 bit chia thành hai byte TL1 TH1 Các ghi truy cập đọc giống ghi Timer Hình 2: Các ghi Timer 1.1.3 Thanh ghi TMOD Cả hai định thời Timer Timer dùng chung ghi gọi TMOD: để thiết lập chế độ làm việc khác định thời Thanh ghi TMOD ghi bit gồm có: Ø bit thấp để thiết lập cho Timer Ø bit cao để thiết lập cho Timer Trong đó: Ø bit thấp chúng dùng để thiết lập chế độ định thời Ø bit cao dùng để xác định phép toán Hình 3: Thanh ghi TMOD 1.1.3.1 Các bit M1, M0 Là bit chế độ Timer Timer Chúng chọn chế độ định thời: 0, 1, bảng Chúng ta tập chung vào chế độ thường sử dụng rộng rãi chế độ chế độ Chúng ta sớm khám phá đặc tính chế độ sau khám phần lại ghi TMOD Các chế độ thiết lập theo trạng thái M1 M0 sau: M1 M0 Chế độ Chế độ hoạt động 0 Bộ định thời 13 bit:8 bit định thời/bộ đếm, bit đặt trước 1 Bộ định thời 16 bit: đặt trước Bộ định thời bit: tự nạp lại 1 Chế độ định thời chia tách Bảng 1: Các chế độ hoạt động đếm/bộ định thời 1.1.3.2 Bit C/T (Counter/Timer) Bit ghi TMOD dùng để định xem định thời dùng máy tạo độ trễ hay đếm kiện Nếu bit C/T = dùng định thời tạo độ trễ thời gian 1.1.3.3 Bit cổng GATE Một bit khác ghi TMOD bit cổng GATE Để ý hình ta thấy hai định thời Timer0 Timer1 bit GATE Vậy bit GATE dùng để làm gì? Mỗi định thời thực điểm khởi động dừng Một số định thời thực điều phần mềm, số khác phần cứng số khác vừa phần cứng vừa phần mềm Các định thời 8051 hai: Ø Việc khởi động dừng định thời khởi động phần mềm bit khởi động định thời TR TR0 TR1 Điều nhờ lệnh Set bit TR0 lên (khởi động định thời) Clear bit TR0(dừng định thời) Timer 0, tương tự TR1 Timer Các lệnh tác dụng bit GATE = ghi TMOD Ø Việc khởi động ngừng định thời phần cứng từ nguồn cách đặt bit GATE = ghi TMOD Tuy nhiên, để tránh lẫn lộn từ ta đặt GATE = nghĩa không cần khởi động dừng định thời phần cứng từ bên 1.2 Lập trình cho chế độ Dưới bước hoạt động timer chế độ 1: Ø Đây định thời 16 bit, cho phép giá trị 0000 đến FFFFHđược nạp vào ghi TL TH định thời Ø Sau TL TH nạp giá trị khởi tạo 16 bit định thời phải khởi động Điều thực việc SET bit TR0 đối vớiTimer SET bit TR1 Timer Ø Sau định thời khởi động, bắt đầu đếm lên Nó đếm lên đạt giới hạn FFFFH Sau đó, quay từ FFFFHvề 0000 bật lên bit cờ TF gọi cờ định thời Cờ định thời hiển thị Khi cờ định thời thiết lập, để dừng định thời: ta thực xóa bit TR0 Timer TR1đối với Timer Ở cần phải nhắc lại định thời cờ TF riêng mình: TF0 Timer TF1 Timer Ø Sau định thời đạt giới hạn giá trị FFFFH, muốn lặp lại trình ghi TH TL phải nạp lại với giá trị ban đầu cờ TF phải xóa Hình 5: Timer/counter chế độ 1.2.1 Các bước lập trình chế độ Để tạo độ trễ thời gian dùng chế độ định thời cần phải thực bước đây: Nạp giá trị TMOD cho ghi báo độ định thời (Timer0 hay Timer1) sử dụng chế độ chọn 2 Nạp ghi TL TH với giá trị đếm ban đầu Khởi động định thời Duy trì kiểm tra cờ định thời TF vòng lặp để xem bật lên không Thoát vòng lặp TF lên cao Dừng định thời Xoá cờ TF cho vòng Quay trở lại bước để nạp lại TL TH Công thức tính toán độ trễ sử dụng chế độ (16 bit) định thời tần số thạch anh XTAL = f (MHz): a) Tính theo số Hex b) Tính theo số thập phân (FFFF - YYXX + 1)*12/f (µs) YYXX giá trị khởi tạo TH, TL tương ứng Lưu ý giá trị YYXX theo số Hex Chuyển đổi giá trị YYXX TH, TL số thập phân để nhận số thập phân NNNNN sau lấy (65536 – NNNNN)*12/f (µs) TMOD nạp Giá trị FFF2H nạp TH0 - TL0 Bộ định thời Timer0 khởi động lệnh Set bit TR0 Bộ Timer0 đếm lên 01 sau chu kỳ timer Khi định thời đếm tăng qua trạng thái FFF3, FFF4 đạt giá trị FFFFH quay 0000H bật cờ định thời TF0 = Tại thời điểm vòng lặp kiểm tra cờ TF0 thoát Bộ Timer0 dừng lệnh clear bit TR0 Cờ TF0 xóa, sẵn sàng cho chu trình Lưu ý để lặp lại trình ta phải nạp lại ghi TH TL khởi động lại định thời (đơn giản ta gọi lại hàm delay()) Hình 6: Một chu trình đếm timer0 Tính toán độ trễ tạo định thời chương trình với tần số XTAL=11,0592MHz: Bộ định thời làm việc với tần số đồng hồ 1/12 tần số XTAL, ta 11,0592MHz/12=0,9216MHz tần số định thời Kết nhịp xung đồng hồ chu kỳ T=1/0,9216MHz=1,085us Hay nói cách khác, Timer0 tăng 01 đơn vị sau 1,085µs để tạo trễ số_đếm×1,085µs Số đếm FFFFH - FFF2H = ODH (13 theo số thập phân) Tuy nhiên, ta phải cộng vào 13 cần thêm nhịp đồng hồ để quay từ FFFFH 0000H bật cờ TF Do vậy, ta 14 × 1,085µs = 15,19µs cho nửa chu kỳ chu kỳ T = 2× 15,19µs = 30, 38µs thời gian trễ tạo định thời Tuy nhiên, tính toán độ trễ ta không tính đến tổng phí lệnh cài đặt timer0, lệnh kiểm tra vòng lặp, gọi hàm con… Chính câu lệnh làm cho độ trễ dài hơn, dẫn đến tần số xung vuông đầu P1_5 không tính toán Đây nhược điểm C lập trình VĐK Tùy vào chương trình biên dịch, lệnh C biên dịch số lệnh ASM khác nhau, để tính toán xác ta phải tính tổng phí dòng lệnh ASM 1.2.2 Tìm giá trị cần nạp vào định thời Giả sử biết lượng thời gian trễ mà ta cần câu hỏi đặt làm để tìm giá trị cần thiết cho thi TH TL Để tính toán giá trị cần nạp vào ghi TH TL nhìn vào ví dụ sau với việc sử dụng tần số dao động XTAL = 11 0592MHz hệ thống 8051 Các bước để tìm giá trị ghi TH TL: Chia thời gian trễ cần thiết cho 1.085µs Thực 65536 - n với n giá trị thập phân nhận từ bước Chuyển đổi kết bước sang số Hex: ta YYXX giá trị Hexa ban đầu cần phải nạp vào ghi định thời Đặt TL = XX TH = YY 1.3 Chế độ Chế độ hoàn toàn giống chế độ khác định thời 16 bit thay 13 bit Bộ đếm 13 bit giữ giá trị 0000 đến 1FFFF TH - TL Do định thời đạt giá trị cực đại 1FFFH quay trở về0000 cờ TF bật lên 1.4 Lập trình cho chế độ Dưới bước hoạt động timer chế độ 2:  Nó định thời bit, cho phép giá trị từ 00 đếnFFH nạp vào ghi TH định thời  Sau ghi TH TL nạp giá trị ban đầu định thời phải khởi động  Sau định thời khởi động, bắt đầu đếm tăng lên cáchtăng ghi TL Nó đếm đại giá trị giới hạn FFH Khi quay trở 00 từ FFH, thiết lập cờ định thời TF Nếu ta sử dụng định thời Timer0 cờ TF0, Timer1 cờ TF1  Khi ghi TL quay trở 00 từ FFH, cờ TF bật lên ghiTL tự động nạp lại với giá trị chép từ ghi TH Để lặp lại trình đơn giản việc xoá cờ TF chạy mà không cần can thiệp lập trình viên để nạp lại giá trị ban đầu Điều làm chochế độ gọi chế độ tự nạp lại so với chế độ (phải nạp lại ghi TH TL) Hình 7: Timer/counter chế độ Cần phải nhấn mạnh rằng: chế độ định thời bit Tuy nhiên, lại khả tự nạp, tự nạp lại giá trị ban đầu TH giữ nguyên, TL nạp lại giá trị chép từ TH Chế độ nhiều ứng dụng, bao gồm việc thiết lập tần số baud truyền thông nối tiếp 1.4.1 Các bước lập trình cho chế độ 2 Để tạo thời gian trễ sử dụng chế độ định thời cần thực bước sau: Nạp ghi giá trị TMOD để báo định thời gian (Timer0 hay Timer1) sử dụng chế độ làm việc chúng chon Nạp lại ghi TH TL với giá trị đếm ban đầu Khởi động định thời Duy trì kiểm tra cờ định thời TF cách sử dụng vòng lặp để xem bật chưa Thoát vòng lặp TF lên cao Dừng định thời Xoá cờ TF Quay trở lại bước Vì chế độ chế độ tự nạp lại Bộ đếm Ở phần ta sử dụng định thời 8051 để tạo độ trễ thời gian Các định thời dùng đếm (counter) kiện xảy bên 8051 Công dụng đếm kiện tình bày phần Chừng liên quan đến công dụng định thời đếm kiện vấn đề mà ta nói lập trình định thời phần trước áp dụng cho việc lập trình đếm ngoại trừ nguồn tần số Đối với định thời/bộ đếm dùng định thời nguồn tần số tần số thạch anh 8051 Tuy nhiên, dùng đếm nguồn xung để tăng nội dung ghi TH TL từ bên 8051 Ở chế độ đếm, lưu ý ghi TMOD TH, TL giống định thời bàn phần trước, chí chúng tên gọi Các chế độ đếm giống 2.1 Bit C/T ghi TMOD Xem lại phần bit C/T ghi TMOD: ta thấy định nguồn xung đồng hồ cho đếm:  Nếu bit C/T = định thời nhận xung đồng hồ từ giao động thạch anh 8051  Nếu bit C/T = định thời sử dụng đếm nhận xung đồng hồ từ nguồn bên 8051 Do vậy, bit C/T = đếm tăng lên xung đưa đến chân P3.4 (T0) counter0 chân P3.5 (T1) counter1 Chân Chân cổng Chức Mô tả 14 P3.4 T0 Đầu vào đếm 15 P3.5 T1 Đầu vào đếm Bảng 4: Các chân cổng P3 dùng cho đếm 2.2 Thanh ghi TCON Trong ví dụ ta thấy công dụng cờ TR0 TR1 để bật/tắt đếm/bộ định thời Các bit phận ghi TCON Đây ghi bit, hình 2:  bit dùng để lưu cất bit TF TR cho Timer/counter Timer/counter  bit thấp thiết lập dành cho điều khiển ngắt mà ta bàn sau Hình 8: Thanh ghi TCON – Điều khiển đếm/bộ định thời 2.3 Trường hợp bit GATE = TMOD Trước kết thúc ta cần bàn thêm trường hợp bit GATE = 1trong ghi TMOD Tất vừa nói giả thiếtGATE = Khi GATE = đếm/bộ định thời khởi động lệnh Set bit TR0 TR1 Vậy điều xảy bit GATE = 1? Nếu GATE = việc khởi động dừng đếm/bộ định thời thực từ bên qua chân P3.2 (INT0) P3.3 (INT1) Timer/counter Timer/counter tương ứng Phương pháp điều khiển phần cứng để dừng khởi động đếm/bộ định thời nhiều ứng dụng Ví dụ: chẳng hạn 8051 dùng sản phẩm phát báo động giây dùng Timer0 theo nhiều việc khác Bộ Timer0 bật lên phần mềm qua lệnh Set bit TR0 nằm kiểm soát người dùng sản phẩm Tuy nhiên, nối công tắc chuyển mạch tới chân P2.3 ta dừng khởi động định thời, cách ta tắt báo động .. . XTAL, ta có 11 ,05 92MHz /12 =0, 9 216 MHz tần số định thời Kết nhịp xung đồng hồ có chu kỳ T =1 /0, 9 216 MHz =1, 08 5 us Hay nói cách khác, Timer0 tăng 01 đơn vị sau 1, 08 5 µs để tạo trễ số_đếm 1, 08 5 µs Số đếm .. . Phần Lập trình định thời, phần Lập trình cho đếm Các định thời 80 51 80 51 có hai định thời Timer Timer 1, phần bàn ghi chúng sau trình bày cách lập trình chúng để tạo độ trễ thời gian 1. 1 Các ghi .. . gọi TL0 (Timer0 Low byte) Ø Thanh ghi byte cao gọi TH0 (Timer0 High byte) Các ghi truy cập, đọc ghi khác chẳng hạn A, B, R0, R1, R2 v.v Hình 1: Các ghi Timer 1. 1 .2 Các ghi Timer Giống timer 0,

Ngày đăng: 27/09/2017, 09:57

Hình ảnh liên quan

Hình 3: Thanh ghi TMOD. 1.1.3.1 Các bit M1, M0 - Thiết kế mạch nối tiếp 8 Led đơn với cổng P1 của 8051 . Viết chương trình để khi có ngắt timer 0 các có 4 led sáng và khi có ngắt timer 1 thì các bóng đều tắt.

Hình 3.

Thanh ghi TMOD. 1.1.3.1 Các bit M1, M0 Xem tại trang 4 của tài liệu.
Hình 7: Timer/counter chế độ 2 - Thiết kế mạch nối tiếp 8 Led đơn với cổng P1 của 8051 . Viết chương trình để khi có ngắt timer 0 các có 4 led sáng và khi có ngắt timer 1 thì các bóng đều tắt.

Hình 7.

Timer/counter chế độ 2 Xem tại trang 8 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan