TỔNG QUAN VỀ CỔNG XUẤT NHẬP tt tt tt Đối với các I/O được đa hợp với các ngoại vi tương tự thì khi reset các I/O này sẽ mặc định là ngõ vào tương tự Analog Input Để thay đổi cấu hình củ
Trang 1• Bộ nhớ chương trình (Program Memory)
8192 (Words – 14 bit) Flash ROM
• Bộ nhớ dữ liệu (Data Memory)
368 (Bytes – 8 bit) RAM
256 (Bytes – 8 bit) EEPROM
• 24/35 chân xuất/nhập (I/O)
• 15 nguồn ngắt (Interrupt)
• 2 bộ ñịnh thời/đếm 8 bit (Timer 0 và Timer 2)
• 1 bộ ñịnh thời/đếm 16 bit (Timer 1)
• 1 bộ ñịnh thời giám sát (WatchDog Timer)
• 2 bộ bắt giữ/so sánh/điều xung (Capture/Compare/PWM)
Trang 2• 1 bộ giao tiếp nối tiếp ñồng bộ và bất ñồng bộ (USART,
MSSP)
• 2 bộ so sánh tương tự (Analog Comparator)
• Chế ñộ tiết kiệm năng lượng (Sleep Mode)
• Tầm ñiện áp làm việc lớn (2.0V – 5.5V)
• Tích hợp nhiều tính năng nhằm tăng ñộ tin cậy khi làm việc
(POR, PWRT, OST, BOR, WDT), bảo mật và hiệu suất
• Tích hợp tính năng gỡ rối chương trình (Debug)
• Nạp chương trình bằng cổng nối tiếp (In-Circuit Serial
Trang 32 SƠ ĐỒ KHỐI TỔNG QUÁT CỦA PIC16F887
SƠ ĐỒ CHÂN CỦA PIC16F887
• Kiểu chân PDIP:
Trang 4• Kiểu chân QFN:
7
SƠ ĐỒ CHÂN CỦA PIC16F887
• Kiểu chân TQFP:
Trang 5TRISB7 TRISB6 TRISB6 TRISB5 TRISB5 TRISB4 TRISB4 TRISB3 TRISB3 TRISB2 TRISB2 TRISB1 TRISB1 TRISB0 TRISB0
PORTB Tri-State Register (TRISB)
1 = chân Port B tương ứng là ngõ vào (Input)
0 = chân Port B tương ứng là ngõ ra (Output)
Cấu hình chiều dữ liệu
3 TỔNG QUAN VỀ CỔNG XUẤT NHẬP (
3 TỔNG QUAN VỀ CỔNG XUẤT NHẬP (tt tt tt))))
Đối với các I/O được đa hợp với các ngoại vi tương tự thì khi
reset các I/O này sẽ mặc định là ngõ vào tương tự (Analog
Input)
Để thay đổi cấu hình của các I/O này(Analog Input ⇔ Digital I/O):
Trường hợp PIC16F887: sử dụng thanh ghi Analog Select
(ANSEL và ANSELH)
Trường hợp PIC16F877A: sử dụng thanh ghi Analog
Control 1 (ADCON1).
Trang 6• Trường hợp PIC16F887: Thanh ghi dùng để cấu hình ngõ vào
tương tự thành I/O số (Digital I/O) là ANSEL và ANSELH
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0
Analog Select Register ( ANSEL )
Analog Select High Register ( ANSELH )
Trang 7VD 1
• Cho port E của PIC16F887 có cấu hình như sau:
• Hãy xác định giá trị của thanh ghi TRISE, ANSEL, ANSELH
13
Analog Input Digital Output Digital Input
TRISE7
TRISE7 TRISE6 TRISE6 TRISE5 TRISE5 TRISE4 TRISE4 TRISE3 TRISE3 TRISE2 TRISE2 TRISE1 TRISE1 TRISE0 TRISE0
ANS13 ANS12 ANS11 ANS10 ANS9 ANS8
Đáp
Đáp án án
• Cho port E của PIC16F887 có cấu hình như sau:
• Hãy xác định giá trị của thanh ghi TRISE, ANSEL, ANSELH
Analog Input Digital Output Digital Input
Trang 8• Trường hợp PIC16F877A: Thanh ghi dùng để cấu hình ngõ
vào tương tự thành I/O số (Digital I/O) là ADCON1
15
ADC Control Register 1 (ADCON1)
Các bit cấu hình loại I/O
TỔNG QUAN VỀ CỔNG XUẤT NHẬP PIC 16F877
Trang 9Tính năng điện trở kéo lên (Pull-up Resistor)
• Chỉ áp dụng cho Port B và khi I/O được cấu hình là ngõ vào
• Kích hoạt bằng cách:
- Trường hợp PIC16F887: Sử dụng thanh ghi WPUB và bit RBPU
trong thanh ghi OPTION
- Trường hợp PIC16F877A: Sử dụng bit RBPU
17
• Trường hợp PIC16F887: Sử dụng thanh ghi WPUB và bit
RBPU trong thanh ghi OPTION
Weak Pull-Up PORTB Register (WPUB)
1 = Cho phép 0 = Cấm
WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0
OPTION_REG Register (OPTION_REG)
1 = Cấm 0 = Cho phép
Trang 10Ví dụ: Kích hoạt tính năng điện trở kéo lên cho chân RB3
19
Weak Pull-Up PORTB Register ( WPUB )
1 = Cho phép 0 = Cấm
RB3 Pull-up Resistor WPUB7 WPUB6 WPUB5 WPUB4 ICOB3 1 WPUB2 WPUB1 WPUB0
OPTION_REG Register ( OPTION_REG )
1 = Cấm 0 = Cho phép
• Trường hợp PIC16F877A: Sử dụng bit RBPU trong thanh ghi
Trang 113.1 CẤU TRÚC VÀ CHỨC NĂNG PORT A
21
• Port A có 8 chân (RA0 – RA7)
lưu ý: Đối với PIC16F877A chỉ có 6 chân (RA0 – RA5)
• Việc ghi các giá trị (0 hoặc 1) vào thanh ghi TRISA sẽ qui
ñịnh chiều các chân Port A
• Các thao tác điều khiển Port:
- READ: Đọc trạng thái của chân
- WRITE: Ghi vào bộ chốt cổng (RD-MD-WR)
• Thanh ghi ANSEL phải được khởi tạo để cấu hình một ngõ
vào tương tự thành ngõ vào số
Trang 12Bảng tổng hợp chức năng của Port A
Bảng tổng hợp chức năng của Port A
Trang 13• Các thanh ghi có liên hệ với Port A
25
X : Không biết – : Dự trữ (Đọc về có giá trị ‘0’)
U : Không thay đổi Tô đậm : Không dùng cho Port A
3.2 CẤU TRÚC VÀ CHỨC NĂNG PORT B
• Port B có 8 chân (RB0 – RB7)
Trang 143.2 CẤU TRÚC VÀ CHỨC NĂNG PORT B
• Port B có 8 chân (RB0 – RB7)
• Việc ghi các giá trị (0 hoặc 1) vào thanh ghi TRISB sẽ qui
ñịnh chiều các chân Port B
• Các thao tác điều khiển Port:
• READ: Đọc trạng thái của chân
• WRITE: Ghi vào bộ chốt cổng (RD-MD-WR)
• Thanh ghi ANSELH phải được khởi tạo để cấu hình một ngõ
vào tương tự thành ngõ vào số
• Mỗi chân Port B đều có tính năng điện trở kéo lên.
27
Bảng tổng hợp chức năng của Port B
Trang 15Bảng tổng hợp chức năng của Port B
• Các thanh ghi có liên hệ với Port B
X : Không biết – : Dự trữ (Đọc về có giá trị ‘0’)
Trang 163.3 CẤU TRÚC VÀ CHỨC NĂNG PORT C
• Port C có 8 chân (RC0 – RC7)
• Việc ghi các giá trị (0 hoặc 1) vào thanh ghi TRISC sẽ qui
ñịnh chiều các chân Port C
• Các thao tác điều khiển Port:
• READ: Đọc trạng thái của chân
• WRITE: Ghi vào bộ chốt cổng (RD-MD-WR)
31
Bảng tổng hợp chức năng của Port C
Trang 17Bảng tổng hợp chức năng của Port C
• Các thanh ghi có liên hệ với Port C
X : Không biết – : Dự trữ (Đọc về có giá trị ‘0’)
Trang 183.4 CẤU TRÚC VÀ CHỨC NĂNG PORT D
• Port D có 8 chân (RD0 – RD7)
• Việc ghi các giá trị (0 hoặc 1) vào thanh ghi TRISD sẽ qui
ñịnh chiều các chân Port D
• Các thao tác điều khiển Port:
• READ: Đọc trạng thái của chân
• WRITE: Ghi vào bộ chốt cổng (RD-MD-WR)
35
Bảng tổng hợp chức năng của Port D
Trang 19• Các thanh ghi có liên hệ với Port D
37
X : Không biết – : Dự trữ (Đọc về có giá trị ‘0’)
U : Không thay đổi Tô đậm : Không dùng cho Port D
• Port E có 4 chân (RE0 – RE3)
• Đối với PIC16F877A chỉ có 3 chân (RE0 – RE2)
• Việc ghi các giá trị (0 hoặc 1) vào thanh ghi TRISE sẽ qui
ñịnh chiều các chân Port E
• Các thao tác điều khiển Port:
• READ: Đọc trạng thái của chân
• WRITE: Ghi vào bộ chốt cổng (RD-MD-WR)
• Thanh ghi ANSEL phải được khởi tạo để cấu hình một ngõ
vào tương tự thành ngõ vào số.
Trang 20Bảng tổng hợp chức năng của Port E
• Các thanh ghi có liên hệ với Port E
X : Không biết – : Dự trữ (Đọc về có giá trị ‘0’)
U : Không thay đổi Tô đậm : Không dùng cho Port E
Trang 214 BỘ DAO ĐỘNG
• Có thể chọn lựa nguồn xung clock bên trong hoặc bên ngoài
• Nguồn xung clock bên ngoài được cung cấp cho PIC16F887
thông qua chân OSC1/CLKIN và OSC2/CLKOUT
• Có nhiều tính năng đặc biệt:
• Có thể chọn lựa nguồn xung clock bên trong hoặc bên ngoài bằng
phần mềm
• Chế độ khởi động hai tốc độ (Two-Speed Start-up) → giãm độ trễ
• Giám sát lỗi xung clock (FSCM: Fail-Safe Clock Monitor) → tự động
chuyển nguồn xung clock
41
Trang 22• Có 8 chế độ xung clock khác nhau:
Chế độ dao động bên ngoài:
EC – External clock with I/O on OSC2/CLKOUT
LP – 32 kHz Low-Power Crystal mode
XT – Medium Gain Crystal or Ceramic Resonator Oscillator
mode
HS – High Gain Crystal or Ceramic Resonator mode
RC – External Resistor-Capacitor (RC) with FOSC/4 output on
OSC2/CLKOUT
RCIO – External Resistor-Capacitor (RC) with I/O on
OSC2/CLKOUT.
43
• Có 8 chế độ xung clock khác nhau:
Chế độ dao động bên trong:
INTOSC – Internal oscillator with FOSC/4 output on OSC2 and
I/O on OSC1/CLKIN
INTOSCIO – Internal oscillator with I/O on OSC1/CLKIN and
OSC2/CLKOUT.
Trang 23• Các chế độ xung clock được chọn bằng bit FOSC<2:0> trong
thanh ghi CONFIG1
• Các chế độ xung clock được chọn bằng bit FOSC<2:0> trong
thanh ghi CONFIG1
Trang 24• Các chế độ xung clock được chọn bằng bit FOSC<2:0> trong thanh ghi
CONFIG1
47
Chế độ LP, XT, HS (Quartz Crystal)
• Các chế độ xung clock được chọn bằng bit FOSC<2:0> trong thanh ghi
CONFIG1
Chế độ XT, HS (Ceramic Resonator)
Trang 25• Các chế độ xung clock được chọn bằng bit FOSC<2:0>trong thanh ghi
CONFIG1
49
Chế độ RC (Resistor Capacitor)
• Thanh ghi OSCCON:
o Chọn lựa tần số (IRCF)
o Báo trạng thái tần số (HTS, LTS)
o Điều khiển xung clock hệ thống (OSTS, SCS).
Oscillator Control Register (OSCCON)
Trang 26Oscillator Control Register ( OSCCON )
Default
BỘ DAO ĐỘNG
Trang 27Oscillator Control Register ( OSCCON )
Oscillator Start-up Time-out Status
Trang 28Oscillator Control Register ( OSCCON )
OSC Stable
1 – Stable
0 – Not Stable
BỘ DAO ĐỘNG
Trang 29•Thanh ghi OSCTUNE :
Điều chỉnh tần số của HFINTOSC ( TUN )
Không có tác dụng đối với LFINTOSC.
57
Oscillator Tuning Register ( OSCTUNE )
10000, … ,11111,00000,00001, … … ,01111 Minimum Factory Maximum Freq Freq Freq.
• Các thanh ghi có liên hệ với nguồn xung clock
X : Không biết – : Dự trữ (Đọc về có giá trị ‘0’
U : Không thay đổi Tô đậm : Không dùng cho bộ
dao động
Trang 30•Có nhiều loại tín hiệu reset:
MCLR\ Reset
POR (Power-On Reset)
BOR (Brown-Out Reset)
Trang 31• MCLR\ Reset
• Cho phép reset PIC từ mạch điện bên ngoài
• Được chọn lựa và cho phép bằng bit MCLRE trong thanh ghi
CONFIG1
• MCLRE\ = 0: Tín hiệu reset được tạo ra bên trong PIC, chân RA3 là
ngõ vào số (pull-up)
• MCLRE\ = 1: Tín hiệu reset
được tạo ra từ mạch điện
bên ngoài PIC, chân RE3
trở thành ngõ vào reset PIC,
tích cực mức thấp
61
Mạch điện tạo tín hiệu MCLR\
• POR (Power-On Reset)
• Giữ PIC ở trạng thái reset (vào thời điểm mới cấp nguồn cho PIC)
cho đến khi điện áp nguồn cung cấp (VDD) đã đạt đến một giá trị đủ
cao để hoạt động tốt
• POR không tạo ra tín hiệu reset khi VDDbị giãm trong quá trình hoạt
động
• Để kích hoạt lại POR, VDDphải giãm tới mức VSSvà giữ trong thời
gian tối thiểu 100µs
• BOR (Brown-Out Reset)
• Tạo tín hiệu reset PIC khi điện áp nguồn cung cấp (VDD) giãm xuống
nhỏ hơn mức VBOR
• Được chọn lựa và cho phép bằng bit BOREN<1:0> trong thanh ghi
CONFIG1
Trang 32• BOR (Brown-Out Reset)
Trang 33• POR (Power-On Reset)
• Khi MCLR được nối với
V DD , một xung reset được
tạo ra khi cạnh lên V DD
được phát hiện
65
PWRT (Power Up Timer)
PIC được giữ ở trạng thái reset trong 64ms để V DD tăng lên tới
một mức chấp nhận được (tính từ sau POR)
OST (Oscillator Start-up Timer)
PIC được giữ reset trong 1024 chu kỳ để bộ dao động (crystal,
resonator) ổn định tần số và biên độ; không hoạt động ở các chế
độ RC (tính từ sau POR hoặc Wake Up từ SLEEP).
Trang 34LẬP TRÌNH NỐI TIẾP TÍCH HỢP
• Khi lập trình cho PIC chỉ cần 2 chân
• Được hỗ trợ cho các loại mạch nạp như: ICD2, PICkit2, PICkit3.
Function Programming Voltage = 13V Supply Voltage
Ground Clock Input Data I/O & Command Input
7 TỔ CHỨC BỘ NHỚ CỦA PIC16F887
Nội dung bao gồm:
• Bộ nhớ chương trình (Program Memory)
• Bộ đếm chương trình (Program Counter)
• Ngăn xếp (Stack)
• Bộ nhớ dữ liệu (Data Memory)
• RAM
Trang 35BỘ NHỚ CHƯƠNG TRÌNH
• Dung lượng: 8K word
• 8K x 14bit = 14Kbyte
• Vectơ RESET: 0000h
• Bộ đếm chương trình (PC) sẽ đi tới địa chỉ
này ngay khi bị reset
• Vectơ ngắt: 0004h
• Bộ đếm chương trình (PC) sẽ đi tới địa chỉ
này ngay khi có một sự kiện ngắt bất kỳ.
69
Reset Vector
Interrupt Vector Page 0
………
07FFh 0800h
……….
0FFFh 1000h
……….
17FFh 1800h
Trang 36BỘ NHỚ DỮ LIỆU - RAM
• Dung lượng: 368Byte (368 x 8bit)
• Bộ nhớ dữ liệu được chia thành 4
Bank:
• Bank 0, Bank 1, Bank 2 và Bank 3
• Mỗi Bank có dung lượng 128 Byte,
gồm:
• Thanh ghi đa mục đích (GPR) → RAM
• Thanh ghi chức năng đặc biệt (SFR)
• Các Bank này ñược
lựa chọn bởi hai bit RP<1:0> nằm
trongthanh ghi STATUS
THANH GHI CHỨC NĂNG ĐẶC BIỆT
• SFRs (Special Function Registers):
• Khái niệm về thanh ghi chức năng
• Được truy xuất (ghi hoặc đọc thông
tin) tương tự như một RAM tĩnh
• Một số thanh ghi có trong tất cả các
dãy (PCLATH, INTCON,…)
06h PORTB
Trang 3773