Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
369,5 KB
Nội dung
Chương 1: Giới thiệu vi điều khiển PIC 16F84A Chương 1: GIỚI THIỆU VI ĐIỀU KHIỂN PIC16F84A 1.1 Mở đầu - Cùng với phát triển khoa học công nghệ, họ vi điều khiển ngày phát triển với tính Nhằm đáp ứng yêu cầu ngày cao ứng dụng, đặc biệt hệ thống điều khiển tự động Hiện thị trường có nhiều loại vi điều khiển mạnh để bạn lựa chọn Motorola 68HC , PIC, Atmel AVR, ARM, , SHARC Tuy em nêu tiêu chí mà dựa vào em chọn họ vi điều khiển PIC : ♦ Có bán thị trường ♦ Giá thành ♦ Dễ sử dụng (bao gồm thiết kế mạch nạp, mạch chạy, nhớ flash, tập lệnh, chương trình hỗ trợ nhà sản xuất) ♦ Số lượng giá cơng cụ lập trình, mạch thiết kế mở, số lượng nhà phân phối… ♦ Số lượng người dùng, mà từ có tài liệu dẫn, ghi bổ ích, có trao đổi dễ dàng ♦ Tính vi điều khiển riêng lẻ - Quay trở lại vấn đề so sánh Motorola thường dùng cho thiết kế phức tạp lại khó mua giá cao AVR giống PIC, cịn nhiều người so sánh với PIC Nhưng xét ứng SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A dụng thiết kế AVR hạn chế Số lượng dịng vi điều khiển AVR khơng nhiều, khơng có vi điều khiển cho ứng dụng cụ thể 8051 sở trường sinh viên, hạn chế tính - Trong đồ án em trình bày PIC16F84A, vi điều khiển mà người học PIC thường lựa chọn 1.2 PIC gì? - PIC tên viết tắt “bộ điều khiển thiết bị ngoại vi” (Peripheral Interface Controller), hãng General Instrument đặt tên con vi điều khiển họ: PIC1650 Đây vi điều khiển đầu tiên, mẹ đẻ tất vi điều khiển họ PIC sau Đến ngày nay, PIC1650 phát triển biết tên gọi PIC16C54 Nó thiết kế để dùng cho thiết bị ngoại vi vi xử lý CP1600 Tóm lược dịng PIC: -Mã số bắt đầu 12xxxx có nghĩa opcode 12 bit, bắt đầu với 16xxxx PIC 14 bit 18xxxx PIC 16 bit - Mã số C PIC có nhớ EPROM, có 16C84 EEPROM, F Flash, LF PIC Flash hoạt động điện áp thấp, cũ LV Ngoài ra, số xxFxxx EEPROM, để phân biệt với Flash bạn thấy chữ A tận Vd: 16F877 16F877A,16F84 16F84A,v.v - Các SX PIC dùng nhiều cung cấp nhiều cơng cụ tính tốn Microchip PIC, vậy, VN phổ biến với PIC Microchip Ngơn ngữ lập trình: -Ngơn ngữ lập trình đa dạng MPASM, C, Basic, Pascal… Mọi người thích dùng ngơn ngữ cấp cao đơn giản hơn, em sử dụng trình biên dịch mikropascal Ngồi cịn có trình biên dịch khác như: MPLAB, CCS C, BASCOM, C17, C18, C30… C18 1.3 Tóm tắt phần cứng PIC16F84A 1.3.1Cấu trúc bên đặc trưng ♦Kiến trúc PIC SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A -PIC tổ chức phần cứng theo kiến trúc Harvard, tập lệnh RISC Sự khác biệt kiến trúc Harvard kiến trúc Von Neumann chỗ nhớ liệu nhớ chương trình nằm riêng biệt, hay nằm chung -Chúng ta thấy rằng, với kiến trúc von-Neumann, nhớ liệu nhớ chương trình nằm chung, CPU tương tác với nhớ, làm việc với nhớ liệu, nhớ chương trình nên tốc độ xử lý chậm Trong đó, kiến trúc Harvard cho phép CPU tương tác với hai nhớ liệu nhớ chương trình lúc, giúp tốc độ xử lý nhanh Kiến trúc von-Neumann ngược lại, cho phép ta cân đối nhớ liệu nhớ chương trình cách linh động Tuy nhiên, điều thực hữu ích cho CPU xử lý tốc độ cực cao, dung lượng nhớ cực lớn Còn với CPU tốc độ chậm vi điều khiển, nhớ hạn chế, kiến trúc von-Neumann dường không đem lại hiệu tốc độ xử lý dung lượng quản lý nhớ kiến trúc Harvard Hình 1.1: Kiến trúc Harvard kiến trúc Von-Neumann -Một điểm ý nữa, với kiến trúc Harvard, nhớ chương trình nhớ liệu tách riêng, đó, tập lệnh kiến trúc Harvard tối ưu tùy theo yêu cầu kiến trúc vi điều khiển Bằng chứng, độ dài lệnh dịng PIC16 ln ln 14 bit Trong đó, độ dài lệnh vi điều khiển kiến trúc von-Neumann bội số byte (8 bit) -Điều dẫn đến hệ quả, nhớ chương trình PIC 4Kword, vị trí nhớ sử dụng triệt để, viết 4x1024 dịng lệnh chương trình Trong đó, kiến trúc von-Neumann với nhớ SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A 4KB trung bình cho ta viết 2x1024 dịng lệnh, tức tương đương với 2K dòng lệnh Tỉ lệ tùy thuộc vào ứng dụng, nhiên, số trung bình phản ánh rằng, kiến trúc Harvard phần thể lợi điểm so với kiến trúc vonNeumann vi điều khiển ♦Sơ đồ khối PIC16F84A Hình 1.2: Sơ đồ khối PIC16F84A SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A 1.4 Sơ đồ chân PIC16F84A Hình 1.3: Sơ đồ chân PIC16F84A OSC1/CLKIN : Chân nối với dao động thạch anh (Oscillator crystal input) OSC2/CLKOUT :Chân nối với dao động thạch anh (Oscillator crystal input) MCLR(inv) : Chân reset mức thấp (Master clear input) Ngõ vào điện áp lập trình chế độ lập trình (Programming voltage input) RA0 – RA3 : Cổng giao tiếp hai chiều (Bi-directional I/O port) RA4/T0CKI : Cổng giao tiếp hai chiều (Bi-directional I/O port) Giữ vai trò định thời dựa vào xung ( Clock input to the TMR0 timer/counter) RB0/INT : Cổng giao tiếp hai chiều (Bi-directional I/O port) Chân ngắt (External interrupt pin) RB1 – RB7 :Cổng giao tiếp hai chiều (Bi-directional I/O port) VSS : Chân mass VDD :Chân nguồn (+2.0V to +5.5V) SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A 1.5 Tổ chức nhớ SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A Hinh 1.4: Tổ chức nhớ PIC16F84A ♦ Bộ nhớ chương trình(Flash Program Memory) Bộ nhớ chương trình loại nhớ kiểu FLASH dùng để chứa chương trình Kích thước nhớ chương trình 1024 vị trí nhớ, vị trí nhớ có độ lớn 14 bit (word).Mỗi nguồn nội dung nhớ khơng bị Có khả lập trình nhiều lần,số lần ghi giới hạn 1000 lần Vị trí 0000h vị trí 0004h dành cho reset vector ngắt ♦ Reset Vector ( 0000h ) Khi xảy reset, cách bật nguồn nguyên nhân khác chương trình bắt đầu vị trí PIC16F84A có cách reset sau : -Reset bật nguồn, POR (Power-On Reset) -Reset có mức logic chân MCRL -Reset chế độ ngủ (Sleep) -Reset watchdog bị tràn (WDT) Trong cách reset bật nguồn (POR) có mức logic chân MCRL thường sử dụng ♦ Peripheral Interrupt Vector ( 0004h ) Khi cho phép ngắt, chương trình ngắt bắt đầu vị trí ♦ Bộ nhớ liệu(Data memory) Bộ nhớ liệu bao gồm nhớ EEPROM RAM Bộ nhớ EEPROM gồm 64 vị trí bit nội dung chúng không bị mất nguồn Bộ nhớ EEPROM truy cập trực tiếp, truy cập gián tiếp thông qua ghi EEADR EEDATA ♦ RAM(Random Access Memory) File Registers Bộ nhớ RAM dòng PIC chia làm nhiều bank,để truy cập đến vùng nhớ ta phải làm công việc chọn bank PIC16F84A nhớ RAM chia làm bank, bank có độ lớn 80 byte chiếm vị trí từ 0x00h tới 0x4Fh, 12 vị trí bank ghi chức đặc biệt SFR (Special Function Registers) Các vị trí từ 0x0Ch tới 0x4Fh vùng RAM đa mục đích, SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A vị trí vùng RAM đa mục đích truy cập bất chấp bank chọn ♦ Bộ đếm chương trình (Program Counter) Bộ đếm chương trình (PC) ghi có độ dài 13 bit chứa địa lệnh kích hoạt Về mặt vật lí, kết hợp bit ghi PCLATH bit ghi PCL ♦ Stack Stack chứa địa trở lệnh nhảy kích hoạt PIC16F84 có ngăn chứa 13 bit với mức, nói cách khác nhóm vị trí nhớ, có độ rộng 13 bít.Vai trị lưu giữ giá trị đếm chương trình sau thực lệnh nhảy từ chương trình tới địa chương trình con, nhằm mục đích chương trình biết xác điểm trở sau thực hiên chương trình Lệnh RETURN đánh dấu điểm kết thúc chương trình Lệnh CALL lệnh nhảy tới chương trình Khi gặp lệnh CALL, địa trở (địa câu lệnh theo sau lệnh con) chứa vào đỉnh stack, lệnh RETURN bắt gặp địa đỉnh stack đặt vào PC chương trình tiếp tục bình thường Do PIC16F84 có ghi stack nên chương trình gọi lồng liên tiếp lần ,vì sau lần gọi thứ lệnh gọi làm nội dung ngăn stack thứ tám Do gặp lệnh return PC gửi tới chương trình địa trở sai, điều làm cho chương trình hoạt động sai SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16F84A Hình 1.5: Hoạt động stack 1.6 Các ghi chức đặc biệt (SFR) hoạt động chúng 12 vị trí nhớ bank dành cho ghi chức đặc biệt (FSR), ghi quan trọng hoạt động họ vi điều khiển PIC ♦ Thanh ghi STATUS (địa nhớ 03h 83h) Hình 1.6: Thanh ghi STATUS -Bit IRP, RP1, RP0: bit dung để chon bank ,ở PIC16F84A bit IRP không sử dụng,việc chọn bank phụ thuộc vào hai bit RP1 RP0 00: chọn bank 0; 01: chọn bank1 -Bit TO ( time out bit) :cờ báo tràn WDT 1: không xảy tràn 0: tràn xảy -Bit PD (Power-down) 1: sau bật nguồn 0: kích hoạt lệnh SLEEP SVTH: Nguyễn Hữu Tiến Trang 10 Chương 1: Giới thiệu vi điều khiển PIC 16F84A Bộ định thời thường phần phức tạp vi điều khiển Hầu hết ứng dụng tạo mối quan hệ cần thiết không gian thực vi điều khiển Về mặt vật lí, định thời ghi mà giá trị liên tục tăng tới 255 sau bắt đầu lại từ đầu :0,1,2,3,…,255…0,1,2,3,…255 Hình sơ đồ khối định thời (TMR0) watchdog (WDT) Các ghi INTCON, OPTION_REG, TRISA ghi tác động trực tiếp tới định thời Bộ chia tần số (Prescaler) sử dụng cho định thời TMR0 WDT phụ thuộc vào bit PSA ghi OPTION_REG Bộ chia tần đếm lập trình được, tỉ số đếm phụ thuộc vào bít PS0, PS1, PS2 ghi OPTION_REG Bộ định thời TMR0 định thời bit đếm lên tới giá trị 256 Khi giá trị định thời tràn từ 255 sinh ngắt Nhận thấy giá trị cực đại định thời 256, thời gian định thời ngắn Ví dụ ,ở tần số hoạt động 20Mhz, tần số ngõ vào đếm 5Mhz Chu kì xung đồng hồ 200ns (1/5Mhz =0.2µsec) Vì làm cho định thời tràn sau 51.1µsec (0.2 * 256) Do để tăng thời gian định thời ta sử dụng chia tần Prescaler : Bảng 1.19: Tỉ lệ thời gian (µs) cho TMR0 WDT Ví dụ ,khi chia tần thiết lập 1:256, có nghĩa sau 256 xung ngõ vào định thời tăng lên Do định thời tràn sau 51.1µsec * 256 = 13 ms Bộ watch dog timer (WDT) dao động chạy độc lập với hệ thống Chức tự động RESET hoạt động vi điều khiển xảy cố Bởi thơng thường, xảy lỗi vi điều khiển thường trạng thái dừng làm việc RESET trở lại Bộ WDT hoạt động dựa nguyên lí dơn giản là: SVTH: Nguyễn Hữu Tiến Trang 19 Chương 1: Giới thiệu vi điều khiển PIC 16F84A Nếu xảy tràn WDT (mặc định 18ms) vi điều khiển RESET Do RESET xảy hai trường hợp hoạt động hoạt động sai.Để tránh trường hợp vi điều khiển bị RESET hoạt động ta thực ghi vào ghi WDT giá trị “0” gần tràn Thực tế, WDT thường không sử dụng có lỗi xảy phần mềm thơng thường bạn nhận lỗi thơng qua cách hoạt động Nếu sử dụng WDT bạn khơng nhận chương trình hoạt động sai 1.9 Hoạt động ngắt Hình 1.20: Hoạt động ngắt Ngắt chế vi điều khiển cho phép đáp ứng lại vài kiện lúc xảy ra,bất chấp vi điều khiển thực thời điểm Đây chế quan trọng, làm tăng tính mềm dẻo ứng dụng sử dụng vi điều khiển Thanh ghi điều khiển ngắt PIC16F84 gọi ghi INTCON truy cập bất chấp bank chọn ♦ Thanh ghi INTCON SVTH: Nguyễn Hữu Tiến Trang 20 Chương 1: Giới thiệu vi điều khiển PIC 16F84A Hình 1.21: Thanh ghi INTCON -Bit GIE (global interrupt enable bit): Bit cho phép hay không cho phép ngắt toàn cục : cho phép tất ngắt : cấm tất ngắt -Bit EEIE (EEPROM Write Complete Interrupt Enable ) : bit cho phép ngắt thời điểm kết thúc việc ghi vào EEPROM : cho phép ngắt : cấm ngắt -Bit TOIE (TMR0 Overflow Interrupt Enable): bit cho phép ngắt tràn định thời : cho phép ngắt : cấm ngắt -Bit INTE (INT External Interrupt Enable): bit cho phép ngắt chân RB0/INT : cho phép ngắt : cấm ngắt -Bit RBIE (RB Port Change Interrupt Enable): bít cho phép ngắt có thay đổi portb : cho phép ngắt : cấm ngắt -Bit TOIF (TMR0 Overflow Interrupt Flag): cờ tràn định thời : tràn định thời : chưa xảy tràn -Bit INTF (INT External Interrupt Flag): cờ báo hiệu có có ngắt ngồi : có ngắt ngồi xảy : khơng có ngắt ngồi -Bit RBIF (RB Port Change Interrupt Flag): cờ báo hiệu có thay đổi trạng thái portb : có thay đổi : khơng có thay đổi SVTH: Nguyễn Hữu Tiến Trang 21 Chương 1: Giới thiệu vi điều khiển PIC 16F84A -Khi có ngắt xảy chương trình ngắt bắt đầu địa 0004h Như ta thấy nguồn ngắt sinh phải có đồng thời hai bit Một bit cho phép ngắt, bit lại xác định ngắt xảy Bit GIE sử dụng phép hay không cho phép ngắt xảy đồng thời Khi có ngắt xảy ra, bit GIE xóa để cấm ngắt khác xảy Sau ngắt xử lí cờ ngắt nên xóa trước trở chương trình Đồng thời PIC khơng hỗ trợ lệnh POP lệnh PUSH, hai lệnh thường dùng để lưu giữ giá trị ghi quan trọng trước vào chương trình ngắt (PUSH) lấy lại nội dung ghi trước khỏi chương trình ngắt (POP), hai lệnh thường lập trình phần mềm Đây điểm bất lợi họ PIC PIC16F84A có nguồn sinh ngắt ♦ Kết thúc việc ghi liệu vào EEPROM Việc ghi vào vị trí EEPROM chiếm 10ms, khoảng thời gian lớn vi điều khiển Vi điều khiển đợi cho việc ghi EEPROM hoàn thành khơng làm việc khoảng thời gian Vì chế ngắt thêm vào nhằm cho phép vi điều khiển tiếp tục kích hoạt chương trình việc ghi EEPROM tiến hành Khi việc ghi kết thúc, ngắt báo cho vi điều khiển biết việc ghi vào EEPROM kết thúc cách set bit EEIF ghi EECON1 Ta cấm ngắt cách reset bit EEIE ghi INTCON ♦ Do tràn định thời Khi xảy tràn định thời (từ FFh xuống 00h) bit TOIF ghi INTCON set lên Đây ngắt quan trọng, nhiều vấn đề thực tế giải ngắt Ngắt cho phép hay không phụ thuộc vào bit TOIE ghi INTCON ♦ Do thay đổi trạng thái chân từ RB4 tới RB7 PORTB Khi xảy thay đổi trạng thái chân từ RB4 tới RB7 bit RBIF ghi INTCON set Để sử dụng ngắt chân phải thiết lập ngõ vào Nếu chúng thiết lập ngõ ngắt khơng xảy SVTH: Nguyễn Hữu Tiến Trang 22 Chương 1: Giới thiệu vi điều khiển PIC 16F84A ♦ Ngắt chân RB0/INT Ngắt ngồi chân RB0/INT kích khởi sườn lên (nếu bít INTEDG ghi OPTION 1), sườn xuống (nếu bit INTEDG 0) Khi có tín hiệu xuất chân INT, bit INTF ghi INTCON set Ngắt cấm cách reset bit INTE ghi INTCON 1.10 Tập lệnh họ PIC16FXX Mnemonic Instruction code Operation explanation Flag Operands Byte-oriented file register operations ADDWF f, d Add W and f C, DC, Z ANDWF f, d AND W with f Z CLRF f Clear f Z CLRW - Clear W Z COMF f, d Complement f Z DECF f, d Decrement f Z DECFSZ f, d Decrement f, Skip if INCF f, d Increment f INCFSZ f, d Increment f, Skip if IORWF f, d Inclusive OR W with f Z MOVF f, d Move f Z MOVWF f Move W to f NOP - No Operation Z RLF f, d Rotate Left f through Carry C RRF f, d Rotate Right f through Carry C SUBWF f, d Subtract W from f SWAPF f, d Swap nibbles in f SVTH: Nguyễn Hữu Tiến C, DC, Z Trang 23 Chương 1: Giới thiệu vi điều khiển PIC 16F84A XORWF f, d Exclusive OR W with f Z Bit-oriented file register operations BCF f, b Bit Clear f BSF f, b Bit Set f BTFSC f, b Bit Test f, Skip if Clear BTFSS f, b Bit Test f, Skip if Set Literal and control operations ADDLW k Add literal and W C, DC, Z ANDLW k AND literal with W Z CALL k Call subroutine CLRWDT - Clear Watchdog Timer GOTO k Go to address IORLW k Inclusive OR literal with W MOVLW k Move literal to W RETFIE - Return from interrupt RETLW k Return with literal in W RETURN - Return from Subroutine SLEEP - Go into stanby mode SUBLW k Subtract W from literal C, DC, Z XORLW k Exclusive OR literal with W Z Z Bảng 1.22: Tóm tắt tập lệnh PIC16F84A Trong đó: d (Destination Select): Việc chọn nơi chứa kết sau kích hoạt lệnh phụ thuộc vào d Nếu d =0 kết chứa vào ghi W, d =1 kết chứa vào ghi đa mục đích Ví dụ : ADDWF COUNT,W ( d=0 kết chứa vào W ) ADDWF COUNT,F ( d=1 kết chứa vào F ) SVTH: Nguyễn Hữu Tiến Trang 24 Chương 1: Giới thiệu vi điều khiển PIC 16F84A f (Register File): tới vị trí vùng RAM đa chức năng, thơng thường viết chương trình ASM vị trí thường đánh nhãn Ví dụ: ADDWF COUNT,F ( COUNT nhãn gán cho vị trí RAM) Sau thực lệnh kết chứa vào vị trí RAM gán nhãn COUNT b (Bit address) :chỉ vị trí bit byte ghi k (Literal field): Là số sử dụng cho tính tốn,nó số nhãn Trong phần trước, em giới thiệu PIC16F84A, nhiên số chân I/O PIC16F84A không đủ để thực việc thiết kế mạch Vì vậy, em sử dụng PIC16F877A (có 40 chân) q trình thiết kế Sau em giới thiệu số chức vi điều khiển PIC16F877A phục vụ cho việc thiết kế 1.11 SƠ ĐỒ CHÂN PIC 16F877A SVTH: Nguyễn Hữu Tiến Trang 25 ... đồ khối PIC16F84A Hình 1. 2: Sơ đồ khối PIC16F84A SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16 F84A 1. 4 Sơ đồ chân PIC16F84A Hình 1. 3: Sơ đồ chân PIC16F84A OSC1/CLKIN :... CCS C, BASCOM, C17, C18, C30… C18 1. 3 Tóm tắt phần cứng PIC16F84A 1. 3.1Cấu trúc bên đặc trưng ♦Kiến trúc PIC SVTH: Nguyễn Hữu Tiến Trang Chương 1: Giới thiệu vi điều khiển PIC 16 F84A -PIC tổ chức... CP1600 Tóm lược dịng PIC: -Mã số bắt đầu 12 xxxx có nghĩa opcode 12 bit, bắt đầu với 16 xxxx PIC 14 bit 18 xxxx PIC 16 bit - Mã số C PIC có nhớ EPROM, có 16 C84 EEPROM, F Flash, LF PIC Flash hoạt