BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI
TRƯỜNG CAO ĐẲNG KỸ NGHỆ II
KHOA ĐIỆN – ĐIỆN TỬ
ĐỀ CƯƠNG BÀI GIẢNG MODUL:
ĐIỀU KHIỂN HỆ THỐNG CĐTSDVĐK
GVBS: Bùi Ngọc An
TPHCM, tháng 03 năm 2018
2
MỤC LỤC
Chương 1. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC CỦA MICROCHIP
1. Giới thiệu về PIC ............................................................................... 4
2. Các loại PIC thông dụng .................................................................... 4
3. Ứng dụng của PIC.............................................................................. 5
Chương 2. KIẾN TRÚC PHẦN CỨNG CỦA PIC 18F4520
1. Sơ đồ khối .......................................................................................... 6
2. Sơ đồ chân .......................................................................................... 9
3. Tổ chức bộ nhớ ................................................................................... 9
4. Khối tạo dao động .............................................................................. 13
5. Hoạt động Reset ................................................................................. 15
6. Các Port vào / ra.................................................................................. 17
Chương 3. PHẦN MỀM MPLAB VÀ TRÌNH DỊCH MCC18
1. Cài đặt MPLAB .................................................................................. 29
2. Sử dụng MPLAB ................................................................................ 29
3. Trình dịch MCC18 .............................................................................. 40
Chương 4. HOẠT ĐỘNG VÀO RA
1. Lập Trình xuất..................................................................................... 50
2. Lập Trình nhập .................................................................................... 50
3. Hoạt động xuất/nhập ........................................................................... 51
4. Bài tập ứng dụng ................................................................................. 52
Chương 5: HOẠT ĐỘNG ĐỊNH THỜI
1. Giới thiệu ........................................................................................... 53
2. Timer 0 ................................................................................................ 53
3. Timer 1 ................................................................................................ 60
4. Lập trình với timer ............................................................................. 64
Chương 6: LẬP TRÌNH VỚI LCD 1602
1. Khái niệm ............................................................................................ 69
2. Nguyên lý hoạt động ........................................................................... 70
3. Nguyên tắc hiển thị trên LCD ............................................................. 70
4. Ví dụ lập trình điều khiển hiển thị trên LCD ...................................... 71
Chương 7: HOẠT ĐỘNG NGẮT
1. Khái niệm ........................................................................................... 75
2. Tổ chức ngắt của PIC 18F4520 ......................................................... 75
3. Ngắt ngoài .......................................................................................... 77
4. Các thanh ghi liên quan ..................................................................... 77
5. Lập trình sử dụng ngắt ........................................................................ 85
3
Chương 8: MODULE CCP (CAPTURE / COMPARE / PWM)
1. Giới thiệu ............................................................................................ 91
2. Các thanh ghi liên quan ...................................................................... 93
3. Sử dụng các bộ PWM ......................................................................... 94
4. Lập trình điều chế độ rộng xung ......................................................... 96
Chương 9: BỘ CHUYỂN ĐỔI TƯƠNG TỰ - SỐ (ADC)
1. Giới thiệu ............................................................................................ 99
2. Các thanh ghi liên quan ..................................................................... 101
3. Điều khiển hoạt động chuyển đổi A/D .............................................. 104
4. Lập trình sử dụng ADC ...................................................................... 111
Chương 10: TRUYỀN THÔNG NỐI TIẾP VÀ GIAO TIẾP GIỮA 2 VI ĐIỀU
KHIỂN PIC
1. Giới thiệu ............................................................................................ 116
2. Các thanh ghi liên quan ..................................................................... 118
3. Tốc độ baud ........................................................................................ 121
4. Ngắt USART ...................................................................................... 128
5. Lập trình sử dụng USART ................................................................. 131
4
Chương 1
GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC CỦA MICROCHIP
1. GIỚI THIỆU VỀ PIC
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là “máy
tính thơng minh khảtrình” 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 phát triển thêm và
từ đó hình thành nên dịng vi điều khiển PIC ngày nay.
Hình 1.1. Vi điều khiển PIC
2. CÁC LOẠI PIC THƠNG DỤNG
Các kí hiệu của vi điều khiển PIC:
PIC12xxxx: độ dài lệnh 12 bit.
PIC16xxxx: độ dài lệnh 14 bit.
PIC18xxxx: độ dài lệnh 16 bit.
C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ flash
LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
LV: như LF, đây là kí hiệu cũ
Bên cạnh đó một số vi điều khiển có kí hiệu xxFxxx là EEPROM, nếu có chữ A
ở cuối là flash (ví dụ PIC16F877 là EEPROM, cịn PIC16F877A là flash).
Ngồi ra cịn có thêm dịng vi điều khiển PIC mới là dsPIC.
5
Ở Việt Nam phổ biến nhất là họ vi điều khiển PIC do hãng Microchip sản xuất.
Cách lựa chọn một vi điều khiển PIC phù hợp: Trước hết cần chú ý đến sốchân
của vi điều khiển cần thiết cho ứng dụng. Có nhiều vi điều khiển PIC với số lượng
chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân, ngồi ra cịn có vi điều
khiển 28, 40, 44, … chân. Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể
nạp xóa chương trình được nhiều lần hơn, tiếp theo cần chú ý đến các khối chức
năng được tích hợp sẵn trong vi điều khiển, các chuẩn giao tiếp bên trong và sau
cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép.
3. ỨNG DỤNG CỦA PIC
Ngày nay PIC được ứng dụng rất rộng rãi trong thực tế, từ những vật dụng đơn
giản cho đến những hệ thống điều khiển phức tạp trong cơng nghiệp.
Hình 1.2. Ứng dụng PIC
6
Chương 2
KIẾN TRÚC PHẦN CỨNG CỦA PIC 18F4520
1. SƠ ĐỒ KHỐI
Hình 2.1. Sơ đồ khối của PIC18F4520
Các khối chính trên PIC 18F4520 bao gồm:
Bộ xử lý trung tâm CPU (Central Processing Unit):
7
Tần số làm việc tối đa 40 MHz, sản xuất bằng công nghệ nanoWatt.
Thiết kế theo kiến trúc Havard, tập lệnh RISC.
Sử dụng kỹ thuật đường ống lệnh (Instruction Pipelining).
Đơn vị logic học (ALU: Arithmetic Logical Unit).
Thanh ghi làm việc (WREG: work register ).
Bộ nhân bằng phần cứng (8x8 Multiply), kết quả được chứa trong cặp thanh
ghi (PRODH, PRODL).
Thanh ghi đếm chương trình (PC: Program Counter) có 21 bit bao gồm
thanh ghi PCL(PC-Low) chứa các bit từ 7-0, thanh ghi PCH (PC-High)
chứa các bit từ 15-8, thanh ghi PCU (PC-upper) chứa các bit từ 20-16.
Thanh ghi con trỏ ngăn xếp STKPTR (Stack Pointer).
31 mức ngăn xếp (31 level stack).
Thanh ghi lựa chọn băng (BSR: Bank Select Register).
Thanh ghi con trỏ dữ liệu gián tiếp FSR (Indirect Data Memory Address
Pointer).
Bộ nhớ (Memory):
Bộ nhớ chương trình (Program Memory) bao gồm 32 Kbytes bộ nhớ ROM
(Read-only Memory) kiểu Flash.
Bộ nhớ dữ liệu (Data Memory) bao gồm 1536 byte SRAM (Static Random
Access Memory), 256 byte EEPROM.
Bộ phát xung hệ thống (Oscillator): Nguồn xung từ bên ngoài hoặc từ bộ
phát xung của hệ thống sẽ được đi qua bộ nhân hoặc chia tần số để lựa chọn
lấy tần số thích hợp để làm xung hệ thống.
Nguồn xung chính được đưa vào chip qua chân OSC1 và OSC2.
Nguồn xung phụ được đưa vào chip qua các chân T1OSI, T1OSO.
Bộ phát xung nội INTRC tần số 31kHz.
Bộ phát xung nội trên chíp tần số 8 MHz.
Watchdog Timer (WDT): là một bộ timer có chức năng đặc biệt, khi bị tràn sẽ
khởi động lại hệ thống. Thời gian khởi động lại hệ thống có thể lựa chọn được
từ 4ms đến 131,072s. WDT sẽ được khởi tạo ở đầu chương trình, trong thân
chương trình sẽ được “chèn” các lệnh reset WDT sao cho khi vi điều khiển
thực hiện các đúng tuần tự các lệnh, WDT chưa bị tràn. Mục đích chính của
việc sử dụng WDT là tránh cho vi điều khiển vơ tình thực hiện phải một vịng
lặp chết (dead loop) mà khơng thốt ra được.
Bộ nạp chương trình: Bộ nạp chương trình nối tiếp trên chip (Single-Supply
In-Circuit Serial Programming) sẽ giúp nạp chương trình từ mạch nạp vào bộ
nhớ ROM qua các chân PGM, PGC và PGD.
8
Bộ Debugger (In-Circuit Debugger): Mạch Debugger trên chíp sẽ giúp người
lập trình kiểm sốt lỗi chương trình bằng cách cho vi điều khiển hoạt động ở
chế độ chạy từng lệnh, nhóm lệnh hay tồn bộ chương trình.
Khối phát hiện tín hiệu reset: Mạch phát hiện tín hiệu reset có khả năng phát
hiện 03 nguồn reset:
Reset từ chân MCLR.
Reset khi bật nguồn (POR: Power-on Reset).
Reset khi nguồn yếu (BOR : Brown-out Reset).
Khối quản lý lỗi bộ phát xung (Fail-Safe Clock Monitor): Khối này được sự
dụng để quản lý an toàn bộ phát xung hệ thống.
Khối định thời khởi động bộ phát xung (Oscillator Start-up Timer): Khối này
sử dụng để tạo thời gian trễ chờ cho bộ phát xung ổn định.
Thiết bị ngoại vi (Peripheral): PIC18f4520 được tích hợp các thiết bị ngoại vi
sau:
Bộ phát hiện điện áp cao/thấp HLVD(High/low-Voltage Detect).
Bộ nhớ lưu dữ liệu khi tắt nguồn EEPROM.
04 bộ đếm, định thời 16 bit: Timer0, Timer1, Timer2 và Timer3.
01 bộ so sánh tín hiệu tương tự (Comparator).
02 bộ CCP1, CCP2 (Capture, Compare, PWM : Chụp, So sánh, xung Pwm);
01 bộ ECCP (Enhanced CCP).
01 cổng truyền thông nối tiếp đồng bộ (Master Synchronous Serial Port) có
thể hoạt động được ở chế độ SPI hoặc I2C.
01 cổng truyền thông nối tiếp đồng bộ/không đồng bộ tăng EUSART
(Enhanced Universal Synchronous Asynchronous Receiver Transmitter),
giúp vi điều khiển PIC có thể giao tiếp với nhau hoặc giao tiếp với cổng
COM của máy tính.
13 kênh biến đổi tương tự - số (ADC) độ phân giải 10 bit.
Khối giao tiếp vào/ra số: Vi điều khiển PIC18F4520 có 5 cổng vào/ra A, B, C,
D và E. Mỗi cổng có một thanh ghi đệm dữ liệu tương ứng là PORTA, PORTB,
PORTC, PORTD và PORTE, các thanh ghi này được định địa chỉ theo byte và
theo bit.
PORTA : RA7 - RA0.
PORTB : RB7 - RB0.
PORTC : RC7 - RC0.
PORTD : RD3 - RD0.
PORTE : RE3-RE0.
9
2. SƠ ĐỒ CHÂN
Sơ đồ chân dạng PDIP (Lead Plastic Dual In-Line Package).
Hình 2.2. Sơ đồ chân PIC 18F4520 dạng PDIP
3. TỔ CHỨC BỘ NHỚ
Bộ nhớ của vi điều khiển PIC 18F4520 bao gồm 3 loại:
Bộ nhớ chương trình (Program memory)
Bộ nhớ dữ liệu RAM (Data RAM)
Bộ nhớ dữ liệu EEPROM (Data EEPROM)
Bộ nhớ của PIC 18F4520 được thiết kế theo kiến trúc Havard, bộ nhớ chương
trình và bộ nhớ dữ liệu được thiết kế riêng đường Bus, cho phép CPU truy cập
cùng lúc tới bộ nhớ chương trình và bộ nhớ dữ liệu. Bộ nhớ dữ liệu EEPROM
được sử dụng để lưu trữ dữ liệu khi mất điện.
Bộ nhớ chương trình
Thanh ghi đếm chương trình PC (Program Counter) của PIC 18F4520 có 21 bit
nên có thể địa chỉ hóa 2 Mbyte bộ nhớ chương trình. Bộ nhớ Flash của PIC
18F4520 có dung lượng 32 Kbyte nên chứa được 16384 lệnh từ đơn (single-word
instructions), với dải địa chỉ từ 0000h đến 7FFFh. Nếu đọc ở vùng nhớ ngoài
32Kbyte của PIC 18F4520 và trong khoảng 2 Mbyte mà nó có thể quản lý thì giá
trị dữ liệu trả về sẽ là “0”. PIC 18F4520 có 31 mức ngăn xếp.
10
Vector Reset của PIC 18F4520 được đặt ở địa chỉ 0000h, khi reset nội dung của
thanh ghi đếm chương trình PC sẽ được xóa về 0. Các thanh ghi của PIC 18F4520
sẽ được tải lại các giá trị mặc định.
Hình 2.3. Sơ đồ tổ chức bộ nhớ chương trình và ngăn xếp
Vector ngắt ưu tiên cao (High-Priority Interrupt Vector) được đặt ở địa chỉ 0008h,
vector ngắt ưu tiên thấp (Low-Priority Interrupt Vector) được đặt ở địa chỉ 0018h.
Thanh ghi đếm chương trình PC 21 bit chứa trong 3 thanh ghi 8 bit riêng biệt, 8
bit thấp chứa trong thanh ghi PCL, 8 bit tiếp theo chứa trong thanh ghi PCH, 5 bit
cao chứa trong thanh thi PCU. Thanh ghi PCH và PCU không cho phép truy cập
trực tiếp mà phải truy cập thông qua hai thanh ghi PCLATH và PCLATU tương
ứng. PIC 18F4520 đươc thiết kế theo kỹ thuật đường ống lệnh (Instruction
Pipelining) nên việc thực hiện lệnh PC-2 và đọc mã lệnh PC được diễn ra cũng
một thời điểm.
11
Hình 2.4. Giản đồ xung đọc mã lệnh và thực hiện lệnh của PIC 18F4520
Bộ nhớ dữ liệu RAM
Hình 2.5. Sơ đồ tổ chức bộ nhớ dữ liệu RAM
Bộ nhớ dữ liệu RAM 1536 byte (SRAM) được chia thành 2 vùng chức năng riêng
biệt, vùng RAM đa dụng GPR (General Purpose Registers) sử dụng để chứa dữ
12
liệu, vùng các thanh ghi chức năng đặc biệt SFR (Special Function Registers)
chứa các thanh ghi chức năng điều khiển ngoại vi và CPU.
Bộ nhớ dữ liệu RAM được chia thành 16 Bank từ Bank 0 đến Bank15, vùng RAM
đa dụng nằm từ Bank 0 đến Bank 2, các thanh ghi SFR nằm ở Bank 15. Vùng địa
chỉ từ 300h đến EFFh không được sử dụng, đọc ở vùng này sẽ trả về giá tri 00h.
Bốn bit thấp của thanh ghi lựa chọn băng BSR (Bank Select Register) được sử
dụng để lựa chọn truy cập băng.
Hình 2.6. Phân bổ địa chỉ của các thanh ghi chức năng đặc biệt SFR
Bộ nhớ dữ liệu EEPROM
13
Bộ nhớ dữ liệu EEPROM của PIC 18F4520 là bộ nhớ mảng không bị mất dữ liệu
khi mất điện, độc lập với bộ nhớ chương trình và bộ nhớ dữ liệu RAM, được sử
dụng để lưu trữ dữ liệu lâu dài. Nó có thể ghi/đọc được 1.000.000 lần, dữ liệu có
thể lưu trữ trong bộ nhớ 100 năm.
4. KHỐI TẠO DAO ĐỘNG
PIC 18F4520 có thể hoạt động ở một trong 10 chế độ tạo dao động khác nhau.
Việc lựa chọn các chế độ tạo dao động nhờ các bit FOSC3:FOSC0 trong thanh
ghi CONFIG1H.
Hình 2.7. Sơ đồ khối bộ tạo dao động trên PIC 18F4520
Các chế độ tạo dao động:
LP (Low-Power Crystal) nguồn xung thạch anh ngoài, nguồn thấp
XT (Crystal/Resonator) thạch anh/bộ cộng hưởng bên ngoài
HS (High-Speed Crystal/Resonator) thạch anh/bộ cộng hưởng bên ngoài
tốc độ cao
HSPLL nhân 4 lần tần số HS bằng vịng khóa pha (Phase Locked Loop)
RC (External Resistor/Capacitor) tạo dao động bằng mạch RC bên ngoài,
phát xung FOSC/4 ra chân RA6.
RCIO tạo dao động bằng mạch RC ngoài, vào/ra trên chân RA6.
INTIO1 bộ tạo dao động nội, phát xung FOSC/4 ra chân RA6, vào/ra trên
chân RA7.
INTIO2 bộ tạo dao động nội, vào/ra trên chân RA6 và RA7.
EC bộ phát xung ngoài, phát xung FOSC/4 ra chân RA6.
14
ECIO bộ phát xung ngoài, vào/ra trên chân RA6.
Tạo dao động bằng thạch anh ngoài (Crystal/ Ceramic Resonator)
Trong chế độ tạo dao động LP, XT, HS, HSPLL sử dụng thạch anh (Crystal) chưa
có tụ điện hoặc mạch cộng hưởng thạch anh bọc gốm đã có tụ điện (Ceramic
Resonator). Ở các chế độ này bộ tạo dao động kết nối với vi điều khiển PIC
18F4520 qua hai chân OSC1 và OSC2 .
- Sơ đồ kết nối giữa vi điều khiển với bộ phát xung ngồi:
Hình 2.8. Sơ đồ kết nối với bộ dao động thạch anh/mạch cộng hưởng ngoài
- Lựa chọn giá trị tụ điện khi sử dụng mạch cộng hưởng thạch anh bọc gốm
Bảng 2.1. Lựa chọn giá trị tụ điện khi sử dụng Ceramic Resonator
- Lựa chọn giá trị tụ điện khi sử dụng thạch anh chưa có tụ điện (Crystal).
Bảng 2.2. Lựa chọn tụ điện khi sử dụng thạch anh (Crystal)
Nguồn xung ngoài (External Clock)
15
Chế độ EC và ECIO sử dụng nguồn xung ngoài làm xung hệ thống và được nối
qua cổng NOT trước khi đưa vào chân OSC1/CLKI.
- Chế độ nguồn xung ngoài EC (External Clock), nguồn xung được lấy từ bên
ngoài nối qua cổng NOT trước khi đưa vào OSC1/CLKI và chân OSC2/CLKO
phát ra tần số bằng ¼ tần số đầu vào.
Hình 2.9. Chế độ dao động EC
- Chế độ nguồn xung ngoài ECIO (External Clock Input Output), nguồn xung
được lấy từ bên ngoài nối qua cổng NOT trước khi đưa vào OSC1/CLKI và chân
OSC2/CLKO là chân vào/ra RA6.
Hình 2.10. Chế độ dao động ECIO
5. HOẠT ĐỘNG RESET
Vi điều khiển PIC 18F4520 có 8 nguồn Reset:
Reset do bật nguồn POR (Power-on Reset).
Reset từ chân MCLR, sử dụng trong quá trình hoạt động bình thường.
Reset từ chân MCLR, sử dụng trong chế độ quản lý nguồn.
Reset do Watchdog Timer (WDT).
Reset do sụt điện áp nguồn BOR (Brown-out Reset).
Reset bằng lệnh RESET.
Reset do đầy ngăn xếp (Stack Full Reset).
Reset do rỗng ngăn xếp (Stack Underflow Reset).
16
Hình 2.11. Mơ tả các nguồn Reset của PIC 18F4520
a. Reset từ chân MCLR
Nguồn reset MCLR đươc nối từ mạch reset bên ngoài qua chân MCLR/RE3. Nếu
bit MCLRE trong thanh ghi CONFIG3H được đặt bằng 1 thì chân MCLR/RE3 là
chân reset, đặt MCLRE = “0” chân MCLRE là chân vào/ra của PORTE. Khi có
mức điện áp thấp được đặt lên chân MCLR hệ thống sẽ thực hiện reset.
Hình 2.12. Mạch reset ngoài MCLR
b. Reset do bật nguồn POR (Power-on Reset)
17
Khi nguồn được cấp vào chân VDD, khối reset POR sẽ phát hiện sườn dương trên
chân VDD sau đó phát tín hiệu reset vi điều khiển. Bit POR trong thanh ghi RCON
sẽ báo trạng thái của reset POR, POR = ‘1’ là khơng phát hiện tín hiệu reset, POR=
‘0’ là phát hiện tín hiệu reset POR
Giá trị linh kiện: R < 40 kΩ; R1 >= 1KΩ.
Hình 2.13. Mạch reset do bật nguồn POR.
6. CÁC PORT VÀO/RA
Vi điều khiển PIC 18F4520 có 36 chân vào/ra được chia thành 5 cổng là PORTA,
PORTB, PORTC, PORTD có 8 chân và PORTE có 4 chân. Các chân vào/ra của
vi điều khiển PIC 18F4520 mang nhiều chức năng, nó có thể được thiết lập là
chân vào/ra dữ liệu hay là các chân chức năng đặc biệt của các bộ ngoại vi, sử
dụng các thanh ghi điều khiển của ngoại vi để lựa chọn chức năng cho các chân.
Mỗi cổng vào/ra của vi điều khiển PIC 18F4520 có 3 thanh ghi để điểu khiển hoạt
động:
Thanh ghi PORT là thanh ghi dữ liệu, được định địa chỉ theo byte và theo
bit, sử dụng để đệm đọc/ghi dữ liệu trên các cổng.
Thanh ghi LAT là thanh ghi chốt dữ liệu đầu ra (bằng ‘1’ đầu ra chốt mức
1, bằng ‘0’ đầu ra chốt mức 0).
Thanh ghi TRIS là thanh ghi lựa chọn hướng dữ liệu (bằng ‘0’ chiều ra,
bằng ‘1’ chiều vào).
6.1. Cấu trúc chung của một chân vào/ra
Hình 2.14 thể hiện cấu trúc chung của một chân vào/ra. Trong đó việc xác định
chân vào hay ra do các bit cụ thể quy định
18
Hình 2.14. Cấu trúc chung của một chân vào/ra.
6.2. Port A
PORT A gồm 8 bit tương ứng với 8 chân được ký hiệu từ RA0 đến RA7. Các
chân của PORTA có thể đọc/ghi theo từng bit hoặc cả byte.
a. Chức năng các chân của PORTA
Chân
Chức
năng
Thanh
ghi
TRIS
I/O
Kiểu
I/O
RA0/AN0
RA0
0
O
DIG
AN0
1
1
I
I
TTL
ANA
0
O
DIG
1
I
TTL
AN1
1
I
ANA
RA2
0
O
DIG
1
I
TTL
AN2
1
I
ANA
VREF-
1
I
ANA
CVREF
x
O
ANA
RA1/AN1
RA2/AN2/ VREF/CVREF
RA1
Mô tả
Chiều ra dữ liệu sử dụng bit LATA<0>; không bị ảnh
hưởng bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTA<0>.
Đầu vào kênh 0 của bộ biến đổi A/D hoặc chân đầu
vào C1- của bộ so sánh. Mặc đinh khi Reset POR.
Chiều ra dữ liệu sử dụng bit LATA<1>; không bị ảnh
hưởng bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTA<1>.
Đầu vào kênh 1 của bộ biến đổi A/D hoặc chân đầu
vào C2- của bộ so sánh. Mặc đinh khi Reset POR.
Chiều ra dữ liệu sử dụng bit LATA<2>; Cấm chức
năng này khi đầu ra CVREF được cho phép.
Chiều vào dữ liệu sử dụng bit PORTA<2>. Chức
năng này sẽ bị cấm khi chức năng tương tự hoặc đầu
ra CVREF được cho phép.
Đầu vào kênh 2 của bộ biến đổi A/D hoặc chân đầu
vào C2+ của bộ so sánh. Mặc đinh khi Reset POR.
A/D và đầu vào điện áp tham chiếu mức thấp bộ so
sánh.
Đầu ra điện áp tham chiếu bộ so sánh.
19
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/
RA3
0
O
DIG
1
I
TTL
AN3
1
I
ANA
VREF+
1
I
ANA
RA4
0
O
DIG
1
I
ST
1
0
0
I
O
O
ST
DIG
DIG
1
I
TTL
AN4
1
I
ANA
SS
1
I
TTL
HLVDIN
1
I
ANA
C2OUT
0
O
DIG
0
O
DIG
1
I
TTL
OSC2
x
O
ANA
CLKO
x
O
DIG
0
O
DIG
1
I
TTL
x
x
I
I
ANA
ANA
T0CKI
C1OUT
RA5
HLVDIN/C2OUT
OSC2/CLKO/RA6
OSC1/CLKI/RA7
RA6
RA7
OSC1
CLKI
Chiều ra dữ liệu sử dụng bit LATA<3>.
Chiều vào dữ liệu sử dụng bit PORTA<3>; Chức
năng này bị cấm khi đầu vào tương tự được cho phép.
Đầu vào kênh 3 của bộ biến đổi A/D hoặc hoặc chân
đầu vào C1+ của bộ so sánh. Mặc đinh khi Reset
POR.
A/D và đầu vào điện áp tham chiếu mức cao bộ so
sánh.
Chiều ra dữ liệu sử dụng bit LATA<4>.
Chiều vào dữ liệu sử dụng bit PORTA<4>; mặc định
khi reset POR.
Cấp xung cho Timer0.
Đầu ra 1 bộ so sánh; ưu tiên hơn vào/ra dữ liệu.
Chiều ra dữ liệu sử dụng bit LATA<5>; không ảnh
hưởng bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTA<5>; Chức
năng này bị cấm khi cho phép đầu vào tương tự.
Đầu vào kênh 4 của bộ biến đổi A/D. mặc định khi
reset BOR.
Đầu vào SS(lựa chọn t/b tớ) của Module MSSP.
Đầu vào của Module phát hiện điện áp cao/thấp
(High/Low-Voltage Detect).
Đầu ra 2 bộ so sánh;được ưu tiên hơn chức năng
vào/ra dữ liệu.
Chiều ra dữ liệu sử dụng bit LATA<6>. Chức năng
này chỉ được cho phép ở các chế độ RCIO, INTIO2
and ECIO.
Chiều vào dữ liệu sử dụng bit PORTA<6>. Chế độ
này chỉ được cho phép ở các chế độ RCIO, INTIO2
và ECIO.
Kết nối với bộ phát xung chính ( ở các chế độ XT, HS
và LP).
Chân phát xung hệ thống(FOSC/4) ở RC, INTIO1 và
EC.
Chiều ra dữ liệu sử dụng bit LATA<7>. Chức năng
này bị cấm ở chế độ dao động ngoài.
Chiều vào dữ liệu sử dụng bit PORTA<7>. Chức
năng này bị cấm ở chế độ dao động ngoài.
Kêt nối với bộ dao động ngoài.
Kết nối với nguồn xung bên ngồi.
Bảng 2.3. Chức năng các chân trên PORTA.
Chú thích:
DIG = Digital level output (đầu ra số); TTL = đệm đầu vào chuẩn TTL (TransistorTransistor Logic ); ST = đệm đầu vào sử dụng Schmitt Trigger; ANA = vào/ra tương
tự; x= không xác định; I=Input (vào); O=Output (ra).
Chú ý: Hai chân RA6 và RA7 cịn phụ thuộc vào cấu hình bộ phát xung hệ thống.
20
b. Các thanh ghi liên quan đến PORT A
Các thanh ghi liên quan đến PORTA gồm 6 thanh ghi sau:
PORTA: Thanh ghi dữ liệu PORTA.
LATA: Thanh ghi chốt dữ liệu đầu ra của PORTA.
TRISA: Thanh ghi lựa chọn hướng dữ liệu của PORTA (bit tương ứng trên
thanh ghi đặt bằng ‘0’ thì chân tương ứng có chiều ra, bằng ‘1’ là chiều
vào).
ADCON1: Là thanh ghi điều khiển A/D, thiết lập các chân vào/ra là số hay
tương tự.
CMCON: Là thanh ghi điều khiển bộ so sánh.
CVRCON là thanh ghi điều khiển điện áp tham chiếu của bộ so sánh.
Tên
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTA
RA7
RA6
RA5
RA4
RA3
RA2
RA1
LATA
LATA7
LATA6
Thanh ghi chốt dữ liệu PORTA
TRISA
TRISA7
TRISA6
Thanh ghi hướng dữ liệu PORTA
ADCON1
—
—
VCFG1
VCFG0
PCFG3
PCFG2
PCFG1
CMCON
C2OUT
C1OUT
C2INV
C1INV
CIS
CM2
CM1
CM0
CVRCON
CVREN
CVROE
CVRR
CVRSS
CVR3
CVR2
CVR1
CVR0
RA0
PCFG0
Bảng 2.4. Các thanh ghi liên quan đến PORTA.
6.3. Port B
PORTB gồm 8 bit, tương ứng với 8 chân được ký hiệu từ RB0 đến RB7. Các chân
của PORTB có thể đọc/ghi theo từng bit hoặc cả byte. Các chân PORTB <7:4>
của PORTB còn được sử dụng làm nguồn ngắt ngồi.
a. Chức năng các chân của PORTB
Chân
RB0/INT0/FLT0
/ AN12
RB1/INT1/AN10
Chức
năng
RB0
TRIS
I/O
0
O
Kiểu
I/O
DIG
1
I
TTL
INT0
1
I
ST
FLT0
1
I
ST
AN12
1
I
ANA
RB1
0
O
DIG
1
I
TTL
Mơ tả
Chiều ra dữ liệu sử dụng bit LATB<0>; không bị ảnh
hưởng bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTB<0>; Không nối
điện trở pull-up khi RBPU = ‘0’. Cấm chức năng này
khi cho phép đầu vào tương tự.
Ngắt ngoài 0.
Đầu vào báo sự cố PWM (Module ECCP1); Cho phép
bằng phần mềm.
Kênh 12 của bộ biến đổi A/D.
Chiều ra dữ liệu sử dụng bit LATB<1>; chức năng này
không bị bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTB<1>; Ngắt kết nôi
trở pull-up khi RBPU = ‘0’. Cấm chức năng này khi
đầu vào tương tự được cho phép.
21
RB2/INT2/AN8
RB3/AN9/CCP2
RB4/KBI0/AN1
1
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
INT1
AN10
1
1
I
I
ST
ANA
RB2
0
O
DIG
1
I
TTL
INT2
AN8
1
1
I
I
ST
ANA
RB3
0
O
DIG
1
I
TTL
AN9
CCP2(2)
1
0
1
I
O
I
ANA
DIG
ST
RB4
0
O
DIG
1
I
TTL
KBI0
AN11
RB5
1
1
0
1
I
I
O
I
TTL
ANA
DIG
TTL
KBI1
PGM
1
x
I
I
TTL
ST
RB6
0
1
O
I
KBI2
1
I
TTL
PGC
x
I
ST
RB7
0
1
O
I
DIG
TTL
KBI3
PGD
1
I
TTL
x
O
DIG
x
I
ST
DIG
TTL
Ngắt ngoài 1.
Kênh 10 của bộ biến đổi A/D.
Chiều ra dữ liệu sử dụng bit LATB<2>; không bị ảnh
hưởng bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTB<2>; Ngắt kết nôi
trở pull-up khi RBPU = ‘0’. Cấm chức năng này khi
đầu vào tương tự được cho phép.
Ngắt ngoài 2.
Kênh 8 của bộ biến đổi A/D.
Chiều ra dữ liệu sử dụng bit LATB<3>; không bị ảnh
hưởng bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTB<3>; Ngắt kết nôi
trở pull-up khi RBPU = ‘0’. Cấm chức năng này khi
đầu vào tương tự được cho phép.
Kênh 8 của bộ biến đổi A/D.
CCP2 của bộ so sánh và đầu ra của PWM.
Đầu vào của bộ capture CCP2.
Chiều ra dữ liệu sử dụng bit LATB<4>; không bị ảnh
hưởng bởi đầu vào tương tự.
Chiều vào dữ liệu sử dụng bit PORTB<4>; Ngắt kết nôi
trở pull-up khi RBPU = ‘0’. Cấm chức năng này khi
đầu vào tương tự được cho phép.
Chân ngắt của ngắt thay đổi mức PORTB.
Kênh 11 của bộ biến đổi A/D.
Chiều ra dữ liệu sử dụng bit LATB<5>.
Chiều vào dữ liệu sử dụng bit PORTB<5>; Ngắt kết nôi
trở pull-up khi RBPU = ‘0’.
Chân ngắt của ngắt thay đổi mức PORTB.
Tín hiệu nối mạch nạp nối tiếp (Single-Supply InCircuit Serial Programming™ mode entry (ICSP™)).
Cho phép bởi bit cấu hình LVP; Tất cả các chức năng
khác sẽ bị cấm.
Chiều ra dữ liệu sử dụng bit LATB<6>.
Chiều vào dữ liệu sử dụng bit PORTB<6>; Ngắt kết nôi
trở pull-up khi RBPU = ‘0’.
Chân ngắt của ngắt thay đổi mức PORTB.
Đầu vào xung từ (Serial execution (ICSP) clock) mạch
nạp tích hợp ICSP và mạch nạp ICD.
Chiều ra dữ liệu sử dụng bit LATB<7>.
Chiều vào dữ liệu sử dụng bit PORTB<7>; Ngắt kết nôi
trở pull-up khi RBPU = ‘0’.
Chân ngắt của ngắt thay đổi mức PORTB.
Đầu ra dữ liệu nối tiếp từ (Serial execution data output)
cho ICSP và ICD.
Đầu vào dữ liệu nối tiếp từ (Serial execution data
output) cho ICSP và ICD.
Bảng 2.5. Chức năng các chân của PORTB.
22
b. Các thanh ghi liên quan đến PORTB
Có 7 thanh ghi được sử dụng để điều khiển và chọn chức năng cho PORTB:
PORTB: Thanh ghi dữ liệu của PORTB.
LATB: Thanh ghi chốt dữ liệu của PORTB.
TRISB: Thanh ghi hướng dữ liệu của PORTB.
INTCON: Thanh điều khiển ngắt.
INTCON2: Thanh ghi điều khển ngắt 2.
INTCON3: Thanh điều khiển ngắt 3.
ADCON1: Thanh ghi điều khiển bộ biến đổi A/D. Thanh ghi này dùng
để chọn các chân AN0 đến AN12 là các chân vào/ra số hay tương tự.
Tên
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
Bit 0
RB0
LATB
Thanh ghi chốt dữ liệu PORTB
TRISB
Thanh ghi hướng dữ liệu PORTB
INTCON
GIE/GIEH
PEIE/GIEL
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
INTCON2
RBPU
INTEDG0
INTEDG1
INTEDG2
—
TMR0IP
—
RBIP
INTCON3
INT2IP
INT1IP
—
INT2IE
INT1IE
—
INT2IF
INT1IF
ADCON1
—
—
VCFG1
VCFG0
PCFG3
PCFG2
PCFG1
PCFG0
Bảng 2.6. Các thanh ghi liên quan đến PORTB.
6.4. Port C
PORT C có độ rộng 8 bit, tương ứng với 8 chân được ký hiệu từ RC0 đến RC7.
Các chân của PORTC có hai chiều dữ liệu và người lập trình có thể đọc/ghi theo
từng bit hoặc cả byte.
a. Chức năng các chân của PORTC
Chân
RC0/T1OSO/
T13CKI
RC1/T1OSI/CCP2
Chức
năng
RC0
TRIS
I/O
T1OSO
0
1
x
O
I
O
Kiểu
I/O
DIG
ST
ANA
T13CKI
1
I
ST
RC1
0
1
O
I
DIG
ST
Mô tả
Chiều ra dữ liệu sử dụng bit LATC<0>.
Chiều vào dữ liệu sử dụng bit PORTC<0>.
Đầu ra bộ phát xung Timer1; Chức năng này được
cho phép khi cho phép bộ phát xung Timer1. Cấm vào
chức năng vào/ra số.
Cấp xung cho Timer1/Timer3 chế độ đếm sự kiện
(Counter).
Chiều ra dữ liệu sử dụng bit LATC<1>.
Chiều vào dữ liệu sử dụng bit PORTC<1>.
23
T1OSI
x
I
ANA
0
O
DIG
1
0
1
I
O
I
ST
DIG
ST
0
O
DIG
1
0
I
O
ST
DIG
0
1
O
I
DIG
ST
0
O
DIG
1
I
ST
0
O
DIG
1
I
I2C/SM
B
RC4
0
1
O
I
DIG
ST
SDI
1
I
ST
1
O
DIG
1
I
RC5
0
1
O
I
I2C/SM
B
DIG
ST
SDO
0
O
DIG
RC6
TX
0
1
1
O
I
O
DIG
ST
DIG
CK
1
O
DIG
1
I
ST
CCP2
RC2/CCP1/P1A
RC2
CCP1
P1A(2)
RC3/SCK/SCL
RC3
SCK
SCL
RC4/SDI/SDA
SDA
RC5/SDO
RC6/TX/CK
Đầu vào bộ dao động Timer1; Chức năng này được
phép khi cho phép bộ dao động Timer1. Cấm chức
năng vào/ra số.
CCP2 của bộ so sánh và đầu ra của PWM; Chức năng
này ưu tiên hơn vào/ra dữ liệu.
Đầu vào capture(chụp) CCP2.
Chiều ra dữ liệu sử dụng bit LATC<2>.
Chiều vào dữ liệu sử dụng bit PORTC<2>.
Chân ECCP1 của bộ so sánh hoặc đầu ra PWM; chức
năng này được ưu tiên hơn vào/ra dữ liệu.
Đầu vào capture(chụp) ECCP1.
Đầu ECCP1 của bộ PWM tăng cường, kênh A.
Chức năng này được ưu tiên hơn chức năng vào/ra dữ
liệu.
Chiều ra dữ liệu sử dụng bit LATC<3>.
Chiều vào dữ liệu sử dụng bit PORTC<3>.
Chân phát xung(clock) của SPI (Module MSSP);
Chức năng này được ưu tiên hơn chức năng vào/ra dữ
liệu.
Đầu vào xung (clock) SPI (Module MSSP).
Chân phát xung(clock) của giao tiếp I2C™(Module
MSSP); Chức năng này được ưu tiên hơn chức năng
vào/ra dữ liệu.
Đầu vào xung(clock) của giao tiếp I2C (Module
MSSP); Chuẩn tín hiệu đầu vào phụ thuộc vào cấu
hình Module MSSP.
Chiều ra dữ liệu sử dụng bit LATC<4>.
Chiều vào dữ liệu sử dụng bit PORTC<4>.
Chân đầu vào dữ liệu của giao tiếp SPI (Module
MSSP).
Đầu ra dữ liệu của giao tiếp I2C (Module MSSP);
Chức năng này được ưu tiên hơn chức năng vào/ra dữ
liệu.
Đầu ra dữ liệu của giao tiếp I2C (Module MSSP); Kểu
tín hiệu đầu ra phụ thuộc vào cấu hình cho Module.
Chiều ra dữ liệu sử dụng bit LATC<5> .
Chiều vào dữ liệu sử dụng bit PORTC<5>.
Chân đầu ra dữ liệu của giao tiếp SPI (Module MSSP);
Chức năng này được ưu tiên hơn chức năng vào/ra dữ
liệu.
Chiều ra dữ liệu sử dụng bit LATC<6>.
Chiều vào dữ liệu sử dụng bit PORTC<6> .
Chân truyền dữ liệu nối tiếp không đồng bộ của
Module EUSART; Chức năng này được ưu tiên hơn
chức năng vào/ra dữ liệu. Chức năng này phải được
cấu hình hướng ra dữ liệu.
Chân phát xung(clock) đồng bộ nối tiếp của Module
EUSART;
Chức năng này được ưu tiên hơn chức năng vào/ra dữ
liệu.
Chân nhận xung(clock) đồng bộ nối tiếp của Module
EUSART.
24
RC7/RX/DT
RC7
0
1
O
I
DIG
ST
RX
1
I
ST
DT
1
O
DIG
1
I
ST
Chiều ra dữ liệu sử dụng bit LATC<7> .
Chiều vào dữ liệu sử dụng bit PORTC<7>.
Chân nhận dữ liệu nối tiếp không đồng bộ của Module
EUSART.
Chân truyền dữ liệu nối tiếp đồng bộ của Module
EUSART.
Chức năng này được ưu tiên hơn chức năng vào/ra dữ
liệu.
Chân nhận dữ liệu nối tiếp đồng bộ của Module
EUSART. Phải được cấu hình hướng dữ liệu có chiều
vào.
Bảng 2.7. Chức năng các chân của PORT C.
b. Các thanh ghi liên quan đến PORT C
Có 3 thanh ghi được sử dụng để điều khiển và chọn chức năng cho PORT C:
PORTC: Thanh ghi dữ liệu của PORTC.
LATC: Thanh ghi chốt dữ liệu của PORTC.
TRISC: Thanh ghi hướng dữ liệu của PORTC.
Tên
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
RC6
RC5
RC4
RC3
RC2
RC1
RC0
PORTC
RC7
LATC
Thanh ghi chốt dữ liệu của PORTC (Chốt dữ liệu đọc ghi)
TRISC
Thanh ghi chọn hướng dữ liệu của PORTC
Bảng 2.8. Các thanh ghi liên quan đến PORTC.
6.5. Port D
PORTD có độ rộng 8 bit, tương ứng với 8 chân được ký hiệu từ RD0 đến RD7.
Các chân của PORTD có hai chiều dữ liệu và người lập trình có thể đọc/ghi theo
từng bit hoặc cả byte. Ngồi ra PORTD cịn được sử dụng để ghi/đọc dữ liệu song
song với thiết bị ngoài khi kết hợp với các chân RD, CS và WR.
a. Chức năng các chân của PORTD
Chân
RD0/PSP0
Chức
năng
RD0
TRIS
I/O
0
1
O
I
Kiểu
I/O
DIG
ST
x
O
DIG
x
0
1
I
O
I
TTL
DIG
ST
PSP0
RD1/PSP1
RD1
Mô tả
Chiều ra dữ liệu sử dụng bit LATD<0>.
Chiều vào dữ liệu sử dụng bit PORTD<0>.
Chân PSP của giao tiếp song song sử dụng bit LATD<0>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Chiều ra dữ liệu sử dụng bit LATD<1>.
Chiều vào dữ liệu sử dụng bit PORTD<1>.
25
PSP1
RD2/PSP2
RD2
x
O
DIG
x
0
1
I
O
I
TTL
DIG
ST
x
O
DIG
x
0
1
I
O
I
TTL
DIG
ST
x
O
DIG
x
0
1
I
O
I
TTL
DIG
ST
x
O
DIG
x
0
1
I
O
I
TTL
DIG
ST
x
O
DIG
x
0
I
O
TTL
DIG
0
1
O
I
DIG
ST
x
O
DIG
x
0
I
O
TTL
DIG
0
1
O
I
DIG
ST
x
O
DIG
x
0
I
O
TTL
DIG
PSP2
RD3/PSP3
RD3
PSP3
RD4/PSP4
RD4
PSP4
RD5/PSP5/P1B
RD5
PSP5
P1B
RD6/PSP6/P1C
RD6
PSP6
P1C
RD7/PSP7/P1D
RD7
PSP7
P1D
Chân PSP của giao tiếp song song sử dụng bit LATD<1>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Chiều ra dữ liệu sử dụng bit LATD<2>.
Chiều vào dữ liệu sử dụng bit PORTD<2>.
Chân PSP của giao tiếp song song sử dụng bit LATD<2>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Chiều ra dữ liệu sử dụng bit LATD<3>.
Chiều vào dữ liệu sử dụng bit PORTD<3>.
Chân PSP của giao tiếp song song sử dụng bit LATD<3>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Chiều ra dữ liệu sử dụng bit LATD<4>.
Chiều vào dữ liệu sử dụng bit PORTD<4>.
Chân PSP của giao tiếp song song sử dụng bit LATD<4>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Chiều ra dữ liệu sử dụng bit LATD<5>.
Chiều vào dữ liệu sử dụng bit PORTD<5>.
Chân PSP của giao tiếp song song sử dụng bit LATD<5>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Đầu ra kênh B của bộ PWM tăng cường ECCP1; Chức
năng này được ưu tiên hơn chức năng vào/ra dữ liệu và giao
tiếp song song PSP.
Chiều ra dữ liệu sử dụng bit LATD<6>.
Chiều vào dữ liệu sử dụng bit PORTD<6>.
Chân PSP của giao tiếp song song sử dụng bit LATD<6>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Đầu ra kênh C của bộ PWM tăng cường ECCP1; Chức
năng này được ưu tiên hơn chức năng vào/ra dữ liệu và giao
tiếp song song PSP.
Chiều ra dữ liệu sử dụng bit LATD<7>.
Chiều vào dữ liệu sử dụng bit PORTD<7>.
Chân PSP của giao tiếp song song sử dụng bit LATD<7>,
có chiều ra, thao tác đọc dữ liệu của PSP; Chức năng này
được ưu tiên hơn chức năng vào/ra dữ liệu.
Chân PSP của giao tiếp song song, có chiều vào.
Đầu ra kênh D của bộ PWM tăng cường ECCP1; Chức
năng này được ưu tiên hơn chức năng vào/ra dữ liệu và giao
tiếp song song PSP.
Bảng 2.9. Chức năng các chân của PORTD.