1. Trang chủ
  2. » Giáo Dục - Đào Tạo

vi điều khiển 8051 tiếng việt

51 118 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 337,59 KB

Nội dung

Chương 1: GIỚI THIỆU AT89C51 I - TÓM TẮT PHẦN CỨNG: 1) Giới thiệu họ MCS51: MSC-51 họ IC vi điều khiển (microcontroller), phát triển chế tạo bán thò trường hãng INTEL Mỹ Các nhà chế tạo IC khác SIEMENS Đức, ADVANCED MICRO DEVICES, FUJITSU Nhật PHILIPS Hà Lan nhà cung cấp thiết bò họ MSC-51 cấp giấy quyền thứ hai, hãng ALMEL hãng cấp bảng quyền sản phẩm 8951, 8952 hai IC tiêu biểu thiết kế họ Chúng có đặt điểm chung sau: - 4Kbyte ROM (đựơc lập trình nhà sản xuất, có 8051 ) - 4Kbyte EPROM ( cho ta lập trình nhiều lần ”khoảng 1000 lần”, có 8951 ) - 128 byte RAM - port I/O bit - đònh thời 16 bit - 64 K không gian nhớ chương trình mở rộng - 64 K không gian nhớ liệu mở rộng - Một xử lý luận lý (hoạt động bít đơn) - 210 bit đòa hoá - Bộ nhân / chia µs Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com INT1 INT0 Timer (8952) Timer Timer Serial port Interrupt Control Other Register 128 byte RAM 8052 128 byte RAM ROM 0K:8031 8032 4K:8051 8951 8K:8952 Timer 8952 Timer T1 Timer T0 CPU Oscilator EA RS T BUS Coltrol I/O Port ALE P0 Serial Port P2 P1 P3 PSEN Address/Data TXD RXD RXD RXD Sơ dồ khối họ MCS51 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com 2) Sơ lược chân 8951 : 8951 có tất 40 chân có chức đường xuất nhập Trong có 24 chân có công dụng kép, đường hoạt động đường xuất nhập đường điều khiển thành phần bus liệu bus đòa 40 VCC 29 PSEN ALE EA 30 31 RST 17 16 15 14 13 12 11 10 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 8951 VSS P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 32 33 34 35 36 37 38 39 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 28 27 26 25 24 23 22 21 20 Sơ đồ chân 8951 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com a) PORT : Port port hai chức chân 32 ÷ 39 Trong thiết kế cở nhỏ ( không dùng nhớ mở rộng ) có chức đường I/O Đối với thiết bò lớn với nhớ mở rộng, hợp kênh bus điạ bus liệu b) PORT : Port port I/O chân ÷ Các chân ký hiệu P1.0, P1.2, P1.3, …,P1.7 dùng cho giao tiếp với thiết bò cần Port chức khác, chúng dùng cho giao tiếp với thiết bò c) PORT : Port port có công dụng kép chân 21 ÷ 28 dùng đường xuất nhập byte cao bus đòa thiết kế dùng nhớ mở rộng d) PORT 3: Port port có công dụng kép chân 10 ÷ 17 Các chân port có nhiều cức Các công dụng chuyển đổi có liên hệ với đặc tính đặc biệt 8951 bảng sau: Bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Teân RXD TXD INT0 INT1 T0 T1 WR RD Cức chuyển đổi Dữ liệu nhận cho port nối tiếp Dữ liệu phát cho port nối tiếp Ngắt bên Ngắt từ Ngõ vào Timer / Counter Ngõ vào Timer / Counter Xung ghi nhớ liệu Xung đọc nhớ liệu Ta cần lưu ý dùng pin vào mục đích cá biệt port không khả dùng làm I/O port e) XTAL XTAL 2: Trên chân 18 19 vi mạch, nối với dao động thạch anh 12 MHz để tạo dao động Chip Hai tụ 30pF thêm vào để ổn đònh dao động Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com f) PSEN (Program Store Enable ): Có tín hiệu điều khiển PSEN tín hiệu chân 29 Nó tín hiệu điều khiển phép nhớ chương trình mở rộng thường nối đến chân OE ( Output Enable ) EPROM phép đọc byte mã lệnh PSEN mức thấp thời gian lấy lệnh Các mã nhò phân chương trình đọc từ EPROM qua bus liệu chốt vào ghi lệnh để giải mã lệnh Khi thi hành chươnh trình ROM nội PSEN mức thụ động (mức cao) g) ALE (Address Latch Enable ): Tín hiệura ALE chân 30 tương hợp với thiết bò làm việc với vi xử lý 8085, 8088, 8086, 8051, 8951 dùng ALE cách tương tự cho việc giải kênh bus điạ liệu.Khi Port dùng chế độ chuyển dổi nó: vừa bus liệu vừa bus thấp bus điạ chỉ, ALE tín hiệu để chốt đòa vào ghi suốt nửa chu kỳ nhớ đầu, nửa chu kỳ sau mức thấp cho phép xuất nhập liệu liệu di chuyển bus Các xung tín hiệu ALE có tốc độ 1/6 lần tần số dao động chip dùng làm nguồn xung nhòp cho phần khác hệ thống Nếu xung nhòp 8951 12MHz ALE có tần số 2MHz Chỉ ngoại trừ thi hành lệnh MOVX, xung ALE bò Xung làm ngõ vào cho xung lập trình cho EPROM 8951 h) EA ( Eternal Acess): Tín hiệu vào EA chân 31 thường mắc lên mức cao (+5V) mức thấp (GND) Nếu mức cao 8951 thi hành chương trình từ ROM nội khoảng đòa thấp (4K) Nếu mức thấp chương trình thi hành từ nhớ mở rộng Người ta dùng EA làm chân cấp điện áp 21V lập trình 8951 i) RST (Reset) : Ngõ vào RST chân ngõ Reset 8951 Khi tín hiệu đưa lên mức cao ( chu kỳ máy) , ghi bên 8951 tải giá trò thích hợp để khởi động hệ thống j) Các chân nguồn: 8951 vận hành với nguồn đơn +5V VCC nối vào chân 40 VSS (GND) nối vào chân 20 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com 3) Cấu trúc nhớ 8951 : 8951 có cấu trúc nhớ theo kiểu HARWARD : có vùng nhớ riêng cho chương trình liệu Bộ nhớ mở rộng đến 64KB code memory 64KB data memory RAM chip gồm 128 Byte ứng dụng cho lưu trữ mục đích chung, lưu trữ đònh vò bit, dãy ghi ghi chức đặc biệt Hai đặc tính cần lưu ý là: + Các ghi port xuất nhập xếp nhớ truy xuất trực tiếp giống điạ nhớ khác + Ngăn xếp RAM nội nhỏ so với RAM vi xử lý khác Bảng tóm tắt vùng nhớ 8951 : 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 21 20 1F 1817 100F 0807 00 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 General Purpose RAM 7C 7B 74 73 6C 6B 64 63 5C 5B 54 53 4C 4B 44 43 3C 3B 34 33 2C 2B 24 23 1C 1B 14 13 0C 0B 04 03 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00 BANK BANK BANK Default Register Bank for R0 ÷ R7 Bảng tóm tắt đồ vùng nhớ RAM chip Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 - D0 PSW B8 - - - BC BB BA B9 B8 IP B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 A8 AF - - AC AB AA A9 A8 IE A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 99 98 SBUF SCON 91 90 P1 99 98 9F 9E Not bit Addressable 9D 9C 9B 9A 90 97 96 95 8D 8C 8B 8A 89 88 87 83 82 81 80 8F 87 8E 86 94 93 92 Not bit Addressable Not bit Addressable Not bit Addressable Not bit Addressable Not bit Addressable 8D 8C 8B 8A Not bit Addressable Not bit Addressable Not bit Addressable Not bit Addressable 85 84 83 82 89 81 88 80 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Các ghiGHI chức biệt CÁ C THANH CHỨ C NĂđặc NG ĐẶ T BIỆT Vùng nhớ có hai đặc điểm đáng ý : Những ghi làm port I/O nhớ đặt truy xuất vò trí nhớ khác.Vùng Stack bên RAM nội giống vi xử lý a RAM đa dụng : Trong đồ nhớ trên, 80 byte từ đòa 30H ÷ 7FH RAM mục đích chung Kể 32 byte phần từ 00H ÷ 2FH sử dụng 80 byte trên, nhiên 32 byte có mục đích khác đề cập sau.Bất vò trí Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com RAM truy xuất tùy ý giống việc sử dụng mode để đònh đòa trực tiếp hay 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 cách đánh đòa gián tiếp qua Ri 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 b RAM đòa hóa bit : 8951 chứa 210 bit đòa hóa, 128 bit đòa byte từ 20H ÷ 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 thuậ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 từøng 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 từ 20H ÷ 2FH Các đòa truy xuất byte bit tùy thuộc vào lệnh dùng Ví dụ, để đặt lại 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 byte Các vi xử lý phải thi hành nhiệm vụ tương tự sau : MOV A,2CH ORL A,#10000000B MOV 2CH,A ;đọc byte ;set MSB ;ghi laïi byte Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com c Các bank ghi : 32 byte thấp nhớ nội dành cho bank ghi Bộ lệnh 8951 hỗ trợ ghi (R0 ÷ 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 từ R0 ÷ R7 ngắn nhanh lệnh tương ứng dùng đòa trực tiếp Các ghi 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 (Program Status Word) Giả sử bank ghi tích cực, lệnh sau ghi nội dung ghi A vào đòa 18H : MOV R0,A Ý tưởng dùng “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ụ vào phần khác) 4) Các ghi chức đặc biệt : Các ghi nội 8951 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 Các ghi 8951 đònh dạng phần RAM chip Vì vậy, ghi có đòa (ngoại trừ ghi đếm chương trình ghi lệnh ghi bò tác động trực tiếp) Đó lý 8951 có nhiều ghi Cũng R0 ÷ R7, có 21 ghi chức đặc biệt SFR (Special Function Register) vùng đòa RAM chip, từ đòa 80H ÷ 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ừ ghi tích lũy A truy xuất ngầm đònh nói, đa số SFR truy xuất dùng đòa trực tiếp Chú ý vài SFR Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com đòa hóa bit byte Người thiết kế phải cẩn trọng truy xuất bit byte Ví dụ lệnh sau: SETB 0E0H Sẽ set bit ghi tích lũy, bit lại không đổi Ta thấy 0E0H đòa byte đồng thời đòa bit có trọng số nhỏ ghi tích lũy Vì lệnh set bit tác động lên bit nên có đòa bit có hiệu a) Từ trạng thái chương trình (Program Status Word) : Nằm đòa D0H chứa bit trạng thái bảng tóm tắt sau : Bit PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 Ký hiệu CY AC F0 RS1 RS0 Đòa D7H D6H D5H D4H D3H PSW.2 PSW.1 PSW.0 OV P D2H D1H D0H Ý nghóa Cờ nhớ Cờ nhớ phụ Cờ Bit chọn Bank ghi Bit choï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ớ : Cờ nhớ CY có công dụng kép Thông thường dùng cho lệnh toán học : set có số nhớ sinh phép cộng số mượn phép trừ Ví dụ, ghi tích lũy chứa FFH, lệnh sau : ADD A,#1 Sẽ trả ghi tích lũy kết 00H set cờ nhớ PSW 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ớ ALN C,25H 10 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com • Sử dụng timer làm xung hnng nhòp tốc độ baud : Cách thông dụng để tạo tốc độ baud khởi động TMOD cho chế độ bit tự động nạp lại (chế độ 2) đặt giá trò nạp lại vào TH1 tốc độ tràn với tốc độ baud TMOD khởi động sau: MOV TMOD, #0010xxxxB Các x bit cần cho timer Cũng đạt tốc độ baud thấp cách sử dụng timer chế độ với TMOD = 0001xxxxB, Tuy nhiên, tốn thêm phần mềm ghi TH1/TL1 phải khởi động lại sau lần tràn Việc thực chương trình ngắt Một chọn lưạ khác cấp xung nhòp cho timer từ dùng T1 (P3.5) Và luôn tốc độ baud tốc độ tràn cuả timer chia cho 32 (hoặc 16, SMOD = 1) Công thức tổng quát để xác đònh tốc độ baud chế độ là: Tốc độ baud = Tốc độ tràn cuả timer ÷ 32 Ví dụ, muốn làm việc với tốc độ baud 1200 baud, tốc độ tràn cuả timer phải là: 1200 x 32 = 38,4 KHz Nếu dùng thạch anh 12MHz Timer cấp xung nhòp 1MHz, hay 1000KHz, cần tràn sau 1000 ÷ 38,4 = 26,04 xung nhòp (làm tròn 26) Vì timer đếm lên tràn xảy có thay đổi từ FFH xuống 00H số đếm Như giá tri cần nạp cho TH1 26 Cách dễ để đặt giá trò nạp lại vào TH1 là: MOV TH1, # - 16 Trình hợp dòch thực chuyển đổi cần thiết Trong trường hợp –26 chuyển thành 0E6H Như vậy, lệnh hoàn toàn giống với lệnh: MOV TH1,#0E6H Do việc làm tròn nên có sai số nhỏ tốc độ baud Tổng quát cho phép dung sai 5% truyền thông bất đồng (Start/Stop) Có thể có tốc độ baud xác dùng thạch anh 11,059MHz Bảng sau tóm tắt giá trò nạp lại cho tốc dộ baud thông dụng nhất, dùng thạch anh 12MHz 11,059MHz: 37 Vi Điều Khiển 8051 Tốc độ baud Tần số thạch anh 9600 2400 1200 19200 9600 2400 1200 12,000MHz 12,000MHz 12,000MHz 11,059MHz 11,059MHz 11,059MHz 11,059MHz Lê Chí Thơng – chithong@gmail.com SMOD Giá tri nạp Tốc độ lải vào baud thật TH1 -7(F9H) 8923 -13(F3H) 2404 -26(E6H) 1202 -3(FDH) 19200 -3(FDH) 9600 -12(F4H) 2400 -24(E8H) 1200 Bảng tóm tắt tốc độ baud Sai số 7% 0,16% 0,16% 0 0 38 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com IV – NGẮT ( Interrupt) : 1ù Giới thiệu: Một ngắt xảy điều kiện – kiện – mà gây treo tạm thơi chương trình điều kiện phục vụ mốt chương trình khác Các ngắt đóng vai trò quan trọng thiết kế cài đặt ứng dụng vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng với kiện giải kiện chương trình khác thực thi Một hệ thống điều khiển ngắt cho ảo giác làm nhiều việc đồng thời Dó nhiên CPU lần thực thi lệnh Nhưng tạm treo việc thực thi chương trình để thực thi chương trình khác, quay chương trình thứ Theo cách giống chương trình con, có khác biệt hệ thống điều khiển ngắt ngắt quảng không xảy kết lệnh (lệnh CALL subroutine), mà đáp ứng với kiện xảy bất đồng với chương trình Người ta đâu chương trình bò ngắt quảng Chương trình giải ngắt gọi chương trình phục vụ ngắt (ISR: Interrupt Service Routine) sử lý ngắt ISR thực thi đáp ứng ngắt thông thường thực tác vụ nhập hay xuất với thiết bò Khi ngắt xảy chương trình tạm thời bò treo rẽ nhánh đến ISR: ISR thực thi kết thúc lệnh trở từ ngắt, chương trình tiếp tục thực thi chổ mà tạm dừng Thường người ta xem chương trình thực thi mức (cơ sở) (base –level) ISR thực thi mức ngắt (interrupt – level) Người ta dùng thuật ngữ foreground mức background mức ngắt Tổ chức ngắt 8951: 8951 có nguồn ngắt : hai ngắt ngoài, hai ngắt Timer ngắt cổng nối tiếp Tất ngắt theo bò cấm sau reset hệ thống cho phép phần mềm Khi có hai nhiều ngắt đồng thời, ngắt xảy ngắt khác phục vụ, có hai hỏi vòng sơ đồ ưu tiên hai mức dùng để xác đònh việc thực ngắt Việc hỏi vòng cố đònh ưu tiên ngắt lập trình a) Cho phép cấm ngắt : Mỗi nguồn ngắt cho phép cấm ngắt qua ghi chức đặc biệt có đònh điạ bit IE (Interrupt Enable: cho phép ngắt) điạ A8H Cũng bit cho phép riêng biệt cho nguồn ngắt, có bit cho phép ngắt/cấm toàn xoá để cấm tất ngắt đặt lên 1để cho phép tất ngắt 39 Vi Điều Khiển 8051 Bit IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0 Lê Chí Thơng – chithong@gmail.com Ký hiệu Đòa Mô tả EA AFH Cho phép / cấm toàn cục _ AEH Không dùng ET2 ADH Cho phép ngắt tữ Tiner ES ACH Cho phép ngắt cổng nối tiếp ET1 ABH Cho phép ngắt timer EX1 AAH Cho phép ngắt ET0 A9H Cho phép ngắt timer EX0 A8H Cho phép ngắt Tóm tắt ghi IE Hai bit đặt lên phép ngắt nào: bit cho phép riêng bit cho phép toàn Ví dụ, ngắt từ timer dược cho phép sau: SETB SETB ET1 EA : Cho phép ngắt từ Timer : Đặt bit cho phép toàn Cũng sử dụng lệnh sau: MOV IE, #10001000B Mặc dù hai cách nàycó hiệu sau reset hệ thống, hiệu khác đến IE đưọc ghi chương trình Cách thứ không ảnh hưởng đến bit khác ghi IE, trái lại cách thứ hai xoá bit khác Nên khởi trò IE theo cách thứ hai đầu chương trình (nghiã sau mở máy reset hệ thống), cho phép cấm ngắt chương trình nên dùng cách thứ để tránh ảnh hưởng đến bit khác ghi IE b) Quyền ưu tiên ngắt : Có hai mức độ ưu tiên ngắt, ngắt lập trình riêng cho hai mức ưu tiên qua bit đòa ghi IP ( Interrupt Priority) đòa 0B8H Thanh ghi IP đặt tất ngắt mức ưu tiên thấp reset hệ thống Nếu có ngắt ưu tiên cao ngắt phục vụ chương trình phục vụ ngắt phục vụ cho mức ngắt ưu tiên 40 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com Bảng tóm tắt ghi IP : Bit Ký hiệu Đòa bit IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0 PT2 PS PT1 PX1 PT0 PX0 BDH BCH BBH BAH B9H B8H Moâ tả Không dùng Không dùng Không dùng Ưu tiên cho ngắt cổng nối tiếp Ưu tiên cho ngắt timer1 Ưu tiên cho ngắt Ưu tiên cho ngắt timer Ưu tiên cho ngắt Khi ngắt gọi chương trình phục vụ ngắt thi hành Nếu chương trình phục vụ ngắt ưu tiên thấp thi hành mà có ngắt ưu tiên cao gọi CPU thi hành chương trình hoạt động cho ngắt ưu tiên cao c) hỏi vòng tuần tự: Nếu có hai ngắt mức ưu tiên, hỏi vòng xác đònh cho ngắt ưu tiên Tuần tự external 0, timer 0, external 1, timer 1, serial port, timer Trạng thái tất mức ngắt cho phép bit riêng SFR Dó nhiên, ngắt không cho phép ngắt xảy ra, phần mền kiểm tra lại cờ ngắt Bộ timer serial port sử dụng cờ ngắt thông dụng mà không cần dùng ngắt thật Các bit cờ ngắt : Ngắt Ngoài Ngoài Timer Timer Port nối tiếp Port nối tiếp Cờ IE0 IE1 TF1 TFO T1 R1 Thanh ghi chức vò trí bit TCON.1 TCON.3 TCON.7 TCON.5 SCON.1 SCON.0 Xử lý ngắt: ngắt xảy CPU chấp nhận, chương trình bò ngắt quảng Những hoạt động sau xảy ra: - Lệnh hành hoàn tất việc thực thi - Cất PC vào ngăn xếp 41 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com - Trạng thái ngắt hành cất bên - Các ngắt bò chặn mức ngắt - Nạp vào PC đòa vector cuả ISR - ISR thực thi ISR thực thi đáp ứng ngắt ISR hoàn tất lệnh RET1 (quay từ ngắt) Điều làm lấy lại giá trò cũ cuả PC từ ngăn xếp lấy lại trạng thái ngắt cũ Thực thi chương trình tiếp tục chổ mà bò dừng * Các vetor ngắt : Vetor ngắt đòa vào PC để thi hành chương trình phục vụ ngắt ngắt gọi Bảng vector ngắt : Loại ngắt Khởi động hệ thống Ngoài Timer Ngoài Timer Cổng nối tiếp Flag RST IE0 TF0 IE1 TF1 R1 T1 Đòa voter ngắt 0000H 0003H 000BH 0013H 001BH 0023H Khi xảy ngắt, cờ ngắt xóa tự động phần cứng ngoại trừ R1 T1 cổng nối tiếp, TF2 EXF2 Timer Vì có hai ngắt nên CPU thực thao tác xóa cờ ngắt Các bit phải kiểm tra ISK để xác đònh ngắt nào, sau cờ ngắt xóa phần mềm Thông thường rẽ nhánh chương trình phụ thuộc vào việc rẽ nhánh thích hợp Các ngắt 8951: a) Các ngắt timer: Các ngắt timer có điạ vecter ngắt 000BH (Timer 0) 001BH (Timer1) Ngắt timer xảy gji timer (TLx/THx) tràn set cờ báo tràn (TFx) lên Chú ý cờ timer (TFx) không bò xoá phần mềm Khi cho phép ngắt, TFx tự động bò xoá phần cứng CPU chuyển đến ngắt b) Các ngắt cổng nối tiếp: Ngắt cổng nối tiếp xảy cờ ngắt phát (T1) cờ ngắt thu (R1) đặt lên Ngắt phải xảy truyền ký tự vừa ghi vào SBUF Ngắt thu xảy ký tự nhận xong đợi SBUF để đọc 42 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com Ngắt cổng nối tiếp khác với ngắt timer Cờ gây ngắt cổng nối tiếp không bò xoá phần cứng CPU chuyển tới ngắt Nguyên có hai nguồn ngắt cổng nối tiếp: T1 R1 Nguồn ngắt phải xác đònh ISR cờ tạo V xoá phần mềm c) Các ngắt ngoài: Các ngắt ngo xảy có mức thấp cạnh xuống chân INT0 INT1 8951 Đây chức chuyển đổi bit port3 : P3.2(chân 12) P3.3(chân 13) Các cờ tạo ngắt bit IE0 IE1 TCON KKhi quyền điều khiển chuyển đến ISR, cờ tạo ngắt xoá ngắt đưọc tích cực cạnh xuống Nếu ngắt tích cực theo mức, nguồn yêu cầu ngắt bên điều khiển mức cờ thay cho phần cứng Sự lựa chọn ngắt tích cực mức thấp hay tích cực cạnh xuống lập trình qua bit IT0 IT1 TCON Ví dụ, IT1 = 0, ngắt kích khởi mức thấp chân IT1 Nếu IT1 = 1, ngắt kích khởi cạnh Trong chế độ mẫu liên tiếp chân IT1 mức cao chu kỳ thấp chu kỳ kế, cờ yêu cầu ngắt IE1 TCON đặt lên Rối bit cờ IE1 yêu cầu ngắt Vì chân ngắt lấy mẫu lần chu kỳ máy, ngõ vào nên giữ tối thiểu 12 chu kỳ dao động để bảo đảm lấy mẫu Nếu ngắt tác động theo cạnh xuồng, nguồn bên phải giữ chân yêu cầu cao tối thiểu chu kỳ giữ mức thấp thêm chu kỳ để đảm bảo phát cạnh xuống IE0 IE1 tự động xoá CPU chuyển tới ngắt Nếu ngắt tác động theo mức, nguồn bên phải giữ yêu cầu tác động ngắt yêu cầu thật tạo Rồi không tác động yêu cầu trức ISR hoàn tất, không ngắt khác lập lại Thông thường vào ISR người ta làm nguồn yêu cầu đưa tín hiệu tạo ngắt trạng thái không tác động 43 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com V - TẬP LỆNH CỦA 8051 (8951) : Các kiểu lệnh ( Instruction types ) : 8051 chia nhóm lệnh : Các lệnh số học Lệnh logic Dòch chuyển liệu Lý luận Rẽ nhánh chương trình Từng kiểu lệnh mô tả sau : Các lệnh số học (Arithmetic Instruction) : ADD ADD ADD ADD A, Rn A, direct A, @ Ri A, # data : (A) ← (A) + (Rn) : (A) ← (A) + (direct) : (A) ← (A) + ((Ri)) : (A) ← (A) + # data ADDC ADDC ADDC ADDC A, Rn A, direct A, @ Ri A, # data SUBB SUBB SUBB SUBB SUBB A, < src, byte > A, Rn : (A) ← (A) - (C) - (Rn) A, direct : (A) ← (A) - (C) - (direct) A, @ Ri : (A) ← (A) - (C) - ((Ri)) A, # data : (A) ← (A) - (C) - # data : (A) ← (A) + (C) + (Rn) : (A) ← (A) + (C) + (direct) : (A) ← (A) + (C) +((Ri)) : (A) ← (A) + (C) + # data INC < byte > INC A INC direct INC @ Ri INC Rn INC DPTR : (A) ← (A) + : (direct) ← (direct) + : ((Ri)) ← ((Ri)) +1 : ((Rn)) ← ((Rn)) +1 : (DPTR) ← (DPTR) +1 DEC < byte > DEC A : (A) ← (A) -1 44 Vi Điều Khiển 8051 DEC DEC DEC direct Ri Rn MUL AB DIV AB DA A Lê Chí Thơng – chithong@gmail.com : (direct) ← (direct) -1 : (Ri) ← (Ri) -1 : (Rn) ← (Rn) –1 : (A) ← LOW {(A) x (B)}; có ảnh hưởng cờ OV (B) ← HIGH {(A) x(B)}; cờ Carry xóa : (A) ← Integer Result of {(A)/(B)}; cờ Carry xóa : Điều chỉnh ghi A thành số BCD phép cộng BCD (thường DA A kèm với : ADD, ADDC) Nếu {(A3 – A0) > 9} {(AC) =1}→ (A3 ÷ A0) ← (A1 ÷ A0 ) + Neáu {(A7 – A4) > 9} {(AC) =1}→ (A3 ÷ A0) ← (A7 ÷ A4 ) + Các hoạt động logic (Logic Operation) : Tất lệnh logic sử dụng ghi A toán hạng thực thi chu kỳ máy, A hai chu kỳ mày Những hoạt động logic thực byte vò trí nhớ liệu nội mà không qua ghi A Các hoạt động logic tóm tắt sau : ALN ALN A, Rn ALN A, direct ALN A, @Ri ALN A, # data ALN direct, A ALN direct, # data : (A) ← (A) AND (Rn) : (A) ← (A) AND (direct) : (A) ← (A) AND (Ri) : (A) ← (A) AND (# data) : (direct) ← (direct) AND (A) : (direct) ← (direct) AND (# data) ORL ORL A, Rn : (A) ← (A) OR (Rn) ORL A, direct : (A) ← (A) OR (direct) ORL A, @Ri : (A) ← (A) OR (Ri) ORL A, # data : (A) ← (A) OR (# data) ORL direct, A : (direct) ← (direct) OR (A) ORL direct, # data : (direct) ← (direct) OR (# data) XLR 45 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com XLR XLR XLR XLR XLR XLR A, Rn A, direct A, @Ri A, # data direct, A direct, # data CLR CLR CLR A C Bit RL A RLC SWAP A : (A) ← : (C) ← : (Bit) ← : quay vòng ghi A qua trái bit (An + 1) ← (An) ; n = ÷ (A0) ← (A7) A RR A RLC : (A) ← (A) ⊕ (Rn) : (A) ← (A) ⊕ (direct) : (A) ← (A) ⊕ (Ri) : (A) ← (A) ⊕ (# data) : (direct) ← (direct) ⊕ (A) : (direct) ← (direct) ⊕ (# data) : quay voøng ghi A qua trái bit có cờ carry (An + 1) ← (An) ; n = ÷ (C) ← (A7) (A0) ← (C) : quay voøng ghi A qua phaûi bit (An) ← (An + 1) ; n = ÷ (A0) ← (A7) A : quay vòng ghi A qua trái bit có cờ carry (An) ← (An + 1) ; n = ÷ (C) ← (A7) (A7) ← (C) : đổi chỗ bit thấp bit cao A cho (A0 ÷ A3) ↔ (A7 ÷ A4) Các lệnh rẽ nhánh chương trình (lệnh nhảy) : Có nhiều lệnh để điều khiển chương trình bao gồm việc gọi trả lại từ chương trình chia nhánh có điều kiện hay điều kiện Tất lệnh rẽ nhánh không ảnh hưởng đến cờ Ta đònh nhãn cần nhảy tới mà không cần đònh rõ đòa , trình biên dòch đặt lại đòa nơi cần nhảy tới vào lệnh đưa Sau tóm tắt hoạt động lệnh nhảy : JC rel : nhảy đến “rel” carry set 46 Vi Điều Khiển 8051 JNC JB bit,rel JNB JBC Lê Chí Thơng – chithong@gmail.com rel : nhảy đến “rel” carry = : nhảy đến “rel” bit set bit,rel : nhảy đến “rel” bit = bit,rel : nhảy đến “rel” bit set xóa bit ACALL addr11 : lệnh gọi tuyệt đối page 2K (PC) ← (PC) + (SP) ← (SP) + ((SP)) ← (PC7 ÷ PC0) (SP) ← (SP) + ((SP)) ← (PC15 ÷ PC8) (PC10 ÷ PC0) ← page Address LCALL addr16 : lệnh gọi dài chương trình 64K (PC) ← (PC) + (SP) ← (SP) + ((SP)) ← (PC7 ÷ PC0) (SP) ← (SP) + ((SP)) ← (PC15 ÷ PC8) (PC) ← Ạddr ÷ Addr0 RET : kết thúc chương trình quay chương trình (PC15 ÷ PC8) ← ((SP)) (SP) ← (SP) – (PC7 ÷ PC0) ← ((SP)) (SP) ← (SP) – RETI :kết thúc thủ tục phục vụ ngắt quay chương trình chính, hoạt động tương tự RET AJMP AJMP SJMP JMP JZ rel Addr11:Nhảy tuyệt đối không điều kiện 2K (PC) ← (PC) + (PC10 ÷ PC0) ← page Address Addr16: Nhảy dài không điều kiện 64K (PC) ← (PC) + (PC15 ÷ PC0) ← page Address rel :nhảy ngắn không điều kiện -128 ÷ +127 byte (PC) ← (PC) + (PC) ← (PC) + byte @A + DPTR :nhaûy không điều kiện đến add (A) + (DPTR) (PC) ← (A) + (DPTR) :nhảy đến A=0 Thực hành lệnh kế neáu A # 47 Vi Điều Khiển 8051 JNZ CJNE Lê Chí Thơng – chithong@gmail.com (PC) ← (PC) + (A) = → (PC) ← (PC) + rel :nhảy đến A # Thực hành lệnh kế neáu A = (PC) ← (PC) + (A) # → (PC) ← (PC) + 2byte A,direct,rel :so sánh nhảy đến rel A # direct (PC ) ← (PC) + (A) < > (direct) → (PC) ← (PC) + Relative Add (A) < (direct) → C = (A) > (direct) → C = (A)= direct Thực hành lệnh CJNE CJNE CJNE A,#data,rel Rn,#data,rel @Ri,#data,rel DJNZ Rn,rel DJNZ direct,rel :tương tự lệnh CJNE A,direct,rel :tương tự lệnh CJNE A,direct,rel :tương tự lệnh CJNE A,direct,rel :giảm Rn nhảy Rn # (PC) ← (PC) + (Rn) ← (Rn) – (Rn) < > → (PC) ← (PC) + byte :tương tự lệnh DJNZ Rn,rel Các lệnh dòch chuyển liệu : Các lệnh dòch chuyển liệu vùng nhớ nội thực thi chu kỳ máy Mẫu lệnh MOV cho phép di chuyển liệu vùng nhớ RAM nội vùng nhớ ghi chức đặc biệt mà không thông qua ghi A Vùng stack 8951 chứa 128 byte RAM nôi, trỏ Stack SP tăng đòa 7FH byte PUSH vào byte POP rõ Các lệnh dòch chuyển nhớ nội nhớ ngoại dùng đònh vò gián tiếp Đòa gián tiếp dùng đòa byte (@Ri) đòa byte (@DPTR) Tất lệnh dòch chuyển hoạt động nhớ thực thi hai chu kỳ máy dùng ghi A làm toán hạng SOURCE toán hạng DESTINATION Việc đọc ghi RAM (RD WR) tích cực suốt trình thực thi lệnh MOVX, bình thường RD WR không tích cực (mức 1) Tất lệnh dòch chuyển không ảnh hưởng đến cờ Hoạt động lệnh tóm tắt sau : 48 Vi Điều Khiển 8051 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVX MOVX MOVX MOVX Lê Chí Thơng – chithong@gmail.com A,Rn : (A) ← (Rn) A,direct : (A) ← (direct) A,@Ri : (A) ← ((Ri)) A,#data : (A) ← #data Rn,A : (Rn) ← (A) Rn,direct : (Rn) ← (direct) Rn,#data : (Rn) ← #data direct,A : (direct) ← (A) direct,Rn : (direct) ← (Rn) direct,direct : (direct) ← (direct) direct,@Ri : (direct) ← ((Ri)) direct,#data : (direct) ← #data @Ri,A : ((Ri)) ← (A) @Ri,direct : ((Ri)) ← (direct) @Ri,#data : ((Ri)) ← #data DPTR,#data16 : (DPTR) ← #data16 A,@A + DPTR : (A) ← (A) + (DPTR) A,@A + PC : (PC) ← (PC) + (A)← (A) + (PC) A,@Ri : (A) ← ((Ri)) A,@DPTR : (A) ← ((DPTR)) @Ri,A : ((Ri)) ← (A) @DPTR,A : ((DPTR)) ← (A) PUSH direct : cất liệu vào stack (SP) ← (SP) + (SP) ← (direct) POP direct : lấy liệu khoûi stack (direct) ← (SP) (SP) ← (SP) - XCH A,Rn XCH XCH XCHD :đổi chỗ nội dung ghi A với Rn A (Rn) A,direct : (A) (direct) A,@Ri : (A) ((Ri)) A,@Ri : đổi chỗ bit thấp A với ((Ri)) (A3 ÷ A0) ((Ri3 ÷ Ri0)) 49 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com Các lệnh luận lý (Boolean Instruction) : 8951 chứa xử lý luận lý đầy đủ cho hoạt động đơn bit, điểm mạnh họ vi điều khiển MSC-51 mà họ khác RAM nội chứa 128 bit đònh vò vùng nhớ ghi chức đặc biệt lên đến 128 bit đònh vò khác Tất đường port bit đònh vò, đường xử lý port đơn bit riêng biệt Các truy xuất bit không lệnh rẽ nhánh không, mà danh mục đầy đủ lệnh MOVE, SET, CLEAR, COMPLEMENT, OR, AND Toàn truy xuất bit dùng đònh vò trực tiếp với đòa từ 00H ÷ 7FH 128 vùng nhớ thấp 80H ÷ FFH vùng ghi chức đặc biệt Bit Carry C ghi PSW từ trạng thái chương trình dùng tích lũy đơn xử lý luận lý Bit carry bit đònh vò có đòa trực tiếp nằm PSW Hai lệnh CLR C CLR CY có tác dụng xóa cờ Carry lệnh đầu byte lệnh sau byte Hoạt động lệnh luận lý tóm tắt sau : CLR CLR C BIT : xóa cờ carry xuống 0, có ảnh hưởng cờ Carry : xóa bit xuống 0, không ảnh hưởng cờ Carry SET SET C BIT : set cờ carry lên 1, có ảnh hưởng cờ Carry : set bit lên 1, không ảnh hưởng cờ Carry CPL CPL C BIT : đảo bit cờ carry, có ảnh hưởng cờ carry : đảo bit, không ảnh hưởng cờ carry ALN ALN ORL ALN C,BIT : (C) ← (C) AND (BIT) C,/BIT: (C) ← (C) AND NOT (BIT) C,BIT : (C) ← (C) OR (BIT) C,/BIT: (C) ← (C) OR NOT (BIT) : coù ảnh hưởng cờ Carry : có ảnh hưởng cờ Carry : có ảnh hưởng cờ Carry : có ảnh hưởng cờ Carry C,BIT : (C) ← (BIT) BIT,C : (BIT) ← (C) : có ảnh hưởng cờ Carry : không ảnh hưởng cờ MOV MOV Carry Các lệnh xen vào (Miscellameous Instruction) : NOP : không hoạt động cả, tốn byte chu thi máy, ta dùng để DELAY khoảng thời gian nhỏ 50 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com Chú ý : (A) : nội dung ghi A ((Ri)) : nội dung đòa RAM nội mà Ri trỏ đến ((DPTR)) : nội dung đòa RAM ngoại mà DPTR trỏ đến Rn : với n = ÷ (tức R0, R1, R2 … : ghi) 51 ... nội 8951 28 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com Thanh ghi điều khiển port nối tiếp (SCON) điạ 98H ghi có điạ bit chứa bit trạng thái bit điều khiển Các bit điều khiển đặt chế... (có trước 8051) - bit cao Tlx (TL0 / TL1) không dùng Xung nhòp Timer Tlx (5 bit) Tlx (8 bit) TFx Cờ báo tràn 21 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com 22 Vi Điều Khiển 8051 Lê Chí... ½ Tosc TH0 TF1 Cờ báo tràn 23 Vi Điều Khiển 8051 Lê Chí Thơng – chithong@gmail.com ) Thanh ghi điều khiển Timer (TCON) : Thanh ghi chứa bit trạng thái bit điều khiển cho Timer Timer Xem bảng

Ngày đăng: 19/11/2017, 20:34

TỪ KHÓA LIÊN QUAN

w