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

ĐIỆN tử VIỄN THÔNG chuong 5 1 microcontroller 8051 khotailieu

88 55 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 88
Dung lượng 0,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các lệnh chương trình con... Block DiagramCPU On-chip RAM On-chip ROM for program code 4 I/O Ports Timer 0 Serial Port OSC TxD RxD P0 P1 P2 P3 Address/Data Counter Inputs... Cấu trú

Trang 1

• Phần 1

Microprocessors course

Phạm Thế Duy

(ptduy@yahoo.com)

Trang 2

Nội dung:

Giới Thiệu Chung

Sơ đồ khối và mô tả các tín hiệu của 8051

Các thanh ghi

Các lệnh cơ bản của 8051.

Cấu trúc ngôn ngữ Assembly và chạy các chương trình 8051.

Bản đồ bộ nhớ của 8051.

Các bit cờ và thanh ghi PSW của 8051.

Các chế độ địa chỉ của 8051.

Các phép tính số học và BCD 16 bit.

Ngăn xếp của 8051

Các lệnh LOOP và JUMP.

Các lệnh chương trình con.

Lập trình cho các cổng vào ra.

Trang 3

Giới thiệu

CPU

Bộ vi xử lý

Port Timer

Serial COM Port Data Bus

Address Bus Hệ thống vi xử lý đa dụng

• CPU thực hiện các lệnh điều khiển hoạt động của toàn bộ hệ thống.

• Không có các bộ nhớ RAM, ROM, và các vào ra trong CPU.

• Bộ nhớ và vào ra là các chip riêng biệt.

• Ví dụ : Intel’s x86, Motorola’s 680x0

Nhiều chip kết nối với nhau

Hệ thống vi xử lý đa dụng

Control Bus

Trang 4

Bộ vi điều khiển

• Là một hệ thống vi xử lý nhỏ được kết nối sẵn trong một IC

• CPU, RAM, ROM, I/O cùng nằm trong một CHIP

• Ví dụ : Motorola’s 6811, Intel’s 8051, Zilog’s Z8 and PIC 16X

Một Chip

Bộ vi điều khiển :

ROM

I/O Port Timer Serial Port CPU

Power Monitoring

Trang 5

Vi Xử Lý

• CPU, ROM, RAM và các

vào ra là các IC riêng

• Người thiết kế có thể quyết

định dung lượng ROM,

RAM và cổng vào ra.

• Giá thành cao.

• Có thể sử dụng cho nhiều

ứng dụng khác nhau.

Vi Điều Khiển

• CPU, RAM, ROM, I/O và

timer nằm trên cùng một chip

• Dung lượng ROM, RAM và số lượng vào ra là cố định

• Thường sử dụng cho các ứng dụng có giá thành hạ, tiêu thụ công suất ít và chiếm diện tích nhỏ

• Thường sử dụng cho các ứng dụng đơn giản

So sánh giữa Vi Xử Lý và Vi Điều Khiển

Trang 6

• Hệ thống nhúng là hệ thống vi xử lý được nhúng vào các ứng dụng cụ thể.

• Một hệ thống nhúng sử dụng các bộ vi xử lý hoặc vi điều khiển nhưng chỉ thực hiện một nhiệm vụ duy nhất

• Trong các hệ thống nhúng thông thường chỉ có một phần mềm ứng dụng duy nhất, thông thường được nạp vào ROM

• Ví dụ : Máy in, bàn phím, card trò chơi

Hệ thống nhúng

Trang 7

1 Phối hợp giữa ba yếu tố: hiệu suất tính toán, hiệu quả thực hiện

nhiệm vụ và giá thành hệ thống

• Tốc độ, dung lượng ROM và RAM, số lượng cổng vào ra, các

loại cổng vào ra, số lượng Timer, kích thước, kiểu chân IC, công suất tiêu thụ

• Dễ dàng nâng cấp khi cần

• Giá thành mỗi IC.

2 Các công cụ phần mềm sẵn có

• Các phần mềm hợp dịch (Assemblers), Các phần mềm gỡi

rối (debuggers), Các phần mềm biên dịch C (C compilers), Phần mềm chạy thử (emulator), Phần mềm mô phỏng

(simulator), hỗ trợ kỹ thuật (technical support)

3 Có sẵn trên thị trường và có nguồn cung cấp tin cậy

Ba yếu tố để lựa chọn một bộ vi điều khiển.

Trang 8

Block Diagram

CPU

On-chip RAM

On-chip ROM for program code

4 I/O Ports

Timer 0

Serial Port OSC

TxD RxD

P0 P1 P2 P3

Address/Data

Counter Inputs

Trang 9

Đặc tính 8051 8052 8031

ROM (program space in bytes) 4K 8K 0K RAM (bytes) 128 256 128

Timers 2 3 2

I/O pins 32 32 32

Serial port 1 1 1

Interrupt sources 6 8 6

So sánh các vi điều khiển trong họ 8051

Trang 11

Các tín hiệu của 8051

PDIP/Cerdip

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (RXD)P3.0 (TXD)P3.1

(T0)P3.4 (T1)P3.5

XTAL2 XTAL1 GND

(INT0)P3.2 (INT1)P3.3

(RD)P3.7 (WR)P3.6

Vcc P0.0(AD0 )P0.1(AD1) P0.2(AD2 )P0.3(AD3) P0.4(AD4) P0.5(AD5) P0.6(AD6) P0.7(AD7) EA/VPP ALE/PROG PSEN

P2.7(A15) P2.6(A14 )P2.5(A13 )P2.4(A12 )P2.3(A11 )P2.2(A10) P2.1(A9) P2.0(A8)

8051 (8031)

Trang 12

Pins of 8051 ( 1/4 )

• Vcc ( pin 40 ):

– Vcc cung cấp nguồn cho hoạt động của 8051

– Nguồn cần cung cấp là +5V

• GND ( pin 20 ): ground

• XTAL1 và XTAL2 ( pins 19,18 ):

– Là 2 chân nối linh kiện cung cấp nguồn Clock bên ngoài.– Cách 1 : sử dụng bộ dao động thạch anh 

– Cách 2 : Sử dụng các bộ tạo dao động TTL 

– Ví dụ 7-1 cho thấy quan hệ giữ XTAL và chu kỳ máy của vi điều khiển 

Trang 13

Pins of 8051 ( 2/4 )

• RST ( pin 9 ): reset

– Là ngõ vào tác động mức cao ( bình thường mức thấp )

• Tín hiệu này cần phải ở mức cao trong ít nhất 2 chu kỳ máy.– Reset khi bật nguồn

• Khi cung cấp xung mức cao tới chân RST, bộ vi điều khiển sẽ được Reset giá trị trong RAM và các thanh ghi sẽ bị mất

• Giá trị của các thanh ghi 8051 sau khi reset 

– Cách 1 : Dùng mạch Power – on reset 

– Way 2 : Dùng mạch Power-on reset và nút reset 

Trang 14

Pins of 8051 ( 3/4 )

• /EA ( pin 31 ): External Access (truy cập bộ nhớ ngoài)

– Các vi điều khiển 8031 và 8032 không có ROM nội

– /EA nối tới GND chỉ thị chương trình được chứa trong bộ nhớ ngoài

– /PSEN & ALE sử dụng cho việc truy cập bộ nhớ ROM ngoài.– Với 8051, /EA thường được nối tới Vcc

– “/” nghĩa là tác động mức thấp

• /PSEN ( pin 29 ): program store enable (Cho phép bộ nhớ chương trình)

– Tín hiệu ra này dùng nối tời chân OE của bộ nhớ ROM

– Xem thêm về giao tiếp bộ nhớ ngoài 14

Trang 15

Pins of 8051 ( 4/4 )

• ALE ( pin 30 ): address latch enable (cho phép cài địa chỉ)

– Là tín hiệu ra tác động mức cao

– Port 0 của 8051 sử dụng cho cả dữ liệu và địa chỉ

– ALE sử dụng để de-multiplexing địa chỉ và dữ liệu bằng cách nối tới chân G của bộ cài (ví dụ 74LS373)

• Các chân vào ra song song

– Có 4 cổng song song P0, P1, P2, và P3

– Mỗi cổng có 8 chân

– Tất cả các chân vào ra song song đều hai chiều

Trang 16

Hình 7-2 (a) Nối thạch anh cho 8051

• Sử dụng bộ dao động thạnh anh.

• Có thể quan sát được dao động trên chân XTAL2.

Trang 17

Hình 7-2 (b) Sử dụng nguồn tạo dao động bên ngoài

N C

EXTERNAL OSCILLATOR SIGNAL

XTAL2

XTAL1 GND

• Sử dụng bộ tạo dao động TTL

• XTAL2 bỏ trống.

Trang 19

Giá trị các thanh ghi 8051 sau khi RESET:

0000 DPTR

0007 SP

0000 PSW

0000 B

0000 ACC

0000 PC

Giá trị sau Reset Các thanh ghi

Tất cả các ô nhớ RAM bằng 0

Trang 20

Hình 7-3 (a) Mạch Power-On RESET

30 pF

30 pF 8.2 K

X2 RST

31 19

18 9

Trang 21

Hình 7-3 (b) Power-On RESET có nút Reset

EA/VPP X1

X2 RST

Trang 22

Tín hiệu các cổng song song

• 8051 có 4 cổng vào ra song song

• Ví dụ : P0.0 là bit 0 ( LSB ) của P0

• Ví dụ : P0.7 là bit 7 ( MSB ) của P0

• 8 bits tạo thành 1 byte

• Mỗi cổng có thể sử dụng làm ngõ ra hoặc vào (bi-direction)

Trang 23

Các thanh ghi

Các thanh ghi 16 bit của 8051

Các thanh ghi 8 bit của

8051

Trang 24

Một số lệnh cơ bản của 8051

MOV A,#72H ;A=72H

MOV A,#72H ≠ MOV A,72H

Sau lệnh “MOV A,72H ” nội dung ô nhớ 72 của RAM sẽ chép vào thanh chứa

MOV AL,72H MOV A,#72H

MOV AL,’r’ MOV A,#’r’

Trang 25

ADD A, Source ;A=A+SOURCE

ADD A,#6 ;A=A+6

ADD A,R6 ;A=A+R6

ADD A,6 ;A=A+[6] or A=A+R6

ADD A,0F3H ;A=A+[0F3H]

Trang 26

SETB bit ; bit=1

SETB P0.0 ;bit 0 của P0 =1

SETB P3.7 ;bit 7 của P3 =1

SETB ACC.2 ;bit 2 của ACCUMULATOR =1

SETB 05 ;lập bit D5 của RAM tại địa chỉ 20h

Trang 27

Tuesday, August 27, 20

8051

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.2 P1.0

Trang 28

SUBB A,source ;A=A-source-CY

SETB C ;CY=1

SUBB A,R5 ;A=A-R5-1

ADC A,source ;A=A+source+CY

ADC A,R5 ;A=A+R5+1

Trang 29

DEC byte ;byte=byte-1

NOP & RET & RETI

Giống như các lệnh 8086.

CALL

Trang 31

Cấu trúc chương trình hợp ngữ

và quá trình dịch hợp ngữ

ASSEMBLER PROGRAM

LINKER PROGRAM

OH PROGRAM

Trang 32

Bản đồ bộ nhớ của 8051

• Bản đồ bộ nhớ ROM

Trang 33

• Định vị không gian bộ nhớ RAM của 8051

Trang 34

Các bit cờ trong thanh ghi PSW

Parity flag Set/Reset odd/even parity

RS1 RS0 Register Bank Địa chỉ

Trang 35

Các lệnh ảnh hưởng tới các cờ trạng thái:

Note: X can be 0 or 1

Trang 36

9C 10011100 +64 +01100100 -

100 00000000 CY=1 AC=1 P=0

Trang 37

Các chế độ địa chỉ

• Immediate (Tức thời)

• Register (Thanh ghi)

• Direct (Trực tiếp)

• Register Indirect (Gián tiếp thanh ghi)

• Indexed (Chỉ số)

Trang 38

Immediate Addressing Mode

Trang 39

Register Addressing Mode

Trang 40

Direct Addressing Mode

Mặc dù tất cả 128 byte RAM đều có thể truy cập bằng chế độ địa chỉ trực tiếp, Tuy nhiên, để tránh nhầm lẫn chế độ địa chỉ này chỉ sử dụng cho các địa chỉ 30 – 7FH.

Các thanh ghi SFR và địa chỉ của chúng.

MOV 0F0H, R2; ≡ MOV B, R2

Bit Addressable Page 359,360

Trang 41

Register Indirect Addressing Mode

• Trong chế độ này thanh ghi được sử dụng như một con trỏ dữ liệu

MOV A,@Ri ; chép nội dung bộ nhớ RAM có địa chỉ chứa trong Ri vào A

MOV R0,#37h ; Con trỏ nguồn

MOV R1,#59h ; con trỏ đích

MOV R2,#10 ; Số đếm

Trang 42

Indexed Addressing Mode And On-Chip

ROM Access

• Chế độ địa chỉ này được sử dụng để truy cập một

phần tử dữ liệu trong bảng dữ liệu chứa trong bộ nhớ chương trình (ROM) của 8051.

Trang 43

Chú ý: Ký tự kết thúc “NULL” = 0 được sử dụng để xác định kết thúc chuỗi dữ liệu cần chuyển, lệnh JZ sử dụng điều kiện kết thúc chuỗi để kết thúc vòng lặp.

Trang 44

MOV P1,A L01:

MOV A,P1 MOVC A,@A+DPTR

Trang 45

Các phép tính số học, BCD và các phép tính 16 bit của 8051

Bài tập:

 Viết chương trình cộng n số 16 bit Với n được lấy từ P1 Gửi kết quả tới LCD.

a) Theo số Hex

b) Theo số thập phân.

 Viết chương trình trừ giá trị P1 đi giá trị P0, giử kết quả tới LCD

 (Giả sử lệnh “ACAL DISP” hiển thị giá trị trong

A lên LCD ).

Trang 46

MUL & DIV

Trang 47

Ngăn xếp của 8051

• Thanh ghi địa chỉ sử

dụng để truy cập ngăn

xếp được gọi là con trỏ

ngăn xếp SP (stack

pointer).

• Thanh ghi SP của 8051

có 8 bit, nghĩa là giá trị

của nó từ 00 tới FFH

Khi bật nguồn SP = 7.

7FH

30H 2FH

20H 1FH

17H 10H 0FH 07H 08H 18H

( Stack )

Register

Bank 1 Register Bank 2 Register Bank 3 Bit-Addressable RAM Scratch pad RAM

Trang 48

Ví dụ:

MOV R6,#25H MOV R1,#12H MOV R4,#0F3H PUSH 6

PUSH 1 PUSH 4

Trang 49

Các lệnh LOOP và JUMP

AGAIN: ADD A,#03

DJNZ R2,AGAIN ;lặp lại cho đến khi R2=0 (10 lần)

MOV R5,A

Trang 50

• Các lệnh nhảy khác

Trang 51

SJMP và LJMP:

LJMP(long jump) -Nhảy xa

LJMP là một lệnh nhảy không điều kiện Nó là lệnh nhảy 3 byte, byte đầu là opcode, hai byte kế tiếp là địa chỉ 16 bit của vị trí mà điều khiển chương trình sẽ chuyển tới sau lệnh nhảy Hai byte này cho phép điều khiển chương trình được chuyển trong khoảng từ 0000 tới FFFFH.

SJMP(short jump) – Nhảy gần

Đây là một lệnh hai byte Byte đầu là opcode và byte thứ 2 là khoảng cách từ lệnh nhảy tới vị trí cần chuyển tới Byte

khoảng các có giá trị từ 00-FFH, nên vị trí cần chuyển tới sẽ cách lệnh nhảy trong khoảng -128 to +127 bytes.

Trang 52

CJNE , JNC

Bài tập:

Viết chương trình so sánh giá trị trong hai thanh ghi R0,R1.

Nếu R0>R1 thì gởi 1 tới P2,

Nếu R0<R1 thì gởi 0FFh tới P2,

else (R0=R1) gởi 0 tới P2.

Trang 53

Các lệnh CALL

Các lệnh CALL là các lệnh điều khiển chương trình sử dụng cho việc gọi chương trình con.

• LCALL(long call)- Gọi xa.

Đây là một lệnh 3-byte, byte đầu tiên là

opcode, 2 byte còn lại là địa chỉ của chương trình con cần chuyển tới Do đó lệnh LCALL có thể gọi chương trình con ở bất cứ vị trí nào trong vùng nhớ 64KB của 8051.

Trang 54

• ACALL (absolute call) – Gọi tuyệt

đối.

ACALL là một lệnh 2 byte trong đó 11 bit sử dụng chỉ thị địa chỉ đích cần chuyển tới Như vậy khác với lệnh LCALL, lệnh

ACALL chỉ chuyển tới được vị trí nằm

trong khoảng 2KB.

Trang 55

Lập trình cổng vào ra song song

– P1 sử dụng là cổng ra (CPU ghi dữ liệu tới các

chân bên ngoài)

– P1 sử dụng làm cổng vào (CPU đọc dữ liệu từ các chân bên ngoài vào)

Trang 56

Cấu tạo 1 chân của cổng 1

8051 IC

D Q Clk Q

Vcc

Load(L1) Read latch

TB1

TB2

P0.x

Trang 57

Hardware Structure of I/O Pin

• Mỗi chân của cổng vào ra song song bao gồm:

– Bên trong CPU : Nối tới BUS dữ liệu của CPU.

– Một bộ cài D chứa giá trị của chân.

• Bộ cài được điều khiển bằng “Write to latch”

– Write to latch = 1 : dữ liệu được ghi tới bộ cài – 2 Hai bộ đệm 3 trạng thái : 

• TB1: điều khiển bằng “Read pin”

– Read pin = 1 : đọc giá trị đang có ở chân vào ra.

• TB2: điều khiển bằng “Read latch”

– Read latch = 1 : Đọc trạng thái cổng cài bên trong – Một transistor M1 điều khiển bằng gate.

• Gate=0: Transistor không dẫn.

• Gate=1: Transistor dẫn.

Trang 58

Tri-state Buffer

Tri-state control (active high)

Highimpedance (open-circuit)

H H

Trang 59

Ghi “1” Tới chân ra P1.X

D Q Clk Q

Vcc

Load(L1) Read latch

Trang 60

Ghi “0” tới chân ra P1.X

D Q Clk Q

Vcc

Load(L1) Read latch

8051 IC

2 output pin is ground

1 write a 0 to the pin

0

TB1 TB2

Trang 61

Sử dụng Port 1 làm ngõ ra ( Ghi dữ

liệu tới Port )

• Gửi dữ liệu tới Port 1 :

MOV A,#55H ;01010101B BACK: MOV P1,A

ACALL DELAY CPL A

Trang 62

Đọc chân ngõ vào và đọc cổng cài

• Khi đọc cổng sẽ có 2 khả năng xảy ra :

– Đọc trạng thái của chân vào ( Giá trị từ chân bên ngoài )

• MOV A, PX

• JNB P2.1, TARGET ; Nhảy nếu P2.1 không set (bằng 0)

• JB P2.1, TARGET ; Nhảy nếu P2.1 =1

• Hình C-11, C-12 – Đọc từ bộ cài bên trong của cổng ra.

Trang 63

Đọc mức cao từ một chân vào

D Q Clk Q

Vcc

Load(L1) Read latch

8051 IC

2 MOV A,P1 external pin=High

1 write a 1 to the pin MOV

Trang 64

Đọc mức thấp từ một chân vào

D Q Clk Q

Vcc

Load(L1) Read latch

8051 IC

2 MOV A,P1 external pin=Low

1 write a 1 to the pin

Trang 65

Khởi động cổng 1 là ngõ vào- đọc dữ

liệu từ cổng

• Để khởi động P1 là ngõ vào cần phải lập trình ghi bit 1 tới tất cả các bit.

MOV A,#0FFH ;A=11111111B MOV P1,A ;Khởi động cổng 1 là ngõ vào BACK: MOV A,P1 ;lấy dữ liệu từ cổng 1

MOV P2,A ;gởi dữ liệu tới P2 SJMP BACK

– Các cổng khác cũng được khởi động tương tư.

Trang 66

Các lệnh đọc từ chân bên ngoài cổng

MOV A,PX MOV A,P2 Bring into A the data at P2 pins

JNB PX.Y, JNB P2.1,TARGET Jump if pin P2.1 is low

JB PX.Y, JB P1.3,TARGET Jump if pin P1.3 is high

MOV C,PX.Y MOV C,P2.4 Copy status of pin P2.4 to CY

Trang 67

Đọc bộ cài của cổng

• Thực hiện logic OR giá trị Port 1 :

2 CPU thực hiện phép toán ORL.

• Dữ liệu đọc từ bộ cài sẽ được OR với giá trị #0F0H

Các bit OR với 1 sẽ bằng 1.

3 Giá trị trong bộ cài sẽ được thay đổi ( modified)

• Bộ cài của P1.7 – P1.4 có giá trị bằng 1.

4 Ghi (Write) kết quả tới chân bên ngoài.

• Các chân bên ngoài P1 (P1.7 – P1.4) có giá trị bằng 1.

Trang 68

Đọc dữ liệu từ bộ cài

D Q Clk Q

Vcc

Load(L1) Read latch

1 Read pin=0 Read latch=1 Write to

latch=0 (Assume P1.X=0 initially)

1

TB1

TB2

3 write result to latch Read

pin=0 Read latch=0

Write to latch=1

1 0

Trang 69

Đặc tính Read-modify-write

• Các lệnh Read-modify-write

– Bảng C-6

• Đặc tính này kết hợp 03 công việc trong cùng một lệnh :

1 CPU đọc dữ liệu từ bộ cài của cổng.

2 CPU thực hiện lệnh với dữ liệu vừa đọc.

3 Thay đổi dữ liệu của bộ cài.

4 Ghi tới chân bên ngoài.

Ngày đăng: 12/11/2019, 13:33

w