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

Giáo trình Vi xử lý: Phần 1

186 2 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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 đề Giáo Trình Vi Xử Lý: Phần 1
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công nghệ Thông tin
Thể loại giáo trình
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 186
Dung lượng 32,78 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

  • CHƯƠNG 4. VI ĐIỀU KHIEN 8 BIT - LỆNH HỢP NGỮ (12)
    • 1. Giới thiệu.... 2. Các kiểu định địa chỉ của vi điều khiển MCS-52 3. Khảo sát tập lệnh vi điều khiển MCS-52 II. CÂU HỎI ÔN TẬP - TRAC NGHIEM ~ BÀI TẬP (67)
  • CHUONG 5. VI DIEU KHIEN 8 BIT - NGON NGU LAP (52)
    • 1. Các kiểu đữ liệu của biến ..................................vc sen ierrirre 100 .„. 101 . 106 .. T10 2. Các toán tử 3. Các lệnh C cơ bản II. TRÌNH BIÊN DỊCH C5I. Phần mở rộng của trình biên dịch C5 (98)
    • VI. CÂU HỎI ÔN TẬP - TRẲC NGHIEM - BÀI TẬP (0)
      • 2. Ứng dung đo nhiệt độ dùng AT89S52 và ADC 0809 (0)
      • 1. Các nguồn ngắt cha AT89S52.. 2. Các thanh ghi ngất của AT89S52. 3. Khai báo ngắt của AT89S52 trong lập trình Keil-C 4. Ứng dụng ngắt của, TEĐSS2sucnosoasiryraidoottaioisoqbzatwapdtede 255 IV. CÂU HỎI ÔN TẬP - TRẮC NGHIỆM - BÀI TẬP (0)
      • 1. Câu hỏi ôn tập ...... 2. Câu hỏi mở rộng.. 3. Câu hỏi trắc nghiệm 4. Bài tập (33)
  • CHUONG 10. VI DIEU KHIEN 8 BIT - TRUYEN DU LIEU (118)

Nội dung

VI ĐIỀU KHIEN 8 BIT - LỆNH HỢP NGỮ

VI DIEU KHIEN 8 BIT - NGON NGU LAP

Các kiểu đữ liệu của biến vc sen ierrirre 100 „ 101 106 T10 2 Các toán tử 3 Các lệnh C cơ bản II TRÌNH BIÊN DỊCH C5I Phần mở rộng của trình biên dịch C5

Trong lập trình, việc khai báo biến để lưu trữ và xử lý dữ liệu là rất quan trọng, và loại dữ liệu cần được chọn phù hợp với yêu cầu Các biên của vi xử lý bao gồm bit (1 bit), byte (8 bit), word (16 bit) và long word (32 bit) Các kiểu dữ liệu cơ bản này đóng vai trò quan trọng trong việc quản lý và xử lý thông tin.

Bang 5-1: Cac kiéu dit liéu

TTỊ Kiểudữliệu | Số bit Giới hạn

GIÁO TRÌNH VI XỮ LÝ CHƯƠNG 5

12 | Sữ16 16 | 0+65535 bit TT; unsigned char dem; sfr16 T2= 0xCC;

Ví dụ 5-1: Khai báo các biển

//khai báo biến trạng thái thuộc kiểu đữ liệu bit //khai báo biến đếm (DEM) thuộc kiểu kí tự không dâu 8 bit

Jfkhai báo T2 là hai thanh ghỉ T2L và T2H nằm ở hai ô nhớ có địa chỉ liên tiêp là 0xŒC và 0xCD

Các toán tử là thành phần quan trọng trong lập trình, để lập trình thì chúng ta cân phải hiểu rõ ràng chức năng của các loại toán tử

Bảng 5-2: Các toán tử trong ngôn ngữ C báo gom:

'TT| Toán tử Chức năng Ví dụ

2 += |Toán tử cộng và gán x+=y tương đương với x=x+y

3 &=_ |Toán tử and và gán x&=y tương đương với x=x&y

5 ^= _ |Toán tửex-or và gắn x^=y tương đương với x=x^y

7† |Toán tửor và gấn x|=y tương đương với x=xÌy § | |Toán tử or nhiều đại lượng với | Ví dụ or nhiều bit trong 1 byte nhau thành 1 với nhau

10| /= — |Todan tt chia va gan x/=y tương đương với x=x/y il / Toán tử chia

12| == |Toán tử bằng dùng để so sánh

CHƯƠNG 5 GIÁO TRÌNH VI XỬ LÝ

14| >=_ |Toán tử lớn hơn hay bang

15 ++_ |Tăng l6| * |Toán tử truy xuất gián tiếp, đi trước con trỗ

18| = y tương đương với

32| ->_ |Toán tử con trỏ cấu trúc

33 -= Toán tử trừ và gán x- =y tương đương với x=x-y

35| sizeof |Xác định kích thước theo byte của toán tử

GIÁO TRÌNH VI XỬ LÝ CHƯƠNG 5

Dùng để gán một giá trị nào đó cho một biến

Ví dụ 5-2: A = 5; Gan biến A bằng 5

Có chức năng gán biến B bằng 5 rồi cộng với 2 và gán cho biến A, kết quả B =§ và A =7

— Có 5 toán tử để thực hiện các phép toán cộng, trừ, nhân, chia và chia lây phân dư

Gan A bing 24, B gán số dư của A chia cho 5, kết quả B bằng 4

Ví dụ này có chức năng tách từng con số đơn vị, chục, trăm gắn cho ba biên X, Y, Z

Ví dụ này có chức năng tách từng con số đơn vị, chục, trăm, ngàn gần cho 4 biên X, Y, Z, V

> Toán tử gắn phúc hợp (+=, +=, *=, “=, #=, >>=, Toán từ logic các điều kiện (1, &&,||)

Các toán tử trên tương đương là NOT, AND và OR

Ví dụ 5-12: trục sẽ cho kết quả là false

((5==5) && (6>4)) _ and hai điều kiện lại với nhau và kết quả là true

> Toán tử xử lý bit (&, |,^, >, >)

Các toán tử xử lý bít với bịt, các toán tử trên tương đương là AND,

OR, XOR, NOT, SHL (dịch trái), SHR (dịch phải)

GIÁO TRÌNH VI XỬ LÝ - CHUONG 5

X=A &B;//X bằng A and với B, kết qua X = 0100 0001B = 0X41 Y=A|B; // Y bằng A or voi B, két qua Y = L111 1111B = OXFF Z=A^B; //7 bang A xor với B, kết quả Z = 1011 1110B = OXBE W=~A; //W bằng not A, kết quả W = 1000 1000B = 0X88 `

A=(A 8; //dịch A sang phải 8 bit rồi gán Y, kết quả Y=0X12 có nghĩa là gán byte cao

> Toán tử lấy kích thước chuỗi theo bye ()

A =sizeof (charac); — kết quả là A sẽ chứa số byte của chuỗi charac

Thành phan quan trọng thứ ba trong lập trình C là các lệnh của ngôn ngữ C, phần tiếp theo sẽ khảo sát các lệnh cơ bản

Chức năng: kiểm tra điều kiện nếu thỏa thì làm

GIÁO TRÌNH VI XỬ LÝ CHƯƠNG 5

Chức năng: lặp lại một thao tác với một số lần nhất định hoặc khi còn thỏa một điêu kiện nào đó

Cú pháp: while (diéu_kién)

Chức năng: làm các lệnh trong dấu ngoặc và thoát nếu điều kiện theo sau lệnh while không đúng

Thực hiện lệnh x bằng x cộng với 10, làm cho đến khi x bằng hay lớn hơn 100

Chức năng: làm các lệnh trong dấu ngoặc một số lần nhất định

Cú pháp: for (giá trị bắt đầu; điều kiện kết thúc; tăng giá trị)

CHUONG 5 GIÁO TRÌNH VI XỪ LÝ

Vòng lặp thực hiện với biến n bằng 0 cho đến khi n bằng 100 thì ngừng

_ Chức năng: Lệnh này dùng để thoát khỏi vòng lặp dù cho điều kiện để kêt thúc chưa thỏa mãn

Chức năng: Lệnh này dùng để kết thúc phần còn lại của vòng lặp để làm lân lặp tiếp theo

Chức năng: Lệnh này dùng để nhảy đến nhãn trong chương trình

Chức năng: thực hiện một công việc tùy thuộc vào hàm

GIÁO TRÌNH VI XỬ LÝ CHƯƠNG 5

Trình biên địch C51 dùng đẻ biên dịch tập tin mã nguồn C cho họ vi điều 8051, để lập trình C chúng ta có thể sử dụng phần mềm biên địch Keil-

C (trong Keil-C sử dụng C51 để biên dịch) là công cụ quan trọng cho việc lập trình vi điều khiển Bạn có thể tham khảo tài liệu thực hành để biết cách cài đặt, lập trình và biên dịch Với những kiến thức cơ bản đã trình bày, bạn có thể lập trình cho vi điều khiển, tuy nhiên, do sự khác biệt giữa các loại vi điều khiển, cần tìm hiểu thêm về các tính năng đặc trưng của từng loại.

1 Phần mở rộng của trình biên dịch C51

Trình biên dịch C51 cung cấp các phần mở rộng cho ngôn ngữ C chuẩn ANSI, hỗ trợ trực tiếp cho các thành phần của kiến trúc vi điều khiển 8051.

CHƯƠNG 5 GIÁO TRÌNH VI XỬ LÝ © _ Các vùng nhớ của vi điều khiển 8051 e - Các kiểu mô hình bộ nhớ e _ Các chỉ dẫn loại bộ nhớ © _ Các chỉ dẫn loại biến dữ liệu bộ nhớ e _ Các biến thuộc dữ liệu bit và đữ liệu cho phép truy xuất bit ứe Cỏc thanh ghi đặc biệt ¢ Contrỏ e_ Các thuộc tính hàm

> Từ khóa: Để tránh lỗi phát sinh trong lập trình nên phần mềm C51 cung cấp các từ khóa như sau:

_at_ idata str alien interrupt | sfrl6 bdata large small bit pdata _task_ code _priority_ | using compact | reentrant | xdata data sbit

> Bộ nhớ chương trình ROM: -

Bộ nhớ này chỉ được sử dụng để lưu trữ chương trình, không có chức năng lưu dữ liệu, ngoại trừ các hằng số Các hằng số có thể được lưu thông qua các khai báo như sau: `unsigned char code constant_t = 0x03;` và `unsigned char code array_1[3] = {'L', '2', '3'};`.

> Bộ nhớ chương trình SMALL:

Bộ nhớ khoảng 2kbyte được sử dụng để biên dịch các lệnh CALL và JMP thành lệnh ACALL và AJIMP, giúp giảm kích thước byte mã lệnh và tăng tốc độ thực thi.

GIAO TRINH VI XU LY CHUONG 5

> Bộ nhớ chương trinh COMPACT:

Bộ nhớ này có kích thước khoảng 64kbyte, dùng để khi biên dịch thì lệnh CALL sẽ được dịch thành lệnh LCALL, còn lệnh JMP thì vẫn là AJMP

> Bộ nhớ chương trình LARGE:

Bộ nhớ có dung lượng khoảng 64kbyte, được sử dụng để biên dịch các lệnh CALL và TMP thành lệnh LCALL và LIMP, nhằm cho phép thực hiện các cuộc gọi và nhảy xa hơn.

> Bộ nhớ dữ liệu RAM SMALL:

Bộ nhớ trong vi điều khiển cho phép truy xuất nhanh nhất, với tất cả các biến được lưu trữ trong bộ nhớ dữ liệu Tuy nhiên, bộ nhớ này có dung lượng hạn chế, chỉ 256 byte, bao gồm cả bank thanh ghi và vùng nhớ ngăn xếp.

Trong 256 byte, 128 byte đầu tiên cho phép truy xuất trực tiếp, được gọi là DATA, trong khi 128 byte còn lại chỉ cho phép truy xuất gián tiếp, được gọi là IDATA.

> Bộ nhớ dữ liệu RAM COMPACT:

Bộ nhớ PDATA là bộ nhớ dữ liệu ngoại với dung lượng 256 byte, sử dụng port 0 để giao tiếp Để truy xuất dữ liệu, hai thanh ghi R0 và R1 được sử dụng để lưu địa chỉ.

> Bộ nhớ dữ liệu RAM LARGE:

Bộ nhớ này là bộ nhớ dữ liệu ngoại, với dung lượng 2.5 byte, sử dụng port0 và port2 để giao tiếp Bộ nhớ này còn được gọi là

XDATA Khi truy xuất thì dùng thanh ghỉ DPTR đê lưu địa chỉ 16 bít ˆ

2 Khai báo biến và hằng số

Ví dụ 5-25: Khai báo các hằng trong bộ nhớ chương trình unsigned char code dem= 0x03; unsigned char code ma_ascii[10] = {*0","1’, ‘2’, 314,15 6, ?Ẻ, 8°, !90);

Ví dụ 5-26: Khai báo bién trong bộ nhớ đữ liệu RAM bên ngoài

#pragma SMALL unsigned char xdata speed ;

CHUONG 5 GIÁO TRÌNH VI XỬ LÝ signed char xdata big_array[200];

Vi du 5-27: Khai báo biến và khởi gán giá trị cho biến unsigned int speed = 3; :

3 Cac BIT chire năng đặc biệt

Trong vi diéu khién có vùng nhớ cho phép truy xuất từng bit và cho phép truy xuất trực tiếp và vùng nhớ này có tên là BDATA

Ví dụ 5-28 trình bày cách khai báo các biến byte và bù trong lập trình Biến `test` được khai báo là ký tự byte thuộc vùng dữ liệu cho phép truy xuất bit Biến `sign` được định nghĩa là bit thứ 7 của biến `test` Ngoài ra, `sfr Pl` được gán với địa chỉ ô nhớ 0x90.

Ví dụ 5-29: định nghĩa các biến

#define HANG P0; // định nghĩa biến HANG là port0 của vi điều khiển AT89xx sbitHANG_0 HANG^0; / định nghĩa bịt HẠNG 0 là bit thir 0 của vi điều khiển AT89xx

Con trỏ dữ liệu trong ngôn ngữ C chính là kiểu truy xuất gián tiếp dùng thanh ghi, địa chỉ của ô nhớ cần truy xuất lưu trong thanh ghi

In Example 5-30, a pointer is declared using the syntax `unsigned char *pointer0;`, which initializes the pointer The pointer is then assigned the starting address of a memory region with the statement `pointer0 = mem_address;`, effectively linking the pointer to the specified memory location.

*pointer0 = 0xFF; /Nưu giá trị 0xFF vào ô nhớ có địa chỉ lưu trong con trỏ Đắi với vùng nhớ ngoại thì xem ví dụ sau

Ví dụ 5-31: khai báo con trỏ, gán địa chỉ con trỏ và lưu dữ liệu: unsigned char *asb_pointer ; //khai báo con trỏ

GIÁO TRÌNH VI XU LY CHƯƠNG 5 asb_pointer = (char*) 9x8000; /fgán địa chỉ bắt đầu của vùng nhớ là 0x8000 cho con trỏ

* asb_pointer = OxFF; /ưu giá trị 0xFF vào ô nhớ có địa chỉ lưu trong con trỏ

* asb_pointer++; //tang dia chỉ con trỏ đến ô nhớ kế

Ví dụ 5-32: khai báo mảng: unsigned char ma7doan{]

{0XC0,0XF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90} ; char chuoi_hien_thi = { “HELLO !”};

7 Khai báo chương trình con phục vụ ngắt

Ví dụ 5-33: khai báo chương trình con phục vụ ngắt

Khai báo tên chương trình con phục vụ ngắt cho ngắt thứ nhất, tương ứng với ngắt của timer0, và sử dụng bank thanh ghi thứ hai cho chương trình con này.

8 Cấu trúc của chương trình C

Tất cả các chương trình viết bằng ngôn ngữ C bao gồm các chỉ dẫn, khai báo biến, định nghĩa biến, biểu thức, lệnh và hàm Dưới đây là một chương trình C đơn giản.

#include unsigned char MA7D[10] {0XC0,0XF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90); int GIAY,CHUC,DONVI; void DELA Y_TIMERO()

CHƯƠNG 5 GIÁO TRÌNH VI XỬ LÝ

TRO =1; | for (BDN = 0; BDN

Ngày đăng: 24/06/2023, 10:57