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

46 4 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
Tác giả Nhóm 4
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Kỹ thuật Vi điều khiển
Thể loại Báo cáo môn học
Thành phố Hà Nội
Định dạng
Số trang 46
Dung lượng 2,39 MB

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

Nội dung

Vi điều khiển và vi xử lý có rất nhiều điểm khác nhau. Sự khác biệt đầu tiên và quan trọng nhất chính là chức năng của nó. Để bộ vi xử lý có thể hoạt động được, các thành phần ngoại vi khác như bộ nhớ phải được thêm vào nó. Mặc dù các bộ vi xử lý được coi là những bộ máy tính toán mạnh mẽ, nhưng điểm yếu của chúng là chúng không được thiết kế để giao tiếp trực tiếp với các thiết bị ngoại vi. Để giao tiếp với môi trường ngoại vi, bộ vi xử lý phải cần thêm các bo mạch đặc biệt khác bên ngoài. Bộ vi xử lý được ví như trái tim thuần khiết của các máy tính, và nó không thể hoạt động một mình được. Đây là đặc trưng của các bộ vi xử lý, và điều này vẫn giữ nguyên cho đến ngày hôm nay. Đối lập với vi xử lý, vi điều khiển được thiết kế để gói gọn tất cả trong một, bao gồm bộ vi xử lý, các thành phần hỗ trợ cho bộ vi xử lý, các bo mạch cần thiết để kết nối với các thiết bị ngoại vi bên ngoài. Chúng ta không cần thêm bất kỳ một thành phần nào khác để thực hiện các chức năng của vi điều khiển, vì tất cả các bo mạch cần thiết nếu không thuộc về các thiết bị ngoại vi thì đều đã được tích hợp trong chính nó. Điều này giúp tiết kiệm thời gian và không gian cần thiết để thiết kế một thiết bị hoàn chỉnh một hệ thống nhúng.

Trang 2

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

KIẾN TRÚC VÀ

TỔ CHỨC MÁY TÍNH

THỰC HIỆN BỞI NHÓM 4

Trang 3

Vi điều khiển 8051

Trang 4

1 CẤU HÌNH CỦA VĐK 8051

2 CẤU TRÚC CỦA 8051

3 SƠ ĐỒ CHÂN CỦA 8051

4 CẤU HÌNH TỐI THIỀU ĐỂ 8051

CÓ THỂ HOẠT ĐỘNG ĐƯỢC

Trang 5

Hệ vi xử lí = CPU + bộ nhớ + phối ghép I/O 8051 có thể coi là một hệ vi xử lí trên 1 chip

Trang 6

• Giao tiếp nối tiếp UART ( theo chế độ UART)

• Bộ điều khiển ngắt với 5 nguồn ngắt

• Bộ xử lý bit với 210 bit

• Lệnh nhân/ chia 4MC

Trang 7

Central Processor Unit (CPU)

• CPU là bộ não trung tâm có nhiệm vụ theo dõi và điều khiển tất cả cá hoạt động của vi điều khiển CPU đọc

và thực thi chương trình trong ROM

Bus: là tập các dây nối để liên kết các thành phần,

truyền lệnh, địa chỉ, hoặc dự liệu

CẤU TRÚC BÊN TRONG CỦA 8051

Trang 8

Input/Output Port

• Để kết nối với các thiết bị khác, cần có các cổng vào/ra dữ liệu I/O 8051 có bốn cổng vào/ra 8 bit, là P0, P1, P2, P3

Timers/Counters:

• 8051 có các bộ đếm/định thời 16bit Dùng để định thời gian hoặc đếm sự kiện

Interupts:

• 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, đượ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

• Có 6 nguồn ngắt: 2 ngắt ngoài, 2 ngắt timer, 1 ngắt cổng nối tiếp, và 1 ngắt reset

CẤU TRÚC BÊN TRONG CỦA 8051

Trang 9

SƠ ĐỒ CHÂN CỦA 8051 (AT89S52)

Trang 10

1 Chân 20 cấp GND

2 Chân 40 cấp nguồn Vcc 5V

3 Chân 9 Nối với mạch reset

4 Chân 18,19 Nối với mạch tạo dao động

5 Chân 31 Nối với Vcc, để chạy chương

trình lưu trữ trong bộ nhớ trong

6 Nếu P0 muốn làm cổng vào thì cần nối

với trở thanh 103 kéo lên Vcc

Cấu hình tối thiểu để 8051 có thể hoạt động được

Trang 11

TRUYỀN THÔNG NỐI TIẾP UART

Trang 13

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 song song thì là một hoặc nhiều byte được truyền đi cùng một lúc

- Giảm giá thành

- Hệ thống đơn giản hơn

- Mở ra khả năng để hai máy tính ở cách xa nhau có thể truyền

Trang 14

3.1 CÁC CƠ SỞ CỦA TRUYỀN THÔNG NỐI TIẾP

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 đồng bộ

Truyền đồng bộ

Thì bộ truyền và bộ thu được đồng bộ hóa qua một đường tín hiệu đồng

hồ bên ngoài Khái niệm

“đồng bộ” để chỉ sự “báo trước” trong quá trình truyền

Truyền 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.

Trong 8051 có một bộ truyền dữ liệu không đồng bộ (UART - Universal Asynchronous serial Reveiver and Transmitter)

Trang 15

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 gia phả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ách khá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

Trang 16

3.1.2 FRAME ( KHUNG TRUYỀ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

Trang 18

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ân này

được gọi là TxD và RxD

Để 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ởi các

hãng khác nhau thì một chuẩn giao diện được

gọi là RS232 đã được thiết lập

Trang 19

3.2.1 PHẦN CỨ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

Trang 20

3.2.2 THIẾT LẬP TỐC ĐỘ BAUD TRONG 8051

Một khi các chế độ cổng nối tiếp đã được cấu hình, việc tiếp theo là chương trình cần phải cấu hình tốc độ baud cho các cổng nối tiếp

Trang 21

NGẮT TRONG 8051

Trang 23

4.1 SƠ LƯỢC

PHÂN BIỆT CƠ CHẾ NGẮT VÀ

CƠ CHẾ THĂM DÒ- HỎI VÒNG

Trang 24

I hope and I believe that this Template will your Time, Money and Reputation

Your Text Here

Khái niệm:

4.1 SƠ LƯỢC VỀ NGẮT

Ngắt(Interrupt) là một số sự kiện khẩn cấp xảy ra bên trong hoặc bên ngoài bộ vi điều khiển, buộc vi điều khiển tạm dừng việc thực hiện chương trình hiện tại chuyển sang 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)

CHƯƠNG TRÌNH CHÍNH ( MAIN PROGRAM)

Trang 25

Phân biệt cơ chế ngắt và cơ chế thăm dò - hỏi vòng

4.1 SƠ LƯỢC VỀ NGẮT

Thiết bị nào muốn được phục vụ sẽ báo

cho vi điều khiển bằng cách gửi một tín

hiệu ngắt

Bộ vi điều khiển ngừng tất cả những gì

đang thực hiện để chuyển sang phục vụ

thiết bị gọi ngắt

Sau khi phục vụ ngắt xong, bộ vi điều khiển

lại quay trở lại điểm bị ngắt trước đó tiếp

Trang 26

VẬY VỚI NHỮNG ĐIỂM KHÁC BIỆT TRÊN THÌ THEO CÁC BẠN CƠ CHẾ NGẮT HAY THĂM DÒ-HỎI VÒNG

ĐƯỢC ƯA CHUỘNG HƠN? VÌ SAO?

Cơ chế ngắt được ưa chuộng hơn

Trang 27

4.1 SƠ LƯỢC VỀ NGẮT

Ưu điểm vượt trội của ngắt so với phương pháp thăm dò- hỏi vòng( polling)

Phương pháp ngắt được ưu chuộng hơn vì:

Bộ vi điều khiển có thể phục vụ được

rất nhiều thiết bị dựa trên mức ưu tiên 

Không lãng phí thời gian cho các thiết bị không cần phục vụ.

Phương pháp thăm dò:

Bộ vi điều khiển sẽ kiểm tra tất cả các thiết

bị kể cả khi thiết bị đó không cần phục vụ

Lãng phí thời gian của bộ vi điều khiển

Trang 29

Trong lập trình C trên Keil c cho 8051, chúng

ta khai báo trình phục vụ ngắt theo cấu trúc sau:

Interrupt Address = (X * 8) + 3

Trang 30

4.3 QUY TRÌNH THỰC HIỆN MỘT NGẮT

Trang 31

4.3 QUY TRÌNH THỰC HIỆN MỘT NGẮT

Khi kích hoạt một ngắt bộ vi điều khiển thực hiện các bước sau:

 Nó kết thúc lệnh đang thực hiện và lưu địa chỉ của lệnh kế tiếp vào ngăn xếp.

 Nó cũng lưu tình trạng hiện tại của tất cả các ngắt vào bên trong

 Nó nhảy đến một vị trí cố định trong bộ nhớ được gọi là bảng vector ngắt, nơi lưu giữ địa chỉ của một trình phục vụ ngắt.

 Bộ vi điều khiển nhận địa chỉ ISR từ bảng vector ngắt và nhảy tới đó Nó bắt đầu thực hiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR là RETI và trở về chương trình chính từ ngắt.

 Khi bộ vi điều khiển quay trở về chương trình trước đó Trước hết nó nhận địa chỉ của bộ đếm chương trình PC từ ngăn xếp bằng cách kéo 02 byte trên đỉnh của ngăn xếp vào PC Sau đó bắt đầu thực hiện tiếp các lệnh từ địa chỉ đó.

Trang 32

4.4 CÁC THANH GHI ĐIỀU KHIỂN NGẮT

Trang 33

4.4 CÁC THANH GHI ĐIỀU KHIỂN NGẮT

• Thanh ghi TCON (Timer control): chứa các cờ ngắt Timer, cờ ngắt ngoài, và bit lựa chọn kiểu ngắt ngoài

• Thanh ghi SCON (Serial control): chứa các cờ ngắt truyền thông nối tiếp

• Thanh ghi IE (Interrupt enable): thanh ghi cho phép ngắt

• Thanh ghi IP (Interrupt priority): thanh ghi ưu tiên ngắt

Trang 34

4.4 CÁC THANH GHI ĐIỀU KHIỂN NGẮT

7 EA (Enable All) AFh Cho phép/cấm hoạt động của cả thanh ghi

4 ES (Enable Serial) ACh Cho phép ngắt cổng truyền thông nối tiếp

3 ET1 (Enable Timer 1) ABh Cho phép ngắt Timer 1

2 EX1 (External 1) Aah Cho phép ngắt ngoài 1

1 ET0 (Enable Timer 0) A9h Cho phép ngắt Timer 0

0 EX0 (External 0) A8h Cho phép ngắt ngoài 0

Bảng: Thanh ghi cho phép ngắt IE

Trang 35

4.5 ƯU TIÊN NGẮT

Trang 36

4.5 ƯU TIÊN NGẮT

• Mỗi một nguyên nhân ngắt đều được lập trình riêng lẻ để có một trong 2 mức

ưu tiên thông qua thanh ghi chức năng đặc biệt được định địa chỉ bit , thanh ghi ưu tiên ngắt IP (interrupt priority), thanh ghi này có địa chỉ byte là 0B8H

Vậy nếu có nhiều nguồn ngắt xảy ra thì vi điều khiển sẽ ưu tiên ngắt như thế nào?

Trang 37

• 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 Nếu có ngắt ở mức ưu tiê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ạm dừng ( nghĩa là bị ngắt)

không thể tạm dừng một chương trình một chương trình phục vụ ngắt có mức ưu tiên cao Và nếu có 2 ngắt có mức ưu tiên ngắt khác nhau xuất hiện đồng thời , ngắt có mức ưu tiên cao sẽ được phục vụ trước.

Bảng thanh ghi ưu tiên ngắt IP

Bit Ký hiệu Địa chỉ bit Mô tả

(1 : mức cao ; 0 : mức thấp)

Trang 38

• Thứ nhất, Hoàn tất việc thực thi lệnh hiện hành.

• Thứ hai, Bộ đêm chương trình

PC được cất vào stack

• Thứ ba, Trạng thái của ngắt hiện hành được lưu giữ lại

• Thứ tư, Các ngắt được chận lại

Trang 39

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

4.6.1 Các cờ RI và TI và các ngắt

TI

RI

023H

Trang 40

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

4.6.2 Sử dụng cổng COM nối tiếp trong 8051

Trong các ứng dụng, ngắt nối tiếp chủ yếu được sử dụng để nhận dữ liệu và không bao giờ được sử dụng để truyền dữ liệu nối tiếp.

4.6.3 Xoá cờ RI và TI trước khi thoát khỏi ngắt truyền thông nối tiếp

Ta nhận thấy rằng rằng lệnh cuối cùng trước khi trở về từ ISR là lệnh xoá các cờ RI và TI Điều này tương phản với ngắt ngoài và ngắt bộ định thời là đều được 8051 xoá các cờ.

Trang 41

5 Mô phỏng

Trang 42

Khai báo thư viện của 8501 trong C

<at89x51.h> <REGX51.H>

Trang 43

Cài đặt hoạt động 8501 trong C

Khai báo chế độ hoạt động của IC:

TH1=0xFD;

Trang 44

Các lệnh thường dung khi lập trình truyền thông nối tiếp

TI=1 // Tính hiệu đã truyền xong

TI=0 // Ngắt cờ sau khi truyền xong để chờ trạng thái tiếp theo

Trang 45

Khai báo các chân nối 8501 trong C

#define <Chân của thiết bị bên ngoài> <Chân của 8501>

Trang 46

THANK YOU

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

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