TÌM HIỂU VI XỬ LÝ MICROCHIP PIC 16F877A
Trang 1KIẾN TRÚC MÁY TÍNH
Đềề tài:
TÌM HIỂU VI XỬ LÝ MICROCHIP PIC 16F877A
Thực hiện: Nhóm 4
Trang 2 Tổng quan về vi điều khiển PIC
Vi điều khiển PIC16F877A
Nội dung
Trang 3 PIC (Programable Intelligent Computer) do hãng General Instrument đặt tên cho vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600.
Vi điềều khiềển này sau đó đượợc nghiền cưứu và phát triềển thềm tưề đó hình thành nền dòng vi điềều khiềển PIC ngày nay.
Tổểng quan vềề vi điềều khiềển PIC
Trang 4 Mổợt sổứ ưu điềểm cuểa hoợ vi điềều khiềển PIC
◦ Hoợ vi điềều khiềển này có thềể tìm mua dềễ dàng taợi thiợ trượềng Viềợt Nam.
◦ Giá thành khổng quá đắứt.
◦ Có đầềy đuể tính nắng cuểa mổợt vi điềều khiềển khi hoaợt đổợng đổợc lầợp.
◦ Là mổợt sượ bổể sung rầứt tổứt vềề kiềứn thưức cũng như vềề ưứng duợng cho hoợ vi điềều khiềển mang tính truyềền thổứng: hoợ vi điềều khiển 8501.
Tổểng quan vềề vi điềều khiềển PIC
Trang 5 Mổợt sổứ ưu điềểm cuểa hoợ vi điềều khiềển PIC
◦ Hiềợn nay taợi Viềợt Nam cũng như trền thềứ giợứi, hoợ vi điềều khiềển này đượợc sưể duợng khá rổợng rãi Điềều này taợo nhiềều thuầợn lợợi trong quá trình tìm hiềểu và phát triềển các ưứng duợng.
◦ Sượ hổễ trợợ tưề nhà saển xuầứt vềề trình biền diợch, các cổng cuợ lầợp trình, naợp chượng trình tưề đợn giaển đềứn phưức taợp.
◦ Các tính nắng đa daợng cuểa vi điềều khiềển PIC, và các tính nắng này khổng ngưềng đượợc phát triềển.
Tổểng quan vềề vi điềều khiềển PIC
Trang 6 Kiềứn trúc PIC
◦ Tổể chưức phầền cưứng cuểa PIC đượợc thiềứt kềứ theo theo kiềứn trúc Harvard
◦ Qua viềợc tách rợềi bổợ nhợứ chượng trình và bổợ nhợứ dưễ liềợu, CPU có thềể cùng mổợt lúc truy xuầứt caể hai bổợ nhợứ, giúp tắng tổức đổợ xưể lý cuểa vi điềều khiềển lền gầứp đổi
Tổểng quan vềề vi điềều khiềển PIC
Trang 7 Xưể lý lềợnh theo cợ chềứ Pipelining, mổợt chu kỳ lềợnh cuểa vi điềều khiềển seễ bao gổềm 4 xung clock.
Tổểng quan vềề vi điềều khiềển PIC
Trang 8 Ngổn ngưễ lầợp trình cho PIC
◦ Ngổn ngưễ lầợp trình cho PIC rầứt đa daợng Ngổn ngưễ lầợp trình cầứp thầứp có MPLAB, các ngổn ngưễ lầợp trình cầứp cao hợn bao gổềm C, Basic, Pascal,
◦ Ngoài ra còn có mổợt sổứ ngổn ngưễ lầợp trình đượợc phát triềển dành riềng cho PIC như
PICBasic, MikroBasic,
Tổểng quan vềề vi điềều khiềển PIC
Trang 9 Maợch naợp cho PIC
◦ Có thềể sưể duợng các maợch naợp đượợc cung cầứp bợểi nhà saển xuầứt là hãng Microchip như: PICSTART PLUS, MPLAB ICD 2, MPLAB PM 3, PRO MATE II
◦ Có thềể dùng các saển phầểm này đềể naợp cho vi điềều khiềển khác thổng qua chượng trình MPLAB
◦ Dòng saển phầểm chính thổứng này có ưu thềứ là naợp đượợc cho tầứt caể các vi điềều khiềển PIC, tuy nhiền giá thành rầứt cao và thượềng gắợp rầứt nhiềều khó khắn trong quá trình mua saển phầểm.
Tổểng quan vềề vi điềều khiềển PIC
Trang 10 Maợch naợp cho PIC
◦ Còn có rầứt nhiềều maợch naợp đượợc thiềứt kềứ dành cho vi điềều khiềển PIC: JDM programmer, WARP-13A và MCP-USB, P16PRO40, Universal…
◦ Các maợch naợp kềể trền có ưu điềểm là đợn giaển, reể tiềền, hoàn toàn có thềể tượ lắứp ráp, và moợi thổng tin maợch naợp đềều dềễ dàng tìm đượợc trền Internet.
◦ Tuy nhiền các maợch naợp trền có nhượợc điềểm là haợn chềứ vềề sổứ vi điềều khiềển đượợc hổễ trợợ, mổễi maợch naợp cầền đượợc sưể duợng vợứi mổợt chượng trình naợp thích hợợp.
Tổểng quan vềề vi điềều khiềển PIC
Trang 11 Vi điều khiển PIC16F877A
Phần 2
Trang 12 Mổợt vài thổng sổứ cuểa PIC16F877A
◦ Đầy là vi điềều khiềển thuổợc hoợ PIC16Fxxx vợứi tầợp lềợnh gổềm 35 lềợnh Mổễi lềợnh có đổợ dài 14bit và đềều đượợc thược thi trong mổợt chu kì xung clock Tổức đổợ hoaợt đổợng tổứi đa cho phép là 20MHz vợứi mổợt chu kì lềợnh là 200ns.
◦ Bổợ nhợứ chượng trình 8Kx14bit, bổợ nhợứ dưễ liềợu 368x8 byte RAM và bổợ nhợứ dưễ liềợu EEPROM vợứi dung lượợn g 256x8 byte Sổứ PORT I/O là 5 vợứi 33 pin I/O.
Vi điềều khiềển PIC16F877A
Trang 13 Mổợt vài thổng sổứ cuểa PIC16F877A
◦ Bền caợnh đó là mổợt vài đắợc tính khác cuểa vi điềều khiềển như:
Bổợ nhợứ flash vợứi khaể nắng ghi xóa đượợc 100.000 lầền.
Bổợ nhợứ EEPROM vợứi khaể nắng ghi xóa đượợc 1.000.000 lầền.
Dưễ liềợu bổợ nhợứ EEPROM có thềể lưu trền 40 nắm.
Khaể nắng tượ naợp chượng trình vợứi sượ điềều khiềển cuểa phầền mềềm.
Naợp đượợc chượng trình ngay trền maợch ICSP thổng qua 2 chần.
Watchdog Timer vợứi bổợ dao đổợng trong.
Chưức nắng baểo mầợt mã chượng trình.
Chềứ đổợ sleep.
Có thềể hoaợt đổợng vợứi nhiềều daợng Oscillator (bổợ dao đổợng) khác nhau.
Vi điềều khiềển PIC16F877A
Trang 14Sợ đổề khổứi
Trang 16Sợ đổề bổợ nhợứ chượng trình
Trang 17Sơ đồ bộ nhớ dữ liệu
Trang 18 Là phương tiện để vi điều khiển tương tác với bên ngoài và thực hiện chức năng chính của nó
Một số chân còn có chức năng khác
Tùy cách bố trí và chức năng mà số chân khác nhau.
Có 5 cổng: PORTA, PORTB, PORTC, PORTD, PORTE
Chức năng từng chân trong mỗi cổng do các thanh ghi SFR liên quan đến nó điều khiển.
◦ Muốn xác lập chân đó là input: set bit điều khiển ứng với chân đó trong thanh ghi TRISX tương ứng
◦ Muốn xác lập chân đó là output: clear bit điều khiển
Các cổng nhập xuất
Trang 20 Bộ định thời, bộ đếm của vi điều khiển.
Timer0: Bộ đếm, bộ định thời 8 bit, lưu trong thanh ghi TMR0
◦ Chế độ Timer: clear bit TOSC (OPTION_REG<5>) Khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì đồng hồ
◦ Chế độ counter: set bit TOSC (OPTION_REG<5>), khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1
Timer1: Bộ đếm, bộ định thời 16 bit, lưu trong 2 thanh ghi TMR1H:TMR1L
Timer2: Bộ đếm, bộ định thời 8 bit, lưu trong thanh ghi TMR2
Timer0, Timer1, Timer2
Trang 21 Bộ chuyển đổi giữa tín hiệu tương tự và tín hiệu số
8 ngõ vào analog Hiệu điện thế chuẩn VREF có thể do VDD,VSS hay được xác lập trên 2 chân
RA2, RA3
Kết quả là 10 bit số tương ứng, được lưu trong 2 thanh ghi ADRESH:ADRESL
ADC(Analog to Digital Converter)
Trang 22 Gồm 2 bộ so sánh tín hiệu analog, được đặt ở PORTA
Ngõ vào: chân RA3:RA0
Ngõ ra: RA4:RA5
Thanh ghi điều khiển bộ so sánh là CMCON
COMPARATOR
Trang 23 Gồm các thao tác trên các xung đếm được cung cấp bởi bộ đếm Timer1 và Timer2.
Capture: khi có 2 hiện tượng xảy ra ở pin RC2/CCP1, giá trị của thanh TMR1 sẽ được đưa vào
thanh CCPR1(CPPR2)
Compare: giá trị trong thanh CCPRx sẽ thường xuyên được so sánh với giá trị trong thanh
TMR1.
PWM(Pulse Width Modulation – khối điều chế độ rộng xung): tín hiệu sau điều chế sẽ được
đưa ra các pin của khối CCP (cần ấn định pin này là out)
CCP(Capture/Compare/PWM)
Trang 24 USART(Universal Synchronuos Asynchronous Receiver Transmitter) – Giao tiếp nhận phát
đồng bộ/không đồng bộ
MSSP(Master Synchronous Serial Port)
Giao diện đồng bộ nối tiếp dùng với các thiết bị ngoại vi hay các vi điều khiển khác
Giao tiếp nối tiếp
Trang 25 Cổng giao tiếp song song, thông qua PORTD và PORTE
Chịu sự điề khiển của thiết bị ngoài qua các pin của PORTE
Dữ liệu được đọc/ghi thông qua PORTD
PSP(Parallel slave port)
Trang 26 Các bit lựa chọn đặc tính của CPU tại địa chỉ 2007h, chỉ có thể truy xuất trong quá trình lập
trình cho vi điều khiển
Một số đặc tính của CPU
Trang 27 Vài nét sơ lược về tập lệnh của vi điều khiển PIC
Tập lệnh của vi điều khiển PIC
Tập lệnh của vi điều khiển PIC
Trang 28 Pic là vi điều khiển có tập lệnh rút gọn RISC, gồm 35 lệnh và được chia làm 3 nhóm cơ bản:
1. Nhóm lệnh thao tác trên bit
2. Nhóm lệnh thao tác trên byte
3. Nhóm lệnh điều khiển
Mỗi lệnh được mã hóa thành 14bit word bao gồm các bit opcode và các bit mô tả hay vài tham số dòng lệnh
Vài nét sơ lược về tập lệnh
Trang 29Vài nét sơ lược về tập lệnh (tiếp)
Nhóm lệnh thao tác trên byte có 2 tham số: d và f
• d=0 kết quả đưa vào thanh ghi W
• d=1 kết quả được đưa vào thanh ghi được mô tả bởi
Trang 30 Nhóm lệnh điều khiển chỉ có 1 tham số duy nhất là k để mô tả tác động của vi điều khiển
Mỗi lệnh được vi điều khiển thực thi xong trong vòng 1 chu kỳ lệnh Lệnh làm thay đổi giá trị bộ đếm chương trình cần 2 chu kỳ
lệnh Chu kỳ lệnh gồm 4 xung clock của oscillator
Vài nét sơ lược về tập lệnh (tiếp)
Trang 311 Lềợnh ADDLW
◦ Cú pháp: ADDLW k (0-255)
◦ Tác duợng: cổợng giá triợ k vào thanh ghi W
◦ Bit traợng thái: C,DC,Z
2 Lềợnh ADDWF
◦ Cú pháp: ADDLW f,d
◦ Tác duợng: cổợng 2 giá triợ thanh ghi W và f Kềứt quaể chưứa vào W(d=0) và f(d=1)
◦ Bit traợng thái: C,DC,Z
Tầợp lềợnh cuểa vi điềều khiềển PIC
Trang 323 Lềợnh ANDLW
◦ Cú pháp: ANDLW k (0-255)
◦ Tác duợng: thược hiềợn phép toán AND giưễa thanh ghi W và giá triợ k Kềứt quaể chưứa trong thanh ghi W
◦ Bit traợng thái: Z
4 Lềợnh ANDWF
◦ Cú pháp: ANDW f,d (f:0-127, d:0,1)
◦ Tác duợng: thược hiềợn phép toán AND giưễa các giá triợ chưứa trong 2 thanh ghi W và f Kềứt quaể đượợc
đưa và thanh ghi W (d=0) hoắợc thanh ghi f (d=1)
◦ Bit traợng thái: Z
Tầợp lềợnh cuểa vi điềều khiềển PIC (tiềứp)
Trang 335 Lệnh BCF
◦ Cú pháp: BCF f,b (f: 0-127, b: 0-7)
◦ Tác dụng: xóa bit b trong thanh ghi f về giá trị 0
◦ Bit trạng thái: không có
6 Lệnh BSF
◦ Cú pháp: BSF f,b (f: 0-127, b: 0-7)
◦ Tác dụng: set bit b trong thanh ghi f
◦ Bit trạng thái: không có
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 359 Lệnh CALL
◦ Cú pháp: CALL k (0-2047)
◦ Tác dụng: gọi một chương trình con Trước hết, địa chỉ quay trở về từ chương trình con (PC+1) được cất vào Stack, giá trị mới
được đưa vào bộ đếm gồm 11bit của biến k và 2bit PCLATH<4:3>
◦ Bit trạng thái: không có
Trang 3815 Lệnh DECFSZ
◦ Cú pháp: DECFSZ f,d (f: 0-127, d:0,1)
◦ Tác dụng: giá trị thanh ghi f được giảm đi 1 đơn vị Nếu kết quả sau khi giảm khác 0, lệnh tiếp theo được thực thi, nếu kết quả bằng
0 lệnh tiếp theo được bỏ qua thay vào đó là lệnh NOP Kết quả được đưa vào thanh ghi W(d=0) hoặc f(d=1)
◦ Bit trạng thái: không có
16 Lệnh GOTO
◦ Cú pháp: GOTO k (k: 0-2047)
◦ Tác dụng: nhảy tới 1 label được định nghĩa bởi tham số k và 2bit PCLATH<4:3>
◦ Bit trạng thái: không có
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 39◦ Tác dụng: tăng giá trị thanh ghi f lên 1 đơn vị Nếu kết quả khác 0, lệnh tiếp theo được thực thi Nếu kết quả bằng 0 lệnh tiếp theo
được bỏ qua thay vào đó bằng lệnh NOP Kết quả sẽ được đưa vào thanh ghi f(d=1) hoặc thanh ghi W(d=0)
◦ Bit trạng thái: không có
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 42 Bit trạng thái: TO, PD
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 4427 Lệnh SWAP
.Cú pháp: SWAP f,d (0 ≤ f ≤ 127, d [0,1])∈
.Tác dụng: đảo 4 bit thấp với 4 bit cao trong thanh ghi F Kết quả được chứa trong thanh ghi W nếu d=0 hoặc thanh ghi F nếu d=1
.Bit trạng thái: không có
Trang 4631 Lệnh INCLUDE
Cú pháp: #INCLUDE <filename> hoặc #INCLUDE “filename”
Tác dụng: đính kèm một file khác vào chương trình, tương tự như việc ta copy file đó vào vị trí xuất hiện lệnh INCLUDE Nếu dùng cú pháp <filename> thì file đình kèm là file hệ thống (sýtem file), nếu dùng cú pháp
“filename” thì file đính kèm là file của người sử dụng.
Thông thường chương trình được đính kèm theo một “header file” chứa các thông tin định nghịa các biến (thanh ghi W, thanh ghi F, ) và các địa chỉ cảu các thanh ghi chức năng đặc biệt trong bộ nhớ dữ liệu Nếu không có header file, chương trình sẽ khó đọc và khó hiểu hơn.
32 Lệnh CONSTANT
Cú pháp: CONSTANT <name>=<value>
Tác dụng: khai báo một hằng số, có nghĩa là khi phát hiện chuỗi kí tự “name” trong chương trình, trình biên dịch
sẽ tự động thay bằng chuỗi kí tự bằng giá trị “value” đã được định nghĩa trước đó.
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 47 Cú pháp: <name variable> SET <value>
Tác dụng: gán giá trị cho một tên biến Tên của biến có thể thay đổi được trong quá trình thực thi chương trình
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 4835 Lệnh EQU
Cú pháp: <name constant> EQU <value>
Tác dụng: gán giá trị cho tên của tên của hằng số Tên của hằng số không thay đổi trong quá trình thực thi chương trình.
36 Lệnh ORG
Cú pháp: ORG <value>
Tác dụng: định nghĩa một địa chỉ chứa chương trình trong bộ nhớ chương trình của vi điều khiển.
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 49 Cú pháp: PROCESSOR <processor type>
Tác dụng: định nghĩa vi điều khiển nào sử dụng chương trình.
Tập lệnh của vi điều khiển PIC (tiếp)
Trang 50Cấu trúc của một chương trình ASSEMBLY viết cho vi điều khiển
PIC
Trang 52Mô hình LED 7 đoạn
Trang 53Anode
Bảng dữ liệu LED 7 đoạn
Trang 54processor 16f877a
include <p16f877a.inc>
CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &
_WRT_OFF & _LVP_OFF & _CPD_OFF