Tài liệu Chương 2: Tập lệnh Giáo trình vi xử lý ppt

48 684 2
Tài liệu Chương 2: Tập lệnh Giáo trình vi xử lý ppt

Đ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

Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý Chương LẬP TRÌNH HỌ VI ĐIỀU KHIỂN 8051 2.1 TỔ CHỨC BỘ NHỚ 8051/8031 có nhớ theo cấu trúc Harvard: có vùng nhớ riêng biệt cho chương trình liệu Như nói trên, chương trình liệu bên trong; dù chúng mở rộng thành phần lên đến tối đa 64 Kbytes nhớ chương trình 64 Kbytes nhớ liệu Bộ nhớ bên bao gồm ROM RAM chip, RAM chip bao gồm nhiều phần : phần lưu trữ đa dụng, phần lưu trữ địa hóa bit, bank ghi ghi chức đặc biệt Hai đặc tính cần lưu ý : Các ghi port xuất nhập xếp nhớ truy xuất trực tiếp giống địa nhớ khác Ngăn xếp bên RAM nội nhỏ so với RAM vi xử lý khác Hình 2.1: Sơ đồ chân 8051 canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý Chi tiết nhớ RAM chip: Như ta thấy hình 2.2 , RAM bên 8051/8031 phân chia bank ghi (00H–1FH), RAM địa hóa bit (20H–2FH), RAM đa dụng (30H–7FH) ghi chức đặc biệt (80H–FFH) 2.1.1 RAM đa dụng Mặc dù hình 2.2 cho thấy 80 byte RAM đa dụng chiếm địa từ 30H–7FH, 32 byte từ 00H đến 1FH dùng với mục đích tương tự (mặc dù địa có mục đích khác) Hình 2.2: Tóm tắt nhớ liệu chip canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý Mọi địa vùng RAM đa dụng truy xuất tự dùng cách đánh địa trực tiếp gián tiếp Ví dụ, để đọc nội dung địa 5FH RAM nội vào ghi tích lũy, lệnh sau dùng : MOV A, 5FH Lệnh di chuyển byte liệu dùng cách đánh địa trực tiếp để xác định “địa nguồn” (5FH) Đích nhận liệu ngầm xác định mã lệnh ghi tích lũy A RAM bên truy xuất dùng cách đánh địa gián tiếp qua R0 hay R1 Ví dụ, hai lệnh sau thi hành nhiệm vụ lệnh đơn : MOV R0, #5FH MOV A, @R0 Lệnh đầu dùng địa tức thời để di chuyển giá trị 5FH vào ghi R0, lệnh thứ hai dùng địa trực tiếp để di chuyển liệu “được trỏ R0” vào ghi tích lũy 2.1.2 RAM địa hóa bit 8051/8031 chứa 210 bit địa hóa, 128 bit địa byte 20H đến 2FH, phần lại ghi chức đặc biệt Ý tưởng truy xuất bit riêng rẽ phần mềm đặc tính tiện lợi vi điều khiển nói chung Các bit đặt, xóa, AND, OR, với lệnh đơn Đa số vi xử lý đòi hỏi chuỗi lệnh đọc-sửa-ghi để đạt hiệu tương tự Hơn nữa, port I/O địa hóa bit làm đơn giản phần mềm xuất nhập bit Có 128 bit địa hóa đa dụng byte 20H đến 2FH Các địa truy xuất byte bit phụ thuộc vào lệnh dùng Ví dụ, để đặt bit 67H, ta dùng lệnh sau : SETB 67H Chú ý “địa bit 67H” bit có trọng số lớn (MSB) “địa byte 2CH” Lệnh không tác động đến bit khác địa Các vi xử lý phải thi hành nhiệm vụ tương tự sau : MOV A, 2CH ; đọc byte ORL A, #10000000B ; set MSB MOV 2CH,A ; ghi lại byte 2.1.3 Các bank ghi : canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý 32 byte thấp nhớ nội dành cho bank ghi Bộ lệnh 8051/8031 hỗ trợ ghi (R0 đến R7) theo mặc định (sau reset hệ thống) ghi địa 00H–07H Lệnh sau đọc nội dung địa 05H vào ghi tích lũy : MOV A, R5 Đây lệnh byte dùng địa ghi Tất nhiên, thao tác tương tự thi hành lệnh byte dùng địa trực tiếp nằm byte thứ hai : MOV A, 05H Các lệnh dùng ghi R0 đến R7 ngắn nhanh lệnh tương ứng dùng địa trực tiếp Các giá trị liệu dùng thường xuyên nên dùng ghi Bank ghi tích cực chuyển đổi cách thay đổi bit chọn bank ghi từ trạng thái chương trình (PSW) Giả sử bank ghi tích cực, lệnh sau ghi nội dung ghi tích lũy vào địa 18H : MOV R0, A Ý tưởng dùng “các bank ghi” cho phép “chuyển hướng” chương trình nhanh hiệu (từng phần riêng rẽ phần mềm có ghi riêng không phụ thuộc vào phần khác) 2.2 CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT Một đồ vùng nhớ chip gọi không gian ghi chức đặc biệt (SFR) trình bày bảng Lưu ý khơng phải tất địa sử dụng, địa khơng sử dụng không cung cấp chip Các hành động đọc đến địa nói chung trả liệu ngẫu nhiên, hành động viết có hiệu ứng khơng xác định Các phần mềm người dùng không nên viết mức đến vị trí khơng liệt kê này, chúng dùng sản phẩm tương lai thêm vào đặc trưng Trong trường hợp này, giá trị reset khơng tích cực bit Các ghi nội 8051/8031 truy xuất ngầm định lệnh Ví dụ lệnh “INC A” tăng nội dung ghi tích lũy A lên Tác động ngầm định mã lệnh canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý Các ghi 8051/8031 định dạng phần RAM chip Vì ghi có địa (ngoại trừ ghi đếm chương trình ghi lệnh ghi bị tác động trực tiếp, nên khơng lợi lộc đặt chúng vào RAM chip) Đó lý để 8051/8031 có nhiều ghi Cũng R0 đến R7, có 21 ghi chức đặc biệt (SFR : Special Function Register) vùng RAM nội, từ địa 80H đến FFH Chú ý hầu hết 128 địa từ 80H đến FFH không định nghĩa Chỉ có 21 địa SFR định nghĩa Ngoại trừ tích lũy (A) truy xuất ngầm nói, đa số SFR truy xuất dùng địa trực tiếp Chú ý vài SFR địa hóa bit byte Người thiết kế phải thận trọng truy xuất bit byte Ví dụ lệnh sau : SETB 0E0H set bit ghi tích lũy, bit khác khơng đổi Ta thấy E0H đồng thời địa byte ghi tích lũy địa bit bit có trọng số nhỏ ghi tích lũy Vì lệnh SETB tác động bit, nên có địa bit có hiệu 2.2.1 Thanh ghi trạng thái chương trình : Từ trạng thái chương trình (PSW : Program Status Word) địa D0H chứa bit trạng thái bảng 2.1 tóm tắt sau : Bit PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 Ký hiệu CY AC F0 RS1 RS0 PSW.2 OV PSW.1 – PSW.0 P * Cờ nhớ Địa D7H D6H D5H D4H D3H D2H D1H D0H Ý nghĩa Cờ nhớ Cờ nhớ phụ Cờ Bit chọn bank ghi Bit chọn bank ghi 00 = bank : địa 00H–07H 01 = bank : địa 08H–0FH 10 = bank : địa 10H–17H 11 = bank : địa 18H–1FH Cờ tràn Dự trữ Cờ parity chẵn Cờ nhớ (CY) có cơng dụng kép Thơng thường dùng cho lệnh tốn học : set có số nhớ sinh phép cộng có số mượn phép trừ Ví dụ, ghi tích lũy chứa FFH, lệnh ADD A, #1 trả ghi tích lũy kết 00H set cờ nhớ PSW canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý Cờ nhớ xem ghi bit cho lệnh luận lý thi hành bit Ví dụ, lệnh sau AND bit 25H với cờ nhớ đặt kết trở vào cờ nhớ : ANL C, 25H * Cờ nhớ phụ Khi cộng số BCD, cờ nhớ phụ (AC) set kết bit thấp khoảng 0AH đến 0FH Nếu giá trị cộng số BCD, sau lệnh cộng cần có DA A (hiệu chỉnh thập phân ghi tích lũy) để mang kết lớn vào nibble cao * Cờ Cờ (F0) bit cờ đa dụng dành cho ứng dụng người dùng * Các bit chọn bank ghi Các bit chọn bank ghi (RS0 RS1) xác định bank ghi tích cực Chúng xóa sau reset hệ thống thay đổi phần mềm cần Ví dụ, ba lệnh sau cho phép bank ghi di chuyển nội dung ghi R7 (địa byte 1FH) đến ghi tích lũy : SETB RS1 SETB RS0 MOV A, R7 Khi chương trình hợp dịch, đại bit thay cho ký hiệu “RS1” “RS0” Vậy, lệnh SETB RS1 giống lệnh SETB 0D4H * Cờ tràn Cờ tràn (OV) set sau lệnh cộng trừ có phép tốn bị tràn Khi số có dấu cơng trừ với nhau, phần mềm kiểm tra bit để xác định xem kết có nằm tầm xác định khơng Khi số khơng dấu cộng, bit OV bỏ qua Các kết lớn +127 nhỏ -128 set bit OV Kết số có dấu 8EH xem -116, khơng phải kết (142), vậy, bit OV set 2.2.2 Thanh ghi B Thanh ghi B địa F0H dùng với ghi tích lũy A cho phép toán nhân chia Lệnh MUL AB nhân giá trị không dấu bit A B trả kết 16 bit A (byte thấp) B (byte cao) Lệnh DIV AB chia A cho B trả kết nguyên A phần dư B Thanh ghi B xem ghi đệm đa dụng Nó địa hóa bit địa chi bit F0H đến F7H canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý 2.2.3 Con trỏ ngăn xếp Stack pointer Con trỏ ngăn xếp (SP) ghi bit địa 81H Nó chứa địa byte liệu hành đỉnh ngăn xếp Các lệnh ngăn xếp bao gồm thao tác cất liệu vào ngăn xếp lấy liệu khỏi ngăn xếp Lệnh cất liệu vào ngăn xếp làm tăng SP trước ghi liệu, lệnh lấy liệu khỏi ngăn xếp đọc liệu giảm SP Ngăn xếp 8051/8031 giữ RAM nội giới hạn địa truy xuất địa gián tiếp Chúng 128 byte đầu 8051/8031 Để khởi động lại SP với ngăn xếp bắt đầu 60H,các lệnh sau dùng: MOV SP, #5FH Trên 8051/8031 ngăn xếp bị giới hạn 32 byte địa cao RAM chip 7FH Sở dĩ dùng giá trị 5FH SP tăng lên 60H trước cất byte liệu Người thiết kế chọn khơng phải khởi động lại trỏ ngăn xếp mà để lấy giá trị mặc định reset hệ thống Giá trị mặc định 07H kết ngăn để cất liệu có địa 08H Nếu phần mềm ứng dụng không khởi động lại SP, bank ghi (có thể 3) khơng dùng vùng RAM dùng làm ngăn xếp Ngăn xếp truy xuất trực tiếp lệnh PUSH POP để lưu trữ tạm thời lấy lại liệu, truy xuất ngầm lệnh gọi chương trình (ACALL, LCALL) lệnh trở (RET, RETI) để cất lấy lại đếm chương trình 2.2.4 Con trỏ liệu Data pointer Con trỏ liệu (DPTR) dùng để truy xuất nhớ ghi 16 bit địa 82H (DPL : byte thấp) 83H (DPH : byte cao) Ba lệnh sau ghi 55H vào RAM địa 1000H : MOV A, #55H MOV DPTR, #1000H MOVX @DPTR, A Lệnh dùng địa tức thời để tải liệu 55H vào ghi tích lũy Lệnh thứ hai dùng địa tức thời, lần để tải liệu 16 bit 1000H vào trỏ liệu Lệnh thứ ba dùng địa gián tiếp để di chuyển liệu A (55H) đến RAM địa chứa DPTR (1000H) 2.2.5 Các ghi port xuất nhập Các port 8051/8031 bao gồm Port địa 80H, Port địa 90H, Port địa A0H Port địa B0H Tất port địa hóa bit Điều canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý cung cấp khả giao tiếp thuận lợi Ví dụ motor nối qua cuộn dây có transistor lái đến bit Port 1, bật tắt lệnh đơn : SETB P1.7 ; bật motor CLR P1.7 ; tắt motor Các lệnh dùng dấu chấm để xác định bit byte Trình hợp dịch thi hành chuyển đổi cần thiết, hai lệnh sau : CLR P1.7 CLR 97H Trong ví dụ khác, xem xét giao tiếp đến thiết bị với bit trạng thái gọi BUSY, set thiết bị bận xóa thiết bị sẵn sàng Nếu BUSY nối tới P1.5, vòng lặp sau dùng để chờ thiết bị trở lại trạng thái sẵn sàng : WAIT : JB P1.5, WAIT Lệnh có nghĩa “nếu bit P1.5 set nhảy tới nhãn WAIT” Nói cách khác “nhảy trở lại kiểm tra lần nữa” 2.2.6 Các ghi timer 8051/8031 chứa hai định thời / đếm 16 bit dùng cho việc định thời đếm kiện Timer địa 8AH (TL0 : byte thấp) 8CH (TH0 : byte cao) Timer địa 8BH (TL1 : byte thấp) 8DH (TH1 : byte cao) Việc vận hành timer set ghi Timer Mode (TMOD) địa 89H ghi điều khiển timer (TCON) địa 88H Chỉ có TCON địa hóa bit 2.2.7 Các ghi port nối tiếp 8051/8031 chứa port nối tiếp chip dành cho việc trao đổi thông tin với thiết bị nối tiếp máy tính, modem cho việc giao tiếp với IC khác có giao tiếp nối tiếp (các chuyển đổi A/D, ghi dịch ) Một ghi gọi đệm liệu nối tiếp (SBUF) địa 99H giữ hai liệu truyền nhận Khi truyền liệu ghi lên SBUF, nhận liệu đọc SBUF Các mode vận hành khác lập trình qua ghi điều khiển port nối tiếp (SCON) (được địa hóa bit) địa 98H 2.2.8 Các ghi ngắt 8051/8031 có cấu trúc nguồn ngắt, mức ưu tiên Các ngắt bị cấm sau reset hệ thống cho phép việc ghi ghi cho phép ngắt (IE) địa A8H Cả hai ghi địa hóa bit canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 Giáo trình vi xử lý 2.2.9 Thanh ghi điều khiển công suất nguồn Thanh ghi điều khiển công suất (PCON) địa 87H chứa nhiều bit điều khiển Chúng tóm tắt bảng 2.2 sau : 2.2.10 Bảo vệ nhớ Các bit khố nhớ chương trình Vi điều khiển AT89C51 có bit khố bỏ khơng lập trình (U) lập trình (P) để nhận đặc trưng thêm vào liệt kê bảng 2.3.dưới (với LB1, LB2, LB3 bit khóa tương ứng) Chế độ LB1 LB2 LB3 Kiểu bảo vệ U U U Khơng khố chương trình P U U Các lệnh MOVC thi hành từ nhớ chương trình ngồi bị cấm lấy byte mã từ nhớ nội, /EA lấy mẫu chốt lại reset nữa, việc lập trình nhớ Flash bị cấm P P U Như chế độ việc kiểm tra bị cấm P P P Như chế độ việc thi hành bị cấm Khi bit khố lập trình, mức logic chân EA lấy mẫu chốt lại reset Nếu thiết bị bật nguồn mà khơng có reset, việc chốt khởi tạo với giá trị ngẫu nhiên reset Giá trị chốt EA phải với mức logic chân thiết bị làm việc cách xác canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 10 Giáo trình vi xử lý 2.2.11 Bộ nhớ ngồi Các vi điều khiển cần có khả mở rộng tài chip MSC-51 có khả cho ta mở rộng nhớ chương trình đến 64K không gian nhơ liệu 64K ROM RAM thêm vào cần Các IC giao tiếp ngoại vi thêm vào để mở rộng khả xuất nhập chúng trở thành phần khơng gian nhớ liệu ngồi cách sử dụng cách định địa kiểu I/O ánh xạ nhớ Khi nhớ sử dụng port không làm nhiệm vụ port xuất nhập mà port trở thành port địa (A0- A7) bus liệu (D0 – D7) đa hợp Ngõ ALE chốt byte thấp địa thời điểm bắt đầu chu kỳ nhớ Port thường làm byte cao bus địa Một ý tưởng tổng quát trình bày hình 2.3 Hình 2.3: Đa hợp Bus địa (byte thấp) bus liệu đa hợp không đa hợp Săp xếp không gian đa hợp sử dụng 16 đường địa đường liệu tổng cộng 24 đường Sắp xếp đa hợp đường bus liệu byte thấp bus địa chỉ, ta f cần 16 đường Săp xếp đa hợp có hoạt động sau: ½ chu kỳ đầu chu kỳ nhớ, byte thấp địa cung cấp port chốt nhờ tín hiệu ALE Mạch chốt 74HC373 giữ cho byte thấp địa ổn định chu kỳ nhớ Trong ½ chu kỳ nhớ port sử dụng làm bus liệu liệu đọc hay ghi Truy xuất nhớ chương trình ngồi Bộ nhớ chương trình ngồi nhớ đọc cho phép tín hiệu /PSEN Khi có EPROM ngồi sử dụng hai port port khơng cịn port xuất nhập Kết nối phân cứng với nhớ ngồi EPROM trình bày hình 2.4 canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 34 Giáo trình vi xử lý 0100(0101/0110/0111) xxxx ;hoạt động Counter1 chế độ 0(1/2/3) x 1000(1001/1010/1011) xxxx ;hoạt động INT1, Timer1, chế độ 0(1/2/3) x 1100(1101/1110/1111) xxxx ;hoạt động INT1, Counter1, chế độ 0(1/2/3) Thanh ghi TCON có địa byte 88H TF1 TR1 Counter1/Timer1 TF0 TR0 IE1 IT1 IE0 IT0 Counter0/Timer0 TF1 Cờ báo tràn TF1/TF0 =1 xung đến ghi TH1/TH0, TL1/TL0 từ 0000H đến FFFFH chế độ1(16 bit) ghi TL1/TL0 đếm từ 00H đến FFH chế độ2 (8bit) TR1 TR0 bắt đầu cho Timer/Counter hoạt động hay dừng 2.4.2 Chế độ nguồn xung clock định thời Từng định thời đề cập đến mục Do ta có định thời chip 8051, TH0, TH1 cờ tràn TF0, TF1 định thời 2.4.2.1 Chế độ định thời 16 bit (chế độ 1) Xung clock đặt vào ghi định thời cao thấp kết hợp (TLx/THx) Khi có xung clock đến, định thời đếm lên: 0000H, 0001H, 0002H… tràn xuất có chuyển số đếm từ FFFFH xuống 0000H, kiện Set cờ tràn định thời tiếp tục đếm cờ tràn bit TFx, ghi điều khiển định thời TCON, bít đọc ghi phần mềm Bit có ý nghĩa lớn (MSB) giá trị ghi định thời bit THx bit có ý nghĩa thấp (LSB) bit TLx Bit LSB thay đổi trạng thái chia tần số xung clock định thời ngõ vào bit MSB thay đổi trạng thái chia cho 65536 (tức 216) tần số xung clock định thời ngã vào Các ghi định thời (TLx/THx) đọc ghi thời điểm phần mềm 2.4.2.2 Chế độ tự nạp lại bit (chế độ 2) Chế độ chế độ tự nạp lại bit Byte thấp định thời (TLx) hoạt động định thời bit byte cao định thời lưu trữ giá trị nạp lại Khi số đếm tràn từ FFH xuống 00H, không cờ tràn định thời SET lên mà giá trị THx nạp vào TLx; việc đếm tiếp tục từ giá trị xảy cờ tràn (FFH –> 00H) kế tiếp… chế độ thuận lợi việc tràn định thời xảy khoảng thời gian xác định tuần hoàn ghi TMOD THx khởi động canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 35 Giáo trình vi xử lý 2.4.2.3 Định thời khoảng thời gian Nếu C/ T = 0, hoạt động định thời chọn nguồn xung clock định thời mạch dao động bên chip tạo Một mạch chia 12 tần thêm vào để giảm tần số xung clock đến giá trị thích hợp với hầu hết ứng dụng lúc định thời dùng để định thời khoảng thời gian Các ghi định thời (TLx/THx) đếm lên với tần số xung clock 1/12 tần số mạch dao động chip (ngĩa thạnh anh 12MHz, tần số xung clock MHz) Bộ định thời tràn sau số xung clock cố định phụ thuộc vào giá trị ban đầu nạp cho ghi định thời (TLx/THx) 2.4.2.4 Đếm kện Nếu C/ T = định thời cung cấp xung clock từ nguồn tạo xung bên Trong đa số ứng dụng, nguồn xung clock cung cấp cho định thời xung dựa việc xảy kiện – định thời đếm kiện Số kiện xác định phần mềm cách đọc ghi định thời (TLx/THx), giá trị 16 bit ghi tăng theo kiện chân port (P3.4 P3.5) trở thành ngõ vào xung clock cho định thời Chân P3.4 ngõ vào xung clock cho định thời (ta gọi chân T0 ngữ cảnh này), chân P3.5 (T1) ngõ vào xung clock cho định thời T1 Hình 2.16: Hoạt động chế độ định thời canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 36 Giáo trình vi xử lý 2.4.3 Khởi tạo truy xuất ghi định thời Các định thời thường khởi động lần thời điểm bắt đầu chương trình TMOD ghi khởi động trước tiên ghi thiết lập chế độ hoạt động ví dụ khởi động định thời hoạt động chế độ 16 bit (chế độ 1) xung clock cấp từ mạch dao động chip MOV TMOD, #00010000B Kết lệnh thiết lập M1 = M0 = để ấn định chế độ 1, C/ T =0 GATE = để sử dụng xung clock chip, xóa bit chọn chế độ định thời thực tế định thời làm việc bắt đầu bit điều khiển hoạt động TR1 set Trong trường hợp cần đếm số đếm ban đầu ghi định thời TL1, TH1 phải khởi động, cờ tràn set =1 xảy số đếm tràn từ FFFFH xuống 0000H, khoảng thời gian 100μs định thời cách khởi động TL1/TH1 chứa số đếm nhỏ 0000H lượng 100 nghĩa -100 hay FF9CH Các lệnh sau thực điều này: MOV TL1, #9CH MOV TH1, #0FFH Kế đến định thời bắt đầu hoạt động cách thiết lập bít điều khiển hoạt động sau: SETB TR1 Cờ tràn hoạt động thiết lập sau khoảng thời gian 100μs cách sử dụng lệnh rẽ nhánh lặp lại lệnh cờ tràn chưa đực set 1: WAIT: JNB TF1, WAIT Khi định thời tràn, ta cần dừng định thời xóa cờ tràn phần mềm: CLR TR1 ; dừng định thời CLR TF1 ; xóa cờ tràn - Đọc định thời : ta phải đọc ghi định thời dòng lệnh liên tiếp, sai pha xuất có tràn từ byte thấp chuyển sang byte cao lần đọc ta không đọc giá trị cần đọc Giải pháp đưa trước tiên ta đọc byte cao, byte thấp đọc byte cao lần Nếu byte cao thay đổi giá trị ta lặp lại thao tác đọc vừa nêu Ví dụ đọc ghi TL1/TH1 đưa vào ghi R6, R7 va giải vấn đề vừa nêu: AGAIN: MOV A, TH1 MOV R6, TL1 canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 37 Giáo trình vi xử lý CJNE A, TH1, AGAIN MOV R7, A Ví dụ: viết chương trình tạo sóng xung vng 10KHz chân P1.0 cách sử dụng định thời Với tần số 10 KHz yếu cầu chu kỳ 100 μs Với thời gian mức cao 50 μs thời gian mức thấp 50 μs Do khoảng thời gian nhỏ 256 μs nên chế độ2 sử dụng tràn xảy sau 50 μs yêu cầu giá trị số đếm nhỏ 00H lượng +50 phải nạp nạp lại cho TL0, nghĩa giá trị nạp cho TH0 -50 Dưới chương trình theo yêu cầu: ORG 8100H MOV TMOD, #02H ; chế độ tự nạo lại bit MOV TH0, #-50H ; TH0 chứa giá trị -50 SETB TR0 ; định thời hoạt động LOOP: JNB TF0, LOOP ; chờ tràn CLR TF0 ; xóa cờ tràn CPL P1.0 ; đổi trạng thái P1.0 (bù) SJMP LOOP ; lặp lại END Ví dụ: mạch cịi nối chân P1.7 đầu vào nối chân P1.6 Viết chương trình đọc mức logic chuyển mạch chân P1.6 hụ còi 1s sau lần phát chuyển trạng thái từ xuống HUNDERED EQU 100 ; 100x10000 μs = 1s COUNT EQU 10000 ORG8100H MOV TMOD, #01H ;chế độ 1, định thời LOOP: JNB P1.6, LOOP ; chề logic ngõ vào WAIT: JB P1.6, WAIT ; chờ ligic ngõ vào SETB P1.7 ; hụ còi CALL DELAY ; chờ s CLR P1.7 ; tắt còi SJMP LOOP DELAY: MOV R7, #HUNDERED AGAIN: MOV TH0, #HIGH COUNT MOV TL0, #LOW COUNT SETB TR0 canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 WAIT2: JNB CLR CLR DJNZ RET END 38 Giáo trình vi xử lý TF0, WAIT2 TF0 TR0 R7, AGAIN 2.5 HOẠT ĐỘNG PORT NỐI TIẾP 2.5.1 Giới thiệu Chức port nối tiếp thực việc chuyển đổi liệu song song thành nối tiếp phát chuyển đổi liệu nối tiếp thành song song thu Các mạch phần cứng bên truy xuất thông qua chân TxD (P3.1 phát liệu) RxD (P3.0 thu liệu) Đặc trưng port nối tiếp hoạt động song cơng nghĩa thu phát đồng thời phần mềm sử dụng chức đặc biệt SBUF SCON để truy xuất port nối tiếp Bộ đệm port nối tiếp SBUF có địa 99H Việc ghi lên SBUF nạp liệu để phát việc đọc SBUF truy xuất liệu nhận (xem hình 2.17) Thanh ghi điều khiển port nối tiếp SCON (dịa 98H ghi định địa bit) ghi chứa bit trạng thái bit điều khiển Các bit điều khiển thiết lạp chế độ hoạt động cho port nối tiếp bit trang thái kết thúc việc thu phát ký tự Hình 2.17: Sơ đồ khối port nối tiếp 2.5.2 Chế độ hoạt động port nối tiếp Thanh ghi chọn chế độ SCON port nối tiếp địa 99H, trước sử dụng port nối tiếp, ghi SCON phải khởi động chế độ yêu cầu ví dụ MOV SCON, #01010010B canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 39 Giáo trình vi xử lý Khởi động chế độ port nối tiếp chế độ (SM0/SM1 = 0/1) cho phép thu (REN = 1) set cờ ngắt phát (TI=1) để port nối tiếp sẵn sàng phát liệu Port nối tiếp có chế độ hoạt động thụ thuộc vào SM0 SM1 Bảng 2.5: Tóm tắt ghi SCON Bit Ký hiệu Địa Mô tả SCON.7 SM0 9FH Bit chọn chế độ port nối tiếp SCON.6 SM1 9EH Bit chọn chế độ port nối tiếp SCON.5 SM2 9DH Bit chọn chế độ port nối tiếp bit cho phép truyền thông đa xử lý chế độ 3, bit RI khơng tích cực bit thứ nhận SCON.4 REN 9CH Cho phép thu, phải set để nhận ký tự SCON.3 TB8 9BH Bit phát bit thứ dược phát chế độ 3, set xóa phần mềm SCON.2 RB8 9AH Bit thu bit thứ nhận SCON.1 TI 99H Cờ ngắt phát, cờ set kết thúc việc phát ký tự, xóa phần mềm SCON.0 RI 98H Cờ ngắt phát, cờ set kết thúc việc thu ký tự, xóa phần mềm 2.5.2.1 Thanh ghi bit (chế độ 0) Bằng cách ghi giá trị vào SM0, SM1 Dữ liệu nối tiếp thu phát thông qua chân RxD, TxD xuất xung clock dịch bit SM0 SM1 Chế độ Mô tả Tốc độ baud 0 Thanh ghi dịch Cố định (tần số dao động/12) 1 UART - bit Thay đổi (thiết lập định thời) UART - bit Cố định (tần số dao động/12 hoặc/64) 1 UART - bit Thay đổi định thời Việc phát liệu khởi động lệnh ghi liệu vào SBUF Dữ liệu ghi chân RxD (P3.0) với xung clock dịch bit gửi chân TxD (P3.1) Mỗi bit hợp lệ truyền đường RxD chu kỳ máy canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 40 Giáo trình vi xử lý Một ứng dụng khả thi chế độ mở rộng thêm cho ngõ cho 8051 Một vi mạch ghi dịch nối tiếp – song song nối với chân TxD RxD 8051 để cung cấp thêm đường xuất 2.5.2.2 UART 8- bit có tốc độ baud thay đổi (chế độ 1) Trong chế độ port nối tiếp hoạt động thu phát không đồng (UART) bit có tốc độ baud thay đổi đượcUART thu phát liệu nối tiếp với ký tự liệu đứng trước bit Start (0) đứng sau bit Stop (1) Như chế độ có 10 bit thu chân RxD 10 bit phát chân TxD cho ký tự liệu Khi hoạt động thu bit Stop đưa đến RB8 SCON Với 8051 tốc độ baud thiết lập tốc độ tràn Bộ thu bao gồm việc phát bit Start sai cách yêu cầu số đếm trạng thái sau có chuyển trạng thái từ xuống kế 2.5.2.3 UART 9- bit có tốc độ baud cố định (chế độ 2) Khi SM1=1 SM0=0, port nối tiếp hoạt động chế độ UART 9- bit cố định baud 11 bit thu phát cho ký tự liệu, thêm bit thứ lập trình trước bit Stop Khi phát bit thứ đặt vào TB8 ghi SCON (có thể bit chẵn lẻ) Khi thu bit thứ nhận đặt vào bit RB8 tốc độ baud chế độ 1/32 1/64 tần số mạch dao động chip 2.5.2.4 UART 9- bit có tốc độ baud thay đổi (chế độ 3) Chế độ có tốc độ thay đổi chế độ ngoại trừ tốc độ baud lập trình cung cấp định thời thật chế độ 1, tương tự 2.5.3 Khởi động truy xuất ghi 2.5.3.1 Cho phép thu Bit cho phép thu REN ghi SCON phải set = phần mềm phép nhận ký tự Điều thường thực đầu chương trình port nối tiếp, định thời,…được khởi động thực theo cách lênh: SETB REN Hoặc MOV SCON, #xxx1xxxxB 2.5.3.2 Các cờ ngắt Các cờ ngắt thu RI phát TI ghi SCON đóng vai trị quan trọng việc truyền liệu nối tiếp 8051 Cả bit set =1 phần cứng phải xóa phần mềm canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 41 Giáo trình vi xử lý Nếu phần mềm muốn nhập ký tự từ thiết bị ghép với port nối tiếp phần mềm phải chờ RI set =1 phần mềm xóa RI đọc ký tự từ SBUF Thể sau: WAIT: JNB RI, WAIT ; kiểm tra RI CLR RI ; xóa RI MOV A, SBUF ; đọc ký tự Cờ TI set =1 kết thúc việc phát ký tự đệm phát rỗng Nếu phần mềm muốn phát ký tự đến thiết bị ghép với port nối tiếp, phần mềm trước tiên phải kiểm tra để biết port sẵn sàng Nói cách khác, ký tự trước phát, hần mềm phải chờ việc phát kết thúc trước gửi tiếp ký tự kế Các lênh sau phát ký tự chứa chứa WAIT: JNB TI, WAIT ; kiểm tra TI CLR TI ; xóa TI MOV SBUF, A ; phát ký tự Các chuỗi lệnh thu phát phần chương trình xuất nhập ký tự chúng mô tả chi tiết ví dụ 2.5.4 Tốc độ baud port nối tiếp Như thấy bảng tốc độ baud cố định chế độ chế độ 0, tốc độ baud tần số mạch dao động chip chia cho 12 thông thường người ta sử dụng thạch anh bên chip cho mạch dao động Giả sử tần số mạch dao động 12 MHz, tốc độ baud chế độ 1MHz Sau hệ thống reset, tốc độ baud chế độ tần sôs mạch dao động /64 Tốc độ baud bị ảnh hưởng bit ghi điều khiển nguồn PCON Bit PCON bit SMOD việc set bit làm tăng tốc độ baud chế độ 1, lên gấp đơi Vì ghi PCON khơng định nghĩa bit việc set bit SMOD lên mà không làm thay đổi bit khác ghi thực nhưungx dòng lệnh sau : MOV A, PCON ; lấy giá trị hành PCON SETB ACC.7 ; set bit (SMOD) MOV PCON, A ; nạp giá trị vào PCON canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 42 Giáo trình vi xử lý Kỹ thuật thường dùng để tạo xung clock tốc độ baud khởi động ghi TMOD chế độ tự nạp lại bit đặt giá trị nạp lại thích hợp vào ghi TH1 để có tốc độ tràn từ tạo tốc độ baud MOV TMOD, 0010xxxxB Nếu tần số dao động chip 12MHz, định thời cấp xung clock MHz định thời phải tràn tốc độ 38.4 KHz, việc tràn cần xảy sau 26.04 xung clock làm trịn 26 Vì định thời đếm lên tràn có số đếm từ FFH chuyển thành 00H, 26 số đếm nhỏ giá trị nạp lại cần để nạp cho ghi TH1 Giá trị -26 MOV TH1, #-26 Trình dịch hợp ngữ biến đổi cần thiết Trong trường hợp -26 biến đổi thành 0E6H lệnh trở thành MOV TH1, #0E6H Ví dụ: viết chương trình để khởi đơng port nối tiếp cho port hoạt động UART 8-bit với tốc độ 2400 baud Sử dụng định thời để cung cấp xung clock cho tốc độ baud Với ví dụ ta khởi động ghi SMOD, TMOD, TCON TH1 Các giá trị yêu cầu tóm tắt sau: SM0 SM1 SM2 REN TB8 RB8 TI RI 1 0 GTE C/T M1 M0 GTE C/T M1 M0 0 0 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON 0 0 0 TH1 1 1 0 1 SCON TMOD Việc thiết lập SM0/SM1 =0/1 nhằm đặt port nối tiếp chế độ UART 8-bit, REN =1 cho phép port nối tiếp thu ký tự set TI=1 cho phép phát ký tự cách đệm phát rỗng Với ghi TMOD việc thiết lập M1/M0=1/0 đặt định tời vào chế độ tự nạp lại bit Việc set TR=1 TCON khởi động định thời hoạt động Các bit khác cho chúng điều khiển đặc trưng chế độ không sử dụng chế độ Giá trị cần nạp cho TH1 giá trị cung cấp tốc độ tràn canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 43 Giáo trình vi xử lý 2400x32=76.8kHz Giả sử tần số mạch dao động chip 12MHz định thời cung cấp xung clock có tần số MHz số xung clock cho lần tràn 1000 /76.8 = 13.02 giá trị nạp lại -13 0F3H Chuỗi lệnh khởi động port nối tiếp sau: ORG 8100H INT: MOV SCON, #52H ; port nối tiếp chế độ MOV TMOD, #20H MOV TH1, #-13 ; định thời chế độ ; giá trị nạp lại để có 2400 baud SETB TR1 ; định thời hoạt động END 2.6 HOẠT ĐỘNG NGẮT (interrup) 2.6.1 Giới thiệu Ngắt kiện xảy điều kiện – kiện – làm cho chương trình hành bị tạm ngưng điều kiện phục vụ trình khác Dĩ nhiên CPU khơng thể thực thi nhiều lệnh thời điểm tạm ngưng công việc để thực thi cơng việc khác sau trở thực thi tiếp chương trình tạm ngưng vấn đề điều khiển ngắt, việc ngắt nhằm đáp ứng kiện mà kiện không đồng với chương trình hay nói cách khác CPU khơng biết trước bị ngắt Chương trình xử lý ngắt gọi trình phục vụ ngắt ISR hay quản lý ngắt mơ tả hình 2.18 ví dụ điển hình ngắt nhập tay sử dụng bàn phím bng tay tạo xung từ mức cao xuống mức thấp chương trình chình ngắt ISR thực thi để đọc mã phím, sau kết thúc cách chuyển điều khiển trở chương trình Hình 2.18: Sơ đồ sử dụng chương trình khơng ngắt có ngắt canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 44 Giáo trình vi xử lý 2.6.2 Tổ chức ngắt 8051 có nguyên nhân ngắt: bên ngoài, ngắt định thời ngắt port nối tiếp 8052 có thêm ngắt định thời thứ Khi thiết lập trạng thái ban đầu cho hệ thống (cấp nguồn, Reset) tất ngắt bị vơ hiệu hóa sau chúng cho phép riêng lẻ theo chương trình Khi xảy ngắt đồng thời hay ngắt phục vụ xảy ngắt khác ta có sơ đồ ngắt sơ đồ chuỗi vòng (cố định) sơ đồ mức ưu tiên (do người lập trình) 2.6.2.1 Cho phép không cho phép ngắt Mỗi nguyên nhân ngắt cho phép hay không cho phép ngắt thông qua ghi chức đặc biệt định địa bit IE (0A8H), bit tồn cục khơng cho phép cho phép ngắt Bit Ký hiệu Địa Mô tả IE.7 EA AFH Cho phép 1/ khơng cho phép tồn cục IE.6 - AEH None IE.5 ET2 ADH Cho phép ngắt định thời IE.4 ES ACH Cho phép ngắt port nối tiếp IE.3 ET1 ABH Cho phép ngắt định thời IE.2 EX1 AAH Ngắt (P3.3) IE.1 ET0 A9H Cho phép ngắt định thời IE.0 EX0 A8H Ngắt (P3.2) Hai bit sau phải set phep ngắt đó, bit cho phép ngắt riêng rẻ bít cho phép ngắt tồn cục ví dụ ngắt định thời 1: SETB ET1 ; cho phép ngắt định thời SETB EA ; cho phép ngắt toàn cục Hoặc lệnh MOV IE, #10001000B 2.6.2.2 Ưu tiên ngắt Mỗi nguyên nhân ngắt lập trình riêng để có mức ưu tiên thông qua ghi ưu tiên ngắt IP (interrup priority) có địa byte 0B8H Bit Ký hiệu Địa bit IP.7 - - Không sử dụng IP.6 - - Không sử dụng canquynhon.blogtiengviet.net Mô tả (1 mức cao, thấp) Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 45 Giáo trình vi xử lý IP.5 PT2 0BDH Ưu tiên cho ngắt định thời IP.4 PS 0BCH Ưu tiên cho ngắt port nối tiếp IP.3 PT1 0BBH Ưu tiên cho ngắt định thời IP.2 PX1 0BAH Ngắt IP.1 PT0 0B9H Ưu tiên cho ngắt định thời IP.0 PX0 0B8H Ngắt Khi thiết lập hệ thống ghi IP mặc định tất mức ưu tiên mức thấp, ngắt có ưu tiên mức cao phụ vụ trước dừng mức ngắt có mức ưu tiên thấp 2.6.3 Xử lý ngắt Khi có ngắt xuất CPU chấp nhận chương trình bị ngắt Các thao tác sau xảy ra: Hoàn tất việc thực thi hành Bộ đếm chương trình PC cất vào stack Trạng thái ngắt hành lưu trữ lại Các ngắt chận lại mức ngắt Bộ đếm chương trình PC nạp địa vecto chương trình phụ vụ ngắt ISR ISR thực thi kết thúc gặp lênh RETI lệnh lấy lại giá trị cũ đếm chương trình PC từ Stack phục hồi trạng thái ngắt cũ Và thực thi chương trình nơi tạm dừng Bảng ghi cờ ngắt Ngắt Cờ Thanh ghi SFR vị trí bit Ngắt ngồi IE0 TCON.1 Ngắt ngồi IE1 TCON.3 Ngắt định thời TF1 TCON.7 Ngắt định thời TF0 TCON.5 Ngắt port nối tiếp TI SCON.1 Ngắt port nối tiếp RI SCON.0 Ngắt định thời TF2 T2CON.7 (8052) Ngắt định thời EXF2 T2CON.6 (8052) 2.6.3.1 Các vecto ngắt canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 46 Giáo trình vi xử lý Khi ngắt chấp nhận, giá trị nạp cho đếm chương trình PC gọi vecto ngắt vecto ngắt địa bắt đầu trình phụ vụ ngắt nguyên nhân ngắt tương úng Vecto reset hệ thống (RST địa 0000H) chứa bảng xem ngắt: chương trình bị ngắt PC nạp giá trị Khi trình phụ vụ ngắt trỏ tới, cờ gây ngắt tự động bị xóa phần cứng Các ngoại lệ bao gồm cờ RI TI ngắt port nối tiếp; TF2 EXF2 ngắt định thời Các nguyên nhân ngắt thuộc ngoại lệ nêu có khả tạo ngắt nên thực tế CPU khơng xóa cờ ngắt Vecto ngắt Ngắt Cờ Địa vecto Reset hệ thống RST 0000H Ngắt IE0 0003H Bộ định thời TF0 000BH Ngắt IE1 0013H Bộ định thời TF1 001BH Port nối tiếp RI TI 0023H Bộ định thời TF2 EXF2 002BH Các bit cờ phải kiểm tra ISR để xác định nguyên nhân ngắt sau cờ gây ngắt xóa phần mềm thơng thường có rẻ nhánh chương trình đến công việc tương ứng tùy thuộc vào nguyên nhan ngắt vecto ngắt đặt đáy nhớ chương trình, lệnh chương trình thường lệnh nhảy qua khỏi vùng nhớ chứa vecto ngắt chẳng hạn lệnh LJMP 0030H 2.6.4 Thiết kế chương trình sử dụng ngắt Các lỗi thường xảy thiết kế hệ thống thường liên quan đến ngắt Vì sử dụng ngắt ví dụ hồn chỉnh thực thi độc lập Mỗi chương trình bắt đầu địa 0000H với giả thiết chương trình bắt đầu thực thi sau hệ thống reset Ý tưởng cuối chương trình phát triển cho ứng dụng thức, chúng thường trú tong ROM EPROM Khuôn mẫu: ORG 0000H canquynhon.blogtiengviet.net ; điểm nhập sau Reset Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 LJMP Giáo trình vi xử lý MAIN … ORG 47 ; điểm nhập ISR 0030H MAIN: ; điểm nhập chương trình ; chương trình bắt đầu … Lệnh nhảy đến địa 0030H vecto ngắt nơi ISR bắt đầu, trình bày bảng vecto ngắt Nếu có nguyên nhân ngăt dùng ví dụ ngắt định thời khn mẫu trình bày đây: ORG 0000H LJMP MAIN ORG 000BH TOISR: ; reset ; điểm nhập ngắt định thời ; bắt đầu ISR cho định thời RETI ; trở chương trình MAIN: ; chương trình Nếu có nhiều ngắt sử dụng ta phải cẩn thận để bảo đảm ISR bắt đầu vị trí khơng tràn sang ISR kế Vì có ngắt sử dụng ví dụ trên, chương trình bắt đầu sau lênh RETI Các trình phục vụ ngắt kích thước lớn Nếu trình phục vụ ngắt dài byte cần đến, ta phải di chuyển chương trình đến nơi khác nhớ chương trình ta cho lấn qua điểm nhập ISR kế Điển hình ISR bắt đầu với lệnh nhảy đến vùng khác nhớ chương trình, ISR trãi rộng cần Nếu khảo sát định thời không, khuôn mẫu sau sử dụng: ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN: ; reset ; điểm nhập ngắt định thời ; phía vecto ngắt ; chương trình … T0ISR: canquynhon.blogtiengviet.net ; bắt đầu ISR cho định thời Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 RETI 48 Giáo trình vi xử lý ; trở chương trình Ví dụ 6.1: tạo sóng vuông sử dụng ngắt định thời viết chương trình tạo sóng vng 10kHz P1.0 sử dụng định thời Các ngắt định thời xuất ghi định thời (TLx/THx) tràn set cờ tràn TFx = ORG ; điểm nhập reset LJMP MAIN ; nhảy qua khỏi vecto ngắt ORG 000BH ; vecto ngắt định thời P1.0 ; lấy bù T0ISR: CPL RETI ORG 0030H ; điểm nhập chương trình MAIN : MOV TMOD, #02H ; chế độ định thời MOV TH0, #-50 ; trì hỗn 50μs SETB TR0 ; định thời hoạt động MOV IE, #82H ; cho phép ngắt định thời SJMP $ ; khơng làm END canquynhon.blogtiengviet.net Đại học Quy Nhơn ... canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 20 Giáo trình vi xử lý 2.3.2 Các kiểu lệnh (Instruction Types): 8951 chia nhóm lệnh chính: Các lệnh số học Lệnh logic Dịch chuyển liệu Lý. .. canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 26 Giáo trình vi xử lý Đích nhảy cho lệnh CJNE xác định $+3 dấy $ ký hiệu trình dịch hợp ngữ biểu thị địa lệnh hành Vì CJNE lệnh byte,... bảng tìm kiếm nhớ chương trình Do lệnh truy xuất nhớ chương trình, bảng tìm kiếm canquynhon.blogtiengviet.net Đại học Quy Nhơn Chương 2: Tập lệnh 89C51 28 Giáo trình vi xử lý đọc không cập nhập

Ngày đăng: 27/01/2014, 14:20

Từ khóa liên quan

Mục lục

  • 2.1. TỔ CHỨC BỘ NHỚ

  • 2.2. CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT

  • 2.2.10. Bảo vệ bộ nhớ.

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

Tài liệu liên quan