Professional Documents
Culture Documents
Lap Trinh Hop Ngu
Lap Trinh Hop Ngu
Lập trình hợp ngữ (assembly language programming) cho họ vi điều khiển MCS51.
Một chương trình viết bằng hợp ngữ (chương trình hợp ngữ) là chương trình được viết
bằng việc sử dụng các câu lệnh trong tập lệnh của họ vi điều khiển với các mã lệnh dưới
dạng mã gợi nhớ.
Chương trình hợp ngữ thường được gọi là chương trình nguồn hay mã nguồn được
một chương trình biên dịch (chương trình dịch) dịch ra thành ngôn ngữ máy dưới dạng mã
nhị phân và được nạp vào bộ nhớ chương trình của vi điều khiển thông qua một máy nạp
chương trình (Programmer).
Hiện nay có rất nhiều chương trình biên dịch cho họ vi điều khiển MCS51 (Keil
µVision, RCHPSIM….) đã và đang được sử dụng. Tuy nhiên trong chương này sẽ sử dụng
chương trình Keil µVision3 để soạn thảo và biên dịch chương trình hợp ngữ. Keil µVision
được hình thành và phát triển từ năm 1985, phần mềm biên dịch này hỗ trợ cho nhiều dòng
vi điều khiển khác nhau với hai loại ngôn ngữ chính là hợp ngữ và C cho vi điều khiển.
VD:
Buffer1 EQU 50h ; Biến Buffer1 được gán giá trị 50H
Constant_A EQU 10 ; Hằng số Constant_A được gán 10 (=0AH)
3.1.3 Khai báo chương trình con:
Cú pháp: Ví dụ:
org 13h ; Ngắt Ex1 Khi ngắt nào đó được sử dụng thì người
nop dùng phải viết lệnh
ljmp Tên ct Phục vụ ngắt / Reti Ljmp Tên Ctrình phục vụ ngắt
(Như ngắt Timer0, Ex1, Timer1)
org 1bh ; Ngắt Timer1
nop
ljmp Tên ct Phục vụ ngắt / Reti
;=============================== ;===================================
Ctrinh _ Phục vụ ngắt
;===============================
Tên ct Phục vụ ngắt1 : Vùng viết các Ctrình phục vụ ngắt
Câu lệnh a
………….
Câu lệnh h
…………
Lcall Ctr_con m
…………
reti
;============================== ;====================================
End Câu lệnh kết thúc Ctrình
3.2 Quản lý bảng số liệu, phép tính nhiều byte
3.2.1 Quản lý bảng số liệu
Bảng số liệu (Mảng, số nhiều byte) thường được lưu trữ trong 1 vùng nhớ nằm trong bộ
nhớ chương trình. Khi thao tác với một bảng số liệu người lâp trình sẽ cần phải biết cách
khai báo bảng số liệu, qua đó xác định được địa chỉ đầu của bảng số liệu, số lượng byte
trong 1 bảng số liệu. Để trên cơ sở đó thực hiện các phép toán trên bảng số liệu đó
a. Khai báo bảng số liệu:
Cách 2: Kết hợp với lệnh định địa chỉ con Ví dụ2:
trỏ
Tương tự như sử dụng theo kiểu định nghĩa Address_Table3 Gtrị (hex)
theo Byte chỉ có khác là mỗi giá trị phải
được lưu vào 2 byte [ Table3 +00] h 00
[ Table3 +01] h 05
[ Table3 +02] h 00
[ Table3 +03] h 0A
[ Table3 +04] h 00
[ Table3 +05] h 35
[ Table3 +06] h 0F
[ Table3 +07] h 8A
Ví dụ:
Viết đoạn trình chuyển hai mảng dữ liệu 50 byte. Biết mảng 1 có địa chỉ 50h trong Ram
trong và mảng 2 có địa chỉ 1234h ở RAM ngoài.
Đoạn chương trình Lưu đồ thuật toán
Start
No
R2 = 0
Yes
End
Ví dụ 2:
Viết chương trình trừ hai số 8 byte, kết quả cất vào số thứ 1. Biết số thứ nhất đặt tại ô nhớ
1000H tại RAM ngoài và số thứ hai đặt tại 60H RAM trong và LSB đặt tại ô có địa chỉ
thấp nhất
3.4 Điều khiển vào ra: tra mức, sườn tín hiệu, điều khiển quét
3.5 Ngắt trong MCS51: Ngắt ngoài