Tổ chức bộ nhớ chương trình Vi điều khiển PIC18 thực hiện một bộ đếm chương trình có độ dài 21-Bit có khoảng trống là 2Mbyte.Truy cập tới vị trí giữa bộ nhớ và 2-Mbyte địa chỉ thì tất c
Trang 2I.Lịch sử phát triển của vi điều khiển PIC
PIC (Programmable Interlligent Computer) là một sản phNm của hãng General Intruments đặt cho dòng sản phNm đầu tiên của họ là PIC 1605 Vào thập kỷ 70 của thế
kỷ 20, General Intruments và Honeywell kết hợp sản xuất ra bộ vi xử lý 16 bit CP1600 Đây là bộ vi xử lý khá mạnh vào thời điểm đó nhưng lại hạn chế về hoạt động vào/ra PIC 1650 được sản xuất để hỗ trợ vi xử lý CP 1600 trong các máy tính sử dụng bộ vi xử
Năm 1985 General Intruments bán bộ phận sản xuất vi điện tử của họ và chủ sở hữu mới hủy bỏ hầu hết các dự án liên quan( do các dự án lúc trước đó đã lỗi thời)
Năm 1989 Microchip Technology tiếp tục phát triển PIC, bắt đầu bằng việc thêm
bộ nhớ EEPROM để tạo thành một bộ điều khiển vào ra khả trình Tiếp đến là tích hợp các tính năng như ngắt, ADC( Analog Digital Convertr) … để tạo thành cá bộ vi điều khiển( Micro Controller)
Đến năm 1992 Microchip Technology đã cho ra đời 6 loại chip với 3 dòng khác nhau:
chip này có từ 12 đến 28 chân vào/ra
này đã được tích hợp thêm hai tài nguyên là ngắt ADC
- Dòng chip độ dài mã lệnh bằng 16 bit là PIC 17C41, tuy nhiên dòng chip này không được chú trọng phát triển vào thời điểm đó
Cùng thời gian này hàng loạt các công cụ hỗ trợ cũng được các công ty khác nhau cho ra đời Điển hình là PICMASTER emulator, PIC Pro II programmer và cả trình dịch C( C Compiler) Các công cụ này cùng với việc thay bộ nhớ OTP (one – time programmable parts) bằng bộ nhớ EEP (Electically Erasable Parts) đã mang đến rắt nhiều tiện lợi cho người lập trình, ví dụ như: người lập trình có thể nạp chương trình mà không cần gỡ chip ra khỏi mạch PIC 16C84 là bộ vi điều khiển đầu tiên có bộ nhớ kiểu EEP
Không lâu sau đó Microchip Technology tiếp tục đưa vào bộ vi điều khiển với mã lệnh dài 14 bit PIC16F877 tính năng gỡ rối(Flash debugging) Tính năng này cho phép
Trang 3người lập trình có thể kiểm soát từng thanh ghi, từng câu lệnh trong chương trình Nhờ những cải tiến liên tiếp, PIC16F87 trở thành bộ vi điều khiển bán chạy nhất vào thời điểm đó( năm 1995 đến 1998)
Đến năm 2000, Microchip Technology tái phát triển lại dòng chip có độ dài mã lệnh bằng 16bit đã có trước đó 8 năm Đại diện cho dòng chip này là PIC18F4520 với tốc
độ mã lệnh bằng 16bit đã có trước đó 8 năm Đại diện cho dòng chip này là PIC18F452 với tốc độ , dung lượng bộ nhớ được cải thiện và khá nhiều tính năng được bổ sung như các bộ định thời(timer), truyền thông nối tiếp…Dòng vi điều khiển PIC 8 bit đã dẫn đầu
số lượng bộ bán ra mỗi năm liên tục từ năm 2002 đến nay
Trước nhu cầu về tốc độ xử lý cũng như các tính năng đặc biệt khác, Microchip Technology tiếp tục cho ra đời các dòng vi điều khiển tiên tiến hơn như: PIC24, PIC33, dsPIC
Ngày nay đã có đến hàng chục dòng PIC với hàng trăm loại chip khác nhau Tại Việt Nam cũng như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng tài liệu, số lượng các ứng dụng mở đã phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn
Trang 4II Kiến trúc phần cứng của vi điều khiển PIC
Trang 5Bộ nhớ chương trình FLASH: 32K
Module MSSP gồm 2 module: SPI(Serial Peripheral Interface) và IC
Trang 6Hình 2.3: Sơ đồ chân PIC 18F4520 dạng DIP
chân
Loại
bộ nhớ đệm
Mô tả PDI
P
QF
N TQFP
clear(Reset)đầu vào,chân này hoạt động ở mức thấp, thiết lập lại cho thiết
bị
Lập trình điện áp đầu vào
Đầu vào số
động tinh thể và dao động đồng hồ bên
Trang 7Bộ nhớ đệm ST khi cấu hình chế độ RC tương tự khác
Đầu vào của nguồn xung clock ngoài Luôn gắn liền với chức năng của chân,
OSC1/CLK1;
OSC2/CLK0 Chân vào/ra
Đầu ra dao động tinh thể, liên kết tinh thể hoặc cộng hưởng trong chế độ dao động tinh thể
Trong chế độ RC, OSC2,chân đầu ra
Trang 8RA6 I/O TTL
CLK0 có ¼ tần số củaOSC1& biểu thị
tỉ lệ chu kì lệnh Chân vào/ra
g
TTL Analo
g
TTL Analo
g Analo
Vào/ra số Đầu vào tương tự 2 A/D đầu vào tham chiếu điện áp (mức thấp)
So sánh đầu ra điện dáp tham chiếu Vào/ra số Đầu vào tương tự 3 Đầu vào tham chiếu điện áp (mức cao)
Trang 9g Analo
g
ST
_
TTL Analo
g TTL Analo
Dò tìm điện áp đầu vào mức cao/thấp
Trang 10g
TTL
ST Analo
g
TTL Analo
Vào/ra số Ngắt ngoài 1 Đầu vào tương tự 10
Vào/ra số Ngắt ngoài 2 Đầu vào tương tự 8
Vào/ra số Đầu vào tương tự 9 Đầu vào 2/so sánh đầu ra 2/PWM đầu
ra
Vào/ra số Chân thay đổi ngắt
Trang 11I/O
I I/O
g
TTL TTL
ST
TTL TTL
ST
ST _
ST
Đầu vào tương tự 11
Vào/ra số Chân thay đổi ngắt Chân cho phép lập trình điện áp mức thấp ICSPTM
Vào/ra số Chân thay đổi ngắt Chân lập trinhg gỡ lỗi&lập tình ICSP
dữ liệu trong vi mạch
vào/ra hai chiều
Vào/ra số
Bộ dao động đầu ra timer1
Timer1/Timer3 đầu vào xung clock bên ngoài
Vào/ra số
Bộ dao động đầu vào Timer1
Trang 12O
I/O I/O
I/O
I/O
I I/O
I/O I/O
ST CMO
ra
Vào/ra số Đầu vào1/so sánh đầu ra1/PWM1 đầu
ra Nâng cao đầu ra 1
Vào/ra số Đầu vào nối tiếp đồng bộ xung clock/ đầu ra cho chế độ SPI
Đầu vào nối tiếp đồng bộ xung clock/đầu ra cho chế
Trang 13ST
ST
ST _
PORD là cổng vào
ra 2 chiều Cổng Slave(PSP) để giao tiếp với cổng vi xử
lý Các chân này có
bộ đếm đầu vào
module được kích hoạt
Vào/ra số Cổng dữ liệu Salve song song
Trang 14I/O I/O
I/O I/O
I/O I/O
I/O I/O
I/O I/O
O
I/O I/O
ST TTL
ST TTL
ST TTL
ST TTL
ST TTL
ST TTL
Vào/ra số Cổng dữ liệu Salve
Vào/ra số Cổng dữ liệu Salve
Vào/ra số Cổng dữ liệu Salve
Vào/ra số Cổng dữ liệu Salve
Vào/ra số Cổng dữ liệu Salve Tăng cường đầu ra CCP1
Vào/ra số Cổng dữ liệu Salve Tăng cường đầu ra CCP1
PORE là cổng vào
ra 2 chiều
Trang 15P
_
ST TTL _
ST TTL
Analo
g
ST TTL
Analo
g
ST
Vào/ra số Điều khiển đọc cho
song Đầu vào tương tự 5
Vào/ra số Điều khiển ghi cho
song Đầu vào tương tự 6
Vào/ra số
khiển cổng Slave song song
Đầu vào tương tự 7
MCLR/VPP/RE3 Mát tham chiếu cho logic & chân vòa/ra
thcihs cực&chân vào/ra
Không có kế nối
Trang 1629
13 7,28
13,13,33,34
_
_
_
CMOS: CMOS ứng với đầu vào hoặc đầu ra
ST: Schmitt Trigger đầu vào ứng với mức độ CMOS
I: đầu vào
O:đầu ra
Power: chức năng
Mặc định cho CCP2 khi cấu hình bit,CCP2MX,được thiết lập
Thay thế cho CCP2 khi cấu hình bit,CCP2MX, được xóa bỏ
Trang 172.3 Bộ 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 thiết bị FOSC0:FOSC1 trong thanh ghi CONFIG1H
Sơ đồ bộ dao động trên vi điều khiển được mô tả trên hình sau:
Hình 2.4 Sơ đồ khối bộ tạo dao động trên PIC 18F4520
2.3.1 Tạo dao động bằng thạch anh ngoài
Ở chế độ XT,LP,HS hoặc HSPLL, một bộ dao động thạch anh và 02 tụ được kết nối với vi điều khiển(như hình 2.5) để tạo dao động cung cấp xung nhịp cho hệ thống
Hình 2.5 Tạo dao động bằng thạch anh
Trang 18Trong đó tần số của thạch anh và giá trị của tụ điện được cho như sau:
15pF 15pF 30pF 50pF
2.3.2 Tạo dao động bằng RC ngoài
Trong chế độ RC, xung nhịp của hệ thống được cung cấp bởi mạch tạo dao động (như hình 2.6).Tần số của xung nhịp này bằng ¼ tần số của mạch RC
Hình 2.6 Tạo dao động bằng RC ở chế độ RC Giá trị linh kiện: 3K<REXT<100K<20pF
Chế độ RCIO hoàn toàn giống với chế độ RC, điểm khác duy nhất là chân OSC2
có thể sử dụng như một chân vào ra(như hình 2.7)
Trang 19Hình 2.7 Tạo dao động bằng mạch RC ở chế độ RCIO
Trang 20Để reset chip khi bật nguồn, cần một mạch điện như hình 2.9
Hình 2.9 Mạch Reset khi bật nguồn Việc chọn kiểu reset bằng thao tác bật nguồn hay WDT phụ thuộc vào bit trong thanh ghi RCON:
R/W R/W-1 U-0 R/W-1 R-1 R-1 R/W-0 R/W-0
bộ nhớ Các dữ liệu EEPROM cho các mục đích thực tế có thể coi là một thiết bị ngoại
vi Từ nó ta có thể gửi và truy cập thông qua những thanh ghi điều khiển
2.5.1 Tổ chức bộ nhớ chương trình
Vi điều khiển PIC18 thực hiện một bộ đếm chương trình có độ dài 21-Bit có khoảng trống là 2Mbyte.Truy cập tới vị trí giữa bộ nhớ và 2-Mbyte địa chỉ thì tất cả các giá trị trả về sẽ là “0” (sử dụng lệnh NOP)
Trang 21PIC18F240 và PIC18F4420 từng có 16Kbytes của bộ nhớ Flash và có thể lưu trữ 8,192 đơn từ PIC18F2520 và PIC18F4520 có 32Kbytes của bộ nhớ Flash và có thể lưu trữ lên đến 18,284 đơn từ PIC18 có 2 vector ngắt Địa chỉ reset vector là 0000H và hai vector ưu tiên ngắt là 0008H và 0018H Sơ đồ bộ nhớ chương trình của PIC18F2420/2520/4420/4520 được biểu diễn ở hình 2.10
Hình 2.10 Tổ chức bộ nhớ chương trình và ngăn xếp trên PIC 18F4520
Trang 222.5.2 Tổ chức bộ nhớ dữ liệu
Trong PIC18 bộ nhớ dữ liệu được thực hiện như bộ nhớ RAM tĩnh Mỗi thanh ghi trong bộ nhớ dữ liệu có một địa chỉ 12Bit, cho phép đến 4.096 byte bộ nhớ dữ liệu Không gian của bộ nhớ được chia thành 16 bank có chứa 256 byte; PIC18 thực hiện cả
16 bank Hình 2.11 cho thấy tổ chức bộ nhớ dữ liệu của PIC18 Bộ nhớ dữ liệu có chứa các thanh ghi Special Function ( SFRs ) và General Puporse ( GPRs ) SFR có thể dùng
để kiểm soát trạng thái của bộ điều khiển và có chức năng ngoại vi, còn GPRs được dùng
để lưu trữ dữ liệu và các hoạt động đệm cho những ứng dụng Bất kì 1 vị trí nào chưa được thực hiện sẽ được đọc là ‘0’
Các tập lệnh và cấu trúc cho phép hoạt động trên tất cả các Bank Bộ nhớ trực tiếp
có thể truy cập một cách trực tiếp hay gián tiếp hoặc cách đánh địa chỉ
Để đảm bảo các thanh ghi hay sử dụng ( SFRs và GPRs ) có thể truy cập được trong một chu kì, PIC18 đã thực hiện một Access Bank Đây là kiểu bộ nhớ có độ lớn
256 byte được truy cập một cách nhanh chóng vào SFR và phần thấp của GPR Bank 0
mà không cần sử dụng BSR
2.5.2.1 Thanh ghi lựa chọn Bank (BSR)
Độ lớn của bộ nhớ dữ liệu yêu cầu một chương trình định vị hiệu quả để truy cập tới bất kì địa chỉ nào Điều này có nghĩa là ta không cần phải cung cấp toàn bộ địa chỉ mỗi khi đọc hoặc viết Đối với thiết bị PIC18, điều này được thực hiện với một chương trình bank RAM Nó chia không gian bộ nhớ thành 16 Bank liền kề Tùy vào câu lệnh, tại mỗi thời điểm có thể gửi trực tiếp địa chỉ của nó đầy đủ 12bit, 8 bit thấp hoặc một con trỏ Bank 4 bit
Hầu hết các câu lệnh trong tập lệnh của PIC18 dùng trong các con trỏ Bank được gọi là Bank Select Register ( BSR ) SFR chứa 4 bit địa chỉ của một vị trí cao nhất Câu lệnh riêng bao gồm 8 bit thấp Chỉ có 4 bit thấp của BSR được thực hiện ( 3:0 ) 4 bit cao
là không được sử dụng và luôn đọc là ‘0’ và không được ghi vào 4 bit này BSG có thể gán giá trị trực tiếp bằng câu lệnh MOVLB BSR cho biết giá trị của Bank trong bộ nhớ
dữ liệu, 8 bit trong câu lệnh hiển thị vị trí trong Bank Mối quan hệ giữa các giá trị của BSR và việc phân chia các Bank trong bộ nhớ dữ liệu được hiển thị trong hình 5-7 16 thanh ghi có thể cùng chia sẻ địa chỉ theo thứ tự thấp Người sử dụng phải lựa chọn Bank thích hợp trước khi thực hiện một dữ liệu đọc hoặc viết Ví dụ, Chuyển dữ liệu chương trình tới một địa chỉ 8 bit của F9h trong khi BSR bằng 0Fh sẽ thiết lập lại bộ đếm chương trình
Trang 23Trong khi bất kì Bank nào cũng có thể được lựa chọn, chỉ những bank nào được lựa chọn mới có thể đọc hoặc ghi vào Việc ghi cho những bank chưa được thực hiện sẽ được bỏ qua còn việc đọc sẽ được là ‘0’ Mặc dù vậy trạng thái của thanh ghi sẽ vẫn bị ảnh hưởng nếu các hoạt động thành công Sơ đồ bộ nhớ dữ liệu trong hình 5-5 cho thấy việc thực hiện các Bank
Trong tập lệnh của PIC18, Câu lệnh MOVFF hoàn toàn xác định địa chỉ 12-bit của đích và thanh ghi nguồn Khi thực hiện câu lệnh này nó bỏ qua hoàn toàn BSR Tất cả các câu lệnh khác bao gồm duy nhất địa chỉ có thứ tự thấp như toán hạng và phải sử dụng BSR hoặc truy cập Bank để tìm thanh ghi đích của chúng
Hình 2.11 Tổ chức bộ nhớ dữ liệu RAM trên PIC 18F4520
Trang 242.5.2.2 Truy cập Bank
Trong khi việc sử dụng BSR với một địa chỉ 8 bit cho phép người sử dụng có thể
xử lý toàn bộ phạm vi của bộ nhớ dữ liệu Điều đó đồng nghĩa với việc người sử dụng luôn luôn phải lựa chọn các Bank thích hợp Nếu không thì sẽ bị đọc hoặc ghi sai vị trí Điều này sẽ trở nên tai hại nếu GRP là đích của một thao tác, nhưng một SFR sẽ được ghi
đè nên đó Dùng lệnh AND/OR để kiểm tra sự thay đổi của BSR cho từng thao tác đọc hoặc ghi bộ nhớ dữ liệu trở nên không hiệu quả Để sắp xếp một cách hợp lý các truy cập tới các vị trí của bộ nhớ, bộ nhớ dữ liệu được cấu hình với 1 Bank Access cho phép người dùng có thể truy cập vào bộ nhớ mà không cần dùng BSR AccessBank bao gồm 128byte đầu tiên của bộ nhớ (00H-7Fh) và 128byte cuối cùng của bộ nhớ(80h-FFh) tại ô 15 Nửa dưới là “Access RAM” và có GPRs Phần trên của nó chứa các SFRs Hai vùng này được đặt cạch nhau trong Access Bank và có thể được gửi đi theo một địa chỉ 8 bits ( hình 5-5) Bank Access được sử dụng bởi một tập lệnh của Pic bao gồm các bit Ram Access(sử dụng ‘a’ làm tham số) Khi ‘a’ = 1 câu lệnh sử dụng BSR và địa chỉ 8 bit bên trong các
mã tác vụ cho địa chỉ bộ nhớ dữ liệu Khi ‘a=0’ câu lệnh bắt buộc phải sử dụng truy cập địa chỉ access bank, giá trị hiện tại của BSR sẽ được bỏ qua Sử dụng cách này buộc phải
sử dụng câu lệnh cho phép địa chỉ hoạt động trong một chu kì mà không cần nhập các BSR đầu tiên Đối với địa chỉ 8 bit 80h và trên nữa, điều này giúp người dùng có thể sử dụng SFRs hiệu quả hơn
RAM Access dưới 80h dùng để chứa những giá trị dữ liệu mà người dùng có thể
sử dụng để truy cập nhanh Ram Access cho phép hoạt động nhanh và nhiều hơn trong bối cảnh cần phải lưu giữ và chuyển đổi các biến Các sơ đồ của Access Bank là không giống nhau khi mở rộng các tập lệnh
2.5.2.3 Mục đích chung của các thanh ghi
PIC18 có thể có bộ nhớ trong GPR, đây là bộ nhớ RAM có sẵn tất cả các câu lệnh GPRs bắt đầu ở phía dưới của Bank (00h) và tăng dần lên trên GPRs không được khởi tạo khi reset nguồn và cũng không thay đổi bởi bất kì một reset nào khác
2.5.2.4 Chức năng đặc biệt của thanh ghi
Thanh ghi có chức năng đặc biệt là thanh ghi được sử dụng bởi CPU và các module từ bên ngoài để kiểm soát hoạt động của thiết bị Những thanh ghi này được thực hiện như bộ nhớ RAM tĩnh SFR bắt đầu từ phía trên của bộ nhớ dữ liệu từ FFFH tới F80h chiếm toàn bộ nửa trên của 15Bank Danh sách các thanh ghi này biểu diễn ở bảng 2.12
Trang 25SFR được phân làm 2 loại là : các chức năng bên trong (ALU, RESET, Ngắt ) và các chức năng ngoại vi Các thanh ghi phục vụ reset và ngắt sẽ được nói chi tiết mục của chúng, còn các thanh ghi trạng thái của ALU được nói trong phần này Thanh ghi liên quan đến hoạt động của thiết bị có chức năng ngoại vi được nói trong chương các thiết bị ngoại vi
SFR có thể có trong các thiết bị ngoại vi có chức năng điều khiển Unused chưa được định nghĩa nếu đọc sẽ bằng ‘0’
Hình 2.12.Phân bố địa chỉ của các thanh ghi chức năng
Trang 26Hình 2.12 Tổng kết các thanh ghi của PIC 18
Trang 27Thanh ghi trạng thái:
U-0 U-0 U-0 R/W-x R/W-x R/W-x R/W-x R/W-x
Bit N: =0: kết quả phép toán là số dương
=1: kết quả phép toán là số âm
OV: =0: không xáy ra tràn
Trang 28III Hoạt động vào ra và cấu hình phần cứng của vi điều khiển PIC 18F4520
3.1 Cấu trúc các chân vào/ra của PIC 18F4520
PIC 18F4520 có 5 cổng vào/ra là PORTA, B, D,E Các chân được thiết lập thành các chức năng khác nhau phụ thuộc vào các thanh ghi điều khiển:
đầu ra được chốt ở mức 0)
các chân tương ứng có chiều vào)
Cấu trúc của một chân vào/ra được mô tả trên hình 3.1:
Hình 3.1 Cấu trúc của một chân vào/ra
3.2 Cổng A
Cổng A là cổng 2 chiều 8bit, gồm có 8 chân được ký hiệu từ RA0 đến RA7 Các chân này có thể dùng để đọc hoặc ghi từng bit hoặc cả byte
Trang 29Các thanh ghi liên quan đên cổng A được biểu diễn dưới bảng sau:
PORTA: là thanh ghi chứa dữ liệu vào ra của cổng A
LATA: là thanh ghi chốt dữ liệu đầu ra của cổng A
TRISTB: là thanh ghi điều khiển hướng vào(hoặc ra) của cổng A
ADCON1: là thanh ghi điều khiển A/D, thiết lập các đầu vào lá số hay tương tự(được sử dụng để cấu hình các chân AN0 đến AN4của cổng A)
CMCON: là thanh ghi điều khiển bộ so sánh (xem phần so sánh)
CVRCON: là thanh ghi điều khiển điện áp tham chiếu của bộ so sánh( xem phần
Trang 30PORTB: là thanh ghi chứa dữ liệu vào/ra của cổng B
LATB:là thanh ghi chốt dữ liệu đầu ra của cổng B
TRISTB: là thanh ghi điều khiển hướng vào(hoặc ra) của cổng B
INTCON, INTCON2, INTCON3:là các thanh ghi điều khiển hoạt động ngắt( xem phần ngắt)
ADCON1: là thanh ghi điều khiển A/D, thiết lập đầu vào là số hay tương tự
TRISTC PORTC thanh gjhi hướng dữ liệu
PORTC: là thanh ghi chứa dữ liệu của cổng C
LATC: là thanh ghi chốt dữ liệu vào/ra couar cổng C
TRISTC: là thanh ghi điều khiển hướng vào(hoặc ra)của cổng C
3.5 Cổng D
Cổng D là cổng 2 chiều 8 bit, gồm có 8 chân được kí hiệu từ RD0 đến RD7 Các chân có thể đọc hoặc ghi từng bit hoặc cả byte
Trang 31Có 5 thanh ghi liên quan đến cổng D:
PORTD: là thanh ghi chứa dữ liệu vào/ra của cổng D
LATD: là thanh ghi chốt dữ liệu vào/ra của cổng D
TRISD: là thanh ghi điều khiển hướn vào (hoặc ra) của cổng D
TRISE: là thanh ghi hướng dữ liệu của cổng E nhưng có thên chức năng điều khiển giao tiếp sông của cổng D(xem thêm phần giao tiếp song song)
CCP1CON: là thanh ghi điều khiển của chế độ PWM, Compare (xem phần tương ứng)
3.6 Cổng E
Cổng E bào gồm 4 chân từ RE0 đến RE3, các chân RE):RE3 có thể thiết lập thành đầu vào/ra dữ liệu số hay đầu vào tương tự cho bộ biến đổi A/D, đặc biệt là nó còn được thiết lập thành các chân RD,WR, CS cho chế đọ giao tiếp song song cùng với cổng D, riêng chân RE3 chỉ có chiều vào nó còn được thiết lập thành chân Reset phụ thuộc vào bit cấu hình MCLRE
Có 4 thanh ghi liên quan đến cổng E:
Trang 32PORTE: chỉ sử dụng các bit RE0:RE2 để chứa dữ liệu vào/ra
LATE: chỉ sử dụng các bít 0:2 đẻ chốt dữ liệu vào/ra trên các chân RE0:RE2
TRISE: chỉ sử dụng các bít TRISE0:TRISE2 để điều khiển hướng vào ( hoặc ra) cho 3 chân tương ứng Các bit khác của thanh ghi này dùng cho chế độ giao tiếp song song
ADCON1: thanh ghi điều khiển của bộ A/D
3.7 Giao tiếp song song (PSP – Paralell slave Port) ở cổng D và cổng E
Chế độ hoạt động này PORTD được thiết lập là các dường dữ liệu, còn các chân của PORTE làm các chân điều khiển ghi đọc, RE0 là RD, RE1 là WR, RE2 là chân
TRISD PORTD thanh ghi hướng dữ liệu
PORT
E
Trang 33PIE1 PSPIE PSPIE RCIE RXIE SSPI
INTCON: là thanh ghi điều khiển ngắt (xem phần ngắt)
PIR1: là thanh ghi cờ ngắt (xem phần ngắt)
PIE1 : là thanh ghi cho phép ngắt( xem phần ngắt)
Các bước để thiết lập giao tiếp như sau:
• Đặt bít PSPMODE=1 cho phép PORTD, PORTE hoạt động ở chế độ PSP
• Đặt các bít TRISE0:TRISE2=1: đặt hướng dữ liệu có chiều vào
• Đặt các bít từ PFCG0:PFCG3=1: (thanh ghi ADCON1) thiết lập cho các chân của PORTE có chiều vào là tín hiệu số
Hình 3.2 Giao tiếp song song trên PORTD và PORTE