1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Cấu trúc phần cứng hệ vi điều khiển

133 523 7

Đ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 133
Dung lượng 4,49 MB

Nội dung

3.3.2 Các tín hiệu điều khiển 1/2 • PSEN Program Store Enable: – Là tín hiệu để cho phép đọc bộ nhớ chương trình mở rộng bộ nhớ ngoài; – Khi 89C51 đọc mã lệnh từ bộ nhớ chương trình m

Trang 2

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51 3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 3

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51 3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 4

3.1 Các kiến trúc vi điều khiển

Trang 5

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51

3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 6

3.2 Họ vi điều khiển MCS51

• 8051 là vi điều khiển đầu tiên của họ VĐK MCS51 được Intel sản xuất vào năm 1980 Một số tính năng cơ bản của họ

MCS51 kinh điển:

– CPU 8 bit được thiết kế tối ưu cho các ứng dụng điều khiển

– Có khả năng xử l{ các bit logic

– Không gian bộ nhớ chương trình 64KB

– Không gian bộ nhớ dữ liệu 64KB

– Tích hợp 4KB bộ nhớ chương trình, 128 byte RAM trên chip

– có 32 đường vào ra 2 chiều có thể định địa chỉ đến từng bit

– Tích hợp 2 timer 16 bit

– Tích hợp UART song công (Universal Asynchronous Receiver

Transmitter)

– Cấu trúc ngắt với 6 nguồn/5 vector ở 2 mức khác nhau

– Tích hợp mạch dao động trên chip

Trang 7

8051

Trang 9

So sánh bộ nhớ một số chip trong họ MCS51:

Trang 10

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51

3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 11

3.3 AT89C52

Trang 12

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51 3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 13

3.3.1 Các cổng vào/ra (I/O port) (1/3)

• Port 0: là port 8bit có 2 chức năng:

– Là I/O đối với các thiết kế cỡ nhỏ (không dùng bộ nhớ mở rộng) – Là byte thấp của Add/Data bus khi thiết kế có sử dụng bộ nhớ

mở rộng

• Port 1: là I/O port 8bit

• Port 2: là port 8bit có 2 chức năng:

– Là I/O port đối với các thiết kế cỡ nhỏ (không dùng bộ nhớ mở

Trang 14

3.3.1 Các cổng vào/ra (I/O port) (2/3)

Trang 15

3.3.1 Các cổng vào/ra (I/O port) (3/3)

• Các chân của P0 không có điện trở treo (internal pull-up), ngoại trừ lúc làm việc như bus dữ liệu/địa chỉ bên ngoài; điện trở treo

có thể được dùng với P0 tùy theo đặc tính của thiết bị phối ghép với cổng;

• Port 0 with Pull-Up Resistors Port 3 Alternate Functions

Trang 16

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51 3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 17

3.3.2 Các tín hiệu điều khiển (1/2)

• PSEN (Program Store Enable):

– Là tín hiệu để cho phép đọc bộ nhớ chương trình mở rộng (bộ nhớ

ngoài);

– Khi 89C51 đọc mã lệnh từ bộ nhớ chương trình mở rộng thì PSEN được

tích cực (mức thấp) 2 lần trong mỗi chu kz máy;

– Khi 89C51 thi hành chương trình trong ROM nội thì PSEN sẽ ở mức cao;

• ALE/PROG (Program Store Enable)

– ALE (Address Latch Enable) là tín hiệu chốt byte thấp của địa chỉ trong

suốt quá trình truy xuất bộ nhớ ngoài;

– Chân này cũng được làm ngõ vào xung lập trình (PROG) cho EPROM;

– Ở chế độ hoạt động bình thường thì xung ALE có tốc độ bằng 1/6 tần số

dao động trên chip và có thể được dùng làm nguồn xung nhịp cho các phần khác của hệ thống;

Trang 18

3.3.2 Các tín hiệu điều khiển (2/2)

• EA (External Access):

– Khi truy xuất ROM nội thì chân /EA phải nối nguồn 5V

– Khi truy xuất ROM ngoài thì /EA nối với GND

• RST (Reset): khi tín hiệu này được đưa lên cao trong ít nhất

2 chu kz máy thì sẽ khởi động lại hệ thống

• XTAL1, XTAL2: là ngõ vào và ngõ ra của bộ dao động tạo xung

nhịp

• Nguồn nuôi: dùng nguồn +5V ở chân 40 và GND ở chân 20

Trang 19

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51 3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 20

3.3.3 Tổ chức bộ nhớ (1/5)

• 89C51 có cả ROM nội và RAM nội, tuy nhiên co thể mở rộng thêm bằng các thiết bị nhớ bên ngoài

• RAM nội gồm:

– RAM lưu trữ đa dụng

– RAM được địa chỉ hóa từng bit

– Các bank thanh ghi

– Các thanh ghi chức năng đặc biệt

Trang 22

3.3.3 Tổ chức bộ nhớ (3/5)

Trang 24

3.3.3 Tổ chức bộ nhớ (5/5)

• Thanh ghi B: dùng cùng với thanh ghi A trong các

phép toán nhân và chia

• Con trỏ dữ liệu DPTR:

– Dùng khi truy xuất bộ nhớ ngoài

– DPTR dùng để xác định địa chỉ của bộ nhớ ngoài cần truy xuất

• Các thanh ghi port:

– P0,P1,P2,P3;

– Các thanh ghi này được địa chỉ hóa đến từng bit

• Thanh ghi định thời gian: là các thanh ghi điều

khiển hoạt động của timer

Trang 25

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51 3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 27

Các cách đánh địa chỉ (1/2)

• Đánh địa chỉ thanh ghi (Rn):

– 98C51 có 8 thanh ghi làm việc được k{ hiệu từ R0-R7

– Trong định địa chỉ thanh ghi, mã lệnh luôn có 3 bit để chị thị một thanh ghi

– Ví dụ: MOV A,R0

• Đánh địa chỉ trực tiếp (direct):

– Lệnh hiện hành sẽ cung cấp địa chỉ tuyệt đối của ô nhớ

sử dụng;

– Lệnh có ít nhất 2byte, trong đó địa chỉ ô nhớ chiếm 1byte – Ví dụ: MOV A,40H

Trang 28

• Đinh địa chỉ tức thời (#data):

– Với lệnh này thì data không phải là địa chỉ mà là dữ liệu thật, dữ liệu 8bit (hằng số)

– Ví dụ: MOV A,#12

– Khi sử dụng con trỏ dữ liệu DPTR thì cần phải có dữ liệu 16bit (#data16); ví dụ MOV DPTR,#8000H

Trang 29

Nhóm lệnh chuyển dữ liệu (1/3)

• Cú pháp: MOV đích,nguồn

• Chuyển dữ liệu trong không gian bộ nhớ nội, hướng

chuyển dữ liệu từ nguồn đến đích

• Ví dụ:

– MOV A,Rn: chuyển nội dung thanh ghi Rn vào A

– MOV A,@Ri: chuyển dữ liệu gián tiếp vào A

– MOV A,direct: chuyển dữ liệu trực tiếp từ ô nhớ vào A – MOV A,#data: chuyển giá trị dữ liệu tức thời vào A

– MOV Rn,A: chuyển nội dung thanh ghi A vào thanh ghi Rn – MOV Rn,#data: chuyển giá trị dữ liệu tức thời vào thanh ghi Rn

– …

Trang 30

Nhóm lệnh chuyển dữ liệu (2/3)

• XCH A,Rn: hoán đổi dữ liệu giữa A và Rn

• XCH A,direct: hoán đổi dữ liệu giữa A và ô nhớ trực

tiếp

• XCH A,@Ri: hoán đổi dữ liệu giữa A và ô nhớ gián tiếp

• MOVX đích,nguồn

– Chuyển dữ liệu giữa RAM nội và RAM bên ngoài

– Hướng chuyển là từ nguồn đến đích

– Địa chỉ của ngoại vi (ô nhớ ngoài) sẽ là nội dung của thanh ghi DPTR

– Khi làm việc với bộ nhớ ngoài có dung lượng thấp

(<256byte) thì chỉ cần 8bit địa chỉ thấp và ta sẽ sử dụng cách định địa chỉ gián tiếp thanh ghi @Ri để chứa địa chỉ 8bit này

Trang 31

Nhóm lệnh chuyển dữ liệu (3/3)

• MOVX @Ri,A: ghi dữ liệu từ A ra ô nhớ ngoài

• MOVX A,@Ri: đọc dữ liệu từ ô nhớ ngoài vào A

• MOVX @DPTR,A: ghi dữ liệu từ A ra ô nhớ ngoài

• MOVX A,@DPTR: đọc dữ liệu từ ô nhớ ngoài về A

• Ví dụ áp dụng:ở trạng thái ban đầu thanh ghi R1 chứa

giá trị 40H, ô nhớ RAM nội ở địa chỉ 40H chứa giá trị

FFH, sau khi thực thi lệnh các thanh ghi và ô nhớ sẽ có giá trị như thế nào ?

Trang 32

Nhóm lệnh số học và luận l{ (1/2)

• ADD, ADDC : lệnh cộng dữ liệu

– Lệnh cộng dữ liệu sẽ lưu kết quả tính toán vào thanh ghi A – Lệnh cộng sẽ tác động đến cờ CY trong thanh ghi PSW

– Lệnh ADDC sẽ cộng cả nội dung của cờ nhớ CY

– Ví dụ: A chứa giá trị 12H, sau khi thực hiện lệnh

ADD A,#36H thì giá trị của A là 48H và bit cờ CY=0

• SUBB : lệnh trừ dữ liệu

– Lệnh trừ sẽ lưu kết quả tính toán vào thanh ghi A

– Lệnh tác động đến cờ trong thanh ghi PSW

– Để kết quả tính chính xác, trước khi dùng lệnh trừ ta nên xóa cờ CY

– Ví dụ: lệnh SUBB A,R1: nội dung A – nội dung R1 – nội

dung bit cờ CY, kết quả cất trở lại thanh ghi A

Trang 33

Nhóm lệnh số học và luận l{ (2/2)

• INC : lệnh tăng 1 đơn vị (không tác động đến CY)

• DEC : giảm đi 1 đơn vị

• MUL A,B : nhân nội dung A với nội dung B, byte thấp của kết quả cất vào A, byte cao của kết quả cất vào B

• DIV A,B : chia nội dung của A cho nội dung B, phần

nguyên kết quả cất vào A, phần dư cất vào B

• Các lệnh luận l{:

– ANL: lệnh AND

– ORL: lệnh OR

– XRL: lệnh XOR

– RL A: quay trái thanh ghi A đi 1bit (RR A: quay phải 1 bit)

– SWAP A: hoán đổi nội dung 4bit cao và 4 bit thấp của

thanh ghi A (tương đương quay 4 lần)

Trang 34

Nhóm lệnh thực hiện trên bit

• CLR C: xóa cờ carry (CY) về 0

• CLR bit: xóa bit về 0

• SETB C, SETB bit : đặt bit cờ/bit lên 1

• CPL C, CPL bit : lấy bù bit cờ/ bit

• …

Trang 35

Nhóm các lệnh điều khiển

• Lệnh gọi chương trình con:

– ACALL: gọi ctc dùng địa chỉ tuyệt đối

– LCALL: gọi ctc dùng địa chỉ dài

• Lênh thoát:

– RET: trở về CTC từ ctc

– RETI: trở về CTC từ ctc phục vụ ngắt

• Lệnh nhảy không điều kiện:

– AJMP/LJMP/SJMP (lệnh nhảy tuyệt đối/dài/ngắn)

• Lệnh nhảy có điều kiện

– JZ/JNZ (nhảy nếu A=0/khác 0)

– JC/JNC (nhảy nếu C=1/C=0)

– JB bit/JNB bit: nhảy nếu bit =1/nếu bit=0

• NOP : lệnh k làm gì cả nhưng PC vẫn tăng lên 1

• …

Trang 36

Một số ví dụ áp dụng tập lệnh

• VD1: Hãy cho biết các lệnh dưới đây thực hiện công việc gì ? Giá trị các thanh ghi và ô nhớ sau khi thực hiện xong lệnh:

MOV P1.7,C

Trang 37

Một số ví dụ áp dụng tập lệnh

a) Viết chương trình cho 8 Led sáng

b) Viết chương trình cho 4 led sáng: D1-D4

c) Viết chương trình cho 4 led sáng: D5-D8

Trang 38

Một số ví dụ áp dụng tập lệnh

a) Viết chương trình cho 8 Led sáng

b) Viết chương trình cho 4 led sáng: D1-D4

c) Viết chương trình cho 4 led sáng: D5-D8

Trang 39

Nội dung

3.1 Các kiến trúc vi điều khiển

3.2 Khái quát họ vi điều khiển MCS51 3.3 Cấu trúc AT89C52

3.3.1 Các cổng vào ra (I/O port)

3.3.2 Các tín hiệu điều khiển

Trang 40

Giới thiệu Timer:

• Timer là một chuỗi các Flip-Flop chia đôi tần số mắc nối

tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung

nhịp Xung nhịp được đưa vào Flip-Flop thứ nhất để chia đôi tần số xung nhịp Ngõ ra của Flip-Flop thứ nhất làm

xung nhịp cho Flip-Flop thứ hai (cũng làm việc chia đôi tần số), và v.v …

• Vì mỗi tầng kế tiếp chia đôi cho nên timer có n tầng sẽ cho xung ra có tần số là tần số xung nhịp chia cho 2n Ngõ ra của tầng cuối làm xung nhịp cho Flip-Flop báo tràn của timer (còn gọi là cờ timer TF – Timer Flag);

• Giá trị nhị phân trong các Flip-Flop của timer có thể xem

như số đếm xung nhịp (hoặc các sự kiện) từ khi timer bắt đầu chạy Thí dụ timer 16bit sẽ đếm từ 0000H đến FFFFH,

cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H

Trang 41

Vi dụ Timer 3 bit:

Trang 42

Ứng dụng của Timer:

• Sử dụng timer để: Định khoảng thời gian; Đếm sự kiện;Tạo tốc độ

baud cho cổng nối tiếp có sẵn trong VĐK

• Trong các ứng dụng định khoảng thời gian, thường lập trình cho timer tràn ở một khoảng đều đặn và đặt cờ tràn timer lên

1 cờ được dùng để đồng bộ hóa hoặc đo thời gian trôi qua giữa hai sự kiện (ví dụ đo độ rộng xung);

• Đếm sự kiện được dùng để xác định số lần xảy ra của một sự

kiện hơn là đo khoảng thời gian trôi qua giữa các sự kiện Một

“sự kiện” là bất cứ tác động bên ngoài nào có thể cung cấp

một chuyển tiếp 1 sang 0 từ chân T0,T1,T2 (ở P3, P2) của

89c52

• Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho cổng nối tiếp có sẵn trong VĐK

Trang 43

Các thanh ghi chức năng đặc biệt (SFR) của timer

Timer được truy cập khi sử dụng các thanh ghi chức năng đặc biệt: TMOD, TCON, TH0, TL0, TH1, TL1

Trang 44

Thanh ghi TMOD (Timer Mode Register) (1/2)

• Thanh ghi TMOD dùng để xác định chế độ làm

việc cho Timer 0 và Timer 1

• TMOD không được địa chỉ hóa từng bit

• Nạp bằng phần mềm khi bắt đầu chương trình

– Gate: bit mở cổng cho Timer:

• Khi GATE=1 : Timer/Counterx chỉ hoạt động khi chân INTx ở

mức 1 (phần cứng) và bit TRx=1 (trong thanh ghi TCON)

Trang 45

Thanh ghi TMOD (Timer Mode Register) (2/2)

• Khi GATE=0: Timerx hoạt động khi bit TRx=1 (ghi chú: x=0,1; TRx: TR0 hoặc TR1; Timerx: Timer0 hoặc Timer1)

– C/T : Bit chọn Timer hay Counter

C/T =1: chọn Counter (đếm sự kiện)

C/T = 0 chọn Timer (định khoảng thời gian)

– M0,M1 : các bit chọn chế độ

Trang 46

Thanh ghi TMOD (Timer Mode Register)

Trang 47

Thanh ghi TMOD (Timer Mode Register)

Trang 48

Thanh ghi điều khiển Timer (TCON- Timer

Control Register)

• Thanh ghi TCON chứa các bit trạng thái và điều khiển cho

Timer 0 và Timer 1

• Được địa chỉ hóa đến từng bit

• TFx: cờ báo tràn timer; cờ này được đặt bởi phần cứng khi

tràn timer, được xóa bằng phần mềm

VD: timer 16bit sẽ đếm lên từ 0000H đến FFFFH, tràn timer xảy ra khi số

đếm tràn từ FFFFH sang 0000H

• TRx: bit điều khiển timer chạy, được đặt/xóa bằng phần mềm

để điều khiển timer chạy/dừng (TRx=1: cho phép Timer chạy; TRx=0: dừng Timer)

Trang 49

Thanh ghi điều khiển Timer (TCON- Timer

Control Register)

Trang 50

Các chế độ làm việc của timer

• AT89C52 có 3 timer, mỗi timer có 4 chế độ làm việc, bao gồm:

– Chế độ 0 (mode 0): chế độ định thời 13bit

– Chế độ 1 (mode 1): chế độ định thời 16bit

– Chế độ 2 (mode 2): timer 8bit tự động nạp lại giá trị ban đầu

– Chế độ 3 (mode 3): chế độ tách timer

Trang 51

Chế độ 0 (mode 0): chế độ định thời 13bit

• Chế độ Timer 13bit, tương thích 8048

• Trong chế độ này không sử dụng 3bit cao của thanh ghi TLx, chỉ sử dụng THx và 5bit thấp của TLx

• Giá trị đếm được: 0 đến (213-1)Ttimer (từ 0 đến 8191Ttimer)

Trang 52

Chế độ 1 (mode 1): chế độ định thời 16bit

• Trong chế độ này sử dụng cả 2 thanh ghi THx và TLx

• Cờ báo tràn là bit TFx trong thanh ghi TCON, được đọc hoặc ghi bằng phần mềm

• Bit có trọng số cao (MSB) trong các thanh ghi timer là bit 7 của THx; Bit có trọng số thấp nhất (LSB) là bit 0

Trang 53

Lập trình trong chế độ 1

Để tạo ra một độ trễ thời gian dùng chế độ 1 của Timer:

1. Nạp giá trị TMOD cho thanh ghi báo độ định thời nào (Timer0 hay

Timer1) được sử dụng và chế độ nào được chọn;

2. Nạp các thanh ghi TL và TH với các giá trị đếm ban đầu;

3 Khởi động bộ định thời

4 Duy trì kiểm tra cờ bộ định thời TF bằng một vòng lặp để xem nó

được bật lên 1 không Thoát vòng lặp khi TF được lên cao;

5 Dừng bộ định thời;

6 Xoá cờ TF cho vòng kế tiếp;

7 Quay trở lại bước 2 để nạp lại TL và TH

Trang 54

trong đó YYXX là các giá trị

khởi tạo của TH, TL tương

ứng Lưu ý rằng các giá trị

YYXX là theo số Hex

Chuyển đổi các giá trị YYXX của TH, TL về số thập phân

để nhận một số thập phân NNNNN sau đó lấy (65536 – NNNNN)*12/f (ms)

Trang 55

Chế độ 2 (mode 2): timer 8bit tự động

nạp lại giá trị ban đầu

• Trong chế độ thanh ghi TLx hoạt động như một timer 8bit, trong khi đó thanh ghi THx vẫn giữ nguyên giá trị được nạp

• Khi số đếm tràn từ FFH sang 00H thì cờ tràn timer

được đặt lên 1 đồng thời giá trị trong THx được nạp lại vào TLx và chu trình đếm mới được bắt đầu

• Chế độ này rất thông dụng vì sự tràn timer xảy ra trong những khoảng thời gian nhất định và tuần hoàn một

khi đã khởi động bộ đếm

• Giá trị đếm được là từ 0 đến (28-1)Ttimer, nghĩa là từ 0 đến 255Ttimer

Trang 56

Chế độ 3 (mode 3): chế độ tách timer

• Chế độ tách timer Timer 0 được tách thành 2 timer 8bit: TH0 và TL0 Timer 1 dừng

• TL0 có cờ báo tràn là TF0; TH0 có cờ báo tràn là TF1

Trang 57

Nguồn tạo xung nhịp cho Timer:

Có 2 nguồn xung nhịp có thể được sử dụng và nó được chọn bằng bit C/T trong thanh ghi TMOD khi khởi động Timer;

• Xung nhịp định khoảng thời gian:

– Khi C/T=0: timer dùng để định khoảng thời gian

– Nguồn xung nhịp được lấy từ bộ dao động trên chip đưa qua 1 bộ

chia 12 để giảm đến tần số thích hợp cho phần lớn các ứng dụng

– f timer =f OSC /12

• Xung nhịp đếm sự kiện:

– Khi C/T=1: dùng timer đếm sự kiện

– Xung nhịp được lấy từ nguồn bên ngoài thông qua ngõ T0 hoặc T1,

nguồn bên ngoài sẽ cung cấp một xung khi xảy ra một sự kiện

– Giá trị trong các thanh ghi timer (THx và TLx) sẽ tăng lên 1 khi có 1 sự

kiện xảy ra

– Số sự kiện được xác định bằng phần mềm thông qua đọc các thanh

ghi timer

Ngày đăng: 22/04/2014, 12:45

HÌNH ẢNH LIÊN QUAN

1. Sơ đồ đã cho: - Cấu trúc phần cứng hệ vi điều khiển
1. Sơ đồ đã cho: (Trang 129)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w