Ngày nay, các bộ vi điều khiển đang có ứng dụng ngàycàng rộng rãi trong các lĩnh vực kỹ thuật và đời sống xã hội, đặc biệt là trong kỹ thuật tự động hoá và điều khiển từ xa. Cùng với sự phát triển nhanh chóng củakhoa học kỹ thuật, nghệ chế tạo vi mạch tích hợp thay đổi từng ngày từng giờ đáp ứng yêu cầu sản xuất công nghiệp về tính chuyên dụng hoá, tối ưu (thời gian, không gian, giá thành), bảo mật, tính chủ động trong công việc. ngày càng đòi hỏi khắt khe. Việcđưa ra công nghệ mới trong lĩnh vực chế tạo mạch điện tử để đáp ứng những yêu cầu trên là hoàn toàn cấp thiết mang tính thực tế cao.
                
              
                                            
                                
            
                       
            
                
21 trang | 
Chia sẻ: haohao89 | Lượt xem: 2630 | Lượt tải: 1
              
            Bạn đang xem trước 20 trang tài liệu Giới thiệu về vi điều khiển PIC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
DKS GROUP 
 1 
Chương 1: Giới thiệu chung về vi điều khiển 
I. Giới thiệu chung 
- Lịch sử vi điều khiển 
Ngày nay, các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi trong các 
lĩnh vực kỹ thuật và đời sống xã hội, đặc biệt là trong kỹ thuật tự động hoá và điều 
khiển từ xa. Cùng với sự phát triển nhanh chóng của khoa học kỹ thuật, nghệ chế tạo vi 
mạch tích hợp thay đổi từng ngày từng giờ đáp ứng yêu cầu sản xuất công nghiệp về 
tính chuyên dụng hoá, tối ưu (thời gian, không gian, giá thành), bảo mật, tính chủ động 
trong công việc... ngày càng đòi hỏi khắt khe. Việc đưa ra công nghệ mới trong lĩnh vực 
chế tạo mạch điện tử để đáp ứng những yêu cầu trên là hoàn toàn cấp thiết mang tính 
thực tế cao. 
 Lịch sử của Vi điều khiển bắt đầu khi 
- Kiến trúc của vi điều khiển (RISC + CISC) 
II. Các khối chính trong vi điều khiển 
I.1 Khối bộ nhớ ROM + RAM 
I.2 Khối xử lý trung tâm (CPU) 
I.3 Tổ chức Bus 
I.4 Các đường vào/ra 
I.5 Khối giao tiếp nối tiếp 
I.6 Khối Timer 
I.7 Watchdog 
I.8 Bộ chuyển đổi tương tự - số (ADC) 
DKS GROUP 
 2 
Chương 2: Vi điều khiển PIC 
Giới thiệu chung 
Trong chương này chúng ta sẽ đi tìm hiểu về Vi điều khiển PIC, mà cụ thể là dòng Vi 
điều khiển PIC18F4331. Tại sao lại chọn PIC18F4331, điều này khá đơn giản. Thực ra khi 
bắt đầu học PIC thì bạn có thể chọn bất cứ con PIC nào để tìm hiểu, bởi hầu hết các 
dòng PIC đều có cấu trúc phần cứng về cơ bản là giống nhau, và tùy từng dòng PIC mà 
sẽ có những tính năng nâng cao khác, chính điều đó giúp ta làm việc được với nhiều 
loại PIC một cách nhanh chóng. 
Đầu tiên chúng ta sẽ cùng tìm hiểu về cấu trúc phần cứng chung của PIC, các khối 
chức năng và cách và cách lập trình ứng dụng. Sau đó sẽ tìm hiều về những tính năng 
riêng của PIC18F4331 và PIC18F4550 
 - Kiến trúc RISC của vi điều khiển PIC 
PIC được tổ chức phần cứng theo kiến trúc Harvard, và tập lệnh RISC (reduced 
instruction set computer - máy tính với tập lệnh giản lược). Trong kiến trúc Harvard, bộ 
nhớ dữ liệu và bộ nhớ chương trình nằm riêng biệt, do đó CPU có thể làm việc trực tiếp 
với cả hai bộ nhớ dữ liệu và bộ nhớ chương trình cùng một lúc, làm cho tốc độ xử lý 
nhanh hơn. 
Việc bộ nhớ chương trình và bộ nhớ dữ liệu được tách riêng, do đó, tập lệnh 
trong kiến trúc Harvard có thể được tối ưu tùy theo yêu cầu kiến trúc của vi điều khiển. 
Bằng chứng, độ dài lệnh của dòng PIC16 luôn luôn là 14 bit. Trong khi đó, độ dài lệnh 
của các vi điều khiển kiến trúc von-Neumann là bội số của 1 byte (8 bit). PIC là một Vi 
điều khiển RISC, tập lệnh của PIC chỉ có 35 lệnh, phần lớn các lệnh này chỉ thực hiện 
trong một chu kỳ máy. Chính nhờ kiến trúc phần cứng tiên tiến, PIC tỏ ra vướt trội so 
với các loại Vi điều khiển 8 bít khác về mặt tốc độ và hiệu năng sử dụng. 
 - Xử lý song song (Pipeline) 
Việc xử lý lệnh trong PIC được thực hiện song song, trong khi xử lý một lệnh thì 
đồng thời CPU cũng nạp lệnh mới vào để quá trình xử lý lệnh là liên tục. Chính phương 
thức xử lý đó giúp cho tốc độ hoạt động của PIC nhanh hơn rất nhiều. 
DKS GROUP 
 3 
- Sơ đồ chân PIC18F4331 
DKS GROUP 
 4 
- Sơ lược tính năng nổi bật của PIC18F4331 
 Nguồn dao động nội đến 8MHz, dao động thach anh lên tới 40MHz 
 Tiêu thụ nguồn thấp (nanoWatt) 
 5 Kênh vào ra (Port A, B, C, D, E) 
 ADC 10 - bit tốc độ cao với 9 kênh vào (AN0 ~ AN8) 
 4 kênh PWM 14-bit 
 Khối phản hồi chuyển động (Encoder) 
 2 kênh CCCP 
 3 chân ngắt ngoài 
 Giao tiếp nối tiếp RS232, RS485, I2C, SPI 
 ICSP và ICD 
DKS GROUP 
 5 
- Cấu trúc bên trong vi điều khiển PIC 
DKS GROUP 
 6 
DKS GROUP 
 7 
Cấu trúc và khối chức năng cơ bản trong Vi điều khiển PIC 
2.1 Khối tạo xung dao động 
Mạch tạo dao động được sử dụng để cung cấp xung đồng hồ cho Vi điều khiển. 
Xung đồng hồ là cần thiết để Vi điều khiển có thể thực thi chương trình lập trình bên 
trong nó. Mỗi loại Vi điều khiển PIC hỗ trợ những kiểu mach tạo dao động khác nhau 
như mạch dao động thạch anh (XT, HS), mạch dao động RC, mạch dao động nội, các 
nguồn dao động chuẩn bên ngoài khác. Trong các loại mạch dao động trên thì mạch dao 
động RC và mạch dao động thạch anh là 2 loại thường hay được sử dụng, nhất là mạch 
dao động thạch anh. 
Mạch dao động thạch anh (XT, HS): Sơ đồ mạch dao động thạch anh dưới đây là 
mạch dao động phổ biến cho PIC. Đây chính là nguồn cung cấp xung đồng hồ chính cho 
CPU và tất cả các khối trong PIC. Hai chân OSC1 (chân 13) và OSC2 (chân 14) được mắc 
với mạch dao động thạch anh bên ngoài. Các điện trở C1 và C2 là cần thiết khi mắc 
mạch dao động thạch anh cho PIC. Trị số của chúng xem bảng dưới đây. 
Ưu điểm của mạch này là tần số dao động chính xác và cho tần số dao động cao. 
Mạch dao động RC: Mạch này gồm một điện trở và một tự điện mắc nối tiếp như 
hình dưới đây. Xung dao động đươc đưa vào chân OSC1, khi đó chân OSC2 là chân 
xuất dao động, có thể cung cấp dao động cho các IC PIC khác. 
DKS GROUP 
 8 
2.2 . Khối Reset, Chân MCLR và mạch Reset cho PIC 
Reset is used for putting the microcontroller into a 'known' condition. That 
practically means that microcontroller can behave rather inaccurately under 
certain undesirable conditions. In order to continue its proper functioning it 
has to be reset, meaning all registers would be placed in a starting position. 
Reset is not only used when microcontroller doesn't behave the way we want 
it to, but can also be used when trying out a device as an interrupt in 
program execution, or to get a microcontroller ready when loading a 
program. 
DKS GROUP 
 9 
Các nguyên nhân làm Reset PIC (POR, manual reset…) 
- Reset khi PIC được cấp nguồn (Power-On Reset) 
- Reset bằng tay khi cấp mức logic ‘0’ cho chân MCLR của PIC 
- Reset khi đang ở chế độ SLEEP 
- Reset do bộ watchdog timer xảy ra tràn 
… 
Microcontroller PIC16F84 knows several sources of resets: 
a) Reset during power on, POR (Power-On Reset) 
b) Reset during regular work by bringing logical zero to MCLR 
microcontroller's pin. 
c) Reset during SLEEP regime 
d) Reset at watchdog timer (WDT) overflow 
e) Reset during at WDT overflow during SLEEP work regime. 
2.3 Khối xử lý trung tâm và các thanh ghi trạng thái 
Là bộ não của PIC 
Central processing unit (CPU) is the brain of a microcontroller. That part is 
responsible for finding and fetching the right instruction which needs to be 
executed, for decoding that instruction, and finally for its execution. 
Central processing unit connects all parts of the microcontroller into one 
whole. Surely, its most important function is to decode program instructions. 
When programmer writes a program, instructions have a clear form like 
MOVLW 0x20. However, in order for a microcontroller to understand that, 
this 'letter' form of an instruction must be translated into a series of zeros 
and ones which is called an 'opcode'. This transition from a letter to binary 
form is done by translators such as assembler translator (also known as an 
assembler). Instruction thus fetched from program memory must be 
DKS GROUP 
 10 
decoded by a central processing unit. We can then select from the table of all 
the instructions a set of actions which execute a assigned task defined by 
instruction. As instructions may within themselves contain assignments 
which require different transfers of data from one memory into another, from 
memory onto ports, or some other calculations, CPU must be connected with 
all parts of the microcontroller. This is made possible through a data bus and 
an address bus. 
Arithmetic logic unit is responsible for performing operations of adding, 
subtracting, moving (left or right within a register) and logic operations. 
Moving data inside a register is also known as 'shifting'. PIC16F84 contains 
an 8-bit arithmetic logic unit and 8-bit work registers. 
In instructions with two operands, ordinarily one operand is in work register 
(W register), and the other is one of the registers or a constant. By operand 
we mean the contents on which some operation is being done, and a register 
is any one of the GPR or SFR registers. GPR is an abbreviation for 'General 
Purposes Registers', and SFR for 'Special Function Registers'. In instructions 
with one operand, an operand is either W register or one of the registers. As 
an addition in doing operations in arithmetic and logic, ALU controls status 
bits (bits found in STATUS register). Execution of some instructions affects 
status bits, which depends on the result itself. Depending on which 
instruction is being executed, ALU can affect values of Carry (C), Digit Carry 
(DC), and Zero (Z) bits in STATUS register. 
STATUS Register 
bit 7 IRP (Register Bank Select bit) 
Bit whose role is to be an eighth bit for purposes of indirect addressing the 
internal RAM. 
1 = bank 2 and 3 
0 = bank 0 and 1 (from 00h to FFh) 
bits 6:5 RP1:RP0 (Register Bank Select bits) 
These two bits are upper part of the address for direct addressing. As 
instructions which address the memory directly have only seven bits, they 
need one more bit in order to address all 256 bytes which is how many bytes 
DKS GROUP 
 11 
PIC16F84 has. RP1 bit is not used, but is left for some future expansions of 
this microcontroller. 
01 = first bank 
00 = zero bank 
bit 4 TO Time-out ; Watchdog overflow. 
Bit is set after turning on the supply and execution of CLRWDT and SLEEP 
instructions. Bit is reset when watchdog gets to the end signaling that 
overflow took place. 
1 = overflow did not occur 
0 = overflow did occur 
bit 3 PD (Power-down bit) 
This bit is set whenever power supply is brought to a microcontroller : as it 
starts running, after each regular reset and after execution of instruction 
CLRWDT. Instruction SLEEP resets it when microcontroller falls into low 
consumption mode. Its repeated setting is possible via reset or by turning 
the supply off/on . Setting can be triggered also by a signal on RB0/INT pin, 
change on RB port, upon writing to internal DATA EEPROM, and by a 
Watchdog. 
1 = after supply has been turned on 
0 = executing SLEEP instruction 
bit 2 Z (Zero bit) Indication of a zero result 
This bit is set when the result of an executed arithmetic or logic operation is 
zero. 
1 = result equals zero 
0 = result does not equal zero 
bit 1 DC (Digit Carry) DC Transfer 
Bit affected by operations of addition, subtraction. Unlike C bit, this bit 
represents transfer from the fourth resulting place. It is set in case of 
subtracting smaller from greater number and is reset in the other case. 
1 = transfer occurred on the fourth bit according to the order of the result 
0 = transfer did not occur 
DC bit is affected by ADDWF, ADDLW, SUBLW, SUBWF instructions. 
bit 0 C (Carry) Transfer 
Bit that is affected by operations of addition, subtraction and shifting. 
1 = transfer occurred from the highest resulting bit 
0 = transfer did not occur 
C bit is affected by ADDWF, ADDLW, SUBLW, SUBWF instructions. 
DKS GROUP 
 12 
2.4 Bộ nhớ RAM và các chế độ định địa chỉ trong PIC 
Bộ nhớ Flash RAM 
Bank và Thanh ghi điều khiển việc truy cập bộ nhớ 
Các chế độ truy cập RAM (trực tiếp,gián tiếp…) 
Lập trình truy cập bộ nhớ RAM 
DKS GROUP 
 13 
2.4 Tổ chức bộ nhớ ROM + EEPROM 
2.4.1 Bộ nhớ chương trình – Flash Program Memory 
 Bộ nhớ chương trình (sau đây viết tắt là bộ nhớ flash) là nới lưu trữ các chương 
trình mà người lập trình viết ra, nhằm làm cho PIC thực hiện đúng chức năng mong 
muốn. Bộ nhớ flash là bộ nhớ vừa có thể đọc, ghi và xóa được trong quá trình hoạt động 
của PIC. Quá trình đọc sẽ thực hiện đọc từng byte mỗi lần, quá trình ghi vào bộ nhớ 
thực hiện theo môi khối 8 bytes cho một lần ghi và việc xóa bộ nhớ flash sẽ thực hiện 
xóa từng khối 64 bytes cho mỗi lần thực hiện. 
2.4.1.1 Đọc ghi dữ liệu giữa bộ nhớ flash và RAM 
 Để thực hiện việc đọc, ghi bộ nhớ flash, có hai hoạt động cho phép vi xử lý thực 
hiện việc di chuyển các byte dữ liệu giữa bộ nhớ flash và bộ nhớ RAM đó là : Table 
Read (TBLRD) và Table Write (TBLWR). 
 Bộ nhớ chương trình của PIC có độ rộng là 16-bit, trong khi đó bộ nhớ RAM là 8-
bit. Quá trình thực hiện đọc/ghi Table Read và Table Write được thực hiện thông qua 
một thanh ghi 8-bit là TBLAT. 
DKS GROUP 
 14 
2.4.1.2 Các thanh ghi điều khiển 
Có bốn thanh ghi đảm nhận chức năng điều khiển quá trình trao đổi dữ liệu với 
bộ nhớ Flash, đó là: 
– EECON1 
– EECON2 
– TABLAT 
– TBLPTR 
Thanh ghi EECON1 và EECON2: 
 Thanh ghi EECON1 là thanh ghi điều khiển việc truy cập bộ nhớ Flash và 
EEPROM. Thanh ghi EECON2 không phải là một thanh ghi vật lý, đọc EECON2 sẽ luôn 
cho kêt quả là ‘0’. EECON2 được dành riêng cho việc ghi và xóa bộ nhớ flash. 
Bit7 EEPGD: Bit chọn bộ nhớ chương trình hay bộ nhơ EEPROM 
 1 = Truy cập bộ nhớ flash 
 0 = Truy cập bộ nhớ EEPROM 
Bit6 CFGS: Bit chon Thanh ghi cấu hình hay bộ nhơ Flash/Data EE 
 1 = Truy cập đến các thanh ghi cấu hình 
 0 = Truy cập bộ nhớ Flash/data EEPROM 
Bit5 Không sử dung (đọc ra = ‘0’) 
Bit4 FREE: Bit cho phép xóa hàng bộ nhớ Flash 
 1 = Xóa hàng bộ nhớ Flash có địa chỉ cho bởi TBLPTR ở lệnh WR tiếp theo 
 0 = Chỉ thực hiện ghi vào bộ nhớ Flash 
Bit3 WRERR: Cờ báo lỗi của bộ nhớ EEPROM 
 1 = Quá trình ghi kết thúc quá sớm (Reset trong quá trình tự ghi) 
 0 = Quá trình ghi dữ liệu hoàn tất không có lỗi 
Bit2 WREN: Bit cho phép ghi 
 1 = Cho phép thực hiện ghi/xóa 
 0 = Không cho phép ghi/xóa 
Bit1 WR: Kiểm soát việc ghi/xóa bộ nhớ Flash/Data EE 
 1 = Bắt đầu quá trình ghi/xóa bộ nhớ Flash/ Bộ nhớ EEPROM 
 0 = Quá trình ghi thực hiện xong 
Bit6 RD: Kiểm soát việc đọc bộ nhớ Flash/Data EE 
 1 = Bắt đầu quá trình đọc 
 0 = Quá trình đọc dữ liệu hoàn tất. 
DKS GROUP 
 15 
4 
Bộ nhớ EEPROM 
Thanh ghi điều khiển việc truy cập bộ nhớ 
Lập trình đọc dữ liệu từ EEPROM, F-ROM 
Lập trình ghi dữ liệu vào EEPROM, F-ROM 
Chế độ bảo vệ (Code Protect) 
DKS GROUP 
 16 
2.5 Tổ chức vào/ra trong PIC 
Giới thiệu chung về các cổng vào/ra trong PIC: Cổng là một nhóm các chân của Vi 
điều khiển, chúng có thể được truy cập đồng thời hay theo từng bit một, đọc trạng thái 
hiện có trên cổng. Về mặt vật lý, mỗi cổng là một thanh ghi nằm bên trong Vi điều khiển 
và được kết nối đến các chân của Vi điều khiển. Cổng đóng vai trò là một kết nối vật lý 
giữa CPU và thế giới bên ngoài. 
Physically, port is a register inside a microcontroller which is connected by wires to the 
pins of a microcontroller. Ports represent physical connection of Central Processing Unit with 
an outside world. Microcontroller uses them in order to monitor or control other components 
or devices. Due to functionality, some pins have twofold roles like PA4/TOCKI for instance, 
which is in the same time the fourth bit of port A and an external input for free-run counter. 
Selection of one of these two pin functions is done in one of the configuration registers. An 
illustration of this is the fifth bit T0CS in OPTION register. By selecting one of the functions 
the other one is disabled. 
Thanh ghi cổng và thanh ghi điều khiển chế độ vào/ra 
Trong mỗi Vi điều khiển PIC có thể có từ 2 cho đến 10 cổng, số lượng tùy theo từng 
loại PIC. Đối với loại PIC 40 chân mà ta thường hay sử dụng có tất cả là 5 cổng đó là: 
- PORTA: Độ rộng là 6 bit 
- PORTB: Độ rộng là 8 bit 
- PORTC: Độ rộng là 8 bit 
- PORTD: Độ rộng là 8 bit 
- PORTE: Độ rộng là 3 bit 
Không giống như AT8051, các cổng của PIC ngoài thanh ghi cổng còn có thêm một 
thanh ghi điều khiển chế độ vào ra cho từng chân của cổng đó. PORTA có thanh ghi 
TRISA, PORTB có thanh ghi TRISB… Khi lập trình điều khiển vào ra cho PIC ta cần chú 
ý tới điều này để tránh gặp những sai sót không đáng có. Vì các cổng về cơ bản là giống 
nhau, dưới đây ta sẽ đi tìm hiều một vài PORT cụ thể của PIC. 
PORTA và TRISA 
PORTA của PIC16F877A có độ rộng là 6-bit tương ứng với 6 chân từ RA0 đến RA5. 
Thanh ghi điều khiển hướng dữ liệu là TRISA. Thiết lập giá tri “1” cho mỗi bit trong 
thanh ghi TRISA sẽ định nghĩa chân tương ứng với bit đó là chân vào dữ liệu, và thiết 
lập “0” cho mỗi bit trong TRISA định nghĩa chân tương ứng là chân xuất dữ liệu. 
Đọc thanh ghi PORTA chính là đọc trạng thái của các chân và ghi giá trị vào thanh 
ghi PORTA là ghi vào bộ chốt cổng PORTA. Toàn bộ quá trình ghi là đọc – sửa – ghi, 
nghĩa là đọc giá trị của cổng, sửa giá trị và ghi trở lại bộ chốt dữ liệu cổng. 
Một số chân của PORTA còn là chân vào giá trị tương tự và chân vào điện áp tham 
chiếu (Vref) cho bộ Chuyển đổi tương tự số (Analog to Digital Converter) và bộ So sánh 
(Comparators), cấu hình cho các chân này là chân vào tương tự hay số thông qua thanh 
DKS GROUP 
 17 
ghi ADCON1. Mặc định khi khởi động các chân PORTA được thiết lập là chân vào 
tương tự. Khi lập trình ta cần chú ý điều này. 
PORTB và TRISB 
PORTB có 8 chân từ RB0 cho đến RB7 tương ứng với độ rộng là 8 bit. Thanh ghi để 
điều khiển hướng dữ liệu của PORTB có tên là TRISB cũng có độ dài là 8 bit, tương ứng 
với 8 bit của PORTB. Thiết lập giá tri “1” cho mỗi bit trong thanh ghi TRISB sẽ định 
nghĩa chân tương ứng với bit đó là chân vào dữ liệu, và thiết lập “0” cho mỗi bit trong 
TRISB định nghĩa chân tương ứng là chân xuất dữ liệu. 
TRISB.0 = 0 =>> Chân RB0 là chân xuất 
TRISB.0 = 1 =>> Chân RB0 là chân nhập 
Mỗi chân của PORTB có một điện trở kéo và có thể được kích hoạt bằng cách xóa bit 
thứ 7 RBPU trong thanh ghi OPTION. Các điện trở kéo sẽ tự động ngắt khi PORTB thiết 
lập là cổng xuất. Mặc định khi khởi động, các điện trở kéo này được ngắt. 
Lập trình chế độ vào (Input) 
- Thiết lập 1 cho các bit trong thanh ghi TRISB 
- Kích hoạt các điện trở kéo. 
- Nhận dữ liệu từ cổng bằng cách đọc thanh ghi PORTB 
Ví dụ: 
unsigned char port_buffer; // Khai báo biến là bộ đệm giá trị củ PORTB 
TRISB = 0b11111111; // Toàn bộ PORTB là cổng vào 
DKS GROUP 
 18 
 RBPU = 0; // Kích hoạt điện trở kéo 
 port_buffer = PORTB; // Đọc giá trị của PORTB vào biến port_buffer 
Lập trình chế độ ra (Output) 
- Thiết lập 0 cho các bit của thanh ghi TRISB 
- Xuất dữ liệu ra cổng (ghi giá trị vào thanh ghi PORTB) 
Ví dụ: 
 TRISB = 0b00000000; // PORTB là cổng ra 
PORTB = 0xAA; // Xuất giá trị 0xAA ra cổng B 
 Trên đây chỉ là hai ví dụ nhỏ về lập trình vào ra cho PIC, bài lập trình chi tiết sẽ 
được trình bày ở cuối chương. 
 Trong các chân của PORTB, 4 chân từ RB4 đến RB7, ngoài chức năng là chân vào 
ra, chúng còn sinh ra ngắt gọi là ngắt On-Change. Ngắt sẽ xảy ra khi tại các chân đó có 
sự chuyển trạng thái từ logic 1 sang 0 hay ngược lại. Chi khi cả 4 chân này được thiết lập 
ra chân vào thì ngắt mới xảy ra (nếu một trong các chân RB7 ~ RB4 là chân vào thì ngắt 
không xảy ra khi có sự chuyển trạng thái trên các chân đó). Ta thường ứng dụng ngắt 
On-Change này trong việc quét ma trận bàn phím, khi các hàng của phím được nối đến 
4 chân này, việc xử lý ngắt sẽ xác định phím nào được nhấn. 
 Ngoài ra PORTB còn có chân RB0 là chân vào ngắt ngoài (INT0), các chân RB7-
PGD, RB6-PGC, RB3-PGM được kết hợp khi sử dụng tính năng In-Circuit Debugger và 
Low-Voltage Programming. 
PORTC và TRISC 
DKS GROUP 
 19 
2.6 Timer/Counter 
Mô tả chung về Timer (cấu trúc) 
Các bộ Timer là thành phần không thể thiếu trong mỗi con Vi điều khiển, nó cần 
thiết cho việc xác định chính xác một khoảng thời gian trôi qua. 
Các bộ Timer trong PIC (0,1,2…) 
 Mỗi Vi điều khiển PIC có một số lượng các bộ Timer nhất định, tối thiểu là 3 bộ 
Timer là Timer0, Timer1, Timer2. Trong đó Timer0 và Timer2 là 8 bit, còn Timer1 la 16 
bit. 
Thanh ghi điều khiển 
Tính toán thời gian cho Timer 
Lập trình cho một bộ Timer 
DKS GROUP 
 20 
2.7 Giao tiếp nối tiếp RS232 
Cấu trúc khối RS232 
Thanh ghi điều khiển 
Tốc độ Baud và tính toán 
Chế độ Master (Truyền – nhận) 
Chế độ Slave (Truyền – nhận) 
DKS GROUP 
 21 
2.8 Tổ chức ngắt 
Cấu trúc và các nguồn ngắt