1. Trang chủ
  2. » Giáo án - Bài giảng

vi xu ly bui minh thanh vxl ch06 laptrinhc8051 p2 cuuduongthancong com

31 3 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 1,28 MB

Nội dung

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ CHƯƠNG Lập trình C cho 8051 (Phần 2) Bùi Minh Thành Bộ môn Kỹ thuật Điện tử - ĐHBK Tp HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Điều khiển ngoại vi a) Timer b) Cổng nối tiếp c) Ngắt Bài tập Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Điều khiển ngoại vi a) Timer b) Cổng nối tiếp c) Ngắt Bài tập Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Giới thiệu • Hàm sau dùng để tạo trễ theo đơn vị ms (Cho tần số xung nhịp 8051 12Mhz) Ví dụ muốn trễ 1s ta gọi Delay_ms(1000); Hàm phát triển cách sử dụng chức Performance Analyzer Keil C • Rất khó để tạo khoảng thời gian trễ xác khơng có hỗ trợ Compiler Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Giới thiệu • Hàm DELAY_ms(1000); Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Giới thiệu • Timer cho phép ta định khoảng thời gian trễ xác dễ dàng Để thiết lập chế độ hoạt động điều khiển timer (timer 0, 1), ta phải tác động lên hai ghi TMOD TCON MSB GATE C/T M1 Timer1 Thanh ghi TMOD M0 GATE C/T M1 LSB M0 Timer0 GATE: bit mở cổng – Timer dùng để đo độ rộng xung chân INT0(INT1) Timer chạy INT bit TR mức cao – Timer dùng để định thời đếm kiện Timer chạy bit TR mức cao C/T: Bit chọn counter hay timer - Chế độ định thời với tốc độ đếm 1/12 tốc độ xung clock hệ thống - Chế độ đếm kiện (thông qua chân T0 T1) với tốc độ đếm tối đa 500kHz với thạch anh 12MHz M1, M0: dùng để xác định chế độ hoạt động timer 00 - chế độ 0, timer 13 bit 01 - chế độ 1, timer 16 bit 10 - chế độ 2, timer bit, tự động nạp lại giá trị đầu 11 - chế độ 3, tách timer TL0 timer bit, điều khiển bit chế độ timer0, TH0 timer bit, điều khiển bit chế độ timer1 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Thanh ghi TCON Thanh ghi TCON MSB LSB TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TFx: Cờ báo tràn timer, đặt lên phần cứng timer tràn, xoá phần mềm phần cứng cờ tràn làm cho chương trình phục vụ ngắt (ISR) gọi TRx: Bit điều khiển timer chạy Được đặt/xoá phần mềm timer dừng/chạy (x = 1: timer1, x = 0: timer0) IEx: Cờ cạnh ngắt Đặt phần cứng phát cạnh xuống chân INTx, xoá phần mềm phần cứng CPU đến ISR ITx: Cờ kiểu ngắt Được thiết lập phần mềm: - Ngắt ngồi tích cực cạnh xuống - Ngắt ngồi tích cực mức thấp (x = 1: ngắt 1, x = 0: ngắt ngồi 0) Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Các ví dụ VD1: Viết chương trình để bật tắt bit port liên tục với khoảng thời gian trễ (sử dụng timer 0) Cho thạch anh 12Mhz Tính khoảng thời gian trễ hàm T0Delay()? FFFFH-3500H+1=CB00H=51968 ms  51968  52ms Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Các ví dụ VD2: Một SW nối vào P1.0 LED nối vào P1.7 Viết chương trình giám sát trạng thái SW tạo xung sau chân P1.7 SW=0: 500 Hz; SW=1: 750 Hz Dùng timer với thạch anh 11.059Mhz f = 500Hz -> T = 2000us -> Tdelay = 1000us = 921TM= 399H TM TH0:TL0 = FFFF + – 399 = FC67H f = 750Hz -> T = 1333us -> Tdelay = 666us = 614TM = 266H TM TH0:TL0 = FFFF + – 266A = FD9AH Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt VD Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 10 Ví dụ Viết chương trình dùng để truyền ký tự “A” nối tiếp với tốc độ baud 4800 Sử dụng 8-bit liệu stop bit Solution : #include void main(void) { TMOD=0x20; SCON=0x50; TH1=0xFA; //4800 baud rate TR1=1; while (1) { SBUF=‘A’; while (!TI); TI=0; } } Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 17 Nội dung Điều khiển ngoại vi a) Timer b) Cổng nối tiếp c) Ngắt Bài tập Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 18 Giới thiệu • Trong 8051 có tất nguồn ngắt gồm: ngắt 0, ngắt timer0, ngắt 1, ngắt timer1 ngắt cổng nối tiếp • Khi sử dụng cần quan tâm đến hai ghi: – Thanh ghi cho phép ngắt (IE) – Thanh ghi điều khiển chế độ ưu tiên (IP) Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 19 Thanh ghi IE IP Thanh ghi IE MSB EA -ET2 ES ET1 EX1 EA: Cấm cho phép tất ngắt không bị che ET2: Cấm cho phép ngắt timer2 (8052) ES: Cấm cho phép ngắt từ cổng nối tiếp ET1: Cấm cho phép ngắt timer1 EX1: Cấm cho phép ngắt ET0: Cấm cho phép ngắt timer0 EX0: Cấm cho phép ngắt (0 = Cấm, = cho phép) MSB PT2 Thanh ghi IP PS PT1 PT2: Ưu tiên cho ngắt timer2 (8052) PS: Ưu tiên cho ngắt nối tiếp PT1: Ưu tiên cho ngắt timer1 PX1: Ưu tiên cho ngắt ngồi Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com PX1 ET0 LSB EX0 PT0 LSB PX0 PT0: Ưu tiên cho ngắt timer0 PX0: Ưu tiên cho ngắt ngồi (mức = khơng ưu tiên, mức = ưu tiên) https://fb.com/tailieudientucntt 20 Địa vector ngắt Interrupt Vector address Interrupt number External 0003h Timer 000Bh External 0013h Timer 001Bh Serial 0023h Cú pháp chương trình phục vụ ngắt: void ngat_noi_tiep(void) interrupt using { /* Cac lenh can thuc thi */ } interrupt using dùng để khai báo cho trình biên dịch biết ISR cổng nối tiếp (interrupt 4) chương trình cần sử dụng ghi R0-R7 sử dụng vùng bank (using 1) Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 21 Ngắt timer VD1: Tạo xung vuông chân P1.0 dùng ngắt timer Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 22 Ngắt timer VD 2: Viết chương trình liên tục đọc bit từ liệu từ P1.0 xuất P1.3 Trong đồng thời tạo xung vng có chu kz 200us chân P1.7 Sử dụng timer để tao xung, giả sử thạch anh 11.059MHz 8051 Sử dụngTimer 0, mode 100ms /1.085ms =92 P1.3 TH0=256-92=164=A4H LED 200ms Switch Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com P1.0 P1.7 https://fb.com/tailieudientucntt 23 VD Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 24 Ngắt timer cổng nối tiếp VD3: Viết chương trình liên tục đọc bit liệu từ P1.0 xuất P1.3 Trong liên tục: - Tạo xung vng có chu kz 400us chân P1.7 - Gửi k{ tự ‘A’ đến cổng nối tiếp Sử dụng ngắt timer để tạo xung vuông, thạch anh 11.059Mhz, tốc độ baud 9600 8051 P1.3 LED 200ms Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com Switch P1.0 Serial Port TxD P1.7 https://fb.com/tailieudientucntt 25 VD Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 26 Nội dung Điều khiển ngoại vi a) Timer b) Cổng nối tiếp c) Ngắt Bài tập Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 27 LCD2 C2 33p 33p X1 U1 19 12MHz 18 R3 220R R1 220R D1 R2 LED-BIRG D0 D1 D2 D3 D4 D5 D6 D7 10 11 12 13 14 RS RW E GND VDD XTAL1 AD[0 7] AD[0 7] A[8 15] A[8 15] AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 C1 RS EN VSS VDD VEE LM032L XTAL2 RST ALE EA PSEN P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD U2 13 14 17 18 30 31 29 10 11 12 13 14 EN 15 RS 16 17 11 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 12 15 16 19 OE LE 74LS373 220R D2 LED-BIRG 8051 PROGRAM=TN8051.hex SRCFILE=P1_toggle.c U4 A13 A14 A15 A B C E1 E2 E3 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 15 14 13 12 11 10 U3:A 74LS28 74LS138 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 28 Bài tập Bài tập 1: Viết chương trình hiển thị “Hello world” lên LCD 16x2 Bài tập 2: Viết chương trình đếm số lần nhấn nút (từ 000 đến 255) hiển thị lên LCD 16x2 Bài tập 3: Viết chương trình tạo xung 1Khz, duty cycle 40% chân P1.7, liên tục phát chuỗi k{ tự “Hello world” LCD 16x2 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 29 Bài tập Bài tập 4: Viết chương trình nhận k{ tự từ cổng nối tiếp - Nếu k{ tự từ a – z chuyển sang hoa A – Z phát cổng nối tiếp - Ngược lại phát cổng nối tiếp - Trong liên tục tao xung vuông 500Hz chân P1.3 Yêu cầu dùng ngắt cổng nối tiếp, thạch anh 12Mhz, tốc độ baud 9600 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 30 Tài liệu tham khảo • Hồ Trung Mỹ, Vi xử l{, Nhà xuất Đại học Quốc Gia Tp HCM - 2003 • I Scott MacKenzie , The 8051 Microcontroller, 2nd Edition, Prentice-Hall, 1995 • Derek Molloy, EE402 - Lecture note • Slide giảng thầy Hồ Trung Mỹ • Thomas W.Schultz, C and the 8051 – Second Edition • Dogan Ibrahim, Microcontroller Projects in C for the 8051, Newnes – 2000 • Và nhiều tài liệu mạng Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 31 ... dùng để xác định chế độ hoạt động timer 00 - chế độ 0, timer 13 bit 01 - chế độ 1, timer 16 bit 10 - chế độ 2, timer bit, tự động nạp lại giá trị đầu 11 - chế độ 3, tách timer TL0 timer bit, điều... Dùng timer với thạch anh 11.059Mhz f = 500Hz -> T = 2000us -> Tdelay = 1000us = 921TM= 399H TM TH0:TL0 = FFFF + – 399 = FC67H f = 750Hz -> T = 1333us -> Tdelay = 666us = 614TM = 266H TM TH0:TL0... kiểu ngắt Được thiết lập phần mềm: - Ngắt ngồi tích cực cạnh xuống - Ngắt ngồi tích cực mức thấp (x = 1: ngắt ngồi 1, x = 0: ngắt ngồi 0) Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt

Ngày đăng: 27/12/2022, 13:48