Lập trình asembly cho MCS-51 pot

19 418 2
Lập trình asembly cho MCS-51 pot

Đ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

MCS-51 & Assembly language 1 Lp trình Assembly cho MCS-51 MCS-51 & Assembly language 2 Plan ¸ Tp lnh MCS-51 ¸ Ngôn ng Assembly s dng phn mm Keil ¸ Gii thiu Phn mm mô phng mch đin Proteus ¸ Ví d MCS-51 & Assembly language 3 Tp lnh ¸ Vi x lý đu có mt tp lnh ¸ Các lnh đc đc ct trong b nh chng trình di dng các mã lnh nh phân ¸  thun tin cho vic lp trình: ̈ Các mã lnh đc quy c vit  dng “gi nh” (mnemonic) ̈ Cn chng trình dch các mnemonic qua mã máy (Assembler): Hp ng MCS-51 & Assembly language 4 Chng trình s dng hp ng EDITOR PROGRAM ASSEMBLER PROGRAM LINKER PROGRAM OH PROGRAM Myfile.asm Myfile.obj Other obj file Myfile.lst Myfile.abs Myfile.hex MCS-51 & Assembly language 5 Mt s thut ng ¸ Assembly: ̈ là mt cách th hin các code lnh ca mt CPU di dng các ký hiu mà con ngi có th d dàng đc ¸ Assembler: ̈ phn mm chy trên máy tính có kh nng dch các file vit bng Assembly sang dng object file ¸ Object code: ̈ Cha các mã lnh  dng binary ¸ Object file: ̈ Object code ̈ Thông tin v “relocation” phc v cho linhker MCS-51 & Assembly language 6 ¸ Linhker ̈ Chng trình có kh nng tp hp các object file đ to thành mt chng trình duy nht có th “executable” ¸ Segment ̈ Là mt đn v b nh code hoc data. ̈ Có nhiu kiu segment trong mt chng trình Assembly ¸ Absolute segment: c đnh không th thay đi ¸ Relocatable segment: có các thuc tính đi kèm cho phép linker ghép nhiu segments li vi nhau trc khi to ra mt chng trình executable MCS-51 & Assembly language 7 Tp lnh MCS-51 ¸ Gm 255 lnh: ̈ 139 lnh 1 byte ̈ 92 lnh 2 byte ̈ 24 lnh 3 byte ¸ c chia thành các nhóm lnh ̈ S hc ̈ Logic ̈ Chuyn data ̈ Kim tra điu kin (Boolean Instructions) ̈ iu khin chng trình MCS-51 & Assembly language 8 Assembly cho MCS-51 (Standard) ¸ Keil cung cp 4 tools ̈ A51 Macro Assembly (\Keil\C51\Bin\A51.EXE) ̈ BL51 Linker/Locator (\Keil\C51\Bin\BL51.EXE) ̈ LIB51 Library Manager (\Keil\C51\Bin\LIB51.EXE) ̈ OH51 Object-Hex Converter (\Keil\C51\Bin\OH51.EXE) MCS-51 & Assembly language 9 Các bc to mt chng trình s dng Keil ASM PL/M – 51: là ngôn ng bc cao đc Intel phát trin vào nhng nm 1980 MCS-51 & Assembly language 10 Cu trúc mt chng trình ASM ¸ Các lnh (statements) ASM gm ̈ Các t khóa điu khin chng trình assembler (assembler control) ̈ Các t khóa đnh hng cho chng trình dch (assembler directive) ̈ Các lnh máy (instruction) ¸ Mi dòng ch có th cha duy nht mt lnh assembler control hoc assembler directive hoc mnemonic ¸ Mi lnh phi vit trên mt dòng ¸ Các tham bin hoc các toán hng ca các lnh đc phân bit vi các lnh ít nht bi mt space ¸ Chng trình assembly phi đc kt thúc bi asm directive END, các statements sau t khóa END s b b qua MCS-51 & Assembly language 11 $TITLE (Demo Program #1) CSEG AT 0000h JMP $ END TITLE assembler control JMP instruction mnemonic CSEG, END assembler derective MCS-51 & Assembly language 12 Lnh máy [;comment][, operand][, operand][operand]mnemonic[label:] [ ] có ngha rng trng đó là optional label: nhãn đc dùng đ đánh du đa ch mà ti đólnh đc đt mnemonic dng gi nh ca lnh máy operand toán hng comment li chú thích MCS-51 & Assembly language 13 Directive ¸ nh hng cho chng trình dch ASM ̈ Cách x lý các lnh mnemonic trong chng trình ̈ nh ngha các ký t, đt trc các ô nh, ¸ Không sinh ra code lnh executable (ngoi tr mt s directive DB và DW), bao gm các nhóm: ̈ Segment control ̈ Symbol definition ̈ Memory Initialization ̈ Reserving Memory ̈ Program linkage ̈ Address control ̈ Other MCS-51 & Assembly language 14 Segment control ¸ Generic Segments ̈ Có tên và mt lp các thuc tính đi kèm ̈ Các Generic Segment có cùng tên  các object file khác nhau s đc ghép li thành mt segment khi linhker ̈ Các t khóa: SEGMENT, RSEG ¸ Absolute Segments ̈ Dùng đ đnh ngha các vùng nh xác đnh ̈ Các t khóa: CSEG, BSEG, DSEG, ISEG, XSEG MCS-51 & Assembly language 15 SEGMENT segment SEGMENT class reloctype alloctype segment tên ca segment SEGMENT t khóa class ch ra không gian các lp b nh (code, data, idata, xdata ) reloctype xác đnh hot đng relocation cho linker allotype xác đnh hot đng allocation cho linker MCS-51 & Assembly language 16 RSEG RSEG segment RSEG t khóa segment tên ca generic segment đã đc đnh ngha trc đóbi t khóa SEGMENT RSEG c dùng đ La chn mt generic segment đã đc đnh ngha bi SEGMENT Ví d: MYPROG SEGMENT CODE ; declare a segment RSEG MYPROG ; select the segment MOV A, #0 MOV P0, A MCS-51 & Assembly language 17 BSEG, CSEG, DSEG, ISEG, XSEG BSEG AT address defines an absolute BIT segment. CSEG AT address defines an absolute CODE segment. DSEG AT address defines an absolute DATA segment. ISEG AT address defines an absolute IDATA segment. XSEG AT address defines an absolute XDATA segment. Thông báo vi chng trình linker mt segment ti mt đa ch đnh trc MCS-51 & Assembly language 18 inh ngha các ký hiu (Symbol directive) ¸ Cho phép s dng các ký hiu đ biu din thanh ghi. đa ch, các s ¸ Các ký hiu đã đc đnh ngha s không đc đnh ngha li, ngoi tr lnh SET MCS-51 & Assembly language 19 EQU, SET symbol EQU expression symbol EQU register symbol SET expression symbol SET register symbol tên ca ký hiu expression biu thc s, có th cha các ký hiu nhng phi đc khai báo trc đó register thanh ghi: A, R0-R7 symbol đc đnh ngha vi EQU s không đc đnh ngha li Không th s dng EQU đ đnh ngha li các symbol đã đnh ngha bi SET và ngc li MCS-51 & Assembly language 20 Ví d: LIMIT EQU 1200 VALUE EQU LIMIT – 200 + 'A' SERIAL EQU SBUF ACCU EQU A COUNT EQU R5 VALUE SET 100 VALUE SET VALUE / 2 COUNTER SET R1 TEMP SET COUNTER TEMP SET VALUE * VALUE [...]... Ví d : ON_FLAG: DBIT 1 ; reserve 1 bit OFF_FLAG: DBIT 1 label GAP: DS DS DS TIME: Liên k t ch ¸ ̈ ¸ MCS-51 & Assembly language ̈ ̈ ng liên k t ch ng trình cho phép Phân chia m t ch ng trình thành các module (file) riêng bi t Các module “trao i” v i nhau thông qua tên và các tham chi u Có 3 ki u ̈ 27 ng trình (Program linkage) S d ng các inh h ̈ (($ + 16) AND 0FFF0H) – $ 20 8 nh h ng PUBLIC a ra danh... s d ng Ch c m t NAME c s d ng trong m t file MCS-51 & Assembly language 31 Address control ¸ ¸ nh h ng cho ch ng trình d ch bi t a ch n i s t code l nh ho c a ch c a các thanh ghi s d ng Có 2 ki u ̈ ̈ ORG thay i n i dung c a b m a ch n m t giá tr m i Các statements ti p theo sau s c t b t ut a ch m i ó USING ch ra bank thanh ghi nào c s d ng cho R0 n R7 MCS-51 & Assembly language 32 ORG ORG expression... ki m tra c ng P1.5, n u b ng 0 thì thi t l p P1.6 = 1 b ng 1 thì thi t l p P1.6 = 0 Quá trình ki m tra cl p l i cho n khi t t ngu n MCS-51 & Assembly language 37 Ví d 2 ¸ Vi t ch ng trình assembler phát ra xung vuông có chu k 20ms v i duty cycle 50% t i c ng P1.0 (s d ng timer) Bi t t n s clock c a MCU là 12MHz MCS-51 & Assembly language 38 ... ng s d ng SPICE VSM (Virtrual System Modelling) cho phép mô ph ng ch mixed gi a t ng t và s (bao g m c các h th ng có s d ng các chip vi i u khi n) Giá ph n m m tùy thu c vào tính n ng mà khách hàng l a ch n Tài li u tham kh o có r t ít, ch y u là các file help i kèm MCS-51 & Assembly language 35 MCS-51 & Assembly language 36 Ví d 1 ¸ Vi t ch ̈ ̈ ¸ ng trình assembler ki m tra c ng P1.5, n u b ng 0 thì... character string, or an expression Ví d : REQUEST: TABLE: ZERO: DB DW DW 'PRESS ANY KEY TO CONTINUE', 0 TABLE, TABLE + 10, ZERO 0 MCS-51 & Assembly language 25 Reserving memory ¸ ¸ Khai báo dung l T khóa ̈ ̈ DBIT DS ng vùng b nh s c s d ng khai báo vùng b nh bit khai báo vùng b nh byte MCS-51 & Assembly language 26 DBIT, DS label: DBIT expression label: DS expression is the symbol that is given the address... offset Ví d : ORG 100H ORG RESTART c MCS-51 & Assembly language 33 USING USING expression expression is the register bank number which must be a value between 0 and 3 USING không t o ra b t k m t code l nh thay là s d ng a ch tuy t i c a các thanh ghi i register bank, nó ch n gi n USING 3 PUSH AR2 ; Push register 2 in bank 3 USING 1 PUSH AR2 ; Push register 2 in bank 1 MCS-51 & Assembly language 34 Ph... position of the SFR bit in the range 0 – 7 Ví d : sfr P0 = 0x80; sfr P1 = 0x90; sbit P0_0 = P0^0; sbit P1_1 = 0x90^1; MCS-51 & Assembly language 23 Kh i t o b nh (Memory initialization) ¸ ¸ Kh i t o các giá tr trong b nh code T khóa ̈ ̈ DB DW define byte (8 bits) define word (16 bits) MCS-51 & Assembly language 24 label: DB label: DW label: expression expression , expression expression , expression... BINASC PUBLIC GETTOKEN, GETNUMBER MCS-51 & Assembly language 29 EXTRN EXTRN class (symbol , symbol … ) class is the memory class where the symbol has been defined and may be one of the following: BIT, CODE, DATA, IDATA, XDATA, or NUMBER (to specify atypeless symbol) symbol is an external symbol name Ví d : EXTRN EXTERN CODE (PUT_CRLF), DATA (BUFFER) CODE (BINASC, ASCBIN) MCS-51 & Assembly language 30 NAME... bên ngoài module Symbol ph i c nh ngh a trong module co t khóa PUBLIC EXTRN a ra danh sách các symbol mà module có th s d ng nh ng các symbol này c nh ngh a trong module khác NAME ch ra tên c a mudule MCS-51 & Assembly language 28 PUBLIC PUBLIC symbol , symbol … must be a symbol that was defined somewhere within the source file Forward references to symbol names are permitted All symbol names, with... a SFR bit CODE 00H CODE RESTART + 3 CODE RESTART + 0BH CODE RESTART + 1BH DATA SBUF ; redfinition of SBUF DATA 40H DATA RESULT + 2 DATA 90H ; a SFR symbol IDATA 60H EQU 20H IDATA BUFFER + BUF_LEN – 1 MCS-51 & Assembly language 22 sfr, sbit sfr sbit sfr_symbol = address; sfr_symbol = bit-address; sfr_symbol is the name of the special function register (SFR) symbol to define address is an SFR address . MCS-51 & Assembly language 1 Lp trình Assembly cho MCS-51 MCS-51 & Assembly language 2 Plan ¸ Tp lnh MCS-51 ¸ Ngôn ng Assembly s dng phn. 20 TIME: DS 8 Ví d: MCS-51 & Assembly language 28 Liên kt chng trình (Program linkage) ¸ S dng các đinh hng liên kt chng trình cho phép ̈ Phân chia mt chng trình thành các module. Thông tin v “relocation” phc v cho linhker MCS-51 & Assembly language 6 ¸ Linhker ̈ Chng trình có kh nng tp hp các object file đ to thành mt chng trình duy nht có th “executable” ¸

Ngày đăng: 29/03/2014, 19:20

Tài liệu cùng người dùng

Tài liệu liên quan