logo

Các thanh ghi chức năng đặc biệt_chương 4

tràn số học. Khi các số có dấu được cộng hoặc trừ, phần mềm có thể kiểm tra bit tràn OV để xác định KQ có nằm trong tầm hay không Với các số có dấu, KQ nhỏ hơn -128 hoặc lớn hơn +127 sẽ set cờ OV = 1. Với các số không dấu, OV=1 khi KQ vượt quá 255
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ỉ 8. Lập trì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.Lập trình hợp ngữ 1 SFRs 2 Xêm thêm Hình 2.6 trang 26 4-1. Thanh ghi PSW • Thanh ghi PSW (bit addressable) C AC F0 RS1 RS0 OV -- P Cờ nhớ PSW.7 C Cờ nhớ phụ PSW.6 AC Available to user for general purpose PSW.5 -- Bit chọn dãy thanh ghi 1 PSW.4 RS1 Bit chọn dãy thanh ghi 0 PSW.3 RS0 Cờ tràn PSW.2 OV Dự trữ - User define bit PSW.1 -- Cờ chẵn lẻ PSW.0 P RS1 RS0 Register Bank Byte Address of R0-R7 0 0 0 00H-07H 0 1 1 08H-0FH 1 0 2 10H-17H 1 1 3 18H-1FH D7 D6 D5 D4 D3 D2 D1 D0 Địa chỉ bit 3 • C (carry flag) - Cờ nhớ – Được set bằng 1 nếu có số nhớ từ phép cộng bit 7 hay có số mượn mang đến bit 7 • MOV A,#FFH • ADD A,#1 – Còn được dùng như 1 thanh ghi 1 bit đối với các lệnh logic thao tác trên các bit • ANL C,25H • AC (auxiliary carry) – Cờ nhớ phụ – Được set bằng 1 nếu có số nhớ từ bit 3 sang bit 4 • RS1, RS0 - Các bit chọn dãy (bank) thanh ghi – Dùng để xác định dãy thanh ghi tích cực – Chúng được xóa khi reset SETB RS1 ≡ SETB 0D4H SETB RS0 MOV A,R7 4 • OV (overflow flag) - Cờ tràn – Set bằng 1 sau phép toán cộng hoặc trừ nếu có xuất hiện 1 tràn số học. Khi các số có dấu được cộng hoặc trừ, phần mềm có thể kiểm tra bit tràn OV để xác định KQ có nằm trong tầm hay không – Với các số có dấu, KQ nhỏ hơn -128 hoặc lớn hơn +127 sẽ set cờ OV = 1. Với các số không dấu, OV=1 khi KQ vượt quá 255 – VD: • 0F thập phân 15 • +7F +127 • ____ _____ • 8E 142 • 8EH biễu diễn -114 không đúng với KQ mong muốn là 142 nên OV = 1 5 • P (parity) - Cờ chẵn lẻ – Kiểm tra chẵn lẻ cho thanh chứa A – Số các bit 1 trong thanh chứa A cộng với bit P luôn luôn chẵn • MOV A,#10101101B • P=1 – Bit chẵn lẻ được sử dụng kết hợp với các chương trình xuất/nhập nối tiếp trước khi truyền dữ liệu hoặc để kiểm tra chẵn lẻ sau khi nhận dữ liệu VD1: MOV A,#88H VD2: MOV A,#9CH ADD A,#93H ADD A,#64H VD3: MOV A,#38H VD4: MOV A,#FFH ADD A,#2FH ADD A,#1 6 VD: VD: MOV A,#88H MOV A,#9CH ADD A,#93H ADD A,#64H 88 10001000 9C 10011100 +93 +10010011 +64 +01100100 ---- -------------- ---- -------------- 11B 00011011 100 00000000 C=1 AC=0 P=0 C=1 AC=1 P=0 VD: VD: MOV A,#38H MOV A,#FFH ADD A,#2FH ADD A,#1 38 00111000 +2F +00101111 A=00H; C=1; AC=1; ---- -------------- 67 01100111 C=0 AC=1 P=1 7 Những lệnh ảnh hưởng đến các bit cờ X có thể là 1 hoặc 0 8 4-2. Thanh ghi B • B được dùng với thanh chứa A trong các phép toán nhân, chia • MUL A,B ; nhân 2 số 8-bit không dấu chứa trong A & B, KQ 16-bit chứa vào cặp thanh ghi B:A (B chứa byte cao) • DIV AB ; chia A bởi B, thương số cất trong A, dư cất trong B • B còn được xử lý như thanh ghi nháp • B được định địa chỉ bit F7 F6 F5 F4 F3 F2 F1 F0 9 4-3. Con trỏ ngăn xếp (SP) Địa chỉ byte 81 • SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack • Các lệnh liên quan đến stack bao gồm lệnh cất dữ liệu vào stack (làm tăng SP trước khi ghi dữ liệu) và lệnh lấy dữ liệu khỏi stack (giảm SP) • Muốn stack bắt đầu ở 60H: – MOV SP,#5FH – Thì vùng stack sẽ là 32 byte trên 8051 vì địa chỉ cao nhất của RAM nội là 7FH – 5FH được dùng vì SP tăng lên 60H trước khi thao tác cất vào stack đầu tiên được thực thi 10 • Nếu không khởi động SP, nội dung mặc định là 07H (để duy trì sự tương thích với 8048) thao tác cất vào stack đầu tiên sẽ lưu dữ liệu vào vị trí nhớ có địa chỉ 08H • Trong trường hợp này, nếu phần mềm ứng dụng không khởi động SP, dãy thanh ghi 1 (và có lẽ 2, 3) sẽ không còn hợp lệ vì chúng được sử dụng làm stack • PUSH & POP cất dữ liệu vào stack và lấy dữ liệu từ stack • ACALL, LCALL, RET, RETI cất và phục hồi bộ đếm chương trình PC 11 VD: MOV R6,#25H MOV R1,#12H MOV R4,#0F3H PUSH 6 PUSH 1 PUSH 4 0BH 0BH 0BH 0BH 0AH 0AH 0AH 0AH F3 09H 09H 09H 12 09H 12 08H 08H 25 08H 25 08H 25 Start SP=07H SP=08H SP=09H SP=0AH 12 4-4. Con trỏ dữ liệu (DPTR) • DPTR được dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài • VD: MOV A,#55H MOV DPTR,#1000H MOVX @DPTR,A 83H DPH 82H DPL 13 4-5. Các thanh ghi I/O port: P0, P1, P2, P3 • Tất cả port đều được định địa chỉ bit • VD: (điều khiển motor nối bit P1.0) SETB P1.0 CLR P1.0 • Đoạn chương trình kiểm tra trạng thái BUSY của thiết bị: WAIT: JB P1.5, WAIT 14 4-6. Các thanh ghi định thời • 8051 có 2 bộ đếm/định thời 16-bit để định các khoảng thời gian hoặc đếm các sự kiện • Hoạt động của bộ định thời được thiết lập bởi: – TMOD (Timer Mode Register) – TCON (Timer Control Register) 15 4-7. Các thanh ghi của port nối tiếp • 8051 có 1 port nối tiếp để truyền thông với các thiết bị nối tiếp • SBUF (Serial Data Buffer): lưu trữ dữ liệu truyền và nhận • SCON (Serial Port Control Register): chọn chế độ hoạt động 16 4-8. Các thanh ghi ngắt • IE (interrupt enable) • IP (interrupt priority) 17
DMCA.com Protection Status Copyright by webtailieu.net