chap7 8051 i o and 8051 interrupts - tnu.edu.vn and... · –mạch hiểnthịbằng led theo...

24
DCE 8051 I/O and 8051 Interrupts Microcontroller Chapter 7 Ngo Nhu Khoa Department of Computer Engineering ThaiNguyen University of Technology

Upload: trandieu

Post on 01-Mar-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

DCE

8051 I/O and 8051 Interrupts

Microcontroller

Chapter 7

Ngo Nhu Khoa

Department of Computer Engineering

ThaiNguyen University of Technology

Page 2: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 2 DCE

Giao tiếp vào/ra 8051 với– Mạch hiển thị bằng LED theo cơ chế quét

– Mạch hiển thị LCD

– Bàn phím

Các ngắt của 8051– IVT, ISR

– Cho phép ngắt và ưu tiên ngắt

– Các ngắt ngoài

Những vấn đề chính

Page 3: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 3 DCE

1. Hiển thị bằng quét các LED 7 đoạnĐặc trưng của hiển thị LED

–power-hungry (10ma per LED)

–Pin-hungry (8 pins per 7-seg display)

Cơ chế quét trong hiển thị– Chỉ 1 ma trận LED 7 đoạn đượckích hoạt tại 1 thời điểm

– Các đầu vào a-h được nối táchbiệt với nhau

Tổng số các chân cần có là:– 8 + số ký tự (số ma trận)

– 8 + 4 cho ví dụ ở hình bên

Page 4: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 4 DCE

1. Hiển thị bằng quét các LED 7 đoạn …Giải thuật để hiển thị 1 giá trị có 4 ký tự.Tần số quét phải đủ lớnđể tránh hiện tượngnháy đối với thị giác– Tối thiểu là 30HZ– Thời gian sáng của mỗi ký

tự là 1/30 seconds– Giá trị tần số này càng lớn

càng làm giảm độ nhấpnháy (60Hz)

start: disable [D3:D0]again: enable D3[a:h] pattern for Digit3delaydisable D3. Enable D2[a:h] pattern for Digit2delaydisable D2. Enable D1[a:h] pattern for Digit1delaydisable D1. Enable D0[a:h] pattern for Digit0delaydisable D0Goto again

Page 5: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 5 DCE

2. Giao tiếp với bàn phím16 phím được sắp xếp thành 1 ma trận 4x4Giải thuật:– Đưa ra mức “0” trên 1 hàng– Đọc tất cả các cột– Nếu 1 phím nào đó được bấm,

thì cột của nó sẽbằng “0”, nếu không bấm thì là 1

– Duy trì vòng quét 1 cách liên tục ở các hàng kế tiếp

Ví dụ:– Phím 4 được bấm

R1 0, C1:C4 = 1111R2 0, C1:C4 = 0111

– Phím 2 được bấmR1 0, C1:C4 = 1101

Page 6: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 6 DCE

LCDs rẻ và là cách dễ thực hiện đối với mục đích hiển thị các ký tự trong các hệ thống nhúng

– Có nhiều cấu hình khác nhau (1x20 đến 8x80), giá tối thiểu khoảng $5

– Các LCDs có khả năng đồ hoạ cũng khá phổ biến

Các LCDs thông minh có sẵn các bộ giải mã ASCII, bộ tạo ký tự và mạch điều khiển LCD

Một số còn có khả năng tạo ký tự theo yêu cầu cá nhân– Người dùng định nghĩa ký tự trong RAM

– Chương trình RAM này chứa các mẫu ký tự

– Sau đó nó được sử dụng như các ký tự ASCII chuẩn

– Thường MSB quyết định việc hiển thị giữa bộ ký tự chuẩn hay bộ ký tự cá nhân hoá

3. Giao tiếp với LCD

Page 7: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 7 DCE

Giao tiếp với LCD loại ký tựChân ra– 8 data pins D7:D0– RS: Data or Command Select– RW: Read or Write– E: Enable (Latch data)– Vee : contrast control

RS=0 Command,RS=1 DataRW=0 WriteRW=1 ReadE=1 Enable (H-L pulse)LCD Command Codes– Mfrs. Data sheet– Clear screen, move cursor,– shift display

Page 8: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 8 DCE

Giải thuật điều khiển LCD loại ký tựAlgorithmmov A, commandcall cmddelaymov A, another_cmdcall cmddelaymov A, #’A’call datadelaymov A, #’B’call datadelay….

Command and Data Write Routinescmd: mov P1, A;A has the cmd word

clr P3.3 ;RS=0 for cmdclr P3.4 ;RW=0 for writesetb P3.5 ;H->L pulse on Eclr P3.5ret

data: mov P1, A ;A is ascii datasetb P3.3 ;RS=1 dataclr P3.4 ;RW=0 for writesetb P3.5 ;H->L pulse on Eclr P3.5ret

Page 9: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 9 DCE

Kiểm tra trạng thái bận: Sau 1 lệnh đọc từ LCD, bit D7 sẽ chứa cờ báo bận. Kiểm tra bit này trước khi gửi thêm 1 lệnh mới đến LCD, hay sử dụng 1 khoảng trễ đủ lớn.

ready: setb P1.7 ;D7 as inputclr P3.3 ;RS=0 cmdsetb P3.4 ;RW=1 for read

again: setb P3.5 ;H->L pulse on Eclr P3.5jb P1.7, againret

Giải thuật điều khiển LCD loại ký tự

Page 10: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 10 DCE

Ngắt là gì ?

– Một cách để dừng vi xử lý khỏi bất kỳ công việc gì mà nó đang thực hiện và buộc nó làm 1 việc khác

Tại sao và ở những ứng dụng nào cần đến ngắt?– Phục vụ cho nhiều thiết bị giao tiếp

– Các hệ thống đa nhiệm

Các ngắt trong 8051

– 2 ngắt ngoài, hai ngắt cho bộ định thời và 1 ngắt cho cổng nối tiếp

4. Các ngắt của 8051

Page 11: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 11 DCE

Hỏi vòng - Polling:– CPU giám sát tất cả các thiết bị được phục vụ 1 cách liên tục,

chờ đợi 1 “cờ hiệu yêu cầu được phục vụ - service request flag”

– Bất cứ khi nào nó thấy 1 yêu cầu, nó sẽ phục vụ thiết bị đó và sau đó tiếp tục duy trì việc hỏi vòng

– CPU luôn “bận - busy” với việc hỏi vòng, với vòng lặp để thực hiện việc “có yêu cầu nào không nhỉ”

Ngắt - Interrupts– Nếu và khi 1 thiết bị sẵn sàng và cần được chú ý, nó sẽ báo

cho CPU biết– CPU ngừng bất kỳ việc gì mà nó đang thi hành và phục vụ thiết

bị và sau đó trở lại công việc trước đó của mình.– CPU luôn “rỗi - free”, khi nó không phục vụ ngắt

Hỏi vòng và ngắt

Page 12: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 12 DCE

CPUs có 1 số lượng ngắt là cố định

Mỗi ngắt phải được liên kết với 1 đoạn mã, được gọi là “Interrupt Service Routine -ISR”.

– Nếu CPU nhận được ngắt-x, thì ISR-x được thi hành

Kiến trúc CPU định nghĩa 1 vùng riêng biệt “code address” cho mỗi ISR, là nơi mà chúng được lưu giữ,“Interrupt vectorTable (IVT)”

ISRs cơ bản là “subroutines”, nhưng chúng phải được kết thúc với lệnh RETI, lệnh thay cho RET

Khi 1 ngắt xảy ra, CPU sẽ lấy mã ISR của nó từ IVT và cho thi hành.

Thường trình phục vụ ngắt

Page 13: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 13 DCE

1. CPU kết thúc lệnh nó đang thi hành và lưu con trỏ lệnh PC vào ngăn xếp

2. CPU lưu trạng thái hiện thời của tất cả các ngắt trong3. Lấy địa chỉ của ISR cho ngắt từ IVT và nhảy đến địa

chỉ đó4. Thực hiện ISR đến khi nó nhận được lệnh RETI5. Với lệnh RETI, CPU lấy ra từ ngăn xếp nội dung của

PC trước đó và tiếp tục với nơi nó đã đang thực hiện trước khi ngắt xảy ra

Sự thi hành ngắt

Page 14: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 14 DCE

Nhà cung cấp đảm bảo 8051 có 6 ngắt cứng. Một trong chúng là reset. Do đó, thực tế 8051 chỉ có 5 ngắt cứng. Tuy nhiên, các dòng khác nhau có thể có số lượng ngắt khác nhau.Hai ngắt ngoài – INT0 và INT1, hai ngắt thời gian –TF0 và TF1 và một ngắt của cổng nối tiếp – S0Các ngắt có thể được kích hoạt hay loại bỏ 1 cách độc lập. Điều này được thực hiện trong thanh ghi IE(Interrupt Enable Register)Các ngắt ngoài (INT0 và INT1) có thể được cấu hình để được kích hoạt theo mức hay theo sườn.

Các ngắt của 8051

Page 15: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 15 DCE

Bảng véc tơ ngắt - IVT của 8051Mỗi ngắt có 8 bytes cho ISR của nó.

Nếu ISR lớn hơn 8bytes, thì phải dngf 1 lệnh ljmp

9

P3.2

P3.3

0000H

0003H

000BH

0013H

001BH

0023H

Reset

INT0

TF0

INT1

TF1

S0

PinROM LocationInterruptORG 0rom_start: LJMP main_codeORG 13Hint1_vec: LJMP int1_isrORG 30Hmain_code: ;bla bla; ….int1_isr: ;bla bla

Page 16: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 16 DCE

Thanh ghi IEEA = 0, vô hiệu hoá tất cả các ngắt

Các bit khác, nếu lập bằng 1, có ý nghĩa là cho phép một ngắt tương ứng, nếu lập bằng 0 là vô hiệu hoá nó.

EX0 = enable INT0

ET0 = enable Timer0

EX1 = enable INT1

ET1 = enable Timer1

ES = enable serial port interrupt

ET2 = (for 8052 clones only) enable Timer2

EX0ET0EX1ET1ESET2--EA

Page 17: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 17 DCE

Chân INT1 được nối với 1 SW và ở trạng thái thường cao. Khi nó xuống mức thấp, 1 LED phải được bật. LED được nối với chân P1.3 và thường ngắt

Ví dụ đơn giản

org 0Hljmp MAINorg 13H ;INT1 ISR

INT1_ISR: setb P1.3 ;turn on LEDmov r3, #255

BACK: djnz r3, BACK ;keep the led ON for a whileclr P1.3 ;turn OFF the LEDRETI ;use RETI, ***NOT RET***org 30H

MAIN: mov IE, #1000 0100B ;enable INT1, EA=1, EX1=1HERE: sjmp HERE ;stay here until interrupted

end

Page 18: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 18 DCE

INT0 và INT1– Kích hoạt theo mức : 1 mức thấp trên chân này sẽ gây ra ngắt -

Default mode (chế độ ngầm định)– Kích hoạt theo sườn : ứng với sườn xuống (chuyển từ trạng thái cao -

thấp) trên chân này sẽ gây ra ngắtCấu hình trong thanhg ghi TCON– (IT1) TCON.2 = 1 INT1 kích hoạt theo sườn xung– (IT0) TCON.0 = 1 INT0 kích hoạt theo sườn xung

IE0 (TCON.1) và IE1 (TCON.3)– Trong chế độ kích hoạt theo sườn, nếu ngắt INTx xảy ra, CPU sẽ lập

bit IEx, nó chỉ được xoá sau khi 1 lệnh RETI được thi hành– Chặn ngắt trong khi đang phục vụ ngắt

Thiết lập và thời gian duy trì đối với ngắt ngoài tác động theo sườn thường là 1 trong 1 chu kỳ máy

Các ngắt ngoài

Page 19: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 19 DCE

Mức ưu tiên của các ngắtMức ưu tiên ngầm định

– INT0 > TF0 > INT1 > TF1 > S0

ISR của 1 ngắt có thể bị ngắt bởi 1 ngắt có mức ưu tiên cao hơn.

Mức ưu tiên ngầm định có thể bị thay đổi bằng lập trình lại trong thanh ghi IP

Để lập đặt ưu tiên cho 1 ngắt cao hơn, lập bit của nó trong thanhghi IP bằng 1

Nếu nhiều hơn 1 bit trong IP được lập, thứ tự ưu tiên ngầm định được sử dụng cho tất cả các ngắt mà có bit ưu tiên đã lập bằng 1 trong IP

PX0PT0PX1PT1PSPT2----

Page 20: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 20 DCE

Hai bộ định thời 16-bit, T0 và T1

– Bộ định thời – tính toán thời gian, thời điểm …

– Đếm sự kiện – Đếm sự xuất hiện của 1 sự kiện

T0 = TH0:TL0

T1 = TH1:TL1

Chế độ bộ định thời được điều khrn bởi thanh ghiTMOD: Gate, C/T, M0, M1

Các bộ định thời được điều khiển bởi thanh ghi TCON(4 bits cao): TR0, TR1, TF0, TF1

Các bộ định thời trong 8051

Page 21: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 21 DCE

Thanh ghi TMOD

Gate = 0, cổng mềm của bộ định thời (bit TRx trongTCON)Gate = 1, cổng cứng của bộ định thời chân (INTx)C/T = 0 hoạt động định thờiC/T = 1 hoạt động đếmM1:M0 = 00 Mode 0 (13bit timer)M1:M0 = 01 Mode 1 (16 bit timer)M1:M0 = 10 Mode 2 (8 bit timer, with auto-reload)M1:M0 = 11 Mode 3 (split timer)Nguồn đồng hồ cho bộ định thời là sys_clk/12

Page 22: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 22 DCE

Bộ định thời 16 bit

Hoạt động

1. Nạp thanh ghi TMOD để lập chế độ

2. Nạp TLx và THx với các giá trị đếm ban đầu

3. Bắt đầu bộ đếm (setb TRx)

4. Duy trì giám sát cờ TFx (jnb TFx, target)

5. Dừng bộ định thời (clrb TRx) và xoá cờ TFx

6. Trở lại bước 2 để nạp lại

Tính thời gian

Telapsed = (65536 - intial_value)*cycle_time

Thay vì hỏi vòng để chờ cờ TFx, 1 ISR có thể được sử dụng

Bộ định thời – Mode 1

Page 23: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 23 DCE

Tạo ra 1 sóng vuông, với chu kỳ 50% mức đỉnh ởP1.5, với bộ định thời Timer0

Bộ định thời – Mode 1 - Ví dụ

mov TMOD, #01 ;Timer 0, mode 1Here: mov TL0, #0F2H

mov TH0, #0FFH ;Initial Value = FFF2Hcpl P1.5acall delaysjmp Here

Delay: setb TR0 ;start Timer0Again: jnb TF0, Again ;poll for TF0 (timer overflow)

clr TR0 ;stop timerclr TF0 ;clear TF0 flagRET

Timer0sequence

FFF2 TF=0FFF3 TF=0FFF4 TF=0….….FFFE TF=0FFFF TF=1

Page 24: Chap7 8051 I O and 8051 Interrupts - tnu.edu.vn and... · –Mạch hiểnthịbằng LED theo cơchếquét ... bộ tạo ký tự và mạch điều khiển LCD ... –Người

10/1/2005 24 DCE

8051 Timers

Timers and Interrupts

Applications

Next Class