1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài 2.Pdf

6 4 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình Ngắt Và Timer
Trường học Hồ Chí Minh University Of Technology
Chuyên ngành Cơ Điện Tử
Thể loại bài thí nghiệm
Thành phố Hồ Chí Minh
Định dạng
Số trang 6
Dung lượng 448,59 KB

Nội dung

TRÖÔØNG ÑAÏI HOÏC BAÙCH FL061 Faculty of Mechanical Engineering @HCMUT 1 KHOA CƠ KHÍ BỘ MÔN CƠ ĐIỆN TỬ Lập trình Ngắt và Timer 1 Giới thiệu Interrupts, thường được gọi là ngắt, là một “tín hiệu khẩn c[.]

FL061 KHOA CƠ KHÍ BỘ MƠN CƠ ĐIỆN TỬ Lập trình Ngắt Timer Giới thiệu Interrupts, thường gọi ngắt, “tín hiệu khẩn cấp” gửi đến xử lý, yêu cầu xử lý tạm ngừng tức khắc hoạt động để “nhảy” đến nơi khác thực nhiệm vụ “khẩn cấp” đó, nhiệm vụ gọi trình phục vụ ngắt – ISR (Interrupt Service Routine ) Sau kết thúc nhiệm vụ ISR, đếm chương trình trả giá trị trước để xử lí quay thực tiếp nhiệm vụ thực trước ngắt xảy Như vậy, ngắt có mức độ ưu tiên xử lý cao nhất, ngắt thường dùng để xử lý kiện bất ngờ không tốn nhiều thời gian Các tín hiệu dẫn đến ngắt xuất phát từ thiết bị bên chip (ngắt báo đếm timer/counter tràn, ngắt báo trình gửi liệu RS232 kết thúc…) hay tác nhân bên ngồi (ngắt báo có button nhấn, ngắt báo có gói liệu nhận…) Timer module thời gian, đóng vai trị quan trọng việc định thời vi điều khiển PIC16F877A có module định thời: Timer0, Timer1, Timer2 Trong thí nghiệm tập trung vào việc sử dụng ngắt timer Kit thí nghiệm Vi điều khiển Bộ mơn Cơ điện tử Để tiến hành việc thí nghiệm, sinh viên cần trang bị thiết bị sau: - Kit thí nghiệm Vi điều khiển - Mạch nạp Pickit - Phần mềm viết code cho vi điều khiển ( MPLab + Cxx Compiler, Hi-TechC, CCS-C MicroC ) Mục tiêu:  Đọc tín hiệu từ bên ngồi vào vi điều khiển thơng qua xử lý ngắt (ngắt RB0, ngắt PortB) phân biệt việc đọc tín hiệu theo kiểu ngắt kiểu đọc liệu kiểu thơng thường  Nhận tín hiệu từ nút nhấn kit làm sáng đèn led tương ứng với số lần nhấn nút  Sử dụng module Timer vi điều khiển Thời gian thực hiện: Thời lượng: tiết cho nhóm sinh viên Nội dung thí nghiệm 3.1 Bài thí nghiệm 1: Phân biệt chương trình ngắt chương trình Đề bài: Hãy viết đoạn chương trình cho vi điều khiển thực nhiệm vụ: nhấn nút SW1 làm thay đổi trạng thái đèn led LED7 (sáng thành tắt, tắt thành sáng) Thực kết nối chân sau:  Kết nối chân RB0 => SW1 Faculty of Mechanical Engineering @HCMUT FL061  Kết nối chân RD7 => LED7 Hình 1: Kết nối dây cho thí nghiệm [1] Chương trình 1: Dùng chương trình đọc tín hiệu chân RB0 kiểm tra nút nhấn SW1 sau xuất tín hiệu output chân RD7 #include #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES MCLR //Master Clear pin enabled #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT //No brownout reset #FUSES IESO //Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NODEBUG //No Debug mode for ICD #use delay(internal=8M) #include #bit bitRB0 = 0x06.0 #bit bitRD7 = 0x08.7 void Change_Led() { if (bitRD7==1) bitRD7=0; else bitRD7=1; Faculty of Mechanical Engineering @HCMUT FL061 } void main() { SET_TRIS_B( 0b00000001 ); //set RB0 as input, RB1 to RB7 as output SET_TRIS_D( 0b00000000 ); //set RD1 to RD7 as output while (1) { if (bitRB0==0) Change_Led(); } } Chương trình 2: Dùng ngắt chân RB0 kiểm tra việc nhấn nút SW1 sau xuất tín hiệu output chân RD7 #include #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES MCLR //Master Clear pin enabled #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT //No brownout reset #FUSES IESO //Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NODEBUG //No Debug mode for ICD #use delay(internal=8M) #bit bitRD7 = 0x08.7 #INT_EXT void ngat_ngoai(void) { if (bitRD7==1) bitRD7=0; else bitRD7=1; } void main() { SET_TRIS_D( 0b00000000 ); enable_interrupts(GLOBAL); ext_int_edge(H_TO_L); enable_interrupts(INT_EXT); while (1); } //set RD1 to RD7 as output //kich hoat ngat ngoai Faculty of Mechanical Engineering @HCMUT FL061 Yêu cầu: Sinh viên viết lại đoạn code nạp vào vi điều khiển trả lời câu hỏi phần báo cáo kết thí nghiệm 3.2 Bài thí nghiệm 2: Đếm số lần nhấn nút sử dụng ngắt Sinh viên thực kết nối nút nhấn SW1 đến chân input RB0 vi điều khiển chân tương ứng cho module Led đoạn, ban đầu biến đếm count=0 Viết chương trình đếm số lần nhấn nút SW1, lần nhấn thả làm tăng biến đếm count lên đơn vị, hiển thị giá trị count lên module LED đoạn 3.3 Bài thí nghiệm 3: Sử dụng ngắt PortB Sinh viên thực kết nối sau: - nút nhấn SW4-SW7 vào chân RB4-RB7 VĐK - chân RD4-RD7 LED4-LED7 Viết chương trình cập nhật trạng thái PORTD theo PORTB: nhấn giữ SW4 đèn D4 thay đổi trạng thái, tương tự cho SW5-D5, SW6-D6, SW7-D7 3.4 Bài thí nghiệm 4: Sử dụng Timer Sinh viên thực kết nối chân cổng PORTD với đèn led D0-D7 Lập trình cho LED sáng tuần tự: D0-D1-D2-D3-D4-D5-D6-D7-D6-D5-D4-D3-D2-D1 sử dụng Timer không dùng hàm delay() 3.5 Bài thí nghiệm 5: Hiển thị thời gian module LED đoạn Lập trình hiển thị phút giây module LED đoạn sử dụng Timer với yêu cầu sau: - Hiển thị phút giây - Giây cập nhật liên tục - Có nút nhấn để reset trạng thái ban đầu phút giây Faculty of Mechanical Engineering @HCMUT FL061 Kết thực hành, thí nghiệm (Lưu ý: Sinh viên nộp lại tờ cho Giảng viên hướng dẫn sau buổi thí nghiệm) Bài thí nghiệm 1: Câu hỏi Chương trình bị lỗi nhấn nút có đèn khơng đổi trạng thái ? Giải thích: Việc kiểm tra liên tục trạng thái nút nhấn thực chương trình ? Giải thích: Trong mạch thí nghiệm, nút nhấn thuộc loại tích cực mức cao hay mức thấp ? Giải thích: Trong chương trình 2,việc ngắt ngồi chân RB0 ngắt cạnh lên hay ngắt cạnh xuống ? Việc lựa chọn ngắt cạnh lên hay cạnh xuống có ảnh hưởng đến hoạt động tốn đặt hay khơng ? Giải thích: Faculty of Mechanical Engineering @HCMUT FL061 Trong chương trình trên, tìm đoạn code thừa mà bỏ không ảnh hưởng đến hoạt động mạch? Giải thích sao? Giải thích: Bài thí nghiệm 2: Khơng chạy □ Chạy khơng hồn chỉnh □ Chạy tốt □ Chạy khơng hồn chỉnh □ Chạy tốt □ Chạy khơng hồn chỉnh □ Chạy tốt □ Chạy khơng hồn chỉnh □ Chạy tốt □ Ý kiến khác: Bài thí nghiệm 3: Khơng chạy □ Ý kiến khác: Bài thí nghiệm 4: Khơng chạy □ Ý kiến khác: Bài thí nghiệm 5: Khơng chạy □ Ý kiến khác: Họ tên sinh viên:…………………………………MSSV: Nhóm:…… Họ tên sinh viên:…………………………………MSSV: Nhóm:…… Họ tên sinh viên:…………………………………MSSV: Nhóm:…… Họ tên sinh viên:…………………………………MSSV: Nhóm:…… Họ tên sinh viên:…………………………………MSSV: Nhóm:…… Ngày thực hành / thí nghiệm:……………………….Ký tên: ………………………………… Faculty of Mechanical Engineering @HCMUT

Ngày đăng: 09/11/2023, 21:25

w