Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
171,21 KB
Nội dung
1
1. Giới thiệu
2. Sơ đồ khối và chân
3. Tổ chức bộ nhớ
4. Các thanh ghi chức năng đặc biệt (SFR)
5. Dao động và hoạt động reset
6. Tập lệnh
7. Các mode định địa chỉ (addressing modes)
8. Lậptrình IO
9. Tạo trễ
10.Lập trình Timer/Counter
11.Giao tiếp nối tiếp
12.Lập trình ngắt
13.
13.
L
L
ậ
ậ
p tr
p tr
ì
ì
nh h
nh h
ợ
ợ
p ng
p ng
ữ
ữ
2
EDITOR
PROGRAM
ASSEMBLER
PROGRAM
LINKER
PROGRAM
OH
PROGRAM
Myfile.asm
Myfile.obj
Other obj file
Myfile.hex
Myfile.lst
Myfile.abs
Trình dịch ASM51
Trình liên kết RL51
Trình soạn thảo
Trình dịch sang HEX
HEXTOBIN
PROGRAM
Myfile.bin
Trình dịch sang BIN
3
13-1. Cấu trúc chương trình Assembly
#INCLUDE "8051EQU.INC" ;include predefined constants
ORG 0H ;reset routine ;locate routine at 00H
LJMP MAIN ;jump to MAIN
;place interrupt routines at appropriate memory locations
ORG 03H ;external interrupt 0
RETI ;or LJMP EX0ISR if enabled
ORG 0BH ;timer 0 interrupt
RETI ;or LJMP T0ISR if enabled
ORG 13H ;external interrupt 1
RETI ;or LJMP EX1ISR if enabled
ORG 1BH ;timer 1 interrupt
RETI ;or LJMP T1ISR if enabled
4
ORG 23H ;serial port interrupt
RETI ;or LJMP SPISR if enabled
ORG 30H ;locate beginning of rest of program
INITIALIZE: ;set up control registers
MOV TCON,#xxH
MOV TMOD,#xxH
MOV PSW,#xxH
MOV IE,#xxH
RET
DELAY:
RET
ISR:
RETI
5
Other Subroutines:
RET
Other ISR Subroutines:
RET
MAIN:
ACALL INITIALIZE
SJMP $
END
6
13-2. Khuôn dạng chương trìnhhợp ngữ
Các chương trìnhhợp ngữ chứa:
•Lệnh (instruction)
•Chỉ dẫn (directive)
• Điều khiển (control)
• Chú thích (comment)
[Label:] mnemonic [operand][,operand][…] [;comment]
7
13-2-1. Trường nhãn
• Nhãn biểu thị địa chỉ của lệnh (hoặc dữ liệu) theo sau
• Phân biệt với ký hiệu, nhãn là 1 loại ký hiệu & được nhận
dạng bằng dấu :
• Các ký hiệu: EQU, SEGMENT, BIT, DATA
• VD:
PARAMETER EQU 500
PORTA EQU 0101H
START: MOV A,#0FFH
8
13-2-2. Trường mã gợi nhớ
•Mã gợi nhớ của lệnh: ADD, MOV, DIV, INC,…
•Mã gợi nhớ của chỉ dẫn: ORG, EQU, DB,…
9
13-2-3. Trường toán hạng
• Theo sau trường mã gợi nhớ
•Chứa địa chỉ hoặc dữ liệu mà lệnh sử dụng
[Label:] mnemonic [operand][,operand][…] [;comment]
10
13-2-4. Trường chú thích
• Các ghi chú để làm rõ chương trình
•Bắt đầu bằng dấu ;
[Label:] mnemonic [operand][,operand][…] [;comment]
[...]... cung cấp dữ liệu trong trường toán hạng • Dữ liệu tức thời được đứng trước bởi dấu # CONST EQU 100 MOV A,#0DAH ORL 50H, #CONST 13 13-2-8 Địa chỉ dữ liệu • Các lệnh sử dụng kiểu định địa chỉ trực tiếp và yêu cầu 1 địa chỉ của bộ nhớ dữ liệu trên chip (00H-7FH) hoặc địa chỉ của 1 thanh ghi chức năng đặc biệt SFR (80H-0FFH) trong trường toán hạng • MOV • MOV A, SBUF A, 5CH ;≡ MOV A, 99H 14 13- 2-9 Địa chỉ... GOOD_BYTE: (start subroutine) … RET 28 13- 4-5 Lựa chọn segment RSEG (relocatable segment): CSEG [AT address] DSEG [AT address] ISEG [AT address] BSEG [AT address] XSEG [AT address] RSEG segment_name 29 13- 5 Các điều khiển của trình dịch • Các đk ảnh hưởng đến cách trình bày tập tin liệt kê, không ảnh hưởng đến bản thân chương trình • Vị trí của chúng: – Đưa vào dòng lệnh khi hợp dịch – Đặt trong tập tin nguồn... $DEBUG $TITLE() … 30 13- 6 Trình liên kết RL51 Lập trình theo module - Modular Programming: • Phát triển các module độc lập • Các module thuộc loại tái định vị obj EDITOR PROGRAM obj obj obj Myfile.asm ASSEMBLER PROGRAM Myfile.lst RL51 - Liên kết và định vị Other obj file Myfile.obj LINKER PROGRAM Myfile.abs OH PROGRAM Myfile.hex myfile.abs & myfile.m51 31 Bài toán Phân tích ví dụ tổng hợp trang 161 171... NE, LT, LE, GT, GE 7 Ưu tiên của các toán tử 18 13- 4 Các chỉ dẫn • Điều khiển trạng thái của trình dịch hợp ngữ (ORG, END, USING) • Định nghĩa ký hiệu (SEGMENT, EQU, SET, DATA, IDATA, XDATA, BIT, CODE) • Khởi động/Dành trước vùng nhớ (DS, DBIT, DB, DW) • Liên kết chương trình (PUBLIC, EXTRN, NAME) • Lựa chọn segment (RSEG, CSEG, DSEG, ISEG, BSEG, XSEG) 19 13- 4-1 Chỉ dẫn điều khiển trạng thái ORG (Set.. .13- 2-5 Các ký hiệu đặc biệt • A, R0 R7, DPTR, PC, C, AB, $ VD: • JNB TI,$ ≡ HERE: JNB TI, HERE tránh dùng 1 nhãn 11 13- 2-6 Địa chỉ gián tiếp • Trường toán hạng có thể xác định 1 thanh ghi mà nội dung thanh ghi là địa chỉ của dữ liệu • @ chỉ ra một địa chỉ gián tiếp và thanh ghi theo sau có thể là R0 hoặc R1, DPTR hay PC tùy lệnh cụ thể ADD MOVC A,@R0 A,@A+PC (1) (2) 12 13- 2-7 Dữ liệu tức thời... đk), các lệnh nhảy và gọi tuyệt đối (AJMP, ACALL), các lệnh nhảy và gọi dài (LJMP, LCALL) 16 13- 2-11 Các lệnh nhảy và gọi tổng quát LOC OBJ 1234 1234 04 1235 80FD LINE SOURCE 1 ORG 1234H 2 START: INC A 3 JMP START 12FC 12FC 4134 12FE 0 2130 1 130 1 04 4 5 6 7 8 FINISH: ORG JMP JMP INC END START+200 START FINISH A 17 13- 3 Đánh giá biểu thức trong thời gian dịch 1 Cơ số: binary - B, octal - O or Q, decimal... đổi nội dung bộ đếm vị trí để thiết lập 1 gốc mới của chương trình cho các phát biểu theo sau • ORG 100H ;Bộ đếm vị trí = 100H • ORG ($+1000H) END Phát biểu cuối cùng của chương trình nguồn USING expression thông báo cho ASM51 về dãy thanh ghi tích cực hiện hành, AR0-7 thay cho R0-7 • USING 3 • PUSH AR7 ;dịch thành PUSH 1FH • USING 1 • PUSH AR7 ;dịch thành PUSH 0FH 20 13- 4-2 Chỉ dẫn định nghĩa ký hiệu... SQUARES: MESSAGE: CSEG AT 0100H DB 0, 1, 4, 9, 16, 25 DB ‘Login:’,0 ; binh phuong ; chuoi ky tu kt boi 0 Khi hợp dịch sẽ tạo ra KQ gán cho bộ nhớ chương trình ngoài ở dạng HEX như sau: ĐC 100 101 102 103 104 105 106 107 108 109 10A 10B 10C ND 00 01 04 09 10 19 4C 6F 67 69 6E 3A 00 27 13- 4-4 Liên kết chương trình PUBLIC EXTRN NAME symbol [,symbol][…] segment_type (symbol [,symbol][…]…) module_name MAIN.SRC... MOV EQU 05H BIT 05H FLAG1 FLAG2 FLAG1,#0 FLAG2,#0 error ”data segment address expected” 23 13- 4-3 Khởi động/dành trước vùng nhớ DS (define storage): khuôn dạng: [Label:] DS expression • Dành trước vùng nhớ tính bằng byte, chỉ dẫn này dùng cho bất kỳ loại segment nào, trừ BIT DSEG AT 30H ;đặt trong segment dữ liệu LENGTH EQU 40 ; BUFFER DS LENGTH ;dành trước 40 bytes Xóa vùng đệm trên: MOV R7, #LENGTH... 13- 2-9 Địa chỉ bit • Đặc trưng mạnh của 8051 là khả năng truy xuất bit riêng rẽ mà không cần lập mặt nạ trên các byte • 3 cách xác định địa chỉ bit trong một lệnh: 1 Địa chỉ bit đã biết 2 Dùng toán tử dot (.) giữa địa chỉ byte và vị trí bit 3 Dùng ký hiệu tiền định nghĩa VD: SETB 0E7H SETB ACC.7 JNB TI,$ JNB 99H,$ 15 13- 2-10 Địa chỉ của lệnh • Một địa chỉ của lệnh được dùng trong trường toán hạng cho các . Subroutines:
RET
MAIN:
ACALL INITIALIZE
SJMP $
END
6
13- 2. Khuôn dạng chương trình hợp ngữ
Các chương trình hợp ngữ chứa:
•Lệnh (instruction)
•Chỉ dẫn (directive)
•. file
Myfile.hex
Myfile.lst
Myfile.abs
Trình dịch ASM51
Trình liên kết RL51
Trình soạn thảo
Trình dịch sang HEX
HEXTOBIN
PROGRAM
Myfile.bin
Trình dịch sang BIN
3
13- 1. Cấu trúc chương trình