1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án kỹ thuật điện điện tử Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi LCD, ADC0809, RTC DS12887 và bàn phím số HEX.

70 967 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 70
Dung lượng 4,82 MB

Nội dung

Việc ghi đến một chân của port sẽ nạp dữ liệu bộ chốt điều khiển của port, ngõ ra Q của bộ chốt điều khiển của một transistor trờng và transistor này nối với chân của port.. các thanh gh

Trang 1

Bộ giáo dục và đào tạo cộng Hòa x hội chủ nghĩa việt namã hội chủ nghĩa việt nam

Nhiệm vụ

thiết kế tốt nghiệp

Họ và tên Ngô Quốc Toàn

Ngành Điều khiển Tự động

1 Đề tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với

các thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím số HEX

2 Các số liệu ban đầu:

………

………

………

………

………

………

3 Nội dung các phần thuyết minh và tính toán: ………

………

………

………

………

………

………

4 Các bản vẽ đồ thị (ghi rõ các loại bản vẽ và kích thớc các bản vẽ): ………

………

………

………

………

………

………

………

Trang 2

5 Cán bộ hớng dẫn: ………… … Vũ Vân Hà … ………

6 Ngày giao nhiệm vụ thiết kế:……… ………

7 Ngày hoàn thành nhiệm vụ: ………

Ngày tháng 04 năm 2006 Chủ nhiệm bộ môn cán bộ hớng dẫn (Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên) Sinh viên đã hoàn thành Ngày tháng 04 năm 2006 (Ký, ghi rõ họ tên) Mục Lục Lời cảm ơn 7

Mở đầu 8

Phần I: Tổng quan về VđK 8051 và Các thiết bị ngoại vi 9

Chơng I: Vi điều khiển 8051 9

I Khái niệm chung về Vi điều khiển 9

I.1 Sự ra đời 9

I.2 Điểm khác biệt giữa VĐK và VXL dùng chung 9

I.3 Tiêu chuẩn lựa chọn 1 bộ vi điều khiển 10

II Vi điều khiển 8051 10

II.1 Sơ đồ khối của 8051 10

II.2 Sơ đồ và chức năng các chân của 8051 11

II.2.1 Sơ đồ các chân 11

Trang 3

II.2.2 Chức năng của các chân 11

II.2.3 Cấu trúc của các cổng xuất/nhập 14

II.3 Tổ chức bộ nhớ 8051 14

II.3.1 Vùng RAM đa mục đích 15

II.3.2 Vùng RAM định địa chỉ bit 15

II.3.3 Các dãy thanh ghi 15

II.3.4 Các thanh ghi chức năng đặc biệt 15

II.3.4.1 Từ trạng thái chơng trình PSW 15

II.3.4.2 Thanh ghi B 16

II.3.4.3 Con trỏ stack 16

II.3.4.4 Con trỏ dữ liệu 17

II.3.4.5 Các thanh ghi port 17

II.3.4.6 Các thanh ghi định thời TMOD và TCON 17

II.3.4.7 Thanh ghi của cổng nối tiếp 19

II.3.4.8 Các thanh ghi ngắt 20

II.3.4.9 Thanh ghi điều khiển nguồn 20

II.4 Bộ nhớ ngoài 21

II.4.1 Truy xuất bộ nhớ chơng trình ngoài 21

II.4.2 Truy xuất bộ nhớ dữ liệu ngoài 22

II.4.3 Hoạt động Reset 23

III Tập lệnh của 8051 24

III.1 Các kiểu định địa chỉ 24

III.1.1 Định địa chỉ thanh ghi 24

III.1.2 Định địa chỉ trực tiếp 24

III.1.3 Định địa chỉ gián tiếp 25

III.1.4 Định địa chỉ tức thời 26

III.1.5 Định địa chỉ tơng đối 26

III.1.6 Định địa chỉ tuyệt đối 26

III.1.7 Định địa chỉ dài 27

III.1.8 Định địa chỉ chỉ số 27

III.2 Các loại lệnh 27

III.2.1 Lệnh số học 27

III.2.2 Các lệnh Logic 28

III.2.3 Nhóm lệnh di chuyển dữ liệu 30

Trang 4

III.2.4 Các lệnh xử lý bit 31

III.2.5 Các lệnh rẽ nhánh 31

III.2.6 Nhóm lệnh dịch, quay 33

III.2.7 Các lệnh làm việc với Stack 33

IV Hoạt động định thời 33

IV.1 Các bộ định thời của 8051 33

IV.2 Thanh ghi chế độ bộ định thời 34

IV.2.1 Các chế độ định thời và cờ tràn 34

IV.2.1.1 Chế độ định thời 13-bit 34

IV.2.1.2 Chế độ định thời 16-bit 34

IV.2.1.3 Chế độ tự nạp lại 8-bit 34

IV.2.1.4 Chế độ định thời chia xẻ 35

IV.3 Nguồn xung clock định thời 35

V Hoạt động ngắt 35

V.1 Tổ chức ngắt của 8051 35

V.1.1 Cho phép và không cho phép ngắt 35

V.1.2 Ưu tiên ngắt 35

V.1.3 Chuỗi vòng 36

V.2 Xử lý ngắt 36

V.3 Các vector ngắt 36

V.4 Các ngắt do port nối tiếp 36

V.5 Các ngắt ngoài 37

VI Lập trình hợp ngữ 37

VI.1 Trình dịch hợp ngữ 37

VI.2 Khuôn dạng của chơng trình hợp ngữ 37

VI.3 Cấu trúc chơng trình 38

VI.4 Tổ chức chơng trình 38

Chơng II: Các Thiết Bị Ngoại vi 39

I Đồng hồ thời gian thực DS12887 39

I.1 Hoạt động 40

I.2 Chức năng các chân 41

I.3 Bản đồ địa chỉ .43

I.4 Các thanh ghi điều khiển 46

Trang 5

I.5 Minh họa ghép nối giữa DS12887 với 8051 49

II Thiết bị hiển thị LCD 49

II.1 LCD 49

II.2 Minh họa ghép nối giữa LCD với 8051 52

III ADC0809 52

III.1 Sơ đồ các chân của ADC0809 53

III.2 Các bớc lập trình cho ADC0809 54

III.3 Minh họa ghép nối ADC0809 với 8051 55

IV.Bàn phím HEX 55

IV.1 Minh họa ghép nối bàn phím với 8051 56

V Giải m địa chỉ 74LS138ã hội chủ nghĩa việt nam 57

VI Chốt địa chỉ 74HC373 57

V.1.Sơ đồ chân của 74HC373 57

V.2 Hoạt động của 74LS373 57

Phần II Thiết kế 59

Chơng I: Thiết kế phần cứng 59

I Mạch nguyên lý 59

II.Sơ đồ mạch 61

Chơng II: Thiết kế phần mềm 62

I Chuơng trình quét bàn phím HEX 62

II Đọc thời gian từ đồng hồ thời gian thực RTC DS12887 67

III Điều khiển ADC0809 để thực hiện chuyển đổi 74

Kết luận 78

Tài liệu tham khảo 79

Lời cảm ơn

Trớc hết chúng em gửi lời cám ơn tới tập thể các thầy cô giáo bộ môn Điều khiển tự động - Khoa điện trờng Đại học Bách khoa Hà Nội Đã luôn giúp đỡ và

Trang 6

truyền đạt cho chúng em những kiến thức quý báu trong qúa trình học tập tại tr ờng.

-Chúng em xin chân thành cảm ơn thầy giáo hớng dẫn Vũ Vân Hà đã nhiệttình hỡng dẫn chúng em trong quá trình làm đồ án

Sinh viên thực hiện

Trịnh Mạnh Hùng Nguyễn Xuân Linh Ngô Quốc Toàn

mở đầu

Đề tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với

thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím số HEX.

Điều khiển tự động, ngày nay đã và đang đợc ứng dụng vào rất nhiềungành sản xuất và cuộc sống Từ những nhà máy, dây chuyền sản xuất cho đếnnhững đồ dùng phục vụ sinh hoạt nh: máy giặt, lò vi sóng…

Để thực hiện việc điều khiển tự động có nhiều phơng pháp, cách thức nhbằng máy tính, vi xử lý hay hệ điều khiển chuyên dụng Tùy vào lĩnh vực mà lựachọn hệ thống điều khiển thích hợp Với sinh viên học chuyên ngành điều khiển

tự động phải nắm bắt đợc tất cả những kiến thức cơ sở, tổng quát nhất để từ đó

có thể giải quyết các bài toán điều khiển đặt ra trong công việc sau này Mộttrong những kiến thức cần phải có đó là việc nghiên cứu và thiết kế mạch ứngdụng sử dụng bộ vi điều khiển Do đó chúng em đã chọn đề tài : Thiết kế mạchthí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi LCD,ADC0809, RTC DS12887 và HEX-keypad

Trang 7

Vào năm 1971 tập đoàn Intel đã giới thiệu 8080, bộ vi xử lí thành công

đầu tiên, tiếp đó không lâu Motorola, RCA, MOS Technology và Zilog cũng đãgiới thiệu các bộ vi xử lí tơng tự : 6800, 1801, 6502 và Z80 Bản thân các vimạch này tuy không có nhiều hiệu quả sử dụng nhng khi là một phần của một

máy tinh đơn board (Single Board Computer), chúng trở thành thành phần trung

tâm trong các sản phẩm có ích dùng để nghiên cứu và thiết kế

Năm 1976 Intel giới thiệu bộ vi điều khiển( Micro Controller) 8748, một chip tơng tự nh các bộ vi xử lí và là chip đầu tiên trong họ vi điều khiển MCS-

48 8748 là một vi mạch chứa trên 17000 transistor bao gồm một CPU, 1KbyteEPROM, 64 byte RAM, 27 chân xuất nhập và một bộ định thời 8 bit Sự ra đờicủa IC này và các IC khác của họ MCS-48 đã nhanh chóng trở thành chuẩn công

nghiệp trong các ứng dụng hớng điều khiển (Control Oriented Application).

Độ phức tạp, kích thớc và khả năng của bộ vi điều khiển đợc tăng thêmmột bậc quan trọng vào năm 1980 khi Intel công bố chip 8051, bộ vi điều khiển

đầu tiên của họ vi điều khiển MCS-51 So với 8048, chip 8051 chứa trên 60000transistor bao gồm 4Kbyte ROM, 128 byte RAM, 32 đờng xuất nhập, 1 port nốitiếp và 2 bộ định thời 16 bit Vi điều khiển 8051 cũng nh họ vi điều khiển MCS-

51 là một trong những bộ vi điều khiển 8-bit mạnh và linh hoạt nhất, đã trởthành bộ vi điều khiển hàng đầu trong những năm gần đây

I.2 Điểm khác biệt giữa vi điều khiển và vi xử lý dùng chung

Những bộ vi xử lý dùng chung thờng gặp nh họ Intel x86 (8086, 80286,

80386, 80486, Pentium ) hoặc họ 680x0 của Motorola (6800, 68010, 68020,

68030, 68040…) Những bộ vi xử lý này không có RAM, ROM và không cócác port I/O trên chip, do đó khi sử dụng thiết kế hệ thống phải bổ sung thêm

Trang 8

RAM, ROM, I/O và các bộ định thời (Timer/Counter) ngoài để cho chúng hoạt

động đợc Tuy việc này làm cho hệ thống cồng kềnh, phức tạp và giá thành caohơn nhng chúng lại có u điểm là linh hoạt hơn so với vi điều khiển

Trong khi đó với vi điều khiển nó có sẵn : 1 CPU( bộ vi xử lý) cùng 1

l-ợng cố định RAM, ROM, các cổng I/O và Timer/Counter đợc tích hợp tất cả

trên cùng 1 chip

I.3 Tiêu chuẩn lựa chọn 1 bộ vi điều khiển

Hiện nay có nhiều loại vi điều khiển, với loại vi điều khiển 8bit có 4 loạichính sau: 6811 (Motorola), 8051 (Intel), Z8 (Zilog) và PIC16x (MicroTechnology) Mỗi loại trên đều có 1 tập lệnh và thanh ghi riêng nên chúng đềukhông tơng thích lẫn nhau Ngoài ra còn có những bộ vi điều khiển 16bit và32bit, vì thế để lựa chọn bộ vi điều khiển trong thiết kế cần phải dựa trên nhữngtiêu chuẩn sau:

1 Đáp ứng nhu cầu tính toán của bài toán 1 cách hiệu quả về giá

c. Công suất tiêu thụ

d Dung lợng RAM, ROM trên chip.

e Số cổng vào/ra và Timer/Counter trên chip.

f. Giá thành trên 1 đơn vị sản phẩm

2 Công cụ phát triển phần mềm.

3 Nguồn cung cấp các bộ vi điều khiển: tức khả năng sẵn sàng

đáp ứng về số lợng trong hiện tại và tơng lai

II Vi điều khiển 8051

Vi điều khiển 8051 là thành viên đầu tiên của họ MCS-51 của Intel, sau

đố các nhà sản xuất IC khác nh Siemens, Advanded Devices, Phillips … ợc cấpđphép làm nhà cung cấp thứ 2 cho các chip của họ MCS-51

II.1 Sơ đồ khối của 8051

Chip 8051 có các đặc trng cơ bản sau:

- 4 Kbyte ROM

- 128 Byte RAM

- 4 I/O port 8bit

- 1 bộ điều khiển ngắt ( Interrupt Control)

- 1 Mạch dao động nội (Oscillatior)

- 1 bộ điều khiển bus (Bus Control)

- 2 Timer 16bit

- Mạch giao tiếp nối tiếp

- Không gian nhớ chơng trình (mã) ngoài 64Kbyte

Trang 9

- Không gian nhớ dữ liệu ngoài 64Kbyte

a. Port 0 : Port 0 (các chân từ 32  39) có 2 công dụng: có thể đợc sử dụng

làm nhiệm vụ xuất/nhập hoặc trở thành bus địa chỉ và bus dữ liệu đa hợp

b. Port 1: Port 1 (các chân từ 1 8) chỉ có 1 công dụng là xuất/nhập.

c. Port 2: Port 2 (các chân từ 21 28) có 2 công dụng: hoặc làm nhiệm vụ

xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16-bit.

d. Port 3: Port 3 (các chân 10 17) có 2 công dụng Khi không hoạt động

xuất/nhập, các chân của Port 3 có nhiều chức năng riêng

Bit Tên Địa chỉ

P3.0 RXD B0H Chân nhận dữ liệu của port nối tiếp

P3.1 TXD B1H Chân phát dữ liệu của port nối tiếp

P3.4 T0 B4H Ngõ vào của Timer/Counter 0

P3.5 T1 B5H Ngõ vào của Timer/Counter 0

P3.6 WR B6H Điều khiển ghi bộ nhớ dữ liệu ngoài

Trang 10

P3.7 RD B7H Điều khiển đọc bộ nhớ dữ liệu ngoài

Hình 2: Sơ đồ các chân của 8051

e. Chân PSEN (Program Store Enable) : (chân 29) đây là tín hiệu điều

khiển cho phép truy xuất bộ nhớ chơng trình ngoài Chân này thờng đợc

nối với chân cho phép xuất OE (Output Enable) của EPROM (hoặc

ROM) để cho phép đọc các byte lệnh Tín hiệu PSEN ở mức logic 0trong suốt thời gian tìm và nạp lệnh Khi thực thi chơng trình ở ROMnội , PSEN đợc duy trì ở mức logic 1 (logic không tích cực)

f. Chân ALE (chân 30): chân xuất tín hiệu cho phép chốt địa chỉ (Address

Latch Enable) để giải đa hợp (Demultiplexing) bus dữ liệu và bus địa chỉ.

Tín hiệu ALE có tần số f=1/6 fosc (fosc: tần số của bộ dao động bên trong

8051) và có thể đợc dùng làm xung clock cho các phần còn lại của hệ

thống Chân ALE còn đợc dùng để nhận xung ngõ vào lập trình choEPROM

g. Chân truy xuất ngoài EA (chân 31) : ngõ vào này có thể đợc nối +5V

(mức logic 1) hoặc nối đất (mức logic 0) Nếu chân này có mức logic 1:

8051 thực thi chơng trình trong ROM nội, còn khi ở mức logic 0 thì 8051thực thi chơng trình chứa ở bộ nhớ ngoài Các phiên bản EPROM của

8051 còn sử dụng chân EA làm chân nhận điện áp cấp điện 21V cho việclập trình EPROM nội

Trang 11

h Chân RESET (chân 9): đây là ngõ vào xóa chính (Master reset) của

8051, dùng để thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt làReset hệ thống Khi ngõ vào này đợc treo ở mức logic 1 tối thiểu là 2 chu

kỳ máy, các thanh ghi bên trong 8051 đợc nạp các giá trị thích hợp choviệc khởi động lại hệ thống

i. XTAL1 và XTAL2 ( chân 18 và 19): Mạch dao động bên trong chip

8051 đợc ghép với thạch anh bên ngoài ở hai chân XTAL1 và XTAL2(chân 18 và 19) Tần số danh định của thạch anh là 12 MHz cho hầu hếtcác chip của họ MCS-51 XTAL1: Ngõ vào đến mạch khuếch đại đảo củamạch dao động XTAL2: Ngõ ra từ mạch khuếch đại đảo của mạch dao

động

j. Chân Vcc (chân 40) lấy nguồn nuôi +5V để cấp cho chip.

k. Chân Vss ( chân 20) chân nối đất.

II.2.3 Cấu trúc của các cổng xuất/nhập.

Việc ghi đến một chân của port sẽ nạp dữ liệu bộ chốt điều khiển của

port, ngõ ra Q của bộ chốt điều khiển của một transistor trờng và transistor này nối với chân của port Khả năng fanout của port 1,2,3 là 4 tải vi mạch TTL loại

schottky công suất thấp còn của port 0 là 8 tải loại LS

Lu ý: khi điện trở kéo lên sẽ không có ở port 0 (trừ khi port làm nhiệm vụ

của bus địa chỉ/dữ liệu đa hợp) Do vậy một điện trở kéo lên bên ngoài phải đ ợccần đến Giá trị của điện trở này phụ thuộc vào đặc tính ngõ vào của thành phầnghép nối với chân của port

Trang 12

II.3 Tổ chức bộ nhớ 8051

8051 có không gian bộ nhớ riêng cho chơng trình và dữ liệu: cả 2 bộ nhớchơng trình và dữ liệu đều đặt bên trong chip, tuy nhiên vẫn có thể mở rộng bộnhớ chơng trình và bộ nhớ dữ liệu bằng cách sử dụng chip nhớ bên ngoài vớidung lợng tối đa 64Kbyte cho bộ nhớ chơng trình và bộ nhớ dữ liệu

Bộ nhớ nội trong chip bao gồm cả RAM và ROM RAM trên chip bao gồmvùng RAM đa chức năng, vùng RAM với từng bit đợc định địa chỉ, dãy thanh

ghi (bank register) và các thanh ghi chức năng đặc biệt SFR (special function register) Hai đặc tính đáng lu ý là :

a các thanh ghi và các port xuất/nhập đợc định địa chỉ theo kiểu

ánh xạ bộ nhớ (memory mapped) và đợc truy xuất nh một vị trí

nhớ trong bộ nhớ

b vùng stack thờng trú trong RAM trên chip (RAM nội) thay vì ở

trong RAM ngoài nh các bộ vi xử lý

II.3.1 Vùng RAM đa mục đích

Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên

d-ới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể đợc sử dụng tơng tự Bất

kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể đợc truy xuất tự dobằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp

Trang 13

II.3.2 Vùng RAM định địa chỉ bit

8051 chứa 210 vị trí bit đợc định địa chỉ trong đó 128 bit chứa trong các

byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa trong các thanh ghi đặc biệt Ngoài ra 8051 còn có các port xuất/nhập có thể

định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm vớicác thiết bị xuất/nhập đơn bit

II.3.3 Các dãy thanh ghi

32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi Các lệnh của

8051 hỗ trợ 8 thanh ghi từ R0 đến R7 thuộc dãy 0 (bank 0) Đây là dãy mặc

định sau khi reset hệ thống Các thanh ghi này ở các địa chỉ từ 00H đến 07H.

Lệnh sử dụng các thanh ghi từ R0 đến R7 là các lệnh ngắn và thực hiện nhanhhơn so với các lệnh tơng đơng sử dụng kiểu định địa chỉ trực tiếp Các giá trị dữliệu thờng đợc sử dụng nên chứa trong các thanh ghi này Dãy thanh ghi đang đ-

ợc sử dụng gọi là dãy thanh ghi tích cực

II.3.4 Các thanh ghi chức năng đặc biệt (SFR)

Cũng nh các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặcbiệt SFR chiếm phần trên của RAM nội từ địa chỉ 80H đến FFH Ta cần lu ý làkhông phải tất cả 128 địa chỉ từ 80H đến FFH đều đợc định nghĩa mà chỉ có 21

PSW.7 CY D7H Cờ nhớ (carry flag) Cờ này đợc set nếu có bit nhớ từ

bit 7 trong phép cộng hoặc đợc set nếu có bit mợn cho bit 7 trong phép trừ

PSW.6 AC D6H Cờ nhớ phụ Cờ này đợc set trong phép cộng nếu có

bit nhớ từ bit 3 sang bit 4 hoặc nếu kết quả trong 4 bit thấp nằm trong khoảng từ 0AH → 0FH

PSW.5 F0 D5H Cờ O, cờ này dành cho ngời sử dụng

PSW.4 RS1 D4H Chọn dãy thanh ghi (bit 1)

PSW.3 RS0 D3H Chọn dãy thanh ghi (bit 0)

00 = bank 0 : địa chỉ từ 00H → 07H

01 = bank 1 : địa chỉ từ 08H → 0FH

10 = bank 2 : địa chỉ từ 10H → 17H

11 = bank3 : địa chỉ từ 18H → 1FHPSW.2 OV D2H Cờ tràn (Overflow flag), cờ này đợc set sau khi cộng

hoặc trừ nếu có 1 số tràn số học (nghĩa là tràn trêncác phép toán số có dấu: kết quả của phép toán lớnhơn +127 hoặc nhỏ hơn -128)

PSW.0 P D0H Cờ kiểm tra chẵn/lẻ Cờ này đợc set hoặc clear bởi

Trang 14

phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ ra rằng có 1

số chẵn hoặc số lẻ bit 1 trong thanh chứa

II.3.4.2 Thanh ghi B

Thanh ghi B ở địa chỉ F0H đợc dùng chung với thanh chứa A trong cácphép toán nhân, chia Lệnh MUL AB nhân 2 số 8 bit không dấu chứa trong A

và B và chứa kết quả 16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp

và thanh ghi B cất byte cao)

Lệnh chia DIV AB chia A bởi B, thơng số cất trong thanh chứa A và d số cấttrong thanh ghi B Thanh ghi B còn đợc xử lý nh một thanh ghi nháp Các bit đ-

ợc định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H

II.3.4.3 Con trỏ stack (Stack pointer)

Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H SP chứa

địa chỉ của dữ liệu hiện đang ở đỉnh của stack Các lệnh liên quan đến stack baogồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack Việc cất vàostack làm tăng SP trớc khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ giảm

SP Vùng stack của 8051 đợc giữ trong RAM nội và đợc giới hạn đến các địachỉ truy xuất đợc bởi kiểu định địa chỉ gián tiếp Các lệnh PUSH và POP sẽ cấtdữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chơng trình con (ACALL,LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nội dung của bộ đếm

chơng trình PC (program counter).

II.3.4.4 Con trỏ dữ liệu DPTR

Con trỏ dữ liệu DPTR (data pointer) đợc dùng để truy xuất bộ nhớ chơng

trình ngoài hoặc bộ nhớ dữ liệu ngoài DPTR là một thanh ghi 16 bit có địa chỉ

là 82H (DPL, byte thấp) và 83H (DPH, byte cao)

II 3.4.5 Các thanh ghi port

Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại

địa chỉ 90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H Tất cả các port đều

đợc định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh

II.3.4.6 Các thanh ghi định thời TMOD (Timer Mode Register) và TCON (Timer/Counter Control Register)

8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng

thời gian hoặc để đếm các sự kiện

Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao)

Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte cao) Hoạt động của bộ định thời đợc thiết lập bởi thanh ghi chế độ định thời TMOD

(Timer Mode Register) ở địa chỉ 88H Chỉ có TCON đợc định địa chỉ từng bit.

 TMOD : có chức năng điều khiển chọn chế độ định thời/đếm Địa chỉ byte là89H, không đợc định địa chỉ bit

Trang 15

GATE : Bit điều khiển cổng Khi bit TRx trong TCON đợc set = 1 và GATE = 1 thì bộ Timer/Counter chỉ hoạt động trong khi INTx ở mức cao (điều khiển cứng) Khi GATE = 0 bộ Timer/Counter chỉ hoạt động khi TRx =1 (điều

khiển mềm)

T

C / : bit chọn chức năng đếm (counter) hay định thời (timer) Khi C / T

= 0 bộ Timer/Counter hoạt động định thời (dùng xung clock nội của hệ thống).

Khi C / T = 1, Timer/Counter hoạt động đếm (dùng xung clock nhận từ ngõ vào

1 0 2 Bộ định thời/đếm 8 bit tự động nạp lại

1 1 3 Bộ định thời 0: TL0 là bộ định thời/đếm 8 bit đợc điều

khiển bởi các bit điều khiển bộ định thời 0 TH0 là bộ

định thời 8 bit đợc điều khiển bởi các bit điều khiển bộ

đếnTR1 TCON.6 8EH Bit điều khiển bộ định thời 1 hoạt động, đợc

set/clear bởi phần mềm.

TF0 TCON.5 8DH Cờ tràn bộ định thời 0

TR0 TCON.4 8CH Bit điều khiển bộ định thời 0 hoạt động

IE1 TCON.3 8BH Cờ ngắt ngoài 1, tác động cạnh Đợc set bởi phần

cứng khi phát hiện có ngắt ngoài tác động cạnh,

đợc xóa bởi phần cúng khi ngắt đã đợc xử lýIT1 TCON.2 8AH Bit điều khiển chọn loại ngắt, đợc set/xóa để xác

định ngắt ngoài thuộc loại tác động cạnh âm(xuống) hay tác động mức thấp

IE0 TCON.1 89H Cờ ngắt ngoài 0, tác động cạnh

IT0 TCON.0 88H Bit điều khiển chọn loại ngắt

Trang 16

II.3.4.7 Thanh ghi của cổng nối tiếp (Serial Port)

Bên trong 8051 có một port nối tiếp để truyền thông với các thiết bị nốitiếp nh các thiết bị đầu cuối hoặc modem, hoặc để giao tiếp với các IC khác cómạch giao tiếp nối tiếp (nh các thanh ghi dịch chẳng hạn) Chế độ hoạt động củacổng nối tiếp đợc thiết lập bằng cách ghi từ điều khiển lên thanh ghi chọn chế

độ SCON( Serial Port Control Register) SCON có địa chỉ byte là 98H, định địa chỉ bit.

SM0 SCON.7 9FH Bit chọn chế độ

SM1 SCON.6 9EH Bit chọn chế độ

SM2 SCON.5 9DH Bit này cho phép truyền thông đa xử lý ở các

chế độ 2 & 3 Trong chế độ 2 hoặc 3 nếuSM2 = 1, RT sẽ không đợc tích cực nếu bitnhận đợc thứ 9 (RB8) bằng = 0 Trong chế độ

1, nếu SM2 = 1, RI sẽ không đợc tích cực nếu

ta không nhân đợc bit stop hợp lệ.

REN SCON.4 9CH Cho phép thu Việc set hoặc xóa bit này bởi

phần mềm sẽ cho phép hoặc không cho phéphoạt động thu

TB8 SCON.3 9BH Bit phát 8, bit thứ 9 đợc phát ở các chế độ 2

& 3 Bit này đợc set hoặc xóa bằng phần

mềm

RB8 SCON.2 9AH Bit thu 8 Trong các chế độ 2 & 3, RB8 là bit

dữ liệu thứ 9 thu đợc Trong chế độ 1, nếu

SM2 = 0, RB8 là bit stop thu đợc Trong chế

độ 0, RB8 không đợc sử dụng

TI SCON.1 99H Cờ ngắt phát, cờ này đợc set bởi phần cứng ở

cuối thời gian phát bit thứ trong chế độ 0

hoặc ở giữa thời gian của bit stop trong các

chế độ khác Cờ TI phải đợc xóa bằng phầnmềm

RI SCON.0 98H Cờ ngắt thu, cờ này đợc set bởi phần cứng ở

cuối thời gian thu bit thứ 8 trong chế độ 0

hoặc ở giữa thời gian của bit stop trong các

chế độ khác Cờ RI phải đợc xóa bởi phầnmềm

1 0 2 9-bit UART fosc  64 hoặc fosc  32

Trang 17

II.3.4.8 Các thanh ghi ngắt

8051 có cấu trúc ngắt với 2 mức u tiên và 5 nguyên nhân ngắt (5 source,

2 priority level interrupt structure) Các ngắt bị vô hiệu hóa sau khi reset hệ

thống và sau đó đợc cho phép bằng cách ghi vào thanh ghi cho phép ngắt IE

(Interrupt Enable register) ở địa chỉ A8H Mức u tiên ngắt đợc thiết lập qua thanh ghi u tiên ngắt IP (Interrupt Priority register) ở địa chỉ B8H Cả 2 thanh

ghi này đều đợc định địa chỉ từng bit

II.3.4.9 Thanh ghi điều khiển nguồn

Thanh ghi điều khiển nguồn PCON (Power Control Register) có địa chỉ

87H chứa các bit điều khiển đợc tóm tắt trong bảng sau đây

7 SMOD Tăng gấp đôi tốc độ baud Nếu bộ định thời 1 đợc dùng để

tạo ra tốc độ baud và SMOD = 1, tốc độ baud đợc tăng gấp

đôi khi Port nối tiếp đợc sử dụng ở các chế độ 1, 2 hoặc 3

3 GF1 Bit cờ đa mục đích 1

2 GF0 Bit cờ đa mục đích 0

1 PD Bit chế độ nguồn giảm Việc set bit này bằng 1 tác động

đến thao tác nguồn giảm trong các phiên bản CMOS của8051

0 IDL Bit chế độ nghỉ Việc set bit này bằng 1 tác động đến chế

độ nghỉ trong các phiên bản CMOS của 8051

(3) nội dung của RAM trên chip đợc duy trì

(4) các chân port duy trì mức logic của chúng

(5) ALE và PSEN đợc giữ ở mức thấp Chỉ ra khỏi chế độ này bằng cách

reset hệ thống.

Trong suốt thời gian ở chế độ nguồm giảm, Vcc có điện áp là 2V Cần phải giữcho Vcc không thấp hơn sau khi đạt đợc chế độ nguồn giảm và cần phục hồiVcc = 5V tối thiểu 10 chu kỳ dao động trớc khi chân RST đạt mức thấp lần nữa

 Chế độ nghỉ

Lệnh thiết lập bit IDL bằng 1 sẽ là lệnh sau cùng đợc thực thi trớc khi đi

vào chế độ nghỉ ở chế độ nghỉ, tín hiệu clock nội đợc khóa không cho đến CPU

nhng không khóa đối với các chức năng ngắt, định thời và port nối tiếp Trạngthái của CPU đợc duy trì và nội dung của tất cả các thanh ghi cũng đợc giữkhông đổi Các chân port cũng đợc duy trì các mức logic của chúng ALE và

Trang 18

PSEN đợc giữ ở mức cao Chế độ nghỉ kết thúc bằng cách cho phép ngắt hoặc

bằng cách reset hệ thống Cả hai cách vừa nêu đều xóa bit IDL.

II.4.1 Truy xuất bộ nhớ chơng trình ngoài

Bộ nhớ chơng trình ngoài là bộ nhớ chỉ đọc đợc cho phép bởi tín hiệu

PSEN Khi có 1 EROM ngoài đợc sử dụng thì port 0 và port 2 đều không còn

là các port xuất/ nhập.

Một chu kỳ máy của 8051 có 12 chu kỳ dao động Nếu một dao động trên chip

có tần số 12 MHz, một chu kỳ dài 1s trong một chu kỳ máy điển hình, ALE

có hai xung và 2 byte của lệnh đợc đọc từ bộ nhớ chơng trình

II.4.2 Truy xuất bộ nhớ dữ liệu ngoài

Bộ nhớ dữ liệu ngoài là bộ nhớ đọc/ghi đợc cho phép bởi các tín hiệu RD

và WR ở các chân P3.7 và P3.6, lệnh dùng để truy xuất bộ nhớ dữ liệu ngoài là

MOVX, sử dụng hoặc con trỏ dữ liệu 16 bit DPTR hoặc R0, R1 làm thanh ghi

chứa địa chỉ

Trang 19

RAM có thể giao tiếp với 8051 theo cùng cách nh EPROM nhng khác là

đờng RD nối với đờng cho phép xuất OE của RAM và WR nối với đờng ghi

W của RAM Các kết nối với bus dữ liệu và bus địa chỉ giống EPROM, và

dung lợng RAM ngoài lên đến 64K đợc kết nối với 8051

Nếu có nhiều EPROM hoặc nhiều RAM hoặc cả 2 giao tiếp với 8051 tacần phải có thêm bộ giải mã địa chỉ Một IC giải mã điển hình là 74HC138 đợc

dùng với các ngõ ra đợc nối với các ngõ chọn chip CS của các IC nhớ

II.4.3 Hoạt động Reset

8501 đợc reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ máy

và sau đó chuyển về mức thấp RST có thể tác động bằng tay hoặc đợc tác độngkhi cần nguồn bằng cách dùng một mạch RC Quan trọng nhất trong các thanhghi này có lẽ là thanh ghi PC đợc nạp 0000H Khi RST trở lại mức thấp, việcthực hiện chơng trình luôn luôn bắt đầu ở vị trí đầu tiên trong bộ nhớ chơngtrình: địa chỉ 0000H Nội dung của RAM trên chip không bị ảnh hởng bởi hoạt

động của Reset

Trang 20

Hai mạch dùng reset hệ thống :

a)Reset bằng tay b) Reset khi cấp nguồn

iiI Tập lệnh của 8051

Tập lệnh của MCS-51 đợc tối u hóa cho các ứng dụng điều khiển 8 bit.

Nhiều kiểu định địa chỉ cô đọng và nhanh chóng để truy xuất RAM nội đợcdùng đến nhằm tạo thuận lợi cho các thao tác trên các cấu trúc dữ liệu nhỏ Tậplệnh cũng hỗ trợ các biến 1 bit cho phép quản lý bit trực tiếp trong các hệ logic

và điều khiển có yêu cầu xử lý bit

Các lệnh của 8051 có các opcode 8 bit, do vậy số lệnh có thể lên đến 256 lệnh (thực tế có 255 lệnh, 1 lệnh không đợc định nghĩa) Ngoài opcode, một số

lệnh còn có thêm 1 hoặc 2 byte nữa cho dữ liệu hoặc địa chỉ Tập lệnh có 139lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte

iiI.1 Các kiểu định địa chỉ

Vi điều khiển 8051 có 8 kiểu định địa chỉ

- Thanh ghi (Register)

III.1.1 Định địa chỉ thanh ghi (Register Addressing)

8051 cho phép truy xuất 8 thanh ghi “làm việc”, đợc đánh số từ R0 →R7 Các lệnh sử dụng kiểu định địa chỉ thanh ghi đợc mã hóa bằng các dùng 3

Trang 21

bit thấp nhất của opcode( của lệnh) để chỉ ra 1 thanh ghi bên trong không gian

địa chỉ logic này Vậy : 1 mã chức năng + địa chỉ toán hạng → 1 lệnh ngắn 1byte

III.1.2 Định địa chỉ trực tiếp (Direct addressing)

Kiểu định địa chỉ trực tiếp đợc sử dụng để truy xuất các biến nhớ hoặc

các thanh ghi trên chip Một byte thêm vào tiếp theo opcode dùng để xác định

địa chỉ Trong 8051 có 128 byte bộ nhớ RAM Bộ nhớ RAM đợc gán địa chỉ từ00H đến FFH và đợc phân chia nh sau:

- Các ngăn nhớ từ 00H đến 1FH đợc gán cho các dãy thanh ghi và ngănxếp

- Các ngăn nhớ từ 20H đến 2FH đợc dành cho không gian định địa chỉ bit

để lu dữ liệu theo từng bit

- Các ngăn nhớ từ 30H đến 7FH là không gian để lu dữ liệu có kích thớc

1 byte

Chế độ định địa chỉ trực tiếp có thể truy cập toàn bộ không gian của bộnhớ RAM Tuy nhiên, chế độ này thờng đợc dùng để truy cập các ngăn nhớRAM từ 30H đến 7FH, vì thực tế đối với không gian nhớ dành cho dãy thanhghi thì đã đợc truy cập bằng tên thanh ghi nh R0- R7 ở chế độ định địa chỉ trựctiếp , địa chỉ ngăn nhớ RAM chứa dữ liệu là toán hạng của lệnh

Ví dụ :

MOV R0, 40 ; sao nội dung ngăn nhớ 40H của RAM vào R0

MOV R4, 7FH ; chuyển nội dung ngăn nhớ 7FH vào R4

Một ứng dụng quan trọng của chế độ định địa chỉ trực tiếp là ngăn xếp Trong

họ 8051, chỉ có chế độ định địa chỉ trực tiếp là đợc phép cất và lấy dữ liệu từngăn xếp

III.1.3 Định địa chỉ gián tiếp (Indirect addressing)

ở chế độ này, thanh ghi đợc dùng để trỏ đến dữ liệu có trong bộ nhớ Nếudữ liệu có trên chip CPU thì chỉ các thanh ghi R0 và R1 mới đợc sử dụng, và nhvậy cũng có nghĩa là không thể dùng các thanh ghi R2-R7 để trỏ đến địa chỉ củatoán hạng ở chế độ định địa chỉ này Nếu R0 và R1 đợc dùng làm con trỏ, nghĩa

là chúng lu địa chỉ của ngăn nhớ RAM thì trớc các thanh ghi cần đặt dấu "@"

nh các ví dụ sau:

MOV A, @R0 ; chuyển ngăn nhớ RAM có địa chỉ ở R0 vào A MOV @R1, B ; chuyển B vào ngăn nhớ RAM có địa chỉ ở R1Chú ý: ở đây R0 cũng nh R1 đều có dấu "@" đứng trớc Nếu không có dấu "@"

đứng trớc thì đó là lệnh chuyển nội dung thanh ghi R0 và R1 chứ không phải dữliệu ngăn nhớ có địa chỉ trong R0 và R1 Một trong những u điểm của chế độ

định địa chỉ gián tiếp là cho phép truy cập dữ liệu linh hoạt hơn so với chế độ

định địa chỉ trực tiếp Tuy nhiên R0 và R1 là các thanh ghi 8 bit, nên chúng chỉ

Trang 22

đợc phép truy cập đến các ngăn nhớ RAM trong, từ địa chỉ 30H đến 7FH và cácthanh ghi SFR Trong thực tế, có nhiều trờng hợp cần truy cập dữ liệu đợc cất ởRAM ngoài hoặc không gian ROM trên chip Trong những trờng hợp đó chúng

ta cần sử dụng thanh ghi 16 bit DPTR

III.1.4 Định địa chỉ tức thời (Immediate addressing)

Khi toán hạng là một hằng số thay vì là một biến, hằng số này có thể đa

vào lệnh và đây là byte dữ liệu tức thời.

Trong hợp ngữ, các toàn hạng tức thời đợc nhận biết nhờ vào ký tự '# ' đặt trớcchúng Toán hạng này có thể là một hằng số học, một biến hoặc một biểu thức

số học sử dụng các hằng số, các ký hiệu và các toán tử Trình dịch hợp ngữ tínhgiá trị và thay thế dữ liệu tức thời vào trong lệnh

Ví dụ lệnh : MOV A, #12 ;Nạp giá trị 12(OCH) vào thanh chứa A

Tất cả các lệnh sử dụng kiểu định địa chỉ tức thời đều sử dụng hằng dữ liệu 8 bitlàm dữ liệu tức thời Có một ngoại lệ khi ta khởi động con trỏ dữ liệu 16-bitDPTR, hằng địa chỉ 16 bit đợc cần đến

III.1.5 Định địa chỉ tơng đối (Relative addressing)

Kiểu định địa chỉ tơng đối chỉ đợc sử dụng cho các lệnh nhảy Một địa

chỉ tơng đối là một giá trị 8 bit có dấu Giá trị này đợc cộng với một bộ đếm

ch-ơng trình để tạo ra địa chỉ của lệnh tiếp theo cần thực thi Định địa chỉ tch-ơng đối

có điểm lợi là cung cấp cho ta mã không phụ thuộc vào vị trí, nhng lại có điểmbất lợi là các đích nhảy bị giới hạn trong tầm

III.1.6 Định địa chỉ tuyệt đối (Absolute addressing)

Kiểu định địa chỉ này đợc sử dụng với các lệnh ACALL và AJMP Đây

là các lệnh 2 byte cho phép rẽ nhánh chơng trình trong trang 2k hiện hành của

bộ nhớ chơng trình bằng cách cung cấp 11 bit thấp của địa chỉ đích Trong đó có

3 bit cao (A8-A10) và 8 bit thấp (A0-A7) thành lập byte thứ 2 của lệnh

III.1.7 Định địa chỉ dài (Long addressing)

Trang 23

Kiểu định địa chỉ dài chỉ đợc dùng cho các lệnh LCALL và LJMP Cáclệnh 3 byte này chứa địa chỉ đích 16 bit Lợi ích của kiểu định địa chỉ này là sửdụng hết toàn bộ không gian nhớ chơng trình 64K, nhng lại có điểm bất lợi làlệnh dài đến 3-byte và phụ thuộc vào vị trí.

III.1.8 Định địa chỉ chỉ số (Indexed addressing)

Chế độ định địa chỉ chỉ số đợc sử dụng rộng rãi khi truy cập các phần tửdữ liệu của bảng trong không gian ROM chơng trình của 8051 Lệnh đợc dùngcho mục đích này là "MOVC A, @A+DPTR" Thanh ghi 16 bit DPTR và thanhghi A đợc dùng để tạo ra địa chỉ của phần tử dữ liệu đợc lu trong ROM trên

chip ở lệnh này, nội dung của A đợc cộng với nội dung thanh ghi 16- bit DPTR

để tạo ra địa chỉ 16 bit

III.2 Các loại lệnh

III.2.1 Lệnh số học

ADD A, source Cộng toán hạng A với nguồn

A, Rn (A) (A) + (Rn)

A, Direct (A) (A) + (Direct)

A, @Ri (A) (A) + ((Ri))

A, #data (A) (A) + #dataADDC A, source Cộng có cờ nhớ (add with carry)

A, Rn (A) (A) + (C)+ (Rn)

A, Direct (A) (A) + (C)+ (Direct)

A, @Ri (A) (A) + (C)+ ((Ri))

A, #data (A) (A) + (C)+ #dataSUBB A, source Trừ số có mợn

A, Rn (A) (A) - (C) - (Rn)

A, Direct (A) (A) - (C) - (Direct)

A, @Ri (A) (A) - (C) - ((Ri))

A, #data (A) (A) - (C) - #data

Direct (Direct)  (Direct) + 1

Trang 24

@Ri ((Ri))  ((Ri)) + 1

Direct (Direct)  (Direct) - 1

@Ri ((Ri))  ((Ri)) – 1

(B)  High byte of (A) x (B) : byte cao của kếtquả phép nhân đợc chứa trong thanh ghi B(A)  Low byte of (A) x (B) : byte thấp củakết quả nhân đợc chứa trong thanh ghi A

C, /bit (C)  (C) AND NOT(bit)

C, /bit (C)  (C) OR NOT(bit)XRL

A, Direct (A) (A) XOR + (source)

A, @Ri

A, RnDirect , A (Direct)  (Direct) XOR (A)

Trang 25

Direct, #data (Direct)  (Direct) XOR #dataCLR

III.2.3 Nhãm lÖnh di chuyÓn d÷ liÖu

MOV

A, Direct (A)  (Direct)

Rn, Direct (Rn)  (Direct)

MOV Direct, #data (Direct)  #data

Direct, Direct (Direct)  (Direct)Direct, @Ri (Direct)  ((Ri))Direct, Rn (Direct)  (Rn)

@Ri, Direct ((Ri))  (Direct)

@Ri, #data ((Ri))  #data

A, Direct (A)   (Direct)

Trang 26

XCHD A, @Ri (A3 - A0)   (R3 - R0)

JNC Label Nhảy nếu cờ nhớ không đợc set bằng 1

JB Bit, label Nhảy nếu bit đợc set bằng 1

JBC Bit, label Nhảy nếu bit đợc set bằng 1 và xóa bit

JNB Bit, label Nhảy nếu bit không đợc set bằng 1

(PC)  (PC) + (A) + (DPTR)JNZ Label Nhảy nếu nội dung thanh chứa khác 0

(PC)  (PC) + 2

IF (A) < > 0 THEN (PC)  (PC) +byte_2

JZ Label Nhảy nếu nội dung thanh chứa bằng 0

(PC)  (PC) + 2

IF (A) = 0 THEN (PC)  (PC) +byte_2

Trang 27

(PC)  (PC) +2(PC)  (PC) + byte_2LJMP Addr16 Nhảy dài (Long jump - 16 bits (64K))

(PC)  addr15  addr0

 So sánh và nhảy ( Compare and Jump)

CJNE A, Direct, label

A, #data, label Compare 1 st op to 2 st and jump to label if

not equal

Rn, #data, label

@Ri, #data, label So sánh giá trị của 2 toán hạng và rẽ

nhánh nếu các giá trị của 2 toán hạngkhông bằng nhau

 Giảm và nhảy (Decrement and Jump)

DJNZ Direct, label Giảm và nhảy nếu khác 0

(PC)  (PC) +2

Rn, label (Rn)  (Rn) -1

(Direct)  (Direct) -1 Jump if not zero

 Lệnh điều khiển chơng trình con

ACALL Addr11 Gọi đến địa chỉ tuyệt đối (absolute call

-11bit).

LCALL Addr16 Gọi chơng trình con (Long call - 16bits)

Trang 28

PUSH Direct Cất dữ liệu vào stack

(SP)  (SP) -1((SP))  (Direct)

POP Direct Lấy dữ liệu ra từ stack.

(Direct)  ((SP)) (SP)  (SP) -1

IV.Hoạt động định thời

8051 có hai bộ định thời/đếm Chúng có thể đợc dùng làm bộ định thời đểtạo trễ thời gian hoặc làm các bộ đếm để đếm các sự kiện xảy ra bên ngoài bộ vi

điều khiển

IV.1 Các bộ định thời của 8051

8051 có hai bộ định thời là Timer 0 và Timer 1 Cả hai bộ định thời Timer0

và Timer1 đều có độ dài 16 bit Do 8051 có cấu trúc 8 bit, nên mỗi bộ định thời

đợc truy cập dới dạng hai thanh ghi độc lập là byte thấp và byte cao

 Thanh ghi của bộ Timer 0: Thanh ghi 16 bit của bộ Timer 0 đợc truy cập

theo hai byte là byte cao và byte thấp Thanh ghi byte thấp đợc gọi là TL0

và thanh ghi byte cao là TH0 Các thanh ghi này có thể đợc truy cập nh làmọi thanh ghi khác Ví dụ, lệnh "MOV TL0, #4FH" là chuyển giá trị4FH vào TL0 - byte thấp của bộ định thời 0

 Thanh ghi của bộ Timer 1: Bộ định thời Timer 1 cũng dài 16 bit và

thanh ghi 16 bit cũng đợc chia ra thành hai byte là TL1 và TH1 Cácthanh ghi này đợc truy cập và đợc đọc giống nh các thanh ghi của bộ

Timer 0 ở trên.

IV.2 Thanh ghi chế độ bộ định thời TMOD

Cả hai bộ định thời Timer 0 và Timer 1 đều dùng chung 1 thanh ghi đợc gọi

là TMOD để thiết lập các chế độ làm việc khác nhau của bộ định thời Thanhghi TMOD là thanh ghi 8 bit gồm có 4 bit thấp dành cho bộ Timer 0 và 4 bitcao dành cho bộ Timer 1 Trong đó 2 bit thấp của chúng dùng để thiết lập chế

độ của bộ định thời, còn 2 bit cao dùng để xác định phép toán

IV.2.1 Các chế độ định thời và cờ tràn

Do ta có hai bộ định thời trên chip 8051, ta dùng ký hiệu “x” để chỉ bộ

định thời 0 hoặc bộ định thời 1 Ví dụ : THx có nghĩa là TH0 hoặc TH1 tuỳ theo

bộ định thời 0 hay 1

IV.2.1.1 Chế độ định thời 13-bit (chế độ 0)

Chế độ 0 là chế độ định thời 13-bit cung cấp khả năng tơng thích với bộ vi

điều khiển tiền nhiệm 8048 Byte cao của bộ định thời THx đợc ghép cascade

với 5-bit thấp của byte thấp của bộ định thời TLx để tạo thành một bộ định thời13-bit Ba bit cao của TLx không sử dụng

Trang 29

IV.2.1.2.Chế độ định thời 16-bit (chế độ 1)

Chế độ 1 là chế độ định thời 16-bit và có cấu hình giống chế độ định thời

13-bit Xung clock đặt vào các thanh ghi định thời cao và thấp kết hợp (TLx/THx) Khi có xung clock đến, bộ định thời đếm lên: 0000H, 0001H một

tràn sẽ xuất hiện khi có sự chuyển số đếm từ FFFFH xuống 0000H, sự kiện này

sẽ set cờ tràn bằng 1 và bộ định thời tiếp tục đếm

IV.2.1.3 Chế độ tự nạp lại 8-bit (chế độ 2)

Chế độ 2 là chế độ tự nạp lại 8-bit Byte thấp của bộ định thời (TLx) hoạt

động định thời 8-bit trong khi byte cao của bộ định thời lu giữ giá trị nạp lại

Khi số đếm tràn từ FFH xuống 00H, không chỉ cờ tràn của bộ định thời đợc set

lên 1 mà giá trị trong THx còn đợc nạp vào TLx Việc đếm sẽ tiếp tục từ giá trịnày cho đến khi xảy ra một tràn (FFH xuống 00H)

IV.2.1.4 Chế độ định thời chia xẻ (chế độ 3)

Chế độ 3 là chế độ định thời chia xẻ và có hoạt động khác nhau cho từng

bộ định thời Bộ định thời 0 ở chế độ 3 đợc chia thành 2 bộ định thời 8-bit hoạt

động riêng rẽ TL0 và TH0, mỗi bộ định thời sẽ set các cờ tràn tơng ứng TF0 và

TF1 khi xảy ra một tràn

IV.3 Nguồn xung clock định thời

Bộ định thời luôn cần có xung đồng hồ để giữ nhịp Nếu C/T = 0 thì tần sốthạch anh trên chip 8051 đợc làm nguồn cho đồng hồ của bộ định thời Điều đó

có nghĩa là giá trị của tần số thạch anh của 8051 quyết định tốc độ đồng hồ củacác bộ định thời 8051 Tần số của bộ định thời luôn bằng 1/12 tần số của thạchanh trên chip 8051 Nếu C/T=1 bộ định thời bây giờ đếm sự kiện, số các sự kiện

đợc xác định trong phần mềm bằng cách đọc các thanh ghi định thời(TLx/THx), giá trị 16-bit trong các thanh ghi này tăng theo mỗi sự kiện Hai

chân của port 3 ( P3.4 và P3.5) bây giờ trở thành ngõ vào xung clock cho các bộ

định thời Chân P3.4 là ngõ vào xung clock cho bộ định thời, chân P3.5 là ngõ vào xung clock cho bộ định thời 1 Nếu C/T =0 bộ định thời dùng để định thời

một khoảng thời gian

V Hoạt động ngắt

V.1 Tổ chức ngắt của 8051

Có 5 nguyên nhân tạo ra ngắt đối với 8051: hai ngắt do bên ngoài, hai ngắt

do bộ định thời và một ngắt do port nối tiếp Khi ta thiết lập trạng thái ban đầu

cho hệ thống (gọi là reset hệ thống), tất cả các ngắt đều bị vô hiệu hoá và sau đó

chúng đợc cho phép riêng rẽ bằng phần mềm

V.1.1 Cho phép và không cho phép ngắt

Mỗi một nguyên nhân ngắt đợc cho phép hoặc không cho phép riêng rẽthông qua thanh ghi chức năng đặc biệt định địa chỉ bit Thanh ghi cho phépngắt IE có địa chỉ byte là 0A8H Mỗi một bit của thanh ghi này cho phép hoặckhông cho phép từng nguyên nhân ngắt riêng rẽ, thanh ghi IE đồng thời còn cómột bit toàn cục cho phép hoặc không cho phép ngắt

Trang 30

V.1.2 Ưu tiên ngắt

Mỗi một nguyên nhân ngắt đợc lập trình riêng rẽ để có một trong hai mức

-u tiên thông q-ua thanh ghi chức năng đặc biệt đợc định địa chỉ bit, thanh ghi -utiên ngắt IP, thanh ghi này có địa chỉ là 0B8H

Khi hệ thống đợc thiết lập lại trạng thái ban đầu, thanh ghi IP sẽ mặc định

đặt tất cả các ngắt ở mức u tiên thấp ý tởng “ các mức u tiên” cho phép mộttrình phục vụ ngắt đợc tạm dừng bởi một ngắt khác nếu ngắt mới này có mức utiên cao hơn mức u tiên của ngắt hiện đang đợc phục vụ Nếu có ngắt với mức utiên cao xuất hiện, trình phục vụ ngắt cho ngắt có mức u tiên thấp phải tạmdừng Ta không thể tạm dừng một chơng trình phục vụ ngắt có mức u tiên cao

V.1.3 Chuỗi vòng

Nếu có hai ngắt có cùng mức u tiên xuất hiện đồng thời, chuỗi vòng cố

định sẽ xác định ngắt nào đợc phục vụ trớc Chuỗi vòng này sẽ là: ngắt ngoài 0,ngắt do bộ định thời 0, ngắt ngoài 1, ngắt do bộ định thời 1, ngắt do port nốitiếp Ngắt do port nối tiếp là kết quả OR của cờ ngắt khi thu RI (cờ ngắt thu) với

cờ ngắt khi phát (cờ ngắt phát)

V.2 Xử lý ngắt

Khi có một ngắt xuất hiện và đợc CPU chấp nhận, chơng trình chính bịngắt Các thao tác sau đây xảy ra:

- Hoàn tất việc thực thi lệnh hiện hành

- Bộ đếm chơng trình PC đợc cất vào stack.

- Trạng thái của ngắt hiện hành đợc lu giữ

- Các ngắt đợc chặn lại ở mức ngắt

- Bộ đếm chơng trình PC đợc nạp địa chỉ vector của trình phục vụ ngắt

ISR (Interrupt Service Routine)

- ISR đợc thực thi

ISR đợc thực thi để đáp ứng công việc của ngắt Việc thực thi ISR kết thúc

khi gặp lệnh RETI Lệnh này lấy giá trị cũ của bộ đếm chơng trình PC từ stack

và phục hồi trạng thái của ngắt cũ Việc thực thi chơng trình chính đợc tiếp tục ởnơi bị tạm ngừng

V.3 Các vector ngắt

Khi một ngắt đợc chấp nhận, giá trị đợc nạp cho bộ đếm chơng trình PC

đ-ợc gọi là vector ngắt Vector ngắt là địa chỉ bắt đầu của trình phục vụ ngắt củanguyên nhân ngắt tơng ứng Khi một trình phục vụ ngắt đợc trỏ tới, cờ gây rangắt sẽ tự động đợc xoá về 0 bởi phần cứng Các ngoại lệ bao gồm các cờ RI và

TI đối với các ngắt trong port nối tiếp

V.4 Các ngắt do port nối tiếp

Các ngắt do port nối tiếp xuất hiện khi cờ ngắt đợc phát TI hoặc cờ ngắt

đ-ợc thu RI đđ-ợc set bằng 1 Một ngắt phát xuất hiện khi việc phát một ký tự đã ghi

vào SBUF hoàn tất Một ngắt thu xuất hiện nh một ký tự đợc thu nhận đầy đủ và

đang ở trong SBUF để chờ đợc đọc Nh vậy ngắt phát xảy ra khi bộ đệm phátSBUF rỗng, còn ngắt thu xảy ra khi bộ đệm thu SBUF đầy

Trang 31

V.5 Các ngắt ngoài

Ngắt ngoài xảy ra khi có mức thấp hoặc có cạnh âm trên chân INT0 hoặcINT1 của 8051 Thực tế các cờ tạo ra các ngắt này là các bit IE0 và IE1 củathanh ghi TCON Khi một ngắt ngoài đợc tạo ra, cờ tạo ra ngắt đợc xoá bởi phầncứng khi CPU trỏ đến trình phục vụ ngắt chỉ nếu ngắt thuộc loại tác động cạnh.Nếu ngắt thuộc loại tác động mức, nguyên nhân ngắt ngoài sẽ điều khiển mứccủa thay vì là phần cứng trên chip

Vi Lập trình hợp ngữ (Assembly Language Programming)

CPU chỉ có thể tính toán trên các số nhị phân và với tốc độ rất cao Tuynhiên đối với con ngời, nếu phải lập trình với các số nhị phân thì thật nhàm chán

và chậm chạp Chơng trình chỉ gồm các số 0 và 1 là trình ngôn ngữ máy Hợpngữ thay thế các mã nhị phân của ngôn ngữ máy bằng các mã gợi nhớ giúpchúng ta dễ nhớ và dễ lập trình hơn

Một chơng trình viết bằng hợp ngữ không thể đợc thực thi trực tiếp bởimáy tính Sau khi đợc viết xong, chơng trình này phải đợc trải qua quá trìnhdịch thành ngôn ngữ máy Trình dịch hợp ngữ là chơng trình dùng để dịch mộtchơng trình hợp ngữ thành chơng trình ngôn ngữ máy

VI.1 Trình dịch hợp ngữ

Có nhiều trình dịch hợp ngữ và nhiều chơng trình hỗ trợ khác cho phép ta

dễ dàng phát triển các ứng dụng trên chip vi điều khiển 8051 ví dụ nh ASM51(của Intel) hay Keil C51…

Trình dịch hợp ngữ họ MCS-51 của Intel (ASM51) đợc dùng làm chuẩn

để so sánh với các trình dịch hợp ngữ khác ASM51 là trình dịch hợp ngữ mạnh,hoạt động tốt trên các hệ thống của Intel và trên các họ máy tính của IBM-PC Keil C51 là một công cụ phát triển có nhiều u điểm cho việc xây dựng cácphần mềm ứng dụng cho vi điều khiển Keil C51 cho phép viết chơng trình bằnghợp ngữ hoặc ngôn ngữ C, nó có nhiều th viện tài nguyên có sẵn giúp việc lậptrình đợc đơn giản hơn

VI.2 Khuôn dạng của chơng trình hợp ngữ

Khuôn dạng tổng quát của mỗi dòng lệnh nh sau:

[label:] mnemonic [operand][,operand][…][;comment]

 Label: Trờng nhãn cho phép chơng trình tham chiếu đến một dòng lệnhbằng tên, label không đợc quá một số ký tự nhất định (tùy thuộc vào chơng trìnhhợp ngữ)

Trang 32

 Mnemonic & Operand: Mã gợi nhớ và toán hạng là các trờng kết hợp vớinhau thực thi công việc thực tế của chơng trình và hoàn thiện các nhiệm vụ màchơng trình đợc viết cho chúng.

 Comment: Trờng chú thích, trình dịch hợp ngữ sẽ không dịch (bỏ qua)các chú thích nhng chúng lại rất cần thiết để giúp mô tả chơng trình cho ngời

- Các vị trí dữ liệu trong RAM

Chơng II: Các Thiết Bị Ngoại vi

lập trình ngắt, phát xung vuông, cùng với 114 bytes RAM.

Trang 33

- Có hai chế độ 12 giờ (dùng AM và PM) hoặc 24 giờ.

- Giao tiếp với phần mềm bằng 128 Bytes RAM (bên trong)

+ 14 bytes đồng hồ và các thanh ghi điều khiển

+ 114 bytes RAM dùng cho mục đích căn bản

Trang 34

Hình 7 : Sơ đồ khối của DS12887

4,25V, thì thiết bị sẽ đợc tiếp cận sau 200ms, cung cấp cho máy phát xung hoạt

động Cùng lúc đó cho phép hệ thống trở nên ổn định sau khi nguồn đợc đa vào.Khi nguồn (Vcc) giảm xuống dới 4,25V, ở đầu vào chọn chip có 1 lực bên tronglàm cho trở về mức không hoạt động bất kể giá trị ở chân CS Vì thế DS12887chuyển sang chế độ chống ghi Khi DS12887 ở chế độ chống ghi thì tất cả cáctín hiệu vào đều bị ngăn và các đầu ra đang ở mức trở kháng cao Khi Vcc giảmtới mức xấp xỉ 3V, nguồn cung cấp từ ngoài bị đóng lại, nguồn năng lợng bêntrong (pin lithium) sẽ đợc cấp cho RTC và bộ nhớ RAM

I.2 Chức năng các chân.

 GND, Vcc

Nguồn 1 chiều + 5Vđợc cung cấp cho thiết bị thông qua chân 24 Khinguồn 5V đợc cung cấp thì ta có thể đọc hoặc ghi dữ liệu trên thiết bị Khi nguồnvào thấp hơn 4,25V thì việc đọc ghi dữ liệu bị ngăn cấm Tuy nhiên thiết bị vẫnhoạt động không phụ thuộc vào nguồn vào Khi mà nguồn vào thấp hơn 3V thìlúc đó thiết bị sẽ sử dụng nguồn pin lithium bên trong để duy trì hoạt động Độchính xác của DS12887 là  1 phút/1 tháng tại 250C

 MOT (Mode Select)

Chân MOT đợc sử dụng để lựa chọn giữa hai loại bus Khi đợc nối vớiVcc, chế độ thời gian bus Motorola đợc chọn Khi nối với GND hoặc không đợcnối thì chế độ thời gian bus Intel đợc chọn Chân này có điện trở kéo bên trong

cỡ 20K

Trang 35

 SQW (Square-Wave Output)

Chân SQW tạo ra tín hiệu xung vuông Tần số của tín hiệu phát ra từchân SQW có thể thay đổi bằng cách lập trình trên thanh ghi A (ở bảng 1) Tínhiệu SQW có thể đợc bật hoặc tắt bằng cách sử dụng bit SQWE trong thanh ghi

B Tín hiệu SQW sẽ không có khi Vcc nhỏ hơn 4,25V

 AD0-AD7

Bus địa chỉ và dữ liệu Thông tin của địa chỉ và thông tin của dữ liệu thờigian chia xẻ trong cùng 1 đờng tín hiệu Địa chỉ đợc chỉ ra trong suốt phần đầucủa chu kỳ bus, cũng những chân này và đờng tín hiệu đợc sử dụng cho dữ liệutrong phần 2 của chu kỳ bus

 AS (Address Strobe Input)

Khi ở mức cao AS kéo bus giải đa hợp Khi ở sờn xuống của AS/ALE đó

là nguyên nhân địa chỉ đợc chốt bên trong DS12887 ở sờn lên kế tiếp của bus,

AS sẽ xóa địa chỉ

 DS (Data Strobe or Read Input)

Chân DS / RD có hai chế độ hoạt động dựa vào chế độ ở chân MOT Khichân MOT đợc nối với Vcc (chế độ thời gian bus Motorola đợc chọn) trong chế

độ này DS đợc kéo ở mức cao trong suốt phần cuối của chu kỳ bus và đợc gọi là

Data Strobe Trong suốt chu kỳ đọc DS biểu thị thời gian mà DS12887 điều

khiển 2 đờng bus trực tiếp Trong chu kỳ ghi DS12887 chốt dữ liệu ghi Khi

chân MOT nối với GND (chế độ thời gian bus Intel đợc chọn) Trong chế độ

này chân DS đợc gọi là chân Đọc (RD).RD xác định phần thời gian khiDS12887 điều khiển bus cùng với dữ liệu đọc

Ngày đăng: 10/05/2015, 20:11

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w