Ứng Dụng Vi Xử Lý điều khiển Logo xoay đa năng

Ứng Dụng Vi Xử Lý điều khiển Logo xoay đa năng
MÃ TÀI LIỆU 301200300020
NGUỒN huongdandoan.com
MÔ TẢ 100 MB Bao gồm tất cả file..... thuyết minh, lưu đồ, mạch nguyên lý..., và nhiều tài liệu liên quan kèm theo đồ án này
GIÁ 989,000 VNĐ
ĐÁNH GIÁ 4.9 29/03/2024
9 10 5 18590 17500
Ứng Dụng Vi Xử Lý điều khiển Logo xoay đa năng Reviewed by admin@doantotnghiep.vn on . Very good! Very good! Rating: 5

ĐỒ ÁN TỐT NGHIỆP ĐIỆN Tử Ứng Dụng Vi Xử Lý điều khiển Logo xoay đa năng, thuyết minh THIẾT KẾ VÀ THI CÔNG Vi Xử Lý điều khiển Logo xoay đa năng, THIẾT KẾ VÀ THI CÔNG Vi Xử Lý điều khiển Logo xoay đa năng

LỜI CẢM ƠN

Như vậy là hai năm học của chúng em ở trường cũng đã qua. Trong thời gian học tập tại trường chúng em đã được nhà trường và thầy cô trong khoa Điện Tử – Tin Học nhiệt tình giúp đỡ và tạo điều kiện để chúng em có thể học tập tốt. Với sự kính trọng và lòng biết ơn sâu sắc của mình, chúng em xin chân thành cảm ơn nhà trường và các thầy cô mà đặc biệt là các thầy cô trong khoa Điện Tử -Tin Học đã nhiệt tình dạy dỗ chúng em. Và lần làm đồ án tốt nghiệp này như là lần chuẩn bị cuối cùng để chúng em có thể vận dụng những kiến thức mà mình đã học vào trong thực tế, điều đó sẽ giúp chúng em hoàn thiện và nâng cao các kĩ năng làm việc cũng như tích luỹ được những kinh nghiệm cần thiết cho bản thân. Những kiến thức chuyên môn mà chúng em  đã học được tại trường sẽ là hành trang vô cùng quý báu để chúng em bước vào đời. Chúng sẽ giúp cho chúng em có được điều hiện tốt hơn trong công việc cũng như trong cuộc sống.

Một lần nữa chúng em xin gởi lời  cảm ơn chân thành đến nhà trường và thầy cô đã dạy dỗ và giúp đỡ chúng em. Đặc biệt là thầy Tống Thanh Nhân đã giúp đỡ chúng em rất nhiều để chúng em hoàn thành tốt đồ án tốt nghiệp của mình.

                                                                   Trân Trọng Biết Ơn!

MỤC LỤC

CHƯƠNG I : GIỚI THIỆU VI ĐIỀU KHIỂN 8051                        Trang  1

          I. CẤU TẠO VI ĐIỀU KHIỂN8051                                                 2

         II. TÓM TẮT TẬP LỆNH CỦA 8051                                                        11

        III. HOẠT ĐỘNG PORT NỐT TIẾP                                                 24

       IV. HOẠT ĐỘNG TIMER CỦA 8051                                                          32

        V. HOẠT ĐỘNG NGẮT CỦA 8051                                                 40

CHƯƠNG II : THIẾT KẾ VÀ THI CÔNG                                                         47

I. GIỚI THIỆU VỀ TRUYỀN ĐỘNG ĐAI                                       48

II. SƠ ĐỒ KHỐI VÀ HOẠT ĐỘNG                                                  50

CHƯƠNG III : LƯU ĐỒ GIẢI THIUẬT VÀ CHƯƠNG TRÌNH             57

I. LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH LED ĐƠN                   58

II. LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH RƠLE                96

        III. LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH ĐỒNG HỒ         119

        IV. LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH LED MA TRẬN 124

CHƯƠNG IV : KẾT QUẢ                                                                        131

GIỚI THIỆU ĐỀ TÀI

Ngày nay với xu hướng phát triển nhanh của các ngành kinh doanh, dịch vụ, thương mại v.v.. Thì quảng cáo đang là nhu cầu rất cần thiết và quan trọng. Với mục tiêu là ứng dụng kiến thức của nhiều môn học ở nhàtrường vào trong thực tế. Vì vậy chúng em chọn đồ án tốt nghiệp của mình là: Ứng Dụng Vi Xử Lý điều khiển Logo xoay đa năng.

Đề tài của chúng em với chức năng chính là điều khiển các Motor để lắp ghép các trục tạo thành ảnh hoàn chỉnh. Mô hình này có thể thể hiện cùng lúc ba nội dung và các nội dung này được thay đổi luân phiên nhau. Tùy theo nội dung và yêu cầu mà chúng ta có thể điều khiển điều khiển thứ tự các phần của ảnh theo ý muốn. Bên cạnh đó chúng em còn trang bị thêm các chức năng : Hiển thị giờ phút giây trên LED 7 đoạn, Điều khiển LED đơn hiển thị chữ : CĐKT CAO THẮNG, Hiển thị chữ trên LED ma trận… Đây là các chức năng cần thiết cho nhu cầu của con người. Chúng sẽ giúp cho cuộc sống thêm tiện nghi và thuận lợi hơn.

Với các chức năng và phạm vi ứng dụng như trên chúng em nghĩ đây sẽ là đề tài mang tính thực tế cao, nó giúp cho chúng em có thể vận dụng tất cả những kiến thức mà mình đã học ở nhà trường cùng với những kỹ năng, những kinh  nghiệm của bản thân để thực hiện. Và trong cuốn quyển này chúng em sẽ thể hiện nội dung các kiến thức cơ bản có liên quan cùng với các sơ đồ khối, sơ đồ nguyên lý và chương trình của mô hình.

Trên đây là phần giới thiệu về đề tài cũng như nội dung trình bày trong cuốn quyển. Hy vọng chúng sẽ giúp cho các thầy cô và các bạn thuận lợi hơn trong việc tìm hiểu đề tài của chúng em.

                                                                   Nhóm Thực Hiện.


CHƯƠNG I :

 GIỚI  THIỆU VI ĐIỀU KHIỂN                              8051

I. CẤU TẠO VI ĐIỀU KHIỂN 8051

  1. TÓM TẮT PHẦN CỨNG HỌ MCS-51 (8051)

MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất. Các IC tiêu biểu cho họ là 8031, 8051, 8951... Những đặc điểm chính và nguyên tắt hoạt động của các bộ vi điều khiển này khác nhau không nhiều. Khi đã sử dụng thành thạo một loại vi điều khiển thì ta có thể nhanh chóng vận dụng kinh nghiệm để làm quen và làm chủ các ứng dụng của một bộ vi điều khiển khác. Vì vậy để có những hiểu biết cụ thể về các bộ vi điều khiển cũng như để phục vụ cho đề tài tốt nghiệp này ta bắt đầu tìm hiểu một bộ vi điều khiển thông dụng nhất, đó là họ MCS-51 và nếu như họ MCS-51 là họ điển hình thì 8051 lại chính là đại diện tiêu biểu.

          Các đặc điểm của 8051 được  tóm tắt như sau :

  • 4 KB ROM bên trong.
  • 128 Byte RAM nội.
  • 4 Port xuất /nhập I/O 8 bit.
  • Giao tiếp nối tiếp.
  • 64 KB vùng nhớ mã ngoài
  • 64 KB vùng nhớ dữ liệu ngoại.
  • Xử lý Boolean (hoạt động trên bit đơn).
  • 210 vị trí nhớ có thể định vị bit.
  • 4 ms cho hoạt động nhân hoặc chia.

          Bảng mô tả sự khác nhau của các IC trong họ MCS-51 :

Loại

Bộ Nhớ Mã Trên CHIP

Bộ Nhớ Dữ Liệu Trên CHIP

Số Timer

8051

4K ROM

128 Byte

2

8031

0K ROM

128 Byte

2

8751

4K ROM

128 Byte

2

8052

8 K ROM

256Byte

2

8032

0 K ROM

256Byte

2

8752

8K EPROM

256Byte

2

          2. CẤU TRÚC VĐK 8051, CHỨC NĂNG TỪNG CHÂN

..............................

Chức năng hoạt động của từng chân (pin) được tóm tắt như sau :

  • Từ chân 1¸ 8 Port 1 (P1.0, . . ., P1.7) dùng  làm Port xuất nhập I/O để giao tiếp bên ngoài.
  • Chân 9 (RST) là chân để RESET cho 8051. Bình thường các chân này ở mức thấp. Khi ta đưa tín hiệu này lên cao (tối thiểu 2 chu kỳ máy). Thì những thanh ghi nội của 8051 được LOAD những giá trị thích hợp để khởi động lại hệ thống.

          Từ chân 10¸17 là Port3 (P3.0, P3.1, . . ., P3.7) dùng vào hai mục đích : dùng là Port xuất / nhập I/O hoặc mỗi chân giữ một chức năng cá biệt được tóm tắt sơ bộ như sau :

  • P3.0 (RXD) : Nhận dữ liệu từ Port nối tiếp.
  • P3.1 (TXD) : Phát dữ liệu từ Port nối tiếp.
  • P3.2 (INT0) : Ngắt 0 bên ngoài.
  • P3.3 (INT1) : Ngắt 1 từ bên ngoài.
  • P3.4 (T0) : Timer/Counter 0 nhập từ bên ngoài.
  • P3.5 (T1) : Timer/Counter 1 nhập từ bên ngoài.
  • P3.6 (WR) : Tín hiệu Strobe ghi dữ liệu lên bộ nhớ bên ngoài.
  • P3.7 (RD) : Tín hiệu Strobe đọc dữ liệu lên bộ nhớ bên ngoài.
  • Các chân 18,19 (XTAL2 và XTAL1) được nối với bộ dao động thạch anh 12 MHz để tạo dao động trên CHIP. Hai tụ 30 pF được thêm vào để ổn định dao động.
  • Chân 20 (Vss) nối đất (Vss = 0).
  • Từ chân 21¸28 là Port 2 (P2.0, P2.1, . . ., P2.7) dùng vào hai mục đích: làm Port xuất/nhập I/O hoặc dùng làm byte  cao của bus địa chỉ thì nó không còn tác dụng I/O nữa. Bởi vì ta muốn dùng EPROM và RAM ngoài nên phải sử dụng Port 2 làm byte cao bus địa chỉ.
  • Chân 29 (PSEN) là tín hiệu điều khiển xuất ra của 8051, nó cho phép chọn bộ nhớ ngoài và được nối chung với chân của OE (Outout Enable) của EPROM ngoài để cho phép đọc các byte của chương trình. Các xung tín hiệu PSEN hạ thấp trong suốt thời gian thi hành lệnh. Những mã nhị phân của chương trình được đọc từ EPROM đi qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8051 bởi mã lệnh.

Chân 30 (ALE : Adress Latch Enable) là tín hiệu điều khiển xuất ra của 8051, nó cho phép phân kênh bus địa chỉ và bus dữ liệu của Port 0.

  • Chân 31 (EA : Eternal Acess) được đưa xuống thấp cho phép chọn bộ nhớ mã ngoàiđối với 8031.

          Đối với 8051 thì :

  • EA = 5V : Chọn ROM nội.
  • EA = 0V : Chọn ROM ngoại.
  • EA = 21V : Lập trình EPROM nội.
  • Các chân từ 32¸39 là Port 0 (P0.0, P0.1, . . . , P0.7) dùng cả hai mục  đích : Vừa làm byte thấp cho bus địa chỉ, vừa làm bus dữ liệu, nếu vậy Port 0 không còn chức năng xuất nhập I/O nữa.
  • Chân 40 (Vcc) được nối lên nguồn 5V.

 

3. TỔ CHỨC BỘ NHỚ

                Bản đồ bộ nhớ data trên Chip như sau :

 

               
 

Địa chỉ

byte

 

 

Địa chỉ

byte

 

   

Địa chỉ bit

   

Địa chỉ bit

 

 

 


7F

 

 

FF

 

 

 

 

 

F0

F7

F6

F5

F4

F3

F2

F1

F0

B

 

RAM đa dụng

 

 

 

 

 

 

 

E0

E7

E6

E5

E4

E3

E2

E1

E0

ACC

 

 

 

 

 

 

 

 

 

D0

D7

D6

D5

D4

D3

D2

D1

D0

PSW

 

 

 

 

 

 

30

 

 

B8

-

-

-

BC

BB

BA

B9

B8

IP

2F

7F

7E

7D

7C

7B

7A

79

78

 

 

 

 

 

 

 

 

 

 

 

2E

77

76

75

74

73

72

71

70

 

B0

B7

B6

B5

B4

B3

B2

B1

B0

P.3

2D

6F

6E

6D

6C

6B

6A

69

68

 

 

 

 

 

 

 

 

 

 

 

2C

67

66

65

64

63

62

61

60

 

A8

AF

 

 

AC

AB

AA

A9

A8

IE

2B

5F

5E

5D

5C

5B

5A

59

58

 

 

 

 

 

 

 

 

 

 

 

2A

57

56

55

54

53

52

51

50

 

A0

A7

A6

A5

A4

A3

A2

A1

A0

P2

29

4F

4E

4D

4C

4B

4A

49

48

 

 

 

 

 

 

 

 

 

 

 

28

47

46

45

44

43

42

41

40

 

99

không được địa chỉ hoá bit

SBUF

27

3F

3E

3D

3C

3B

3A

39

38

 

98

9F

9E

9D

9C

9B

9A

99

98

SCON

26

37

36

35

34

33

32

31

30

 

 

 

 

25

2F

2E

2D

2C

2B

2A

29

28

 

90

97

96

95

94

93

92

91

90

P1

24

27

26

25

24

23

22

21

20

 

 

 

 

23

1F

1E

1D

1C

1B

1A

19

18

 

8D

không được địa chỉ hoá bit

TH1

22

17

16

15

14

13

12

11

10

 

8C

không được địa chỉ hoá bit

TH0

21

0F

0E

0D

0C

0B

0A

09

08

 

8B

không được địa chỉ hoá bit

TL1

20

07

06

05

04

03

02

01

00

 

8A

không được địa chỉ hoá bit

TL0

1F

Bank 3

 

89

không được địa chỉ hoá bit

TMOD

18

 

 

88

8F

8E

8D

8C

8B

8A

89

88

TCON

17

Bank 2

 

87

không được địa chỉ hoá bit

PCON

10

 

 

 

 

 

0F

Bank 1

 

83

không được địa chỉ hoá bit

DPH

08

 

 

82

không được địa chỉ hoá bit

DPL

07

Bank thanh ghi 0

 

81

không được địa chỉ hoá bit

SP

00

(mặc định cho R0 -R7)

 

88

87

86

85

84

83

82

81

80

P0

                                       RAM                                                 CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT

Tóm tắt bộ nhớ dữ liệu trên chip

          3.1 RAM mục đích chung

          Trong bản đồ bộ nhớ trên, 80 byte từ địa chỉ 30H¸7FH là RAM  mục đích chung. Kể cả 32byte phần dưới từ 00H¸2FH cũng có thể sử dụng giống như 80 byte ở trên, tuy nhiên 32 byte còn có mục đích khác sẽ đề cập sau.

          Bất kỳ vị trí nào trong RAM mục đích chung cũng có thể được truy xuất tùy ý giống như việc sử dụng các mode để định địa chỉ trực tiếp hay gián tiếp. Ví dụ để đọc nội dung của RAM nội có địa chỉ 5FH vào thanh ghi tích lũy thì ta dùng lệnh : MOV  A, 5FH.

          RAM nội cũng được truy xuất bởi việc  dùng địa chỉ gián tiếp qua R0 và R1. Hai lệnh sau đây sẽ tương đương lệnh trên :

                   MOV R0, #5FH

                   MOV A, @R0

          Lệnh thứ nhất dùng sự định vị tức thời để đưa giá trị 5FH vào thanh ghi R0, lệnh thứ hai dùng sự định vị gián tiếp để đưa dữ liệu “đã được trỏ đến bởi R0” vào thanh ghi tích lũy A.

          3.2 RAM định vị

          8051 chứa 210 vị trí có thể định vị bit, trong đó có 128 bit nằm ở các địa chỉ từ 20H¸2FH và phần còn lại là các thanh ghi chức năng đặc biệt.

          3.3 Các băng thanh ghi (Register Banks)

          32 vị trí nhớ cuối cùng của bộ nhớ từ địa chỉ byte 00H¸1FH chức các dãy thanh ghi. Tập hợp các lệnh của 8051 cung cấp 8 thanh ghi từ R0¸R7 ở địa chỉ 00H¸07H nếu máy tính mặc nhiên chọn để thực thi. Những lệnh tương đương dùng sự định vị trực tiếp. Những giá trị dữ liệu được dùng thường xuyên chắc chắn sẽ sử dụng một trong các thanh ghi này.

          3.4 Các thanh ghi chức năng đặc biệt (Special Function Register)

          Có 21 thanh ghi chức năng đặc biệt SFR ở đỉnh của RAM nội từ địa chỉ các thanh ghi chức năng đặc biệt được định rõ, còn phần còn lại không định rõ.

          Mặc dù thanh ghi A có thể truy xuất trực tiếp, nhưng hầu hết các thanh ghi chức năng đặc biệt được truy xuất bằng cách sử  dụng sự định vị địa chỉ trực tiếp. Chú ý rằng vài thanh ghi SFR có cả bit định vị và byte định vị. Người thiết kế sẽ cẩn thận khi truy xuất bit mà không truy xuất byte.

               

3.4.1 Từ trạng thái chương trình (PSW : Program Status Word) :

          Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như sau :

BIT

SYMBOL

ADDRESS

DESCRIPTION

PSW.7

CY

D7H

Cary Flag

PSW.6

AC

D6H

Auxiliary Cary Flag

PSW.5

F0

D5H

Flag 0

PSW4

RS1

D4H

Register Bank Select 1

PSW.3

RS0

D3H

Register Bank Select 0

 

 

 

00=Bank 0; address 00H¸07H

 

 

 

01=Bank 1; address 08H¸0FH

 

 

 

10=Bank 2; address 10H¸17H

 

 

 

11=Bank 3; address 18H¸1FH

PSW.2

OV

D2H

Overlow Flag

PSW.1

-

D1H

Reserved

PSW.0

P

DOH

Even Parity Flag

          Chức năng từng bit trạng thái chương trình

                   a) Cờ Carry CY (Carry Flag) :

          Cờ  Carry được set lên 1 nếu có sự tràn ở bit 7 trong phép cộng hoặc có sự mượn vào bit 7 trong phép trừ.

Cờ Carry cũng là 1 “thanh ghi tích lũy luận lý”, nó được dùng như một thanh ghi 1 bit thực thi trên các bit bởi những lệnh luận lý. Ví dụ lệnh : ANL C, 25H sẽ AND bit 25H với cờ Carry và cất kết quả vào cờ Carry.

                   b) Cờ Carry phụ AC (Auxiliary Carry Flag) :

          Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC được set nếu có sự tràn từ bit 3 sang 4 hoặc 4 bit thấp nằm trong phạm vi 0AH¸0FH.

                   c) Cờ 0 (Flag 0) :

          Cờ 0 (F0) là bit cờ có mục đích tổng hợp cho phép người ứng dụng dùng nó.

                   d). Những bit chọn dãy thanh ghi RS1 và RS0 :

          RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bởi phần mềm khi cần thiết.

                   e. Cờ tràn OV (Over Flag) :

          Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn  toán học. Bit OV được bỏ qua đối với sự cộng trừ không dấu. Khi cộng trừ có dấu, kết quả lớn hơn + 127 hay nhỏ hơn -128 sẽ set bit OV.

                   f. Bit Parity (P) :

          Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẳn với thanh ghi A. Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẳn. Ví dụ A chứa 10101101B thì bit P set lên một để tổng  số bit 1 trong A và P tạo thành số chẳn.

          Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.

                   3.4.2 Thanh ghi B :

          Thanh ghi B ở địa chỉ F0H được dùng đi đôi với thanh ghi A cho các hoạt động nhân chia.

          Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đa mục đích. Nó là những bit định vị thông qua những địa chỉ từ F0H¸F7H.

          3.4.3 Con trỏ Stack SP (Stack Pointer) :

          Stack Pointer là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ của dữ liệu đang hiện hành trên đỉnh Stack. Các hoạt động của Stack bao gồm việc đẩy dữ liệu vào Stack (PUSH) và lấy dữ liệu ra khỏi Stack (POP).

  • Việc PUSH vào Stack sẽ tăng SP lên 1 trước khi dữ liệu vào.
  • Việc POP từ  Stack ra sẽ lấy dữ liệu ra trước rồi giảm SP đi 1.

          3.4.4 Con trỏ dữ liệu DPTR (Data Pointer) :

          Data Pointer được để truy xuất bộ nhớ mà ngoài hoặc bộ nhớ dữ liệu ngoài, nó là một thanh ghi 16 bit mà byte thấp là DPL ở địa chỉ 82H còn byte cao là DPH ở địa chỉ 83H. Để đưa nội dung 55H vào RAM ngoại có địa  chỉ 1000H ta dùng 3 lệnh sau :

                   MOV A, #55H

                   MOV DPTR, #1000H

                   MOVX @ DPTR, A

          Lệnh thứ nhất dùng sự định vị trực tiếp đưa hằng số dữ liệu 55H vào A. Lệnh thứ hai cũng tương tự lệnh thứ nhất đưa hằng số  dữ liệu 1000H vào trong DPTR . Lệnh cuối cùng dùng sự định vị gián tiếp để dịch chuyển giá trị 55H trong A vào vùng nhớ RAM ngoại 1000H nằm trong DPTR.

          3.4.5 Các thanh ghi Port (Port Register) :

          Các Port 0, Port 1, Port 2, Port 3 có địa chỉ tương ứng 80H, 90H, A0H, B0H. Các Port 0, Port 1, Port 2, Port 3 không còn tác dụng xuất nhập nữa nếu bộ nhớ ngoài được dùng hoặc một vài cá tính đặc biệt của 8051 được dùng (như Interrupt, Port nối tiếp . . .). Do vậy chỉ còn có Port1 có tác dụng xuất nhập I/O.

          Tất cả các Port đều có bit địa chỉ, do đó nó có khả năng giao tiếp với bên ngoài mạnh mẽ.

          3.4.6 Các thanh ghi Timer (Timer Register) :

          8051 có 2 bộ : Một bộ Timer 16 bit và một bộ Counter 16 bit, hai bộ này dùng để định giờ lúc nghỉ của chương trình hoặc đếm các sự kiện quan trọng. Timer 0 có bit thấp TL0 ở địa chỉ 8AH và có bit cao TH0 ở địa chỉ 8CH. Timer 1 có bit thấp ở địa chỉ 8BH và bit cao TH1 ở địa chỉ 8DH.

          Hoạt động định thời được cho phép bởi thanh ghi mode định thời TMOD (Timer Mode Register). Ở địa chỉ 89H và thanh ghi điều khiển định thời TCON (Timer Control Register) ở địa chỉ 88H. Chỉ có TCON có bit định vị.

          3.4.7 Các thanh ghi Port nối tiếp (Serial Port Register) :

          8051 chứa một Port nối tiếp trên Chip cho việc truyền thông tin với những thiết bị nối tiếp như là những thiết bị đầu cuối, modem, hoặc để giao tiếp IC khác với những bộ biến đổi A/D, những thanh ghi di chuyển, RAM . . .). Thanh ghi đệm dữ liệu nối tiếp SBUF ở địa chỉ 99H giữ cả dữ liệu phát lẫn dữ liệu thu. Việc ghi lên SBUF để LOAD dữ liệu cho việc truyền và đọc SBUF để truy xuất dữ liệu cho việc nhận những mode hoạt động khác nhau được lập trình thông qua thanh ghi điều khiển Port nối tiếp SCON.

          3.4.8 Các thanh ghi ngắt (Interrupt Register) :

          8051 có hai cấu trúc ngắt ưu tiên,  5 bộ nguồn. Những Interrupt bị mất tác dụng sau khi hệ thống reset (bị cấm) và sau đó được cho phép bởi việc cho phép ghi lên thanh ghi cho phép ngắt IE (Interrup Enable Register) ở địa chỉ A8H. Mức ưu tiên được đặt vào thanh ghi ưu tiên ngắt IP (Interrupt  Priority Level) tại địa chỉ B8H. Cả 2 thanh ghi trên đều có bit địa chỉ.

          3.4.9 Thanh ghi điều khiển nguồn PCON (Power Control Register) :

          Thanh ghi PCON không có bit định vị. Nó ở địa chỉ 87H bao gồm các bit địa chỉ tổng hợp. Các bit PCON được tóm tắt như sau :

  • Bit 7 (SMOD) : Bit có tốc độ Baud ở mode 1, 2, 3 ở Port nối tiếp khi set.
  • Bit 6, 5, 4 : Không có địa chỉ.
  • Bit 3 (GF1) : Bit 1 của cờ đa năng.
  • Bit 2 (GF0) : Bit 2 của cờ đa năng.
  • Bit 1 *  (PD) : Set để khởi động mode Power Down và thoát để reset.
  • Bit 0 * (IDL) : Set để khởi động mode Idle và thoát khi ngắt mạch hoặc reset.

          Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cả các IC họ MSC-51 nhưng chỉ được thi hành trong sự biên dịch của CMOS.

II. TÓM TẮT TẬP  LỆNH CỦA 8051

          Các chương trình được cấu tạo từ nhiều lệnh, chúng được xây dựng logic, sự nối tiếp của các lệnh được nghĩ ra một cách hiệu quả và nhanh, kết quả của chương trình thì khả quan.

          Tập lệnh họ MSC-51 được sự kiểm tra của các mode định vị và các lệnh của chúng có các Opcode 8 bit. Điều này cung cấp khả năng 28=256 lệnh được thi hành và một lệnh không được định nghĩa. Vài lệnh có 1 hoặc 2 byte bởi dữ liệu hoặc địa chỉ thêm vào Opcode. Trong toàn bộ các lệnh có 139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte.

  1. CÁC CHẾ ĐỘ ĐỊNH VỊ (ADDRESSING MODE)

          Các mode định vị là một bộ phận thống nhất của tập lệnh mỗi máy tính.  Chúng cho phép định rõ nguồn hoặc nơi gởi tới của dữ liệu ở các đường khác nhau tùy thuộc vào trạng thái của lập trình. 8051 có 8 mode định vị được dùng như sau :

  • Thanh ghi.
  • Trực tiếp.
  • Gián tiếp.
  • Tức thời.
  • Tương đối.
  • Tuyệt đối.
  • Dài.
  • Định vị.

          1.1 Sự định vị thanh ghi (Register Addressing)

          Có 4 dãy thanh ghi 32  byte đầu tiên của RAM dữ liệu trên Chip địa chỉ 00H ¸ 1FH, nhưng tại một thời điểm chỉ có một dãy hoạt động các bit PSW3, PSW4 của từ trạng thái chương trình sẽ quyết định dãy nào hoạt động.

          Các lệnh để định vị thanh ghi được  ghi mật mã bằng cách dùng bit trọng số thấp nhất của Opcode lệnh để chỉ một thanh ghi trong vùng địa chỉ theo logic này. Như vậy 1 mã chức năng và địa chỉ hoạt động có thể được kết hợp để tạo thành một lệnh ngắn 1 byte như sau :

Register Addressing.

          1.2 Sự định địa chỉ trực tiếp (Direct Addressing)

          Sự định địa chỉ trực tiếp có thể truy xuất bất kỳ giá trị nào trên Chip hoặc  thanh ghi phần cứng trên Chip. Một byte địa chỉ trực tiếp được đưa vào Opcode để định rỏ vị trí được dùng như sau :

 

Tùy thuộc các bit bậc cao của địa chỉ trực tiếp mà một trong 2 vùng nhớ được chọn.  Khi bit 7 = 0, thì địa chỉ trực tiếp ở trong khoảng 0¸127 (00H¸7FH) và 128 vị trí nhớ thấp của RAM trên Chip được chọn.

                    1.3 Sự định vị địa chỉ gián tiếp (Indirect Addressing)

          Sự định địa chỉ gián tiếp được tượng trưng bởi ký hiệu @ được đặt trước R0, R1 hay DPTR. R0 và R1 có thể hoạt động như một thanh ghi con trỏ mà nội dung của nó cho biết một địa chỉ trong RAM nội ở nơi mà dữ liệu được ghi hoặc được đọc. Bit có trọng số nhỏ nhất của Opcode lệnh sẽ xác định R0 hay R1 được dùng con trỏ Pointer.

Ví dụ để đưa nội dung 60 H vào RAM nội tại địa chỉ 50H ta làm như sau:

                   MOV R1,#50H

                   MOV @R1,60H

          1.4. Sự định vị  địa chỉ tức thời (Immediate Addressing)

          Sự định địa chỉ tức thời được tượng trưng bởi ký hiệu # được đứng trước một hằng số, 1 biến ký hiệu hoặc một biểu thức số học được sử dụng bởi các hằng, các ký hiệu, các hoạt động do người điều khiển. Trình biên dịch tính toán giá trị và thay thế dữ liệu tức thời. Byte lệnh thêm vô chứa trị số dữ liệu tức thời như sau :

Ví dụ :

                       MOV A, # 12 Ü Đưa trực tiếp số thập phân 12 vào A.

                       MOV A, # 10 Ü Đưa trực tiếp số Hex 10H (16D) vào A.

                       MOV A, # 00010001B Ü Đưa trực tiếpsố nhị phân này vào A.

          1.5 Sự định vị địa chỉ tương đối

          Sự định địa chỉ tương đối chỉ sử dụng với những lệnh nhảy nào đó. Một  địa chỉ tương đối (hoặc Offset) là một giá trị 8 bit mà nó được cộng vào bộ đếm chương trình PC để tạo thành địa chỉ một lệnh tiếp theo được thực thi. Phạm vi của sự nhảy nằm trong khoảng -128 ¸ 127. Offset tương đối được gắn vào lệnh như một byte thêm vào như sau :

  Sự định vị tương đối đem lại thuận lợi cho việc cung cấp mã vị trí độc lập, nhưng bất lợi là chỉ nhảy ngắn trong phạm vi -128¸127 byte.

          1.6 Sự định địa chỉ tuyệt đối (Absolute Addressing)

          Sự định địa chỉ tuyệt đối được dùng với các lệnh ACALL và AJMP. Các lệnh 2 byte cho phép phân chia trong trang 2K đang lưu hành của bộ nhớ mã  của việc cung cấp 11 bit thấp để xác định địa chỉ trong trang 2K (A0¸A10 gồm A10¸A8 trong Opcode và A7¸A0 trong byte)và 5 bit cao để chọn trang 2K (5 bit cao đang lưu hành trong bộ đếm chương trình là 5 bit Opcode).

 Sự định vị tuyệt đối đem lại thuận lợi  cho các lệnh ngắn (2 byte), nhưng bất lợi trong việc  giới hạn phạm vi nơi gởi đến và cung cấp mã có vị trí độc lập.

          1.7 Sự định vị địa chỉ dài (Long Addressing)

Ưu điểm của sự định dài là vùng nhớ mã 64K có thể được dùng hết, nhược điểm là các lệnh đó dài 3 byte và vị trí lệ thuộc. Sự phụ thuộc vào vị trí sẽ bất lợi bởi chương trình không thể thực thi tại địa chỉ khác.

          1.8 Sự định địa chỉ phụ lục (Index Addressing)

          Sự định địa chỉ phụ lục dùng một thanh ghi cơ bản (cũng như bộ đếm chương trình hoặc bộ đếm dữ liệu) và Offset (thanh ghi A) trong sự hình thành 1 địa chỉ liên quan bởi lệnh JMP hoặc MOVC.

                   Base Register       Offset           Effective Address

Index Addressing.

2. CÁC KIỂU LỆNH (INSTRUCTION TYPES)

          8051 chia ra 5nhóm lệnh chính :

  • Các lệnh số học.
  • Lệnh logic.
  • Dịch chuyển dữ liệu.
  • Lý luận.
  • Rẽ nhánh chương trình.

          Từng kiểu lệnh được mô tả như sau :

          2.1 Các lệnh số học (Arithmetic Instrustion) :

                 ADD A, <src, byte>

                 ADD         A, Rn           : (A) ¬ (A) + (Rn)

                 ADD         A, direct       : (A) ¬ (A) + (direct)

                 ADD         A, @ Ri        : (A) ¬ (A) + ((Ri))

                 ADD         A, # data      : (A) ¬ (A) + # data

                 ADDC      A, Rn           : (A) ¬ (A) + (C) + (Rn)

                 ADDC      A, direct       : (A) ¬ (A) + (C) + (direct)

                 ADDC      A, @ Ri        : (A) ¬ (A) + (C) + ((Ri))

                 ADDC      A, # data      : (A) ¬ (A) + (C) + # data

                 SUBB A, <src, byte>

                 SUBB       A, Rn           : (A) ¬ (A) - (C) - (Rn)

                 SUBB       A, direct       : (A) ¬ (A) - (C) - (direct)

                 SUBB       A, @ Ri        : (A) ¬ (A) - (C) - ((Ri))

                 SUBB       A, # data      : (A) ¬ (A) - (C) - # data

                 INC <byte>

                 INC          A                  : (A) ¬ (A) + 1

                 INC          direct            : (direct) ¬ (direct) + 1

                 INC          Ri                 : ((Ri)) ¬ ((Ri)) + 1

                 INC          Rn                : (Rn) ¬ (Rn) + 1

                 INC          DPTR           : (DPTR) ¬ (DPTR) + 1

 

                 DEC <byte>

                 DEC         A                  : (A) ¬ (A) - 1

                 DEC         direct            : (direct) ¬ (direct) - 1

                 DEC         @Ri              : ((Ri)) ¬ ((Ri)) - 1

                 DEC         Rn                : (Rn) ¬ (Rn) - 1

                 MULL      AB               : (A) ¬ LOW [(A) x (B)] ; có ảnh hưởng cờ  OV

                                                       : (B) ¬ HIGH [(A) x (B)] ; cờ Cary được xóa.

                 DIV          AB               : (A) ¬ Integer Result of [(A)/(B)]; cờ OV

                                                       : (B) ¬ Remainder of [(A)/(B)]; cờ Carry xóa

                 DA           A                  : Điều chỉnh thanh ghi A thành số BCD đúng trong phép cộng BCD (thường DA A đi kèm với ADD, ADDC)

  • Nếu [(A3-A0)>9] và [(AC)=1] Ü (A3¸A0) ¬ (A3¸A0) + 6.
  • Nếu [(A7-A4)>9] và [(C)=1] Ü (A7¸A4) ¬ (A7¸A4) + 6.

          2.2 Các hoạt động logic (Logic Operation) :

          Tất cả các lệnh logic sử dụng thanh ghi A như là một trong những toán hạng thực thi một chu kỳ máy, ngoài A ra mất 2 chu kỳ máy. Những hoạt động logic có thể được thực hiện trên bất kỳ byte nào trong vị trí nhớ dữ liệu nội mà không qua thanh ghi A.

          Các hoạt động logic được tóm tắt như sau :

                 ANL <dest - byte> <src - byte>

                 ANL         A, Rn           : (A) ¬ (A) AND (Rn).

                 ANL         A, direct       : (A) ¬ (A) AND (direct).

                 ANL         A,@ Ri         : (A) ¬ (A) AND ((Ri)).

                 ANL         A, # data      : (A) ¬ (A) AND (# data).

                 ANL         direct, A       : (direct) ¬ (direct) AND (A).

                 ANL         direct, # data          : (direct) ¬ (direct) AND # data.

 

                 ORL <dest - byte> <src - byte>

                 ORL         A, Rn           : (A) ¬ (A) OR (Rn).

                 ORL         A, direct       : (A) ¬ (A) OR (direct).

                 ORL         A,@ Ri         : (A) ¬ (A) OR ((Ri)).

                 ORL         A, # data      : (A) ¬ (A) OR # data.

                 ORL         direct, A       : (direct) ¬ (direct) OR (A).

                 ORL         direct, # data          : (direct) ¬ (direct) OR # data.

                 XRL <dest - byte> <src - byte>

                 XRL         A, Rn           : (A) ¬ (A) ) (Rn).

                 XRL         A, direct       : (A) ¬ (A) ) (direct).

                 XRL         A,@ Ri         : (A) ¬ (A) ) ((Ri)).

                 XRL         A, # data      : (A) ¬ (A) ) # data.

                 XRL         direct, A       : (direct) ¬ (direct) ) (A).

                 XRL         direct, # data          : (direct) ¬ (direct) ) # data.

y = a) b = ab + ab

                 CLR          A                  : (A) ¬ 0

                 CLR          C                  : (C) ¬ 0

                 CLR          Bit                : (Bit) ¬ 0

                 RL            A                  : Quay vòng thanh ghi A qua trái 1 bit

                                                       (An + 1) ¬ (An); n = 0¸6

                                                       (A0) ¬ (A7)

                 RLC          A                  : Quay vòng thanh ghi A qua trái 1 bit có cờ Carry

                                                       (An + 1) ¬ (An); n = 0¸6

                                                       (C) ¬ (A7)

                                                       (A0) ¬ (C)

                 RR            A                  : Quay vòng thanh ghi A qua phải 1 bit

                                                       (An + 1) ® (An); n = 0¸6

                                                       (A0) ® (A7)

                 RRC         A                  : Quay vòng thanh ghi A qua phải 1 bit có cờ Carry

                                                       (An + 1) ® (An); n = 0¸6

                                                       (C) ® (A7)

                                                       (A0) ® (C)

                 SWAP      A                  : Đổi chổ 4 bit thấp và 4 bit cao của A cho nhau (A3¸A0)Ö(A7¸A4).

          2.3  Các lệnh rẽ nhánh :

          Có nhiều lệnh để điều khiển lên chương trình bao gồm việc gọi hoặc trả lại từ chương trình con hoặc chia nhánh có điều kiện hay không có điều kiện.

          Tất cả các lệnh rẽ nhánh đều không ảnh hưởng đến cờ. Ta có thể định nhản cần nhảy tới mà không cần rỏ địa chỉ, trình biên dịch sẽ đặt địa chỉ nơi cần nhảy tới vào đúng khẩu lệnh đã đưa ra.

          Sau đây là sự tóm tắt từng hoạt động của lệnh nhảy.

                 JC           rel           : Nhảy đến “rel” nếu cờ Carry C = 1.

                 JNC        rel           : Nhảy đến “rel” nếu cờ Carry C = 0.

                 JB           bit, rel     : Nhảy đến “rel” nếu (bit) = 1.

                 JNB        bit, rel     : Nhảy đến “rel” nếu (bit) = 0.

                 JBC        bit, rel     : Nhảy đến “rel” nếu bit = 1 và xóa bit.

                 ACALL   addr11 : Lệnh gọi tuyệt  đối trong page 2K.

                                      (PC) ¬ (PC) + 2

                                      (SP) ¬ (SP) + 1

                                      ((SP)) ¬ (PC7¸PC0)

                                      (SP) ¬ (SP) + 1

                                      ((SP)) ¬ (PC15¸PC8)

                                      (PC10¸PC0) ¬ page Address.

                 LCALL   addr16 : Lệnh gọi dài chương trình con trong 64K.

                                      (PC) ¬ (PC) + 3

                                      (SP) ¬ (SP) + 1

                                      ((SP)) ¬ (PC7¸PC0)

                                      (SP) ¬ (SP) + 1

                                      ((SP)) ¬ (PC15¸PC8)

                                      (PC) ¬ Addr15¸Addr0.

                 RET        : Kết thúc chương trình con trở về chương trình chính.

                                      (PC15¸PC8) ¬ (SP)

                                      (SP) ¬ (SP) - 1

                                      (PC7¸PC0) ¬ ((SP))

                                      (SP) ¬ (SP) -1.

                 RETI       : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính hoạt động tương tự như RET.

                 AJMP     Addr11 : Nhảy tuyệt đối không điều kiện trong 2K.

                                      (PC) ¬ (PC) + 2

                                      (PC10¸PC0) ¬ page Address.

                 LJMP      Addr16 : Nhảy dài không điều kiện trong 64K

                                               Hoạt động tương tự lệnh LCALL.

                 SJMP      rel : Nhảy ngắn không điều kiện trong (-128¸127) byte

                                      (PC) ¬ (PC) + 2

                                      (PC) ¬ (PC) + byte 2

                 JMP @ A + DPTR:Nhảy không điều kiện đến địa chỉ (A) + (DPTR)

                                      (PC) ¬ (A) + (DPTR)

                 JZ           rel : Nhảy đến A = 0. Thực hành lệnh kế nếu A ¹ 0.

                                      (PC) ¬ (PC) + 2

                                      (A) = 0 Ü (PC) ¬ (PC) + byte 2

                 JNZ         rel : Nhảy đến A ¹ 0. Thực hành lệnh kế nếu A = 0.

                                      (PC) ¬ (PC) + 2

                                      (A) < > 0 Ü (PC) ¬ (PC) + byte 2

                 CJNE      A, direct, rel : So sánh và nhảy đến A ¹ direct

                                      (PC) ¬ (PC) + 3

                                      (A) < > (direct) Ü (PC) ¬ (PC) + Relative Address.

                                      (A) < (direct) Ü C = 1

                                      (A) > (direct) Ü C = 0

                                      (A) = (direct). Thực hành lệnh kế tiếp

                 CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel.

                 CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel.

                 CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel.

                 DJNE Rn, rel : Giảm Rn và nhảy nếu Rn ¹ 0.

                                             (PC) ¬ (PC) + 2

                                             (Rn) ¬ (Rn) -1

                                             (Rn) < > 0 Ü (PC) ¬ (PC) + byte 2.

                 DJNZ direct, rel : Tương tự lệnh DJNZ Rn, rel.

          2.4 Các lệnh dịch chuyển dữ liệu :

          Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu kỳ máy. Mẫu lệnh MOV <destination>, <source> cho phép di chuyển dữ liệu bất kỳ 2 vùng nhớ nào của RAM nội hoặc các vùng nhớ của các thanh ghi chức năng đặc biệt mà không thông qua thanh ghi A.

          Vùng Stack của 8051 chỉ chứa 128 byte RAM nội, nếu con trỏ Stack SP được tăng quá địa chỉ 7FH thì các byte được PUSH vào sẽ mất đi và các byte POP ra thì không biết rõ.

          Các lệnh dịch chuyễn bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp. Địa chỉ gián tiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@ DPTR). Tất cả các lệnh dịch chuyển hoạt động trên toàn bộ  nhớ ngoài thực thi trong 2 chu kỳ máy và dùng thanh ghi A làm toán hạng DESTINATION.

          Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình thực thi của lệnh MOVX, còn bình thường  RD và WR không tích cực (mức 1).

          Tất cả các lệnh dịch chuyển đều không ảnh hưởng đến cờ. Hoạt động của từng lệnh được tóm tắt như sau :

               MOV      A,Rn                    : (A) ¬ (Rn)

               MOV      A, direct               : (A) ¬ (direct)

               MOV      A, @ Ri                : (A) ¬ ((Ri))

               MOV      A, # data              : (A) ¬ # data

               MOV      Rn, A                   :  (Rn) ¬ (A)

               MOV      Rn, direct             :  (Rn) ¬ (direct)

               MOV      Rn, # data            :  (Rn) ¬ # data

               MOV      direct, A               : (direct) ¬ (A)

               MOV      direct, Rn             : (direct) ¬ (Rn)

               MOV      direct, direct         : (direct) ¬ (direct)

               MOV      direct, @ Ri          : (direct) ¬ ((Ri))

               MOV      direct, # data        : (direct) ¬ data

               MOV      @ Ri, A                : ((Ri)) ¬ (A)

               MOV      @ Ri, direct          : ((Ri)) ¬ (direct)

               MOV      @ Ri, # data         : ((Ri)) ¬ # data

               MOV      DPTR, # data16   : (DPTR) ¬ # data16

               MOV      A, @ A + DPTR  : (A) ¬ (A) + (DPTR)

               MOV      @ A  + PC           : (PC) ¬ (PC) + 1

                                                             (A) ¬ (A) + (PC)

               MOVX   A, @ Ri                : (A) ¬ ((Ri))

               MOVX   A, @ DPTR         : (A) ¬ ((DPTR))

               MOVX   @ Ri,  A               : ((Ri)) ¬ (A)

               MOVX   @ DPTR, A         : ((DPTR)) ¬ (A)

               PUSH     direct                    : Cất dữ liệu vào Stack

                                                             (SP) ¬ (SP) + 1

                                                             (SP) ¬ (Drirect)

               POP        direct                    : Lấy từ Stack ra direct

                                                             (direct) ¬ ((SP))

                                                             (SP) ¬ (SP) - 1

               XCH       A, Rn                   : Đổi chổ  nội dung của A với Rn

                                                              (A) Ö (Rn)

               XCH       A, direct               : (A) Ö (direct)

               XCH       A, @ Ri                : (A) Ö ((Ri))

               XCHD    A, @ Ri                : Đổi chổ 4 bit thấp của (A) với ((Ri))

                                                              (A3¸A0) Ö ((Ri3¸Ri0))

          2.5 Các lệnh luận lý (Boolean Instruction) :

          8051 chứa một bộ xử lý luận lý đầy đủ cho các hoạt động bit đơn, đây là một điểm mạnh của  họ vi điều khiển MSC-51 mà các họ vi xử lý khác không có.

          RAM nội chứa 128 bit đơn vị và các vùng nhớ các thanh ghi chức năng đặc biệt cấp lên đến 128 đơn vị khác. Tất cả các đường Port là  bit định vị, mỗi đường có thể được xử lý như Port đơn vị riêng biệt. Cách truy xuất các bit này  không chỉ các lệnh rẽ nhánh không, mà là một  danh mục đầy đủ các lệnh MOVE, SET, CLEAR, COMPLEMENT, OR, AND.

          Toàn bộ sư truy xuất của bit dùng sư  định vị trực tiếp với những địa chỉ từ 00H¸7FH trong 128 vùng nhớ thấp và 80H¸FFH ở các vùng thanh ghi chức  năng đặc biệt.

          Bit Carry C trong thanh ghi PSW của  từ trạng thái chương trình và được dùng như một sự tích lũy đơn của bộ xử lý luận lý. Bit Carry cũng là bit định vị và có địa chỉ trực tiếp vì nó nằm trong PSW. Hai lệnh CLR C và CLR CY đều có cùng tác dụng là xóa bit cờ Carry nhưng lệnh này mất 1 byte còn lệnh sau mất 2 byte.

          Hoạt động của các lệnh luận lý được tóm tắt như sau :

        CLR    C           : Xóa cờ Carry xuống 0. Có ảnh hưởng cờ Carry.

        CLR    BIT       : Xóa bit xuống 0. Không ảnh hưởng cờ Carry

        SET    C           : Set cờ Carry lên 1. Có ảnh hưởng cờ Carry.

        SET    BIT       : Set bit lên 1. Không ảnh hưởng cờ Carry.

        CPL    C           : Đảo bit cờ Carry. Có ảnh hưởng cờ Carry.

        CPL    BIT       : Đảo bit. Không ảnh hưởng cờ Carry.

        ANL    C, BIT  : (C) ¬ (C) AND (BIT) : Có ảnh hưởng cờ Carry.

        ANL    C, /BIT : (C) ¬ (C) AND NOT (BIT):Không ảnh hưởng cờ Carry.

        ORL    C, BIT  : (C) ¬ (C) OR (BIT) : Tác động cờ Carry.

        ORL    C, /BIT : (C) ¬ (C) OR NOT (BIT) : Tác động cờ Carry.

        MOV  C, BIT  : (C) ¬ (BIT) : Cờ Carry bị tác động.

  1. HOẠT ĐỘNG CỦA PORT NỐI TIẾP 8051.

         1. GIỚI THIỆU

          Port nối tiếp của 8051 có thể hoạt động trong các mode riêng biệt  trên phạm vi cho phép của tần số. Chức năng chủ yếu của Port nối tiếp là thực hiện sự chuyễn đổi  song song thành nối tiếp cho dữ liệu ra và sự chuyễn đổi nối tiếp thành song song cho dữ liệu vào.

Phần cứng truy xuất tới Port nối tiếp  qua các chân TXD (P3.1) và RXD (P3.0).

          Port nối tiếp tham dự hoạt động đầy đủ (sự phát và thu cùng lúc), và thu vào bộ đệm mà nó cho phép1 ký tự nhận vào và được cất ở bộ đệm trong khi kí tự thứ  hai được nhận vào. Nếu CPU đọc ký tự thứ nhất trước khi kí tự thứ hai được nhận vào hoàn toàn thì dữ liệu không bị mất.

          Hai thanh ghi chức năng đặc biệt cung cấp cho phần mềm truy xuất đến Port nối tiếp là SBUF và SCON. Sự đệm Port nối tiếp (SBUF) ở địa chỉ 99H là 2 sự đệm thật sự : Ghi lên SBUF LOAD dữ liệu phát và đọc SBUF truy xuất dữ liệu đã nhận. Đây là hai thanh ghi riêng biệt và rõ rệt, mà thanh ghi phát chỉ ghi còn thanh ghi thu chỉ đọc. Sơ đồ khối của Port nối tiếp như sau :

TXD (P3.1)  RXD (P3.0)

Serial Port Block Dragram

          Thanh ghi điều khiển Port nối tiếp SCON (98H) là thanh ghi được định vị bit bao gồm các trạng thái và các bit điều khiển. Các bit điểu khiển set mode của Port nối tiếp, còn các bit trạng thái cho biết sự kết thúc việc thu phát 1 kí tự. Các bit trạng thái có thể được kiểm tra trong phần mềm hoặc có thể lập trình để sinh ra sự ngắt.

          Tần số hoạt động của Port nối tiếp hoặc tốc độ BAUD có thể được lấy từ dao động trên Chip 8051 hoặc thay đổi. Nếu một tốc độ Baud thay đổi được dùng, thì Timer cung cấp 1 tốc độ Baud ghi giờ và phải được lập trình một cách phù hợp.

          2. thanh ghi điều khiển port nối tiếp scon (serial port control register)

          Mode hoạt động của Port nối tiếp 8051 được set bởi việc ghi lên thanh ghi mode của Port nối tiếp SCON ở địa chỉ 99H. Bảng tóm tắt thanh ghi điều khiển Port nối tiếp SCON như sau :

Bit

Ký hiệu

Địa chỉ

Mô tả hoạt động

SCON.7

SM0

9FH

Bit 0 của mode Port nối tiếp.

SCON.6

SM1

9EH

Bit 1 của mode Port nối tiếp.

SCON.5

SM2

9DH

Bit 2 của mode Port nối tiếp. Cho phép sự truyền của bộ xử lý đa kênh ở mode 2 và 3; RI sẽ không tích cực nếu  bit thứ 9 đã thu vào là 0.

SCON.4

REN

9CH

REN = 1 sẽ cho thu kí tự.

SCON.3

TB8

9BH

Phát bit 8. Bit 9 phát trong mode 2 và 3, nó được set hoặc xóa bởi phần mềm.

SCON.2

RB8

9AH

Thu bit 8, bit 9 thu.

SCON.1

TI

99H

Cờ ngắt phát. Được set khi kết thúc sự truyền kí tự và được xóa bởi phần mềm.

SCON.0

RI

98H

Cờ ngắt thu. Được set khi kết thúc sự thu và được xóa bởi phần mềm.

3. các mode hoạt động (mode of operation)

 

SM0

SM1

MODE

mô tả

tốc độ baud

0

0

0

Thanh ghi dịch

Cố định (tần số dao động 1¸12).

0

1

1

URAT8 bit

Thay đổi (được đặt bởiTimer).

1

0

2

URAT 8 bit

Cố định (tần số dao động ¸12 or ¸16)

1

1

3

URAT 8 bit

Thay đổi (được đặt bởi Timer).

Serial Port Modes.

          Trước khi dùng Port nối tiếp, SCON phải được gán đúng mode. Ví dụ để khởi gán Port nối tiếp MODE 1 (SM0/SM1 = 0/1), cho phép thu (REN =1), và set cờ ngắt của việc phát sẵn sàng hoạt động (TI = 1), ta dùng lệnh sau : MOV SCON, # 01010010H.

          Port nối tiếp của 8051 có 4 mode hoạt động tùy thuộc theo 4 trạng thái của SM0/SM1.

          Ba trong 4 mode cho phép truyền sự đồng bộ với mỗi kí tự thu hoăc phát sẽ được bố trí bởi bit Start hoặc bit Stop.

4.  sự khởi động, truy xuất các thanh ghi port nối tiếp

          4.1. Sự  cho phép bộ thu (Recive Enable) :

          Bit cho phép thu REN trong thanh ghi SCON phải được set bởi phần mềm để cho phép sự thu các ký tự. Điều này thường được làm ở đầu chương trình khi các Port nối tiếp và các Timer . . . được khởi động.

          Ta có thể động bằng lệnh :

          setb ren hoặc mov con, # xxx1xxxxb

          4.2. Bit data thứ 9 (the9th data bit) :

          Bit data thứ 9 được phát trong mode 2  và mode 3  phải được LOAD vào TB8 bởi phần mềm, còn bit data thứ 9 được thu thì đặt trong RB8.

          Phần mềm có thể (hoặc không) đòi hỏi một bit data thứ 9 tham gia vào những chi tiết kỹ thuật của thiết bị nối tiếp với điều kiện màsự truyền data được thành lập.

          4.3. Sự thêm vào bit kiểm tra chẳn lẻ Parity :

          Cách tổng quát dùng chung bit data thứ 9 là cộng bit Parity vào một ký tự .

          Bit P (Parity) trong từ trạng thái chương trình PSW sẽ được set hoặc xóa với mọi chu kỳ máy để thành lập bit Parity chẳn với 8 bit trong thanh ghi tích lũyA

          Ví dụ nếu sự truyền  yêu cầu 8 bit data cộng thêm 1 bit Parity chẵn, thì các lệnh sau đây có thể được dùng để phát 8 bit vào thanh ghi A với Parity chẳn được cộng vào bit thứ 9.

          mov c, p

          mov tB8,  c

          mov sbuf, a

          Nếu Parity lẻ được yêu cầu thì các lệnh trên được sửa lại là:

          mov c, p

          cpl   c

...............................................

SJMP CG

LAP2:

CPL P0.4

JB P3.5,DVG

INC 7CH

MOV A,7CH

CJNE A,#10,DVG

MOv 7CH,#0

SJMP DVG

CG:   ACALL DELAY

JB P3.0,LAP3

SJMP DVG

CPL P0.5

JB P3.5,CG

INC 7DH

MOV A,7DH

CJNE A,#3,CG

MOV 7DH,#0

SJMP CG

TIM0:MOV DPTR,#MA_7_DOAN

MOV A,@R0

MOVC A,@A+DPTR

MOV P2,A

MOV P0,R7

MOV TH0,#HIGH(-1000)

MOV TL0,#LOW(-1000)

INC R0

MOV A,R7

RL A

MOV R7,A

CJNE A,#7FH,THOAT0

MOV R7,#0FEH

MOV R0,#78H

THOAT0:MOV A,7FH

CJNE A,#1,TTH

CPL P1.7

TTH:RETI

MA_7_DOAN:

DB 3FH,86H,5BH,4FH,66H,6DH,7DH,87H,7FH,6FH

TIM1:CLR TR1

MOV TH1,#HIGH(-50000)

MOV TL1,#LOW(-50000)

SETB TR1

DJNZ 70H,THOAT1

MOV 70H,#20

INC 78H

MOV A,78H

CJNE A,#10,THOAT1

MOV 78H,#00H

INC 79H

MOV A,79H

CJNE A,#6,THOAT1

MOV 79H,#00H

INC 7AH

MOV A,7AH

CJNE A,#10,THOAT1

MOV 7AH,#00H

INC 7BH

MOV A,7BH

CJNE A,#6,THOAT1

MOV 7BH,#00H

INC 7CH

MOV A,7CH

CJNE A,#10,TIEP

MOV 7CH,#00H

INC 7DH

SJMP THOAT1

TIEP: CJNE A,#4,THOAT1

MOV A,7DH

CJNE A,#2,THOAT1

MOV 7DH,#00H

MOV 7CH,#00H

THOAT1:MOV A,74H

CJNE A,7DH,TH

MOV A,73H

CJNE A,7CH,TH

MOV A,72H

CJNE A,7BH,TH

MOV A,71H

CJNE A,7AH,TH

MOV 7FH,#1

TH: RETI

DELAY:  MOV 75H,#3

D0: MOV 76H,#0FFH

D1: MOV 77H,#0FFH

DJNZ 77H,$

DJNZ 76H,D1

DJNZ 75H,D0

RET

END

LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH LED MA TRẬN

A. LƯU ĐỒ GIẢI THUẬt

                                                                                                     B. CHƯƠNG TRÌNH

                 ORG 0500h

K: DB 7EH,10H,28H,44H,02H,00H

H: DB 7EH,10H,10H,10H,7EH,00H

0: DB 3CH,72H,72H,72H,3CH,00H

A: DB 1EH,28H,48H,28H,1EH,00H,00H,00H

machuD: DB  08H,7EH,4AH,42H,3CH,00H

machuT: DB  40H,40H,7eH,40H,40H,00H

  DB 08H,08H,00H

machuT: DB  40H,40H,7eH,40H,40H,00H

machuH: DB 7EH,10H,10H,10H,7EH,00H,00H,00H

machuT: DB  40H,40H,7eH,40H,40H,00H

machuH: DB  7EH,10H,10H,10H,7EH,00H

machuD: DB  08H,7EH,4AH,42H,3CH,00H

machuT: DB  40H,40H,7eH,40H,40H,00H

DB  3CH,42H,42H,42H,3CH,00H

DB  42H,52H,52H,52H,3CH,00H

machuD: DB 7EH,42H,42H,24H,18H,00H

DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

ORG 0000H

MAIN: MOV DPTR, #0500H

MAINA:MOV R2,#250

MAINB: MOV R1,#00

MOV R3,#00000001B

MAINC: MOV A,R1

MOVC A,@A+DPTR

MOV P3,A

MOV P2,R3

LCALL DELAY

MOV P2,#00H

MOV P1,R3

LCALL DELAY

MOV P1,#00H

INC R1

MOV A,R3

RL A

MOV R3,A

CJNE  R1,#8,MAINC

DJNZ  R2,MAINB

INC  DPTR

MOV A,DPL

CJNE  A,#80,MAINA

LJMP MAIN

DELAY:MOV R5,#1

DE: MOV R6, #50

DJNZ R6,$

DJNZ R5,DE

RET

DELAY1S:MOV R5,#0

PNDE: MOV R6,#0

DJNZ R6,$

DJNZ R5, PNDE

RET

END                             

CHƯƠNG IV:       KẾT QUẢ

Sau thời gian thực hiện mà nhà trường qui định, chúng em đã hòan tất đề tài của mình với kết quả đạt yêu cầu đề ra như sau :
      Mô hình họat động tốt, có thể điều khiển các trục ghép ảnh tạo thành ảnh hoàn chỉnh. Có thể thay đổi thứ tự quay của các trục tùy theo chương trình điều khiển.

    Hiển thị chính xác giờ phút giây ra LED 7 đoạn,  mạch có thể hiển thị giờ và hiệu chỉnh tốt.

   Mạch LED đơn hiển thị chữ : CĐKT CAO THẮNG có thể điều khiển LED sáng theo nhiều kiểu  đẹp mắt với nhiều tốc độ khác nhau.

   Mạch LED ma trận được ghép tạo ra một LED lớn từ 4 LED ma trận nhỏ hơn hiển thị và dịch chữ  :KHOA  ĐIEN TU - TIN HOC THDT03D.

          Mặc dù đề tài của chúng em đã hoàn tất nhưng vẫn còn một số hạn chế không thể tránh khỏi :

    Khoảng cách của các trục ghép ảnh hơi rộng so với dự định ban đầu của chúng em. Chương trình đồng hồ còn chưa tối ưu nên còn một số hạn chế. Ngoài ra việc sắp xếp và trang trí của chúng em chưa thật sự đẹp mắt.     Nhưng dù sao chúng em cũng đã cố gắng hết sức để hoàn tất đề tài của mình  trong thời gian cho phép.

          Với đề tài này thì chúng em có thể thiết kế thêm một số chức năng khác để làm cho phong phú hơn như:

          Thiết kế hệ thống đèn chiếu sáng, đảo chiều quay động cơ, bố trí thêm mạch nhiệt độ…..

          Trong quá trình thực hiện đề tài chúng em đã nhận được sự giúp đỡ rất nhiệt tình của các thầy cô trong nhà trường cũng như trong khoa. Đây là những thuận lợi rất cần thiết và có ích cho chúng em. Các thầy cô đã chỉ  dẫn, góp ý và giúp chúng em về địa điểm để chúng em thuận lợi hơn quá trình thực hiện.

 Tuy nhiên trong quá trình thực hiện chúng em gặp một số khó khăn như sau :

Khó khăn lớn nhất đối với chúng em là việc thiết kế phần cơ của hệ thống ghép ảnh. Do đây là đề tài mới nên việc thiết kế và thi công gặp rất nhiều khó khăn. Chúng đòi hỏi nhiều kiến thức cũng như kỹ năng không thuộc chuyên ngành của chúng em. Ngoài ra do hầu hết các nguyên vật liệu và phụ kiện đều không có sẵn và rất khó tìm trên thị trường, nên việc thiết kế và thi công phần cơ chiếm phần lớn thời gian thực hiện của chúng em. Bên cạnh đó. chúng em còn khó khăn trong việc tìm địa điểm để thực hiện cũng như phương tiện đi lại của nhóm.

Trên đây là kết quả đạt được, những mặt hạn chế, hướng khắc phục những thuận lợi và khó khăn của chúng em trong quá trình thực hiện đề tài. Rất mong quý thầy cô thông cảm cho những khó khăn của chúng em mà bỏ qua những mặt hạn chế và những thiếu xót của chúng em.



  • Tiêu chí duyệt nhận xét
    • Tối thiểu 30 từ, viết bằng tiếng Việt chuẩn, có dấu.
    • Nội dung là duy nhất và do chính người gửi nhận xét viết.
    • Hữu ích đối với người đọc: nêu rõ điểm tốt/chưa tốt của đồ án, tài liệu
    • Không mang tính quảng cáo, kêu gọi tải đồ án một cách không cần thiết.

THÔNG TIN LIÊN HỆ

doantotnghiep.vn@gmail.com

Gửi thắc mắc yêu cầu qua mail

094.640.2200

Hotline hỗ trợ thanh toán 24/24
Hỏi đáp, hướng dẫn