Cơđiệntử.ogr vi xử lý 8051

GT - Vi - Dieu - Khien - 8051 [CDT]

Uploaded by

Thor

0% found this document useful [0 votes]

10 views

62 pages

Original Title

GT_Vi_dieu_khien_8051 [ CDT ].doc

Copyright

© © All Rights Reserved

Available Formats

DOC, PDF, TXT or read online from Scribd

Share this document

Did you find this document useful?

Is this content inappropriate?

Report this Document

0% found this document useful [0 votes]

10 views62 pages

GT - Vi - Dieu - Khien - 8051 [CDT]

Original Title:

GT_Vi_dieu_khien_8051 [ CDT ].doc

Uploaded by

Thor

Full description

Hợp ngữ là một ngôn ngữ lập trình cấp thấp được sử dụng để viết mã chương trình về mặt ghi nhớ. Mặc dù có rất nhiều ngôn ngữ cấp cao hiện đang được yêu cầu, nhưng ngôn ngữ lập trình hợp ngữ vẫn được sử dụng phổ biến trong nhiều ứng dụng, nó có thể được sử dụng cho các thao tác phần cứng trực tiếp. Nó cũng được sử dụng để viết Mã lập trình 8051 hiệu quả với số lượng chu kỳ đồng hồ ít hơn bằng cách tiêu thụ ít bộ nhớ hơn so với các ngôn ngữ cấp cao khác.



Lập trình 8051

8051 Lập trình bằng hợp ngữ

Hợp ngữ là một ngôn ngữ lập trình hoàn toàn liên quan đến phần cứng. Các nhà thiết kế nhúng phải có đủ kiến ​​thức về phần cứng của bộ xử lý hoặc bộ điều khiển cụ thể trước khi viết chương trình. Hợp ngữ được phát triển bằng kỹ thuật ghi nhớ, do đó, người dùng không thể hiểu dễ dàng để sửa đổi chương trình.


8051 Lập trình bằng hợp ngữ

Hợp ngữ lập trình được phát triển bởi nhiều trình biên dịch khác nhau và các 'sân chơi bowling' là phù hợp nhất cho vi điều khiểnlập trình phát triển. Microcontrollershoặc bộ xử lý chỉ có thể hiểu ngôn ngữ nhị phân ở dạng ‘0s hoặc 1s’. Một trình hợp dịch chuyển đổi ngôn ngữ hợp ngữ sang ngôn ngữ nhị phân và sau đó lưu trữ nó trongvi điều khiểnbộ nhớ để thực hiện nhiệm vụ cụ thể.



8051 Architecuture Vi điều khiển

8051vi điều khiểnlà Kiến trúc Harvard dựa trên CISC , và nó có các thiết bị ngoại vi như 32 I / O, bộ định thời / bộ đếm, giao tiếp nối tiếp và bộ nhớ. Cácvi điều khiểnyêu cầu chương trình thực hiện các thao tác yêu cầu bộ nhớ để lưu và đọc các chức năng. 8051vi điều khiểnbao gồm bộ nhớ RAM và ROM để lưu trữ các lệnh.

8051 Architecuture Vi điều khiển

Sổ đăng ký là phần chính trong bộ xử lý vàvi điều khiển được chứa trong bộ nhớ cung cấp cách thu thập và lưu trữ dữ liệu nhanh hơn. Việc lập trình hợp ngữ 8051 dựa trên các thanh ghi bộ nhớ. Nếu chúng ta muốn thao tác dữ liệu với bộ xử lý hoặc bộ điều khiển bằng cách thực hiện phép trừ, cộng, v.v., chúng ta không thể thực hiện điều đó trực tiếp trong bộ nhớ, mà nó cần các thanh ghi để xử lý và lưu trữ dữ liệu.Vi điều khiểnchứa một số loại thanh ghi có thể được phân loại theo hướng dẫn hoặc nội dung hoạt động trong đó.

Các chương trình vi điều khiển 8051 bằng hợp ngữ

Hợp ngữ được tạo thành từ các phần tử được sử dụng để viết chương trìnhCách tuần tự. Tuân theo các quy tắc đã cho để viết chương trình bằng hợp ngữ.


Quy tắc của hợp ngữ

  • Mã lắp ráp phải được viết bằng chữ hoa
  • Các nhãn phải được theo sau bởi dấu hai chấm [nhãn :]
  • Tất cả các ký hiệu và nhãn phải bắt đầu bằng một chữ cái
  • Tất cả các bình luận đều được nhập bằng chữ thường
  • Dòng cuối cùng của chương trình phải là lệnh END

Thuật ngữ hợp ngữ ở dạng mã op, chẳng hạn như MOV, ADD, JMP, v.v., được sử dụng để thực hiện các hoạt động.

Mã op: Mã op là một lệnh duy nhất có thể được thực thi bởi CPU. Đây là mã op là một lệnh MOV.

Toán hạng: Các toán hạng là một phần dữ liệu duy nhất có thể được vận hành bởi mã op. Ví dụ, phép toán nhân được thực hiện bởi các toán hạng được nhân với toán hạng.

Cú pháp: MUL a,b

Các yếu tố của lập trình hợp ngữ:

  • Nguyên tắc lắp ráp
  • Bộ hướng dẫn
  • Chế độ địa chỉ

Hướng dẫn lắp ráp:

Các chỉ thị lắp ráp cung cấp các hướng cho CPU. 8051vi điều khiểnbao gồm nhiều loại lệnh lắp ráp khác nhau để cung cấp hướng cho đơn vị điều khiển. Các chỉ thị hữu ích nhất là lập trình 8051, chẳng hạn như:

  • ORG
  • DB
  • EQU
  • KẾT THÚC

ORG[gốc]: Chỉ thị này cho biết thời điểm bắt đầu chương trình. Điều này được sử dụng để thiết lập địa chỉ thanh ghi trong quá trình lắp ráp. Ví dụ ORG 0000h cho trình biên dịch biết tất cả mã tiếp theo bắt đầu từ địa chỉ 0000h.

Cú pháp: ORG 0000h

DB[định nghĩa byte]: Byte xác định được sử dụng để cho phép một chuỗi byte. Ví dụ: in “EDGEFX” trong đó mỗi ký tự được lấy bởi địa chỉ và cuối cùng in trực tiếp “chuỗi” bởi DB với dấu ngoặc kép.

Cú pháp:

ORG 0000h

MOV a, # 00h
————-
————-
DB “EDGEFX”

EQU [tương đương]: Chỉ thị tương đương được sử dụng để cân bằng địa chỉ của biến.

Cú pháp:

reg bằng,09 giờ
—————–
—————–
MOVreg,# 2 giờ

KẾT THÚC: Lệnh END được sử dụng để chỉ ra sự kết thúc của chương trình.

Cú pháp:

reg bằng,09 giờ

—————–
—————–
MOVreg,# 2 giờ
KẾT THÚC

Chế độ địa chỉ:

Cách truy cập dữ liệu được gọi là chế độ định địa chỉ. CPU có thể truy cập dữ liệu theo nhiều cách khác nhau bằng cách sử dụng các chế độ định địa chỉ. 8051vi điều khiểnbao gồm năm chế độ địa chỉ như:

  • Chế độ giải quyết ngay lập tức
  • Đăng ký chế độ địa chỉ
  • Chế độ địa chỉ trực tiếp
  • Chế độ địa chỉ gián tiếp
  • Chế độ định địa chỉ chỉ mục cơ sở

Chế độ giải quyết ngay lập tức:

Trong chế độ địa chỉ này, nguồn phải là một giá trị có thể theo sau là '#' và đích phải là Thanh ghi SFR, thanh ghi mục đích chung và địa chỉ. Nó được sử dụng để lưu trữ ngay giá trị trong các thanh ghi bộ nhớ.

Cú pháp:

MOV A, # 20h // A làmộtthanh ghi tích lũy, 20 được lưu trữ trong A //
MOV R0,# 15 // R0 là thanh ghi mục đích chung 15 được lưu trữ trong thanh ghi R0 //
MOV P0, # 07h // P0 là thanh ghi SFR07 được lưu trữ trong P0 //
MOV 20h,# 05h // 20h là địa chỉ của thanh ghi 05 được lưu trong 20h //

Trước đây:

MOV R0, # 1
MOV R0, # 20 // R0 Nhảy nếu Carry

  • JNC -> Nhảy nếukhông phảiMang
  • JZ -> Nhảy nếu Zero
  • JNZ -> Nhảy nếukhông phảiSố không
  • Hướng dẫn có điều kiện

    1. Cú pháp:

    JB P1.0, nhãn
    - - - - - - - -
    - - - - - - - -
    Nhãn: - - - - - - - -
    - - - - - - - -
    KẾT THÚC

    2. Cú pháp:

    JNB P1.0, nhãn
    - - - - - - - -
    - - - - - - - -
    Nhãn: - - - - - - - -
    - - - - - - - -
    KẾT THÚC

    3. Cú pháp:

    JC, nhãn
    - - - - - - - -
    - - - - - - - -
    Nhãn: - - - - - - - -
    - - - - - - - -
    KẾT THÚC

    4. Cú pháp:

    JNC, nhãn
    - - - - - - - -
    - - - - - - - -
    Nhãn: - - - - - - - -
    - - - - - - - -
    KẾT THÚC
    5. Cú pháp:

    JZ, nhãn
    - - - - - - - -
    - - - - - - - -
    Nhãn: - - - - - - - -
    - - - - - - - -
    KẾT THÚC

    6. Cú pháp:

    JNZ, nhãn
    - - - - - - - -
    - - - - - - - -
    Nhãn: - - - - - - - -
    - - - - - - - -
    KẾT THÚC

    Hướng dẫn Gọi và Nhảy:

    Lệnh gọi và lệnh nhảy được sử dụng để tránh sao chép mã của chương trình. Khi một số mã cụ thể được sử dụng nhiều lần ở các vị trí khác nhau trong chương trình, nếu chúng tôi đề cậptên cụ thểđếnsau đó mãchúng ta có thể sử dụng tên đó ở bất cứ đâu trong chương trình mà không cần nhập mã cho mọi lúc Điều này làm giảm độ phức tạp của chương trình. Lập trình 8051 bao gồm lệnh gọi và lệnh nhảy như LCALL, SJMP.

    • LCALL
    • MỘT CUỘC GỌI
    • SJMP
    • LJMP

    1. Cú pháp:

    ORG 0000h
    - - - - - - - -
    - - - - - - - -
    ACALL, nhãn
    - - - - - - - -
    - - - - - - - -
    SJMP DỪNG LẠI
    Nhãn: - - - - - - - -
    - - - - - - - -
    - - - - - - - -
    đúng
    DỪNG LẠI:NOP

    2. Cú pháp:

    ORG 0000h
    - - - - - - - -
    - - - - - - - -
    LCALL, nhãn
    - - - - - - - -
    - - - - - - - -
    SJMP DỪNG LẠI
    Nhãn: - - - - - - - -
    - - - - - - - -
    - - - - - - - -
    đúng
    DỪNG LẠI:NOP

    Hướng dẫn Gọi và Nhảy

    Hướng dẫn lặp lại:

    Các lệnh lặp được sử dụng để lặp lại khối mỗi lần trong khi thực hiện các thao tác tăng và giảm. 8051vi điều khiểnbao gồm hai loại hướng dẫn vòng lặp:

    • CJNE -> so sánh và nhảy nếu không bằng
    • DJNZ -> giảm và nhảy nếu không

    1. Cú pháp:

    củaCJNE
    MOV A, # 00H
    MOV B, # 10H
    Nhãn: INC A
    - - - - - -
    - - - - - -
    CJNE A, nhãn

    2. Cú pháp:

    củaDJNE

    MOV R0, # 10H
    Nhãn: - - - - - -
    - - - - - -
    DJNE R0, nhãn
    - - - - - -
    - - - - - -
    KẾT THÚC

    Bộ hướng dẫn logic:

    Tập lệnh vi điều khiển 8051 cung cấp các lệnh logic AND, OR, XOR, TEST, NOT và Boolean để thiết lập và xóa các bit dựa trên nhu cầu trong chương trình.

    Bộ hướng dẫn logic

    1. Cú pháp:

    MOV A, # 20H / 00100000 /
    MOV R0, # 03H / 00000101 /
    ORL A, R0 // 00100000/00000101 = 00000000 //

    2. Cú pháp:

    MOV A, # 20H / 00100000 /
    MOV R0, # 03H / 00000101 /
    ANL A, R0

    3. Cú pháp:

    MOV A, # 20H / 00100000 /
    MOV R0, # 03H / 00000101 /
    XRL A, R0

    Người điều hành dịch chuyển

    Các toán tử ca được sử dụng để gửi và nhận dữ liệu một cách hiệu quả. 8051vi điều khiểnbao gồm bốn toán tử thay đổi:

    • RR -> Xoay phải
    • RRC -> Xoay phải qua thực hiện
    • RL -> Xoay trái
    • RLC -> Xoay trái qua mang

    Xoay phải [RR]:

    Trong hoạt động dịch chuyển này, MSB trở thành LSB và tất cả các bit dịch chuyển về phía bên phải từng bit một, tuần tự.

    Cú pháp:

    MOV A, # 25 giờ
    RR A

    Xoay trái [RL]:

    Trong hoạt động dịch chuyển này, MSB trở thành LSB và tất cả các bit dịch chuyển về phía Trái từng bit một, tuần tự.

    Cú pháp:

    MOV A, # 25 giờ
    RL A

    RRC Xoay Phải qua Thực hiện:

    Trong hoạt động dịch chuyển này, LSB di chuyển để mang và mang trở thành MSB, và tất cả các bit được dịch chuyển về phía bên phải vị trí từng bit.

    Cú pháp:

    MOV A, # 27 giờ
    RRC A

    RLC Xoay Trái qua Thực hiện:

    Trong hoạt động dịch chuyển này, MSB di chuyển để mang và mang trở thành LSB và tất cả các bit dịch chuyển về phía bên trái theo vị trí từng bit.

    Cú pháp:

    MOV A, # 27 giờ
    RLC A

    Các chương trình C nhúng cơ bản:

    Cácvi điều khiểnlập trình khác nhau đối với từng loại hệ điều hành. Có nhiều hệ điều hành chẳng hạn như Linux, Windows, RTOS, v.v. Tuy nhiên, RTOS có một số lợi thế để phát triển hệ thống nhúng. Dưới đây là một số ví dụ lập trình cấp Assembly.

    Đèn LED nhấp nháy sử dụng với 8051vi điều khiển:

    • Số Hiển thị trên màn hình 7 đoạn sử dụng vi điều khiển 8051
    • Tính toán bộ định thời / bộ đếm và chương trình sử dụng 8051vi điều khiển
    • Tính toán giao tiếp nối tiếp và chương trình sử dụng 8051vi điều khiển

    Các chương trình LED với 8051 Microcontrller

    1. WAP để chuyển đổi các đèn LED PORT1

    ORG 0000H
    TOGLE: MOV P1, # 01 //di chuyển00000001 vào thanh ghi p1 //
    CALL DELAY // thực thi delay //
    MOV A, P1 // di chuyểngiá trị p1vào bộ tích lũy //
    CPL A // bổ sung cho giá trị A //
    MOV P1, A // di chuyển 11111110 đến thanh ghi port1 //
    CALL DELAY // thực thi delay //
    SJMP TOGLE
    DELAY: MOV R5, # 10H // tải thanh ghi R5 với 10 //
    HAI: MOV R6, # 200 // tải thanh ghi R6 với 200 //
    MỘT: MOV R7, # 200 // tải thanh ghi R7 với 200 //
    DJNZ R7, $ // giảm R7 cho đến khi nó bằng 0 //
    DJNZ R6, ONE // giảm R7 cho đến khi bằng 0 //
    DJNZ R5, TWO // giảm R7 cho đến khi bằng 0 //
    RET // quay lại chương trình chính //
    KẾT THÚC

    Tính toán và chương trình hẹn giờ / bộ đếm sử dụng 8051 Microcontroller:

    Sự chậm trễ là một trong những yếu tố quan trọng trong việc phát triển phần mềm ứng dụng. Các bộ đếm thời gian và bộ đếm là các thành phần phần cứng củavi điều khiển, được sử dụng trong nhiều ứng dụng để cung cấp độ trễ thời gian chính xác với các xung đếm. Both các nhiệm vụ được thực hiện bởi kỹ thuật phần mềm.

    1. WAP để tính toán thời gian trễ 500us.

    MOV TMOD, # 10H // chọn chế độ hẹn giờ bằng các thanh ghi //
    MOV TH1, # 0FEH // lưu trữ thời gian trễ ở bit cao hơn //
    MOV TL1, # 32H // lưu trữ thời gian trễ ở bit thấp //
    JNB TF1, $ // giảm giá trị của bộ đếm thời gian cho đến khi nó bằng 0 //
    CLR TF1 // xóa cờ hẹn giờbit//
    CLR TR1 // TẮT bộ định thời //

    2. WAP để chuyển đổi các đèn LEDvới5giâythời gian trễ

    ORG 0000H
    QUAY LẠI: MOV PO, # 00H
    TRỄ TRỞ LẠI
    MOV P0, # 0FFH
    TRỄ TRỞ LẠI
    SJUMP QUAY LẠI
    DELAY: MOV R5, # 50H // tải thanh ghi R5 với 50 //
    DELAY1: MOV R6, # 200 // tải thanh ghi R6 với 200 //
    DELAY2: MOV R7, # 229 // tải thanh ghi R7 với 200 //
    DJNZ R7, $ // giảm R7 cho đến khi nó bằng 0 //
    DJNZ R6, DELAY2 // giảm R6 cho đến khi bằng 0 //
    DJNZ R5, DELAY1 // giảm R5 cho đến khi bằng 0 //
    RET // quay lại chương trình chính //
    KẾT THÚC

    3. WAP để đếm 250 xung sử dụng mode0 count0

    Cú pháp:

    ORG 0000H
    MOV TMOD, # 50H // chọn bộ đếm //
    MOV TH0, # 15 // di chuyển xung đếm lên bit cao hơn //
    MOV TH1, # 9FH //di chuyểnxung đếm, bit thấp hơn //
    ĐẶT TR0 // BẬT bộ định thời //
    JNB $ // giảm giá trị đếm xuống 0 //
    CLR TF0 // xóa bộ đếm, gắn cờbit//
    CLR TR0 // dừng bộ định thời //
    KẾT THÚC

    Lập trình giao tiếp nối tiếp sử dụng 8051 Microcontroller:

    Truyền thông nối tiếp thường được sử dụng để truyền và nhận dữ liệu. 8051vi điều khiểnbao gồm giao tiếp nối tiếp UART / USART và các tín hiệu được truyền và nhận bởiTxvà chân Rx. Giao tiếp UART truyền dữ liệu từng bit một. UART là một giao thức bán song công truyền và nhận dữ liệu, nhưng không phải cùng một lúc.

    1. WAP để truyền các ký tự tới Hyper Terminal

    MOV SCON, # 50H // thiết lập giao tiếp nối tiếp //
    MOV TMOD, # 20H // chọn chế độ hẹn giờ //
    MOV TH1, # -3 // đặt tốc độ truyền //
    ĐẶT TR1 // BẬT bộ định thời //
    MOV SBUF, # ’S’ // truyền S đến cửa sổ nối tiếp //
    JNB TI, $ // giá trị giảm của bộ đếm thời gian cho đến khi nó bằng 0 //
    CLR RI // xóa nhận ngắt //
    CLR TR1 // xóa bộ định thời //

    2. WAP để truyền nhận ký tự bằng Hyper Terminal

    MOV SCON, # 50H // thiết lập giao tiếp nối tiếp //
    MOV TMOD, # 20H // chọn chế độ hẹn giờ //
    MOV TH1, # -6 // đặt tốc độ truyền //
    ĐẶT TR1 // trên bộ định thời //
    MOV SBUF, # ’S’ // truyền S đến cửa sổ nối tiếp //
    JNB RI, $ // giá trị giảm dần của bộ đếm thời gian cho đến khi nó bằng 0 //
    CLR RI // xóa nhận ngắt //
    MOV P0, SBUF // gửi giá trị thanh ghi SBUF tới cổng0 //
    CLR TR1 // xóa bộ định thời //

    Đây là tất cả về Lập trình 8051 trong ngôn ngữ Hợp ngữ ngắn gọn với các chương trình dựa trên ví dụ. Chúng tôi hy vọng thông tin đầy đủ này về hợp ngữ chắc chắn sẽ hữu ích cho độc giả và chúng tôi mong muốn nhận được ý kiến ​​quý báu của họ trong phần bình luận bên dưới.

    Chủ Đề