1. Trang chủ
  2. » Tất cả

Lập trình vi điều kiển 8051 sử dụng ngôn ngữ lập trình C giao tiếp ngắt và truyền thông

54 23 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lập trình vi điều khiển 8051 sử dụng ngôn ngữ lập trình C giao tiếp ngắt và truyền thông
Người hướng dẫn TS. Phạm Văn Khoa
Trường học Trường Đại Học Bách Khoa TP.HCM
Chuyên ngành Kỹ Thuật Vi Điều Khiển và Tự Động Hóa
Thể loại Đề án tốt nghiệp
Năm xuất bản 2022
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 54
Dung lượng 4,54 MB

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

Cấu trúc

  • A. MỞ ĐẦU (4)
  • B. NỘI DUNG (6)
  • Chương 1: Tổng quan (6)
    • 1.1. Đối tượng nghiên cứu (6)
    • 1.2. Công cụ hỗ trợ (7)
    • 1.3. Khái quát về vi điều khiển (7)
    • 1.4. Họ vi điều khiển 8051 (8)
  • Chương 2: Tìm hiểu về vi điều khiển 8051 (10)
    • 2.1. Sơ đồ khối, sơ đồ chân của vi điều khiển 8051 (10)
    • 2.2. Tổ chức bộ nhớ bên trong 8051 (15)
    • 2.3. Kiến trúc vi điều khiển 8051 (19)
  • Chương 3: Truyền thông nối tiếp UART (22)
    • 3.1. Các cơ sở của truyền thông nối tiếp (22)
    • 3.2. Truyền thông nối tiếp trong 8051 (25)
  • Chương 4. Ngắt trong 8051 (30)
    • 4.1 Sơ lược về ngắt (30)
    • 4.2 Các ngắt trong vi điều khiển 8051 (31)
    • 4.3. Quy trình thực hiện một ngắt (33)
    • 4.4. Các bước cho phép cấm ngắt (33)
    • 4.5. Lập trình các ngắt bộ định thời (34)
    • 4.6. Lập trình các ngắt phần cứng bên ngoài (34)
    • 4.7. Các thanh ghi điều khiển ngắt (36)
    • 4.8. Ưu tiên ngắt (36)
    • 4.9. Lập trình ngắt và truyền thông nối tiếp (37)
    • C. Kết Quả Và Mô Phỏng (38)
  • CHƯƠNG 1: LẬP TRÌNH VÀ MÔ PHỎNG (38)
    • 1.1. Lập trình cho 8501 (38)
    • 1.2. Mô phỏng và kết quả (41)
    • D. HƯỚNG PHÁT TRIỂN ĐỀ TÀI (53)
  • Tài liệu tham khảo (54)

Nội dung

Ngày nay, trong thời đại thế giới bước vào thời kỳ kỷ nguyên số thì việc ứng dụng những thành tựu khoa học công nghệ vào cuộc sống là điều thật sự cần thiết. Với sự phát triển vượt bậc của các ngành kỹ thuật điện tử đã cho ra đời hàng loạt các thành tựu là các sản phẩm, thiết bị có sự chính xác cao cùng với tốc độ vượt bậc trong khi kích cỡ nhỏ gọn, vừa phải đã đáp ứng được những yêu cầu phức tạp, bức thiết của con người, làm chất lượng cuộc sống xã hội ngày càng trở nên thuận tiện, hiện đại, phong phú hơn. Và trong số các thành tựu đó, không thể không nhắc đến đó là các bộ vi điều khiển những phát minh tuyệt diệu và cũng là những thiết bị không thể thiếu trong thời kỳ kỷ nguyên số hiện nay.

Trang 1

Danh sách thành viên tham gia viết báo cáo

1

2

3

Nhận xét của giáo viên

Tp Hồ Chí Minh, tháng 6 năm 2022.

Trang 2

Mục lục

A MỞ ĐẦU 3

B NỘI DUNG 5

Chương 1: Tổng quan 5

1.1 Đối tượng nghiên cứu 5

1.2 Công cụ hỗ trợ 6

1.3 Khái quát về vi điều khiển 6

1.4 Họ vi điều khiển 8051 7

Chương 2: Tìm hiểu về vi điều khiển 8051 9

2.1 Sơ đồ khối, sơ đồ chân của vi điều khiển 8051 9

2.2 Tổ chức bộ nhớ bên trong 8051 13

2.3 Kiến trúc vi điều khiển 8051 17

Chương 3: Truyền thông nối tiếp UART 21

3.1 Các cơ sở của truyền thông nối tiếp 21

3.2 Truyền thông nối tiếp trong 8051 24

Chương 4 Ngắt trong 8051 29

4.1 Sơ lược về ngắt 29

4.2 Các ngắt trong vi điều khiển 8051 30

4.3 Quy trình thực hiện một ngắt 32

4.4 Các bước cho phép cấm ngắt 32

4.5 Lập trình các ngắt bộ định thời 33

4.6 Lập trình các ngắt phần cứng bên ngoài 33

4.7 Các thanh ghi điều khiển ngắt 35

4.8 Ưu tiên ngắt 35

4.9 Lập trình ngắt và truyền thông nối tiếp 35

Trang 3

C Kết Quả Và Mô Phỏng 37

CHƯƠNG 1: LẬP TRÌNH VÀ MÔ PHỎNG 37

1.1 Lập trình cho 8501 37

1.2 Mô phỏng và kết quả 40

D HƯỚNG PHÁT TRIỂN ĐỀ TÀI 50

Tài liệu tham khảo 51

Trang 4

A MỞ ĐẦU

Ngày nay, trong thời đại thế giới bước vào thời kỳ kỷ nguyên số thì việc ứng dụngnhững thành tựu khoa học công nghệ vào cuộc sống là điều thật sự cần thiết Với sựphát triển vượt bậc của các ngành kỹ thuật điện tử đã cho ra đời hàng loạt các thànhtựu là các sản phẩm, thiết bị có sự chính xác cao cùng với tốc độ vượt bậc trong khikích cỡ nhỏ gọn, vừa phải đã đáp ứng được những yêu cầu phức tạp, bức thiết của conngười, làm chất lượng cuộc sống xã hội ngày càng trở nên thuận tiện, hiện đại, phongphú hơn Và trong số các thành tựu đó, không thể không nhắc đến đó là các bộ vi điềukhiển - những phát minh tuyệt diệu và cũng là những thiết bị không thể thiếu trongthời kỳ kỷ nguyên số hiện nay

Vi điều khiển là những thiết bị không thể thiếu cấu thành nên những thiết bị, máymóc quen thuộc xung quanh chúng ta Hằng ngày, ta tiếp xúc với những thiết bị giadụng như các loại máy lạnh, máy ảnh, lò vi sóng,…hay đến cả những thiết bị thu phát,liên lạc như tivi thông minh, điện thoại di động, máy tính xách tay, laptop… hay cảnhững thiết bị văn phòng như máy fax, máy in, ta còn có các hệ thống tưới tiêu tựđộng trong nông nghiệp hay các cánh tay robot tự động trong các nhà máy… hoặcthậm chí là những thiết bị vệ tinh ngoài vũ trụ… Tất cả đều được gắn vào những con

vi điều khiển nhỏ bé phục vụ cuộc sống con người Vi điều khiển ứng dụng nhiều vôcùng trong cuộc sống và được các nhà sản xuất ưa chuộng vì khá dễ sử dụng, bảo trìđơn giản và quan trọng nhất là có thể thực hiện được rất nhiều công việc nhiệm vụ màngười lập trình định hướng

Chính vì vi điều khiển có nhiều ứng dụng tiện ích như vậy nên việc ứng dụng cáccon vi điều khiển vào máy tính cũng được phát triển và nâng cao theo Vi điều khiểndung trong máy tính thông dụng nhất là vi điều khiển 8051 dùng để giao tiếp các thiết

bị ngoại vi, ngắt và truyền thông Tuy nhiên, các bộ vi điều khiển tuy đơn giản nhưng

để vận hành được lại rất phức tạp vì bản chất của vi điều khiển là một chiếc máy tính

đa năng có thể thực hiện được các nhiệm vụ khác nhau Chính vì vậy mà nhóm em đãlựa chọn đề tài: “Lập trình vi điều khiển 8051 sử dụng ngôn ngữ lập trình C giao tiếpngắt và truyền thông” làm đề tài tiểu luận cuối kỳ Mặc dù đã cố gắng tìm hiểu và

Trang 5

mong thầy tận tình góp ý, chỉ bảo để chúng em có thêm nhiều kiến thức cũng nhưkhắc phục được những lỗi sai để việc học tập được tốt hơn Chúng em xin chân thànhcảm ơn thầy

Nội dung của bài báo cáo bao gồm các chương sau:

Chương 1: Tổng quan

Chương 2: Vi điều khiển 8051

Chương 3: Truyền thông nối tiếp UART

Chương 4: Ngắt trong 8051

Chương 5 : Kết quả và mô phỏng

Trang 6

1.1.2 Ngôn ngữ lập trình C

Khi sử dụng ngôn ngữ C người lập trình không cần hiểu sâu sắc về cấu trúc của

bộ vi điều khiển Một người chưa quen với một vi điểu khiển cho trước sẽ xây dựngđược chương trình một cách nhanh chóng hơn, do không phải mất thời gian tìm hiểukiến trúc của vi điều khiển đó Và việc sử dụng lại các chương trình đã xây dựng trước

đó cũng dễ dàng hơn, có thể sử dụng toàn bộ hoặc sửa chữa một phần Chương trìnhviết bằng ngôn ngữ bậc cao cũng sẽ được một phần mềm trên máy tính gọi là trình

biên dịch (Compiler) chuyển sang dạng hợp ngữ trước khi chuyển sang mã máy 1.1.3 Hoạt động ngắt

Ngắt (Interrupt), là một số sự kiện khẩn cấp bên trong hoặc bên ngoài bộ vi điều

khiển xảy ra, buộc vi điều khiển tạm dừng thực hiện chương trình hiện tại, phục vụngay lập tức nhiệm vụ mà ngắt yêu cầu - nhiệm vụ này gọi là trình phục vụ ngắt (ISR:

Interrupt Service Routine).

Trang 7

Là một trình biên dịch C, môi trường phát triển tích hợp và bộ tạo chương trình

tự động được thiết kế cho họ các vi điều khiển ARM, 8051, STM của Atmel

1.2.2 Proteus

- Phần mềm cho phép thiết kế, kiểm tra và bố trí các bảng mạch in chuyên nghiệpmột cách nhanh chóng

1.2.3 Virtual Serial Driver

- Phần mềm để tạo ra các cổng nối tiếp ảo và kết nối chúng theo cặp thông quadây cáp null-modem ảo

1.2.4 Hercules SETUP

- Mô phỏng thiết bị đầu cuối cổng nối tiếp (thiết bị đầu cuối 485 hoặc 232), thiết bị đầu cuối UDP / IP và thiết bị đầu cuối máy chủ máy khách TCP / IP

RS-1.3 Khái quát về vi điều khiển

Vi điều khiển (MCU – viết tắt cho cụm từ: Micro Control Unit) là một máy tính

trên chip điều khiển các đối tượng, quy trình hoặc sự kiện Bất cứ điều gì lưu trữ, kiểmsoát, tính toán hoặc hiển thị thông tin có thể có một vi điều khiển trong đó Khônggiống như bộ vi xử lý, đòi hỏi các thành phần khác, như bộ nhớ, để hoạt động, vi điềukhiển tự nó là một máy tính và được sử dụng trong các hệ thống nhỏ hơn

Một số thiết bị có vi điều khiển đó là: các điều khiển từ xa của TV, điện thoại diđộng, máy tính và các thành phần máy tính như bàn phím, chuột, modem và máy in,…

Trang 8

1.3.1 Kiến trúc vi điều khiển

Thực ra với điều khiển cũng là một cấu trúc nhỏ gồm các linh kiện điện tử ở kíchthước micro hoặc nano, các tình trạng này được kết hợp với nhau và được nối với cácthiết bị bên ngoài qua các chân vi điều khiển

Kiến trúc máy tính hay kiến trúc vi điều khiển cũng tương tự nhau Do đó các bạn

có thể tìm hiểu về kiến trúc máy tính để hiểu rõ về kiến trúc của vi điều khiển Haikiến trúc này rất phổ biến hiện nay đó là kiến trúc Von Neumann và kiến trúc Harvar

Sự khác biệt chủ yếu giữa hai kiến trúc này chính là việc tổ chức bộ nhớ dữ liệu vào

bộ nhớ chương trình kiến trúc Von Neumann tổ chức bộ nhớ dữ liệu và bộ nhớchương trình chung với nhau, chính vì vậy đường truyền (bus) của kiến trúc VonNeumann là đường truyền chung, trong đó kiến trúc Harvard tách rời bộ nhớ dữ liệuvào bộ nhớ chương trình

Mỗi kiến trúc này có một đặc điểm riêng rẽ khác nhau kiến trúc Von Neumanntận dụng được tài nguyên bộ nhớ trong khi đó kiến trúc Harvard sẽ đạt được tốc độ xử

lý cao hơn, mặt khác đường truyền dữ liệu và đường truyền lệnh điều khiển chươngtrình có thể có dung lượng khác nhau

1.4 Họ vi điều khiển 8051

1.4.1 Tóm tắt về lịch sử 8051

Vào năm 1981, hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051 Bộ

vi điều khiển này có 128 byte RAM, 4K byte ROM trên chip, hai bộ định thời, mộtcổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chip Lúc ấy

nó được coi là một “hệ thống trên chip” 8051 là một bộ xử lý 8 bit có nghĩa là CPU

chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bit được chia

ra thành các dữ liệu 8 bit để cho xử lý 8051 có tất cả 4 cổng vào - ra I/O mỗi cổngrộng 8 bit Mặc dù 8051 có thể có một ROM trên chip cực đại là 64 K byte, nhưng cácnhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byte ROM trên chip

8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất vàbán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện họ phải để mã lạitương thích với 8051 Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với cáctốc độ khác nhau và dung lượng ROM trên chip khác nhau được bán bởi hơn nửa cácnhà sản xuất Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về

Trang 9

tốc độ và dung lương nhớ ROM trên chip, nhưng tất cả chúng đều tương thích với

8051 ban đầu về các lệnh Điều này có nghĩa là nếu ta viết chương trình của mình chomột phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà khôngphân biệt nó từ hãng sản xuất nào

cả mọi chương trình viết cho 8051 đều chạy trên 8052 nhưng điều ngược lại là khôngđúng

Một thành viên khác nữa của 8051 là chip 8031 Chip này thường được coi như là

8051 không có ROM trên chip vì nó có OK byte ROM trên chip Để sử dụng chip này

ta phải bổ xung ROM ngoài cho nó ROM ngoài phải chứa chương trình mà 8031 sẽnạp và thực hiện So với 8051 mà chương trình được chứa trong ROM trên chip bịgiới hạn bởi 4K byte, còn ROM ngoài chứa chương trinh được gắn vào 8031 thì cóthể lớn đến 64K byte Khi bổ xung cổng, như vậy chỉ còn lại 2 cổng để thao tác Đểgiải quyết vấn đề này ta có thể bổ xung cổng vào - ra cho 8031 Phối ghép 8031 với bộnhớ và cổng vào - ra chẳng hạn với chip 8255 Ngoài ra còn có các phiên bản khácnhau về tốc độ của 8031 từ các hãng sản xuất khác nhau

Trang 10

Chương 2: Tìm hiểu về vi điều khiển 8051

2.1 Sơ đồ khối, sơ đồ chân của vi điều khiển 8051

2.1.1 Giới thiệu sơ lược

Trang 11

Dallas Semiconductor), NXP Semiconductors (Philips Semiconductor trước đây),Winbond, Silicon Laboratories, Texas Instruments và Cypress Semiconductor Têngọi chính thức của họ vi điều khiển Intel 8051 - MCS 51

Những vi điều khiển Intel 8051 được sản xuất với việc dùng công nghệ MOSFET,những những bản sau, chứa kí hiệu “C” trong tên, như 80C51, dùng công nghệ CMOS

và yêu cầu công suất thấp, hơn những cái MOSFET trước (điều này cho phép trang bịcho các thiết bị với nguồn là pin)

Các thông số kỹ thuật: 8 bit ALU, 8 bit thanh ghi 8 bit dữ liệu bus 16 bit địa chỉbus vì vậy không gian bộ nhớ tối đa cho ROM và RAM lên tới 64 kb Bộ nhớ dữ liệuSRAM 128 bytes Bộ nhớ chương trình ROM 4 kb 32 chân vào/ra đa hướng Giao tiếpnối tiếp UART Hai bộ timer/counter 16 bit Hai ngắt ngoài

Lập trình cho 8051: Các nhà sản xuất 8051 đều hỗ trợ ngôn ngữ lập trìnhAssembler tuy nhiên ngôn ngữ này thường ít được dùng cho những ứng dụng lớn dotính phù hợp của nó, vì vậy trong các ứng dụng thực tế hay sử dụng ngôn ngữ C.Ngoài ra còn một số ngôn ngữ khác được phát triển cho 8051 như Pascal, Basic,Forth

2.1.2 Cấu hình chân

Hình 2.2: Cấu hình chân vi điều khiển 8051

Trang 12

VCC: Điện áp cung cấp cho nguồn nuôi VĐK  Dòng  8051 sử dụng điện áp5VDC Chú ý điện áp 5V tại chân này phải được lọc kỹ trước khi cấp vào và nên đặtmột tụ gốm 10uF để chống nhiễu ngay tại chân Vcc của VĐK.

GND: Nối với mass nguồn

RST : Ngõ vào RESET, chân RESET ở mức cao trong 2 chu kỳ máy khi bộ daođộng đang chạy sẽ RESET chip Lắp mạch Reset như hình sau:

XTAL1, XTAL2: Chân cấp nguồn dao động

AT 89S52 có một bộ chia tần bên trong chip, bộ này sẽ cấp xung clock cho cáckhối trên chip từ nguồn dao động bên ngoài qua 2 chân XTAL1 và XTAL2 Bộ chiatần hoạt động ở 2 chế độ:

Trang 13

Hình 2.4 Cách mắc thạch anh.

Chế độ 1(mặc định): Ở chế độ này tần số thạch anh được chia làm 12 lần, nghĩa lànếu lệnh được thực hiện trong 1 chu kỳ máy và tần số thạch anh là 12Mhz thì thờigian thực hiện lệnh đó là 1us

Chế độ 2: Thạch anh được chia làm 6 lần, chế độ này được cài đặt bằng các thanhghi CLKCON0 và CLKCON1

PORT 0: Port 0 là một cổng 8 bit I/O 2 chiều Khi mức logic 1 được viết vào cácPIN của PORT 0, Pin đó có thể được sử dụng là cổng vào trở kháng cao Port 0 cũng

có thể được cấu hình thành bus ghép kênh 8 bit địa chỉ/dữ liệu thấp trong quá trìnhtruy nhập bộ nhớ ngoài, ở chế độ này các PIN của PORT 0 sẽ được kéo lên bêntrong.Ngoài ra PORT 0 cũng được sử dụng để nạp dữ liệu cho chip

PORT 1: Port 1 là cổng I/O 2 chiều có trở treo bên trong Khi mức logic 1 đượcviết vào PIN của PORT 1, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thểđược sử dụng là cổng vào

Ngoài ra các PIN P1.0 và P1.1 có thể được cấu hình là đầu vào của bộ Timer 2(AT89S52, AT89C52) Các pin P1.5, P1.6, P1.7 (AT89S51, AT89S52) lần lượt là cácPIN MOSI, MISO, SCK khi sử dụng để nạp cho chip qua ISP (In- SystemPrograming)

PORT 2 : Port 2 là cổng I/O 2 chiều có trở treo bên trong Khi mức logic 1 đượcviết vào PIN của PORT 2, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thểđược sử dụng là cổng vào Port 2 cũng có thể được cấu hình thành bus ghép kênh 8 bitđịa chỉ cao trong quá trình truy nhập bộ nhớ ngoài với 16 bit địa chỉ

PORT 3 : Port 3 là cổng I/O 2 chiều có trở treo bên trong Khi mức logic 1 đượcviết vào PIN của PORT 3, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thểđược sử dụng là cổng vào

Ngoài ra các Pin của PORT 3 cũng có thêm các chức năng đặc biệt khác:

Bảng 2.2: Chức năng các chân của Port 3

Trang 14

P3.2 INT0 B2H Ngõ vào ngắt ngoài 0

2.1.3 Sơ đồ khối

Hình 2.5 Sơ đồ khối vi điều khiển 8051

Chip 8051 có các đặc trưng như sau:

4KB ROM

128 byte RAM

4 port xuất nhập (I/O port) 8 bit

2 bộ định thời 16 bit

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

Không gian nhớ chương trình ngoài 64K b

Không gian nhớ dữ liệu ngoài 64K b

Bộ xử lý bit

Trang 15

210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit

Nhân/chia trong 4µs

2.2 Tổ chức bộ nhớ bên trong 8051

Các vi điều khiển thuộc họ 8051 đều tổ chức thành 2 không gian chương trình và

dữ liệu Kiến trúc vi xử lý 8 bit của 8051 này cho phép truy nhập và tính toán nhanhhơn đối với không gian dữ liệu nhờ việc phân chia 2 không gian bộ nhớ chương trình

và dữ liệu như trên Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ thống 16 bit địachỉ vẫn có thể thực hiện nhờ thanh ghi con trỏ

Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở rộng tối đa64Kbyte Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp sẵn trongchip có kích thước nhỏ nhất là 4kByte Với các vi điều khiển không tích hợp sẵn bộnhớ chương trình trên chip, buộc phải thiết kế bộ nhớ chương trình bên ngoài Ví dụ

sử dụng EPROM: 2764 (64Kbyte), khi đó chân PSEN phải ở mức tích cực (5V)

Hình 2.6 : Cấu trúc bộ nhớ chương trình

Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình Họ vi điềukhiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có thể mở rộngvới bộ nhớ dữ liệu ngoài lên tới 64kByte Với những vi điều khiển không tích hợpROM trên chip thì vẫn có RAM trên chip là 128byte Khi sử dụng RAM ngoài, CPUđọc và ghi dữ liệu nhờ tín hiệu trên các chân RD và WR Khi sử dụng cả bộ nhớ

Trang 16

chương trình và bộ nhớ dữ liệu bên ngoài thì buộc phải kết hợp chân RD và PSEN bởicổng logic AND để phân biệt tín hiệu truy xuất dữ liệu trên ROM hay RAM ngoài.

2.2.1 Bộ nhớ chương trình:

Hình 2.7: Cấu trúc bộ nhớ chương trình

Hình 2.8 : Các địa chỉ ngắt trong bộ nhớ chương trình

Mỗi khi xảy ra ngắt, con trỏ của CPU sẽ nhảy đến đúng địa chỉ ngắt tương ứng vàthực thi chương trình tại đó Ví dụ ngắt ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắtngoài 0 thì con trỏ chương trình sẽ nhảy đến đúng địa chỉ 0003H để thực thi chươngtrình tại đó Nếu trong chương trình ứng dụng không xử dụng đến ngắt ngoài 0 thì địachỉ 0003H vẫn có thể dùng cho mục đích khác (sử dụng cho bộ nhớ chương trình)

Trang 17

2.2.2 Bộ nhớ dữ liệu

Hình 2.9 Cấu trúc bộ nhớ dữ liệu

   Hình 2.9 mô tả cấu trúc bộ nhớ dữ liệu trong và bộ nhớ dữ liệu ngoài của họ viđiều khiển 8051 CPU sẽ dùng đến các chân RD và WR khi truy cập đến bộ nhớ dữliệu ngoài

Hình 2.10 :Cấu trúc bộ nhớ trong

Hình 2.10 mô tả cấu trúc bộ nhớ dữ liệu trong chip, được chia thành 3 khối là 128byte thấp, 128 byte cao và 128 byte đặc biệt

Trang 18

Hình 2.11 : Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong

 Hình 2.11 mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều khiển

8051 32 byte đầu tiên (00H-1FH) được sử dụng cho 4 bộ 8 thanh ghi R0-R7 Hai bitcủa thanh ghi đặc biệt PSW sẽ lựa chọn 1 trong 4 bộ thanh ghi mà vi điều khiển sẽdùng trong khi thực thi chương trình. 

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ácthanh 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ới các thiết bịxuất/nhập đơn bit. 

 Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên dưới vùngnà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ự do bằng cách sửdụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp. 

Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự

do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp. 

Hình 2.12 128 byte cao của bộ nhớ dữ liệu.

Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc biệt SFRchiếm phần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ý là không phải tất cả

128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được địnhnghĩa

Trang 19

2.3 Kiến trúc vi điều khiển 8051

8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ địachỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đềuđược định nghĩa mà chỉ có 21 địa chỉ được định nghĩa Hình mô tả các thanh ghi đặcbiệt trong vùng nhớ dữ liệu 80H đến FFH

Hình 2.13 Các thanh ghi đặc biệt 2.3.1 Thanh ghi chính

Thanh ghi tính toán chính của vi điều khiển 8051 ACC (Accumulator) Là thanhghi đặc biệt của 8051 dùng để thực hiện các phép toán của CPU, thường kí hiệu là A. 

2.3.2 Thanh ghi phụ

Thanh ghi tính toán phụ của vi điều khiển 8051 là B Thanh ghi B ở địa chỉ F0H

được dùng chung với thanh chứa A trong các phép toán nhân, chia Thanh ghi trạng thái chương trình (PSW)

Thanh ghi trạng thái chương trình PSW là thanh ghi mô tả toàn bộ trạng tháichương trình đang hoạt động của hệ thống

Bảng 2.3: Mô tả thanh ghi từ trạng thái chương trình PSW

Trang 20

2.3.3 Thanh ghi ngăn xếp (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 satck bao gồ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ào stack làm tăng SPtrướ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 địa chỉ truy xuất được bởikiểu định địa chỉ gián tiếp

2.3.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ìnhngoà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)

2.3.5 Thanh ghi các cổng P0-P3

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

2.3.6 Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer)

Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộ

Trang 21

chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi quá trìnhtruyền dữ liệu qua truyền thông nối tiếp kết thúc Khi thực hiện việc chuyển dữ liệu từSBUF ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền thông nối tiếp.

2.3.7 Thanh ghi của bộ định thời/bộ đếm

8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gianhoặc để đếm các sự kiện Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các thanhghi của bộ đếm thời gian 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, bytecao)

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

2.3.8 Các thanh ghi điều khiển

Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON và PCON làcác thanh ghi điều khiển và ghi nhận trạng thái của hệ thống ngắt, bộ đếm/định thời,truyền thông nối tiếp

Trang 22

Chương 3: Truyền thông nối tiếp UART

Các máy tính truyền dữ liệu theo hai cách: Song song và nối tiếp Trong truyền dữliệu song song thường cần rất nhiều đường dây dẫn chỉ để truyền dữ liệu đến một thiết

bị chỉ cách xa vài bước Ví dụ của truyền dữ liệu song song là các máy in hoặc các ổcứng, mỗi thiết bị sử dụng một đường cáp với nhiều dây dẫn Mặc dù trong các trườnghợp như vậy thì nhiều dữ liệu được truyền đi trong một khoảng thời gian ngắn bằngcách dùng nhiều dây dẫn song song, nhưng khoảng cách thì không thể lớn được Vìcác đường cáp dài làm suy giảm thậm chí làm méo tín hiệu Ngoài ra, các đường cápdài có giá thành cao Vì những lý do này, để truyền dữ liệu đi xa thì phải sử dụngphương pháp truyền nối tiếp

3.1 Các cơ sở của truyền thông nối tiếp

Trong truyền thông nối tiếp dữ liệu được gửi đi từng bit một, so với truyền songsong thì là một hoặc nhiều byte được truyền đi cùng một lúc

Hình 3.1 Sơ đồ truyền dữ liệu nối tiếp so với sơ đồ truyền song song.

Trong truyền thông nối tiếp, một đường dữ liệu duy nhất được dùng thay chonhiều đường dữ liệu của truyền thông song song không chỉ giúp giảm giá thành, giúp

hệ thống đơn giản hơn nhiều mà nó còn mở ra khả năng để hai máy tính ở cách xanhau có truyền thông qua đường thoại

Truyền thông dữ liệu nối tiếp sử dụng hai phương pháp là đồng bộ và không đồngbộ:

- Trong truyền đồng bộ: thì bộ truyền và bộ thu được đồng bộ hóa qua một đườngtín hiệu đồng hồ bên ngoài Khái niệm “đồng bộ” để chỉ sự “báo trước” trong quá

Trang 23

đường dữ liệu và 1 đường xung nhịp Cứ mỗi lần tb1 muốn truyền 1 bit dữ liệu, tb1điều khiển đường xung nhịp chuyển từ mức thấp lên mức cao báo cho tb2 sẵn sàng

nhận một bit Bằng cách “báo trước” này tất cả các bit dữ liệu có thể truyền/nhận dễ dàng với ít “rủi ro” trong quá trình truyền Tuy nhiên, cách truyền này đòi hỏi ít nhất

2 đường truyền (dữ liệu và clock) cho 1 quá trình truyền hoặc nhận

- Khác với cách truyền đồng bộ, truyền thông không đồng bộ chỉ cần một đường

truyền cho một quá trình “Khung dữ liệu” đã được chuẩn hóa bởi các thiết bị nên

không cần đường xung nhịp báo trước dữ liệu đến Ví dụ: 2 thiết bị đang giao tiếp vớinhau theo phương pháp này, chúng đã được thỏa thuận với nhau rằng cứ 1ms thì sẽ có

1 bit dữ liệu truyền đến, như thế thiết bị nhận chỉ cần kiểm tra và đọc đường truyềnmỗi mili-giây để đọc các bit dữ liệu và sau đó kết hợp chúng lại thành dữ liệu có ýnghĩa Truyền thông nối tiếp không đồng bộ vì thế hiệu quả hơn truyền thông đồng bộ(không cần nhiều đường truyền) Tuy nhiên, để quá trình truyền thành công thì việctuân thủ các tiêu chuẩn truyền là hết sức quan trọng

Trong 8051 có một bộ truyền dữ liệu không đồng bộ (UART - UniversalAsynchronous serial Reveiver and Transmitter) Trước tiên chúng ta sẽ tìm hiểu cáckhái niệm quan trọng trong phương pháp truyền thông nối tiếp không đồng bộ

3.1.1 Baud rate (tốc độ Baud)

Để việc truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham giaphải “thống nhất” với nhau về khoảng thời gian dành cho 1 bit truyền, hay nói cáchkhác tốc độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud

Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây.

Ví dụ: nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là1/19200 ~ 52.083us

3.1.2 Frame (khung truyền)

Dữ liệu đi vào ở đầu thu của đường dữ liệu trong truyền dữ liệu nối tiếp là mộtdãy các số 0 và 1, và rất khó để hiểu được ý nghĩa của các dữ liệu ấy nếu bên phát vàbên thu không cùng thống nhất về một tập các luật, một thủ tục, về cách dữ liệu đượcđóng gói, bao nhiêu bit tạo nên một ký tự và khi nào dữ liệu bắt đầu và kết thúc Bên

Trang 24

cạnh tốc độ baud, khung truyền là một yếu tố quan trọng tạo nên sự thành công khi

truyền và nhận

Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền.

- Start bit là bit đầu tiên được truyền trong một frame truyền, bit này có chức

năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới Start là bitbắt buộc phải có trong khung truyền, và nó là một bit thấp (0)

- Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.

Data không nhất thiết phải là gói 8 bit, với 8051 ta có thể quy định số lượng bit củadata là 08 hoặc 09 bit Trong truyền thông nối tiếp UART, bit có trọng số nhỏ nhất(LSB - Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng

là bit có trọng số lớn nhất (MSB - Most Significant Bit, bit bên trái)

- Parity bit là bit dùng để kiểm tra dữ liệu truyền có đúng không (một cách tương

đối) Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity) Parity chẵnnghĩa là số lượng số “1” trong dữ liệu bao gồm bit parity luôn là số chẵn Ngược lạitổng số lượng các số “1” trong parity lẻ luôn là số lẻ

Ví dụ: nếu dữ liệu của bạn là 10111011 nhị phân, có tất cả 6 số “1” trong dữ liệunày, nếu quy định parity chẵn được dùng, bit parity sẽ mang giá trị 0 để đảm bảo tổngcác số “1” là số chẵn (6 số 1) Nếu parity lẻ được yêu cầu thì giá trị của parity bit là 1.Sau khi truyền chuỗi dữ liệu kèm theo cả bit parity trên, bên nhận thu được và kiểmtra lại tổng số số “1” (bao gồm cả bit parity), nếu vi phạm quy định parity đã đặt trướcthì ta khẳng định là dữ liệu nhận được là sai

Parity bit không phải là bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi

khung truyền

- Stop bits là 01 hoặc nhiều bit báo cho thiết bị nhận rằng một gói dữ liệu đã được

gởi xong Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung

Trang 25

truyền để đảm bảo tính chính xác của dữ liệu Stop bits là các bit bắt buộc xuất hiệntrong khung truyền, trong 8051 có thể là 01 hoặc 02 bit, và chúng là các bit cao (1).

Hình 3.2 Một khung truyền trong truyền thông nối tiếp không đồng bộ

Hình trên là một ví dụ của một khung truyền của UART (truyền thông nối tiếpkhông đồng bộ): khung truyền này được bắt đầu bằng 01 start bit, tiếp theo là 08 bitdata, sau đó là 01 bit parity dùng kiểm tra dữ liệu và cuối cùng là 02 bits stop

3.2 Truyền thông nối tiếp trong 8051

3.2.1 Phần cứng

Trong 8051 có hai chân được dùng cho truyền và nhận dữ liệu nối tiếp Hai chânnày được gọi là TxD và RxD, là một phần của cổng P3 (đó là P3.0-chân 10 và P3.1-chân 11) Các chân này hoạt động với mức logic TTL (mức logic cao “1” được gáncho Vcc và mức logic thấp được gán cho 0v)

Vì các máy tính được sử dụng rất rộng rãi để truyền thông với các hệ thống viđiều khiển, do vậy ta chủ yếu tập trung vào truyền thông nối tiếp của 8051 với cổngCOM – RS232 của PC

Trang 26

Hình 3.3 Sơ đồ chân vi điều khiên 8051

Để cho phép tương thích giữa các thiết bị truyền thông dữ liệu được sản xuất bởicác hãng khác nhau thì một chuẩn giao diện được gọi là RS232 đã được thiết lập bởihiệp hội công nghiệp điện tử EIA vào năm 19960 Năm 1963 nó được sửa chỉnh vàđược gọi là RS232A và vào các năm 1965 và 1969 thì được đổi thành RS232B vàRS232C ở đây chúng ta đơn giản chỉ hiểu là RS232 Ngày nay RS232 là chuẩn giaodiện I/O vào - ra nối tiếp được sử dụng rộng rãi nhất Chuẩn này được sử dụng trongmáy tính PC và hàng loạt các thiết bị khác nhau

Trang 27

Tránh tín hiệu mạng dữ liệu

Dữ liệu được nhận

Dữ liệu được gửiĐầu dữ liệu sẵn sàngĐất của tín hiệu

Dữ liệu sẵn sàngYêu cầu gửiXoá để gửiBáo chuông

Nối ghép 8051 tới RS232:

Chuẩn RS232 được thiết lập trước họ logic TTL rất lâu do vậy điện áp đầu vào

và đầu ra của nó không tương thích với mức TTL Trong RS232 thì mức logic 1 được

biểu diển từ điện áp - 3v đến -25v trong khi đó mức 0 thì ứng với điện áp + 3v đến+25v làm cho điện áp - 3v đến + 3v là không xác định Vì lý do này để kết nối một

Ngày đăng: 06/02/2023, 22:33

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Computer Organization and Architecture Designing for Performance Tenth Edition_ WILLIAM STALLINGS2. Datashieet 8051 Sách, tạp chí
Tiêu đề: Computer Organization and Architecture Designing for Performance Tenth Edition
Tác giả: William Stallings
5. 1.1tổchứcbộnhớhọviđiềukhiển80512 - machdientu (google.com) Sách, tạp chí
Tiêu đề: Tổ chức bộ nhớ họ vi câu khiển
7. Giáo trình “Họ vi điều khiển 8051”, tác giả Tống Văn On Sách, tạp chí
Tiêu đề: Họ vi điều khiển 8051
Tác giả: Tống Văn On
8. Giới thiệu về họ vi điều khiển 8051, tác giả Trịnh Trọng Việt link:https://sites.google.com/site/t2vietdtk/Downhome/gi/8051/vdk/gioi-thieu-ve-ho-vid Sách, tạp chí
Tiêu đề: Giới thiệu về họ vi điều khiển 8051
Tác giả: Trịnh Trọng Việt
9. Giáo trình “Cấu trúc và lập trình họ vi điều khiển 8051”, tác giả Nguyễn Tăng Cường và Phan Quốc Thắng Sách, tạp chí
Tiêu đề: Cấu trúc và lập trình họ vi điều khiển 8051
Tác giả: Nguyễn Tăng Cường, Phan Quốc Thắng

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w