1. Trang chủ
  2. » Giáo Dục - Đào Tạo

slide bài giảngckỹ thuật điều khiển ghép nối thiết bị ngoại vi chương 6

16 52 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 16
Dung lượng 778,5 KB

Nội dung

NGẮT (INTERUPT) NGẮT • Các loại ngắt bảng vector ngắt: • Reset hệ thống RST 0000H • Ngắt ngồi IE0 Địa vector ngắt 0003H • Timer TF0 000BH • Ngắt ngồi IE1 0013H • Timer TF1 001BH • Cổng nối tiếp RI TI 0023H • Timer TF2 EXF2 002BH Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Thanh ghi cho phép ngắt IE (Interrupt Enable Register) IE D7 D6 D5 EA D4 ET2 ES Cho phép ngắt Timer Không sử dụng D2 ET1 Cho phép ngắt toàn cục D3 D1 ET0 EX1 Cho phép ngắt Timer Cho phép ngắt port nối tiếp Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D0 EX0 Cho phép ngắt Timer Cho phép ngắt Cho phép ngắt caonam@gmail.com Thanh ghi ưu tiên ngắt IP (Interrupt Priority Register) IP D7 D6 D5 D4 D3 PT2 Không sử dụng D2 PT1 Không sử dụng PS Ưu tiên ngắt cho Timer D1 PT0 PX1 Ưu tiên ngắt cho Timer Ưu tiên ngắt port nối tiếp Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D0 PX0 Ưu tiên ngắt cho Timer Ưu tiên ngắt Ưu tiên ngắt caonam@gmail.com Giới thiệu timer XTAL oscillator TH ÷12 C/T = TF bật lên FFFF → TR TH0 D15 D14 D13 D12 D11 D14 D13 D12 D11 Cờ tràn (Overflow Flag) TL0 D10 D9 D8 D7 D6 D5 TH1 D15 TF TL D4 D3 D2 D1 D0 D2 D1 D0 TL1 D10 D9 D8 D7 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D6 D5 D4 D3 caonam@gmail.com Thanh ghi TMOD: Timer Mode Chọn chế độ hoạt động TMOD D7 D6 D5 GATE M1 C/T D4 D3 D2 GATE M0 Chọn chế độ hoạt động cho TIMER1 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D1 D0 M1 C/T M0 Chọn chế độ hoạt động cho TIMER0 caonam@gmail.com Lập trình ngắt timer IE – Interrupt Enable Register EA - ET2 ES ET1 EX1 ET0 EX0 • Bước 1: Chọn chế độ hoạt động timer phần lập trình cho timer • Bước 2: Cho phép ngắt: • Cho phép ngắt timer ET0 = 1; // Nếu sử dụng ngắt timer ET1 = 1; // Nếu sử dụng ngắt timer • Cho phép ngắt toàn cục EA = 1; // Bắt buộc phải có sử dụng ngắt • Bước 3: Viết chương trình phục vụ ngắt Timer Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Bit M0, M1 – ghi TMOD TMOD GATE C/T M1 M0 M1 M0 Chế độ 0 1 1 GATE C/T M1 M0 Mô tả Chế độ định thời 13 bit Chế độ định thời 16 bit Chế độ tự động nạp lại 8-bit Chế độ định thời chia xẻ Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Ví dụ 1: Viết chương trình nháy LED nối chân P1.0 với chu kỳ 500us sử dụng ngắt timer (Thạch anh 12Mhz) ORG 0000H LJMP MAIN ASM ORG 001BH LJMP T0_ISR ORG 0030H MAIN: MOV TMOD, #00000010B; Chế độ MOV TH0, #55 MOV TL0, #55 CLR TF0; Xóa cờ tràn SETB ET0 SETB EA SETB TR0; Khởi động Timer JMP $ T0_ISR: CPL P1.0 RETI C void main() { TMOD = 0x02; // Timer chế độ TH0 = 5; TL0 = 5; // Nạp giá trị cho TH0, TF0 = 0; // Xóa cờ tràn ET0 = 1; EA =1; TR0 = 1; // Khởi động Timer while(1); } void T0_ISR() interrupt { P1_0 = !P1_0; } Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Ví dụ 2: Viết chương trình tạo xung vng chân P1.0 với tần số 500Hz sử dụng ngắt timer Thạch anh 12Mhz C ASM ORG 0000H LJMP MAIN ORG 000BH LJMP T1_ISR ORG 0030H MAIN: MOV TMOD, #00010000B;Timer chế độ MOV TH1, #HIGH(-1000) MOV TL1, #LOW(-1000) CLR TF1; Xóa cờ tràn SETB ET1 SETB EA SETB TR1; Khởi động Timer JMP $ T1_ISR: CLR TR1; Dừng định thời MOV TH1, #HIGH(-1000); Nạp lại MOV TL1, #LOW(-1000) CPL P1.0 SETB TR1; Khởi động timer RETI void main() { TMOD = 0x10; // Timer chế độ TH1 = 0xFC; TL1 = 0x17; // Nạp giá trị cho TF1 = 0; // Xóa cờ tràn ET1 = 1; EA = 1; TR1 = 1; // Khởi động Timer while(1); } void T1_ISR() interrupt { TR1 = 0; // Dừng định thời TH1 = 0xFC; TL1 = 0x17; // Nạp lại P1_0 = !P1_0; TR1 = 1; // Khởi động định thời } Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Lập trình ngắt ngồi IE – Interrupt Enable Register EA - ET2 ES ET1 EX1 ET0 EX0 + Lập trình cho ngắt ngồi Cho phép ngắt EX0 = 1; Cho phép ngắt tồn cục EA = 1; Viết chương trình phục vụ ngắt ngồi + Lập trình cho ngắt ngồi Cho phép ngắt EX1 = 1; Cho phép ngắt tồn cục EA = 1; Viết chương trình phục vụ ngắt ngồi + Ngắt ngồi có kiểu: Ngắt mức Ngắt sườn xuống Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Kích hoạt ngắt ngồi Bằng sườn xuống mức chân ngắt TCON – Timer/Counter Control Register TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 • Ngắt ngồi 0: • IT0 = 0: Ngắt ngồi kích hoạt phát mức chân ngắt ngồi (P3.2) • IT0 = 1: Ngắt ngồi kích hoạt phát sườn xuống chân ngắt ngồi (P3.2) • Ngắt ngồi 1: • IT1 = 0: Ngắt ngồi kích hoạt phát mức chân ngắt ngồi (P3.3) • IT1 = 1: Ngắt ngồi kích hoạt phát sườn xuống chân ngắt (P3.3) Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Ví dụ 1: Bật LED chân P1.0 xảy mức chân ngắt (P3.2) Sử dụng ngắt ASM ORG 0000H LJMP MAIN ORG 0003H LJMP EX0_ISR ORG 0030H MAIN: SETB EX0; Cho phép ngắt SETB EA; Cho phép ngắt toàn cục JMP $ C void main() { EX0 = 1; // Cho phép ngắt EA = 1; // Cho phép ngắt toàn cục while(1); } void EX0_ISR() interrupt { P1_0 = 0; } EX0_ISR: CLR P1.0 RETI Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Ví dụ 2: Bật LED chân 1.0 xảy sườn xuống chân ngắt (P3.3) Sử dụng ngắt ASM ORG 0000H LJMP MAIN ORG 0013H LJMP EX1_ISR ORG 0030H MAIN: SETB EX1; Cho phép ngắt SETB EA; Cho phép ngắt toàn cục SETB IT1; JMP $ EX1_ISR: CLR P1.0 RETI C void main() { EX1 = 1; // Cho phép ngắt EA = 1; // Cho phép ngắt toàn cục IT1 =1; while(1); } void EX1_ISR() interrupt { P1_0 = 0; } Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Thanh ghi ưu tiên ngắt IP IP (Interrupt Priority Register) D7 D6 D5 D4 D3 D2 D1 PT2 Không sử dụng PT1 Không sử dụng PS Ưu tiên ngắt cho Timer PT0 PX1 Ưu tiên ngắt cho Timer Ưu tiên ngắt port nối tiếp Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D0 PX0 Ưu tiên ngắt cho Timer Ưu tiên ngắt Ưu tiên ngắt ngồi caonam@gmail.com Lập trình ưu tiên ngắt IP – Interrupt Priority Register - - PT2 PS PT1 PX1 PT0 PX0 • Muốn cho ngắt ưu tiên set bit ưu tiên ngắt lên • Khi ngắt xảy lúc chuỗi ngắt bình thường bị thay đổi • Chuỗi ngắt thứ tự thực ngắt bình thường khơng có ngắt ưu tiên, thứ tự sau: ngắt 0, ngắt timer 0, ngắt 1, ngắt timer 1, ngắt cổng nối tiếp, ngắt timer (đối với AT89S52 trở lên) Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com ... thời 16 bit Chế độ tự động nạp lại 8-bit Chế độ định thời chia xẻ Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Ví dụ 1: Vi t chương trình nháy LED nối chân... = 1; Cho phép ngắt toàn cục EA = 1; Vi t chương trình phục vụ ngắt ngồi + Lập trình cho ngắt ngồi Cho phép ngắt EX1 = 1; Cho phép ngắt toàn cục EA = 1; Vi t chương trình phục vụ ngắt ngồi + Ngắt... (Overflow Flag) TL0 D10 D9 D8 D7 D6 D5 TH1 D15 TF TL D4 D3 D2 D1 D0 D2 D1 D0 TL1 D10 D9 D8 D7 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D6 D5 D4 D3 caonam@gmail.com Thanh

Ngày đăng: 23/05/2020, 11:56

TỪ KHÓA LIÊN QUAN