DANH MỤC TÀI LIỆU
Hướng dẫn lập trình Assembly với phần mềm AVR
1
Hướng dn lp trình Assembly
Cho AVR
s dng AVRstudio 4.2
Hướng dn lp trình AVR vi ni dung hướng dn các bn mi làm quen
vi vi điu khin AVR và phn mm AVRstudio4.2 . Ni dung chính ca tài
liu này là . Hướng dn các bn cách để viết mt chương trình assembly và
điu khin vào ra d liu.
Tài liu này được chia làm 3 phn:
Phn 1: Các ch th hp dch trong ASSEMBLY.
Phn 2:Viết mã lnh cho mt chương trình ASSEMBLY.
Phn3: Điu khin vào ra d liu và các thiết b tích hp trong AVR.
Phn 1: Các ch th hp dch.
Chương trình dch Assembly làm vic trên file chương trình ngun và mt
file ngun bao gm : các lnh , các nhãn và các ch dn.Chúng được xếp
tun t trong file ngun.
Mt dòng lnh có chiu dài cc đại là :120 kí t.
Mi dòng lnh đều có th đặt trước bi mt nhãn,nó là mt chui kí t
kết thúc bng du 2 chm.Nhãn được s dng nhưđích cho các lnh nhy,
Và các ch th r nhánh.Và còn được s dng như là tên biến trong b nh
chương trình và b nh d liu.
Mt dòng lnh có th là mt trong bn dng sau:
1. [nhan: ] ch_th [toán_hng] [;li chú thích]
2. [nhan: ] lnh [toán_hng] [;li chú thích]
3. ;chú thích
4. dòng trng (không cha kí t nào)
Mt li chú thích luôn đi sau du chm phy(“;”)và nó không được dch
sang mã máy ch có tác dng cho người đọc chương trình d hiu.
Chương trình Assembly h tr mt s các ch th.Các ch th này không
được dch ra mã nh phân (mã máy).Và nó được s dng để điwuf khin quá
trình dch và c th là : điu khiu ghi lnh vào b nh chương trình, định
nghĩa các biến …
2
Dưới đây là bng các ch th :
Ch tht
BYTE Định nghĩa mt biến kiu byte
CSEG Đon mã chương trình
DB Định nghĩa mt hng s kiu byte
DEF Định nghĩa mt tên gi nh cho mt thanh ghi
DEVICE Định nghĩa loi VĐK cho chương trình
DSEG Đon d liu
DW Định nghĩa mt hng s kiu 2 byte (word)
ENDMACRO Kêt thúc ca mt macro
EQU Thay mt biu thc bng mt kí t.
ESEG Đon EEPROM
EXIT Thoát ra t mt file
INCLUDE S dng mã ngun t mt file khác
LIST Cho phép to ra trong file list
LISTMAC Cho phép thêm macro vào list khi được gi
MACRO Bt đầu macro
NOLIST Không cho phép to ra trong file list
ORG Thiết lp mc ca chương trình
SET Gán mt nhãn cho mt giá tr
Tt c các ch th đều đặt sau du chm (“.”).
1.1.BYTE :
Ch th này giành trước tài nguyên b nh trong SRAM.Ch th này
phi đi sau mt nhãn và có mt tham s,nó ch ra s byte được giành
trước.Ch th này ch dùng trong đon d liu.
Cú pháp :
LABEL: .BYTE expression
d:
.DSEG
var1: .BYTE 1 ;
var2 : .BYTE 10;
.CSEG
ldi r30,low(var1);
Nếu như bn nào đã hc qua mt ngôn ng cp cao nào đó thì thc ra
vùng nh này cũng như là mt biến.D liu s không t động được
ghi vào và ch khi bn dùng các lnh tác động đến nó mà thôi.Nhãn
chính là địa ch đầu ca đon b nh được giành trước .
3
1.2.Ch th CSEG:
Ch th này định nghĩa đim bt đầu ca đon mã chương trình.Mt
file ngun assembly có th cha nhiu đon mã chương trình ,và
chúng li được liên kết thành mt đon mã lnh khi dch.Ch th
BYTE không được s dng trong đon này.Mt đon chương trình
nếu không được định nghĩa là mã lnh hay d liu thì đều được mc
định là đon mã lnh.Mi đon mã linh thì có mt địa ch riêng 16
bit (hay là mt t).Ch th ORG có th được s dng để đặt v trí ca
các đon mã lnh và hng s trong b nh chương trình .Ch th này
không kèm theo bt kì mt tham s nào.
Cú pháp:
.CSEG
Ví d:
.DSEG
var1: .BYTE 1
.CSEG
CONST: .DW 2
MOV R1,R0
1.3.DB:
Định nghĩa các hng s kiu byte được lưu trong b nh chương trình hac
b nh EEPROM.Và ch th này luôn theo sau mt nhãn .Ch th này thường
được s dng trong vic lưu gi các bng và các biu thc (nhưng có th
tính ra giá tr cui cùng) .Các nhãn chính là địa ch khi đầu cho giá tr ban
đầu ca bng.Ch dn này ch có th đặt được trong đon mã hoc đon b
nh EEPROM.
Các phn t trong bng được phân bit bng du phy.
Cú pháp:
Label: .DB danh_sach_biu_thc
Ví d:
.CSEG
Sin: .DB 0,1,2,3,4,6,7
.ESEG
const: .DB 1,2,3
Chú ý: Mt s hay mt biu thc (phi có kết qu) nm trong khong –128
đến 255.Nếu s đó là só âm thì s được lưu dưới dng 8bit mã bù 2.
4.DEF:
4
Ch th này có tác dng cho phép lp trình viên đặt tên cho mt thanh
ghi.Thay bng nh thanh ghi đó lp trình viên có th đặt tên cho nó vi cái
tên gi nh hơn .
Cú pháp:
.DEF tên_gi_nh=thanh_ghi
Ví d:
.DEF xh=R28
.DEF xl=R29
Chú ý: Mt thanh ghi có th có rt nhiu tên gi nhó gán cho nó nhưng điu
đó s rt nguy him có th vô tình bn làm mt d liu trong thanh ghi đó
mà bn không mong mun.
1.5.DEVICE:
Ch th này ch cho chương trình dch biết loi vi điu khin mà ta đang viết
chương trình.
Cú pháp:
.DEVICE Loi_vi_điu_khin
Ví d:
.DEVICE AT90S8535
Ch th này s báo cho chúng ta nhng li sinh ra khi mà chương trình dch
tìm thy nhng lnh cũng như nhng thiếtb ngoi vi không được h tr
trong loi vi điu khin này.
1.6.DSEG:
Ch th này định nghĩa đim bt đầu ca đon d liu.Mt file ngun có th
có nhiu đon d liu nhưng khi dch chúng thì chúng được gp liên kết vào
mt đon.Mt đon d liu bình thường ch cha duy nht ch th
BYTE.Mi đon d liu đều có mt con tr v trí riêng và đó là con tr 8 bit
(vì chúng trong b nh RAM).Ch th ORG có th được s dng để đặt các
biến ti các v trí xác định trong RAM (ch th này s được nói sau).
Cú pháp:
.DSEG
var1: .BYTE 1
table: .BYTE table_size
1.7.DW:
Đây là ch th cho phép người s dng định nghĩa các hng s dng 2 byte
trong b nh chương trình hoc bn nh EEPROM nó hoàn toàn tương t
như ch th DB.
Cú pháp:
Label: .DW danh_sách_biu_thc
Ví d:
Var: .DW 12,354,3434,31345
5
1.8.ENDMACRO:
Kết thúc ca mt macro.Ch th này không đi kèm mt tham s nào c.
Cú pháp:
.Endmacro
Ví d:
.Macro subi16
subi r16,low(@0)
subi r17,high(@0)
.Endmacro
1.9.EQU:
Ch th EQU gán giá tr ca mt biu thc cho mt nhãn.Nhãn sau khi gán
giá tr tr thành mt hng s và không được định li giá tr.
Cú pháp:
.EQU const=expression
Ví d:
.EQU io=0x23
.EQU ios=io-10
1.10. ESEG:
Hoàn toàn ging vi CSEG
1.11. EXIT:
Ch th EXIT báo cho chương trình dch biết dng vic đọc file li.Bình
thường thì chương trình dch s chy cho ti khi hết file thì kết thúc.Nhưng
nếu như trong file có cha ch th này thì khi nào chương trình dch gp ch
th này thì s kết thúc qúa trình đọc.
Cú pháp:
. EXIT
1.12.INCLUDE
Ch th này báo cho chương trình dch biết bt đầu đợc t mt file xác định
cho ti khi hết file đó hoc mt ch th ngng đọc (EXIT).
Cú pháp:
.Include “tên_file” ; Đôi khi c tên file và đường dn.
Ví d:
;Ni dung ca file iodef.asm”
.EQU sreg = 0x3f
.EQU sphigh=0x3e
.EQU splow=0x3d
;Trong chương trình
.INCLUDE “iodef.asm”
in r0,sreg ; đọc thanh ghi trang thái.
1.13.LIST:
6
Cho phép chương trình dch to ra file list.
Cú pháp:
.LIST
Chú ý:Mc định ca chương trình dch là cho phép to ra file list và ch th
này luôn đi kèm vi ch th NOLIST.
1.14.LISTMAC:
Hoàn toàn ging vi LIST nhưng vi macro.
1.15.MACRO:
Ch dn khai báo macro.Vy macro là gì? Macro thc ra là mt đon chương
trình .Khi mà macro được gi thì đon chương trình đó s được dán vào v
trí gi macro.
Tham s đi theo ngay sau ch th này là tên ca macro.Mt macro có th
ti 10 tham s.
Cú pháp:
.Macro macro_name
Ví d:
.Macro sub16
………..;lnh gì đó
……….;lênh nào đó
.Endmacro
.CSEG
sub16 ;goi macro
1.16.NOLIST:
1.17. ORG:
Ch th ORG thiết lp mt con tr tuyt đối .Giá tr được thiết lp chính là
tham s cho ch th này.Nếu như ch th này nm trong đon d liu thì v trí
được thiết lp chính là mt v trí trong SRAM và c th đó là v trí bt đầu
ca biến đước khai báo sau ch th BYTE.
Còn khi ch th này được khai báo trong đon chương trình thì v trí tuyt đối
đó nm trong b nh chương trình và đon mã lnh theo sau nó s được ghi
vào bôin nh chương trình t con tr đó.Và đối vi đon ESEG cũng tương
t.Nếu như ch th này đi sau mt nhãn thì nhãn đó có giá tr chính bng
tham s ca ch th này.
Cú pháp:
. org tham_só
hoc Label: . org tham_s
Ví d:
.DSEG
. org 0x60
var1: .BYTE 2
thông tin tài liệu
hướng dẫn chi tiết cách lập trình Assembly với phần mềm AVR
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×