Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếmdựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.. Cổng giao tiếp song song PSP Par
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNG
KHOA ĐIỆN TỬ - TIN HỌC
Trang 2Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Nhận xét của giáo viên hướng dẫn
-o0o -………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Tp HCM, ngày … tháng … năm 2010
Giáo viên hướng dẫn
Nguyễn Hữu Phước
Trang 3Nhận xét của giáo viên phản biện
-o0o -
Tp.HCM, ngày … tháng… năm 2010
Giáo viên phản biện
Trang 4Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Lời cảm ơn
Trong suốt thời gian học tập tại trường Cao Đẳng Kỹ Thuật Cao Thắng, chúng em nhận được sự giảng dạy cũng như sự chỉ dẫn một cách tận tình của quí thầy cô về những kiến thức trong học tập cũng như trong cuộc sống.
Chúng em xin chân thành cảm ơn quí thầy cô trong khoa Điện Tử_ Tin Học đã giảng dạy cho chúng em những kiến thức chuyên môn và tạo điều kiện cho chúng em hoàn thành tốt khóa học, qua đó giúp chúng em định hướng được trong
việc lựa chọn và thực hiện đề tài “Điều khiển tốc độ động
cơ DC” trong khả năng của mình.
Chúng em cũng xin chân thành cảm ơn cô Nguyễn Hữu Phước, đã tận tình theo dõi, giúp đỡ và hướng dẫn chúng em trong suốt thời gian chúng em thực hiện và hoàn thành đồ án này.
Nhóm sinh viên thực hiện
Trần Công Danh Trần Vũ Phi Long
Trang 5Lời nói đầu
Ngày nay, khoa học công nghệ đạt được một trình độ phát triển rất nhanh và mạnh mẽ, cùng với sự phát triển của các ngành kỹ thuật nói chung
và công nghệ điện tử nói riêng Những thành tựu đạt được cũng như các ứng
dụng của công nghệ kỹ thuật điện tử ngày càng được sử dụng nhiều trong
cuộc sống hàng ngày của con người và trong các ngành công nghiệp sản xuất
và chế biến Đặc biệt trong lĩnh vực vi xử lý, những ứng dụng của nó đã
mang lại hiệu quả rất thiết thực cho cuộc sống như quang báo điện tử, đồng
hồ số, điều khiển tốc độ động cơ, hệ thông đếm sản phẩm, ngôi nhà thông
minh…
Nắm được tầm quan trọng đó, nhóm chúng em đã quyết định chọn đề tài
“Điều khiển tốc độ động cơ DC” để làm đồ án tốt nghiệp của mình Để qua
đó thể hiện được một phần mô hình của những hệ thống điều khiển tự động
trong các nhà máy sản xuất và cũng như trong các ngành công nghiệp khác
Bằng những kiến thức đã đạt được trong quá trình học tập tại nhà trường và những tìm hiểu nghiên cứu bên ngoài cùng với những nỗ lực của
bản thân mỗi sinh viên trong nhóm chúng em sẽ được đánh giá qua đợt bảo
vệ đồ án lần này So với thời gian học tập tại trường thì có thể kết quả mang
lại của đề tài này tuy không lớn nhưng đó cũng là thành quả của quá trình
học tập tại nhà trường, những thành công ban đầu trước khi tốt nghiệp.
Nhóm chúng em đã cố gắng nỗ lực hết mình trong suốt thời gian thực hiện đề tài này nhưng với lượng kiến thức còn hạn hẹp và thời gian cho phép
còn hạn chế nên đồ án còn nhiều thiếu xót Nhóm chúng em mong nhận được
nhiều nhận xét và ý kiến đóng góp của quý thầy cô và các bạn về đề tài này
cũng như phương hướng phát triển mở rộng để đề tài được hoàn thiện hơn.
Nhóm chúng em xin chân thành cảm ơn.
Trang 6Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
CHƯƠNG DẪN NHẬP
1.1/ Đặt vấn đề:
Với những thành tựu về khoa học kỹ thuật cũng như nhu cầu của con người ngàycàng cao Vì vậy đòi hỏi nhiều ứng dụng của khoa học kỹ thuật vào các ngành công nghệpnói chung và kỹ thuật điện tử nói riêng được ứng dụng vào cuộc sống Nó giúp cho các ngànhcông nghiệp liên quan phát triển, đồng thời giúp cho cuộc sống của con người ngày càngnâng cao hơn
Một trong các ứng dụng được sử dụng rộng rãi trong công nghiệp đó là hệ thống điềukhiển tự động Đồ án này nhóm chúng em xin trình bày về mạch điều khiển tốc độ động cơ
để một phần thấy rõ được nguyên tắc làm việc căn bản của hệ thống điều khiển tự động
1.2/ Các yêu cầu cần đạt được và giới hạn của đề tài:
Một và mạch điều khiển tốc độ động cơ thì các yêu cầu tối thiểu mà đề tài cần đạtđược đó là đếm và hiện ra led 7-đoạn tốc độ động cơ, cho động cơ chạy thuận nghịch đượccuối cùng là cho động cơ chạy theo số vòng định trước
Nhưng vì khó khăn về giới hạn thời gian và trình độ cho phép, mạch của chúng emchỉ dừng lai ở điều khiển được tốc độ động cơ DC Vấn đề cho động cơ chạy theosố vòngđịnh trước còn sai xót
1.3/ Mục đích nghiên cứu:
Trong quá trình nghiên cứu và thực hiện đề tài này giúp cho người thực hiện:
- Tăng khả năng tự học, tự nghiên cứu và giải quyết vấn đề
- Tiếp xúc trực tiếp với thực tế, nâng cao kinh nghiệm nghề nghiệp chuyên ngành
- Phải nắm vững và vận dụng những kiến thức chuyên ngành, tìm hiểu nghiên cứu tàiliệu qua sách vở, giáo trình nước ngoài và các mạch điện và mô hình thực tế liên quan để thicông phần cứng
1.4/ Đối tượng nghiên cứu, ứng dụng và hướng phát triển của đề tài:
Lập trình vi xử lý cho hoạt động của mạch nên đối tượng nghiên cứu chính là vi điềukhiển Pic16F877A, IC số cho vấn đề điều khiển và hiện thị
Đề tài này được ứng dụng rộng rãi và phổ biến trong các nhà máy, các khu côngnghiệp, các ngành công nghiệp sản xuất và chế biến
Hướng phát triển của đề tài là xem xét nghiên cứu các ứng dụng trong thực tế để cóthể mở rộng và phát triển đề tài lên thành các hệ thống hoạt động trong nhà máy
Trang 7Chương 2:
GIỚI THIỆU MỘT SỐ IC
ĐƯỢC SỬ DỤNG TRONG MẠCH
2.1/ Giới thiệu về PIC:
2.1.1/Tổng quan về họ vi điều khiển:
Dòng PIC đầu tiên là PIC1650 được phát triển Microelectronics Division thuộcGeneral_Instrument PIC bắt nguồn từ chữ viết tắc của “Programmable Intelligent Computer”(Máy tính khả trình thông minh) là một sản phẩm của hãng General Instruments đặt chodong2san3 phẩm đầu tiên của họ là PIC1650 Lúc này, PIC 1650 được Pic là một ho vi điềukhiển RISC được san xuất bởi công ty Mirochip Technology dùng để giao tiếp với các thiết
bị ngoại vi cho các máy chủ 15 bit CP1600, vì vậy, người ta cũng gọi PIC “PeripheralInterface Controller” (Bộ điều khiển giao tiếp ngoại vi) CP1600 là một CPU tốt, nhưng lạikém về các hoạt động xuất nhập, vì vậy PIC 8_bit được phất triển vào khoảng năm 1975 để
hộ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt trong ROM, vàmặc dù cụm từ RISC chưa được sử dủng thời bấy giờ, nhưng PIC thật sự là một vi điều khiểnvới kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động) Năm 1985General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu hũy bỏ hầu hết các dự án-lúc đó quá lỗi thời Tuy nhiên, PIC được bổ xung EPROM để tạo thành một bộ điều khiểnvào ra khả trình Ngày nay rất nhiều dòng PIC được sản xuất với hàng loạt các modele ngoại
vi tích hợp sẵn (như USART,PWM,ADC….), với bộ nhớ chương trình từ 512 Word đến 32kWord
2.1.1.1/Một số đặc tính của Vi điều khiển PIC:
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng nhưng chúng ta
có thể điểm qua một vài nét sau:
8/16 bit CPU, xây dựng theo kiến trúc Harward co sữa đổi
Flsah và ROM có thể tùy chọn từ 256 byte đến 256 Kbyte
Các cổng xuất/nhập (I/O) mức logic thường từ 0V đến 5.5V, ứng với logic 0 và1
8/16 bit timer
Các chuẩn giao tiếp nối tiếp đồng bộ, khung đồng bộ USART
Bộ chuyển đổi ADC Analog_to_digital converters, 10/12 bit
Bộ so sánh điện áp
Các module Capture/Cmpare/PWM
MSSP Peripheral dựng cho các giao tiếp IC2,SPI
Bộ nhớ nội EPROM-có thể ghi/xóa lên tới một triệu lần
Trang 8Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Moudle điều khiển động cơ,d0oc5 encoder
Hỗ trợ giao tiếp USB
Hỗ trợ giao tiếp CAN
Hỗ trợ giao tiếp LIN
Hỗ trợ giao tiếp IRDA
Một số dòng có tích hop7675bo65 RF (PIC16f639,và RFPIC)
KEELOQ mã hóa và giải mã
DSP những tính năng xử lý tín hiệu số (dsPIC) đặc điểm thực thi tốc độ cao củaRISC CPU của họ vi điều khiển PIC16F87XA
Timer0 : 8_bit định thời/điếm với 8_bit, prescaler
Timer1 : 16_bit định thời/điếm với prescaler, có thể được tănglên trong suốt chế độ Sleep qua thạch anh/xung clock bên ngoài
Timer2 : 8_bit định thời/điếm với 8_bit, prescaler, postscaler
• Capture có độ rộng 16 bit, độ phân giải 12,5ns
• Compare có độ rộng 16 bit, độ phân giải 200ns
• Độ phân giải lớn nhất của PWM là 10bit
• 25mA dòng vào cho mỗi chân
• 20mA dòng ra cho mõi chan
• Module điện ap chuẩn VREF có thể lập trình trên PIC
Có thể lập trình ngõ vào đến từ những ngõ vào của PIC và trên điện áp bên trong.Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài
2.1.1.4/Các đặc điểm đặc biệt:
Có thề ghi/xóa tới 100000 lần với kiểu bộ nhớ chương trình Enhanced Flash
1000000 lần ghi/xóa với kiểu bộ nhớ EPROM
EPROM có thể lưu trữ dư liệu hơn 40 năm
Có thể lập trình lại dưới sự điều khiển của phần mền,
Mạch lập trình nối tiếp qua hai chân
Nguồn đơn 5V cấp cho mạch lập trình nối tiếp
Trang 9 Watchdog Timer (WDT) với bộ dao dộng RC tích hợp sẵn trên Chip cho hoạtđộng đáng tin cậy.
Có thể lập trình màng bảo vệ
Tiết kiệm năng lượng với chế độ Sleep
Có thể lựa chọn bộ dao động
2.1.1.5/Công nghệ CMOS:
Năng lượng thấp, tốc độ caoFlash/cong nghệ EPROM
Việc thiết kế hoàn toàn tĩnh
Khỏang điện áp hoạt động từ 2V đến 5,5V
Tiêu tốn năng lượng thấp
2.1.2 / Giới thiệu về PIC16F8XX và PIC16F877A:
PIC16F8XX lò nhóm PIC trong họ PIC16FXX của họ vi điều khiển 8_bit, tiêu tốnnăng lượng thấp, đáp ứng nhanh, chế tạo theo công nghệ CMOS, chống tĩnh điện tuyệt đối.Bao gồm các nhóm sau:
Họ PIC16F8XX có nhiều tính năng đặc biệt làm giảm các thiết bị ngoại vi, vì vậykinh tế cao, có hệ thống nỗi bật đáng tin cậy và sự tiêu thụ năng lượng thấp Ở dây có bốn sựlựa chon5bo65 dao động và chỉ có chân kết nối bộ dao dộng RC nên có giải pháp tiết kiệmcao Chế độ SLEEP tiết kiệm nguồn và có thể được dánh thức bởi các nguồn reset Và cònnhiều phần khác đó được giới thiệu bên trên sẽ được nói ở các phần kế tiếp
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, 40 chân,
bộ nhớ đủ cho hầu hết các ứng dụng thông thường) Cấu trúc tổng quát của PIC16F877A nhưsau:
8 K Flash ROM
368 Bytes RAM
256 Bytes EEPROM
5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập
2 bộ định thời 8 bits (Timer 0 và Timer 2)
Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiếtkiệm năng lượng (SLEEP MODE) với nguồn xung Clock ngoài
2 bô CCP( Capture / Compare/ PWM)
1 bộ biến đổi AD 10 bits, 8 ngõ vào
2 bộ so sánh tương tự (Compartor)
1 bộ định thời giám sát (WatchDog Timer)
Trang 10Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Một cổng song song 8 bits với các tín hiệu điều khiển
Một cổng nối tiếp
15 nguồn ngắt
Có chế độ tiết kiệm năng lượng
Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial Programming)
Được chế tạo bằng công nghệ CMOS
35 tập lệnh có độ dài 14 bits
Tần số hoạt động tối đa 20MHz
2.1.2.1/các đặc tính ngoại vi bao gồm các khối chức năng :
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếmdựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Hai bộ Capture/so sánh/điều chế độ rông xung
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Bộ Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếmdựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Hai bộ Capture/so sánh/điều chế độ rông xung
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
Khả năng tự nạp chương trình với sự điều khiển của phần mềm Nạp đượcchương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân.Watchdog Timer với bộ dao động trong
Chức năng bảo mật mã chương trình
Có thể hoạt động với nhiều dạng Oscillator khác nhau
2.1.2.2/ Sơ lược về vi điều khiển PIC 16F877A:
Sơ đồ chân :
Trang 11Hình 2.1 Sơ đồ khối PIC 16F877A
Trang 12Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
PORTB : 8 chân
PORTD : 8 chân
PORTA : 6 chân
PORT E : 3 chân
Trang 13Mỗi chân của vi điều khiển PIC 16F877A có một chức năng khác nhau Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt động như một đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các thiết bị ngoại vi.
Trang 14Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Trang 15Hình 2.3 Sơ đồ khối cấu trúc bên trong PIC 16F877A
Trang 16Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
2.1.2.3/ Cấu trúc phần cứng của PIC 16F877A:
PIC là tên viết tắt của “ Programmable Intelligent computer” do hãng GeneralInstrument đặt tên cho con vi điều khiển đầu tiên của họ Hãng Micrchip tiếp tục phát triểnsản phầm này và cho đến hàng đã tạo ra gần 100 loại sản phẩm khác nhau
PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết tất cảcác ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làm quen với PIC có thể họctập và tạo nền tản về họ vi điều khiển PIC của mình
Cấu trúc tổng quát của PIC16F877A như sau :
5 port vào ra với tín hiệu điều khiển độc lập
2 bộ định thời Timer0 và Timer2 8 bit
1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệm nănglượng với nguồn xung clock ngoài
1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
2 bộ so sánh tương tự
1 bộ định thời giám sát (Watch Dog Timer)
1 cổng song song 8 bit với các tín hiệu điều khiển
Sơ đồ khối
Trang 17Hình 2.4 Sơ đồ khối bên trong của vi điều khiển 16F877A
2.1.2.4/ Một số chế độ đặt biệt của vi điều khiển PIC 16F877:.
Trang 18Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Hình 2.5 Các chế độ lao động
Trong các chế độ LP, XT và HS chúng ta sử dụng thạch anh dao động nối vào các chân OSC1 và OSC2 để tạo dao động.
Việc lựa chọn tụ trong dao động thạch anh được lựa chọn dựa vào bảng sau:
Hình 2.6 Giá trị tụ trong dao động thạch anh
Tụ có giá trị lớn sẽ mang tính ổn định của dao động nhưng làm tăng thời gian khởi động
Cách tính chu kỳ máy: Ví dụ ta sử dụng thạch anh 10Mhz Khi đó: Tần số dao động của thạch anh là Fosc = 10Mhz thì chu kỳ dao động của thạch anh là Tosc = 1/Fosc=
1/10*106(s)
Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*10 6 (s) = 0.4 µs = 400 ns
2.1.2.4.2/ Reset:
Trang 19PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau:
• Power-on Reset (POR)
• MCLR Reset during sleep
• MCLR Reset during normal operation
• WDT Reset (during normal operation)
• WDT Wake-up (during sleep)
• Brown-out Reset (BOR)
Hình 2.7 Các chế độ reset 2.1.2.4.3/ MCLR :
PIC16F877A có một bộ lọc nhiễu ở phần MCLR Bộ lọc nhiễu này sẽ phát hiện và
bỏ qua các tín hiệu nhiễu Ngõ vào MCLR trên chân 4 của PIC16F877A Khi đưa chân nàyxuống thấp thì các thanh ghi bên trong VĐK sẽ được tải những giá trị thích hợp để khởi độnglại hệ thống (Lưu ý: Reset do WDT không làm chân MCLR xuống mức thấp)
Hình 2.8 Mạch MCLR 2.1.2.4.4/ Interrupts:
PIC16F877A có nhiều nguồn ngắt khác nhau Đây là một số ngắt tiêu biểu:
Trang 20Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
- Ngắt ngoài xảy ra trên chân INT.
* Các thanh ghi chức năng ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các thanh ghi này
sẽ được nghiên cứu ở các phần sau)
Hình 2.9 Các chế độ ngắt
Trang 212.1.2.3.5/ Chế độ nguồn thấp Sleeep (Power Down Mode):
Đây là chế độ hoạt động của VĐK khi lệnh sleep được thực thi Khi đó nếu được chophép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tục hoạt động bit PD(STATUS <3>) được reset về không, bit TO được set, oscillator ngưng hoạt động và cácPORT giữ nguyên trạng thái như trước khi lệnh sleep được thực thi
Do khi chế độ sleep dòng cung cấp cho VĐK là rất nhỏ nên ta cần thực hiện các bướcsau trước khi VĐK thực thi lệnh sleep
• Đưa tất cả các chân về trạng thái VDD hoặc VSS.
• Cần đảm bảo rằng không có mạch ngoại vi nào được điều khiển bởi dòng
điện của VĐK vì dòng điện nhỏ không đủ khả năng cung cấp cho các mạch
ngoại vi hoạt động
• Tạm ngưng hoạt động của khối A/D và không cho phép các xung clock bên
ngoài tác dụng vào VĐK
• Để ý chức năng điện trở kéo lên của PORTB
• Pin MCLR phải ở mức logic cao
2.1.2.4.6 Bộ định thời giám sát (Watch Dog Timer – WDT):
Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy nếukhông có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạn phải làm mộtvòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở về điểm bắt đầu
Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểm tra một chân input,nếu nó lên mức cao thì Pic16f877A sẽ tiếp tục kiểm tra một chân input thứ hai có lên mứccao hay không, nếu chân input thứ hai không lên mức cao, con Pic sẽ ngồi đó chờ và nó sẽchỉ thoát ra khỏi chỗ ngồi của nó nếu chân input thứ hai lên mức cao
Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình, bạncompiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng bước, từng bước mộttrên máy tính, bằng MPLAB chẳng hạn, có vẻ như mọi chuyện đều tốt, bạn đem nạp vào conPic Sau một thời gian chạy thử, con Pic thình lình bị kẹt vào nơi nào đó trong chương trình
mà không thể thoát ra được trạng thái hiện tại Điều gì là cần thiết để giải quyết hai trườnghợp trên, reset lại hay vẫn để cho nó bị kẹt không thoát ra được, đó là mục đích của mạchWatchdog
Mạch Watchdog thì không phải là mới mẽ gì, có rất nhiều microprocessors vàmicrocontrollers đã có mạch Watchdog, nhưng mà nó làm việc ra sao ?
Bên trong vi xử lí Pic có một mạch RC, mạch này cung cấp 1 xung Clock độc lập vớibất kỳ xung Clock nào cung cấp cho Pic Khi Watchdog Timer (viết tắt là WDT) được chophép (enabled), nó sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến FFh, khi nó tăng từ FFh đến 00( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm gì, chỉ có 1 cách là ngăn không cho WDTđếm tới 00
Khi Pic16F877A bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT vẫn tiếptục đếm mà không bị bất kỳ điều gì ngăn cấm nó đếm tới FF và đến FF+1, vì vậy nó sẽ resetlàm cho chương trình phải khởi động lại từ đầu
Để Sử Dụng WDT Chúng Ta Cần Làm 3 Việc
• Thứ nhất, cần thời gian bao lâu để reset WDT ?
• Thứ hai, làm sao xoá WDT ?
Trang 22Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
• Cuối cùng, chúng ta phải nói cho Pic biết chương trình cho phép WDT hoạt động
Hình 2.10 Bộ định thời giám sát WDT
2.1.2.5/ Tổ chức bộ nhớ:
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory)
2.1.2.5.1/ Bộ nhớ chương trình:
Hình 2.11 Bộ nhớ chương trình PIC 16F877A
Trang 23Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ Flash, dung lượng 8Kword (1 word chứa 14bit) và được phân thành nhiều trang như hình trên
Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, thanh ghi đếm chương trình
PC có dung lượng 13 bit
Khi vi điều khiển reset, bộ đếm chương trình sẽ trỏ về địa chỉ 0000h Khi có ngắt xảy
ra thì thanh ghi PC sẽ trỏ đến địa chỉ 0004h
Bộ nhớ chương trình không bao gồm bộ nhớ Stack và không được địa chỉ hóa bởi bộđém chương trình
2.1.2.5.2/ Bộ nhớ dữ liệu:
Bộ nhớ dữ liệu của PIC l bộ nhớ EEPROM được chia ra lm nhiều bank
Bộ nhớ dữ liệu của PIC16F877A được chia thành 4 bank Mỗi bank có dụng lượng
128 byte
Nếu như 2 bank bộ nhớ dữ liệu của 8051 phân chia riêng biệt : 128 byte đầu tiênthuộc bank1 là vùng Ram nội chỉ để chứa dữ liệu, 128 byte còn lại thuộc bank 2 là cùng cácthanh ghi có chức năng đặc biệt SFR mà người dùng không được chứa dữ liệu khác trong đâythì 4 bank bộ nhớ dữ liệu của PIC16F877A được tổ chức theo cách khác
Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có chức năngđặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục đích dùng chung GPRnằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi Vùng ô nhớ các thanh ghi mục đích dùngchung này chính là nơi người dùng sẽ lưu dữ liệu trong quá trình viết chương trình Tất cả cácbiến dữ liệu nên được khai báo chứa trong vùng địa chỉ này
Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào mà thườngxuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả các bank để thuận tiệntrong việc truy xuất Sở dĩ như vậy là vì, để truy xuất một thanh ghi nào đó trong bộ nhớ của16F877A ta cần phải khai báo đúng bank chứa thanh ghi đó, việc đặt các thanh ghi sử dụngthường xuyên giúp ta thuận tiên hơn rất nhiều trong quá trình truy xuất, làm giảm lệnhchương trình
Trang 24Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Hình 2.12 Bộ nhớ dữ liệu PIC 16F877A
Trang 25Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như sau :
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi dùng chung để chứa
dữ liệu của người dùng địa chỉ từ 20h đến 7Fh Các thanh ghi PORTA, PORTB, PORTC, PORTD,PORTE đều chứa ở bank0, do đó để truy xuất dữ liệu các thanh ghi này ta phải chuyển đếnbank0 Ngoài ra một vài các thanh ghi thông dụng khác ( sẽ giới thiệu sau) cũng chứa ởbank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh Các thanh ghi dùng chung có địachỉ từ A0h đến Efh Các thanh ghi TRISA, TRISB, TRISC, TRISD, TRISE cũng được chứa ởbank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên sơ đồ trên.Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên cả 4 bank Mộtđiều quan trọng cần nhắc lại trong việc truy xuất dữ liệu của PIC16F877A là : phải khai báođúng bank chứa thanh ghi đó Nếu thanh ghi nào mà 4 bank đều chứa thì không cần phảichuyển bank
• Vùng Ram đa mục đích
Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập trực tiếp hoặcgián tiếp thông qua thanh ghi FSR Vùng RAM đa mục đích được phân phối ở các Bank nhưsau:
- Bank 0: 96 Bytes từ địa chỉ 20h đến địa chỉ 7Fh
- Bank 1: 80 Bytes từ địa chỉ A0h đến địa chỉ EFh
- Bank 2: 96 Bytes từ địa chỉ 110h đến địa chỉ 16Fh
- Bank 3: 96 Bytes từ địa chỉ 190h đến địa chỉ 1EFh
• Vùng thanh ghi chức năng đặc biệt
Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm CPU hoặc cácmodule ngoại vi để điều khiển hoạt động của VĐK Các thanh ghi chức năng đặc biệt
này được chia làm 2 loại: loại thứ nhất dùng cho các chức năng của CPU, loại thứ 2 dùngcho các chức năng ngoại vi
Bảng tóm tắt các thanh ghi chức năng đặc biệt:
Trang 26Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Trang 28Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
Hình 2.13-2.14-2.15 Các thanh ghi chức năng đặt biệt PIC 16F877A
Trang 292.1.2.6/ Các thanh ghi chức năng đặt biệt:
2.1.2.6.1/ Thanh ghi trạng thái (Status Register):
Thanh ghi này có mặt ở cả 4 bank thanh ghi ở các địa chỉ 03h, 83h, 103h và 183h :chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cầntruy xuất trong bộ nhớ dữ liệu
Each bank is 128 bytes
Bit 4 TO: Bit báo hiệu hoạt động của WDT.
1: Lệnh xóa WDT hoặc Sleep xảy ra
0: WDT hoạt động
Bit 3 PD: Bit báo công suất thấp ( Power down bit).
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT
0: Thực thi lệnh Sleep
Bit 2 Z: bit Zero
1: Khi kết quả của một phép toán bằng 0
0: Khi kết quả của một phép toán khác 0
Bit 1 DC: Digit Carry
1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp
0: Không có số nhớ sinh ra
Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ
0: Không có số nhớ sinh ra
2.1.2.6.2/ Thanh ghi tùy chọn (Option Reg Register):
Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa năng như: ngắtngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và thời gian chờ của WDT
Hình 2.17 Option-Reg Register
Bit 7 RBPU : Bit cho phép PORTB được kéo lên nguồn
1: Không cho phép PORTB kéo lên nguồn
0: Cho phép PORTB kéo lên nguồn
Bit 6 INTEDG: Bít lựa chọn cạnh tác động ngắt (INTERRUPT EDGE)
Trang 30Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
Bit 5 T0CS: Bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI
0: Xung Clock cung cấp bởi nguồn dao động nội
Bit 4 T0SE: Bit lựa chọn cạnh nào của xung clock tác động lên timer 0
Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT
2.1.2.6.3/ Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register):
Hình 2.18 Intcon Register
Bit 7 GIE: Bit cho phép ngắt toàn cục
1: Cho phép ngắt toàn cục
0: Không cho phép ngắt
Bit 6 PEIE: Bit cho phép ngắt khi ghi vào EEPROM hoàn tất.
1: Cho phép ngắt ghi vào EEPROM hoạt động
0: Không cho phép ngắt ghi vào EEPROM hoạt động
Bit 5 TMR0IE: Bit cho phép ngắt khi timer 0 tràn
1: Cho phép ngắt khi timer 0 tràn
0: Không cho phép ngắt khi timer 0 tràn
Bit 4 INTE: Bit cho phép ngắt ngoại vi trên chân RB0/INT
1: Cho phép ngắt ngoại vi
0: Không cho phép ngắt ngoại vi
Bit 3 RBIE: Cho phép ngắt khi trạng thái PORTB thay đổi
1: Cho phép
0: Không cho phép
Bit 2 TMR0IF: Cờ báo ngắt Timer 0
1: Timer 0 tràn
Trang 310: Không có thay đổi xảy ra trên PORTB
2.1.2.6.4/ Thanh ghi cho phép ngắt ngoại vi 1 (PIE1 Register):
Trang 32Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
2.1.2.6.5/ Thanh ghi cờ của các ngắt ngoại vi 1 (PIR1 Register):
Hình 2.20 PIR1 Register
Bit 7 PSPIF: Cờ ngắt đọc/ ghi của Port song song
1: Một hoạt động đọc/ghi đã diễn ra (phải xóa bằng phần mềm)
0: Không có hoạt động đọc/ghi
Bit 6 ADIF: Cờ báo ngắt chuyển đổi A/D
1: Một quá trình chuyển đổi A/D đã hoàn thành
0: Chuyển đổi A/D chưa hoàn tất
Bit 5 RCIF: Cờ báo ngắt nhận USART
1: Buffer nhận USART đầy
0: Buffer nhận USART trống.
Bit 4 TXIF: Cờ báo ngắt phát USART
1: Buffer truyền USART trống
0: Buffer truyền USART đầy
Bit 3 SSPIF: Cờ báo ngắt port nối tiếp đồng bộ (ngắt SSP)
1: Ngắt SSP xảy ra và phải được xóa bằng phần mềm trước khi trở lại
chương trình chính từ chương trình phục vụ ngắt
0: Không có ngắt xảy ra
Bit 2 CCP1IF: Cờ báo ngắt CCP1
Chế độ Capture (Bắt giữ):
1: Một Capture thanh ghi TMR1 xảy ra( phải được xóa bằng phần mềm)
0: Không xảy ra Capture thanh ghi TMR1
Chế độ Compare ( So sánh):
1: Khi các giá trị so sánh trong thanh ghi TMR1 được thỏa ( phải được xóa
bằng phần mềm)
0: Khi các giá trị so sánh trong thanh ghi TMR1 không được thỏa
Chế độ PWM: Không sử dụng trong chế độ này
Bit 1 TMR2IF: Cờ báo ngắt xảy ra khi giá trị trong thanh ghi TMR2 bằng trong thanh ghi PR2
1: Giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được xóa bằng
phần mềm)
0: Giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2
Bit 0 TMR1IF: Cờ báo tràn thanh ghi TMR1
1: Thanh ghi TMR1 tràn (phải được xóa bắng phần mềm)
0: Thanh ghi TMR1 chưa tràn
Trang 332.1.2.6.6/ Thanh ghi cho phép ngắt ngoại vi 2 (PIR2 Register):
Bit 7,5,2,1 Unimplemented : read as ‘0’
Bit 6 CMIF: Cờ báo ngắt do bộ so sánh
1: Ngõ vào bộ so sánh đã thay đổi (phải được xóa bằng phần mềm)
0: Ngõ vào bộ so sánh không thay đổi
Bit 4 EEIF: Cờ báo ngắt ghi EEPROM
1: Ghi EEPROM hoàn tất (phải được xóa bằng phần mềm)
0: Ghi EEPROM chưa hoàn tất.
Bit 3 BCLIF: Cờ báo ngắt do xung đột bus
1: Xung đột bus đã xuất hiện trong chế độ SSP
0: Không có xung đột bus xảy ra
Bit 0 CCP2IF: Cờ báo ngắt CPP2
Chế độ Capture (bắt giữ):
1: Một sự bắt giữ thanh ghi TMR1đã xảy ra (phải được xóa bằng phần mềm)
Trang 34Đồ án tốt nghiệp khóa 2007-2010 GVHD: Nguyễn Hữu Phước
0: Không xảy ra Capture thanh ghi TMR1
Chế độ Compare (So sánh):
1: Một thuật toán so sánh trong thanh ghi TMR1 xảy ra (phải được xóa bằng
phần mềm)0: Không xảy ra thuật toán so sánh
2.1.2.6.8/ Thanh ghi Work và tập lệnh của PIC 16F877A:
Đây là thanh ghi rất đặc biệt trong PIC16F877A Nó có vai trò tương tự như thanhghi Accummulator của 8051, tuy nhiên tầm ảnh hưởng của nó rộng hơn rất nhiều
Tập lệnh của PIC16F877A có tất cả 35 lệnh thì số lệnh có sự “góp mặt” của thanh ghi
W là 23 lệnh Hầu hết các lệnh của PIC16F877A đều liên quan đến thanh ghi W Ví dụ như,trong PIC chúng ta không được phép chuyển trực tiếp giá trị của một thanh ghi này qua thanhghi khác mà phải chuyển thông qua thanh ghi W
Thanh ghi W có 8 bit và không xuất hiện trong bất kỳ bank thanh ghi nào của bộ nhớ
dữ liệu của 16F877A Mỗi dòng lệnh trong PIC16F877a được mô tả trong 14 bit Khi ta thựchiện một lệnh nào đó, nó phải lưu địa chỉ của thanh ghi bị tác động (chiếm 8 bit) và giá trịmột hằng số k nào đó (thêm 8 bit nữa) là 16 bit, vượt quá giới hạn 14 bit Do vậy ta không thểnào tiến hành một phép tính toàn trực tiếp nào giữa 2 thanh ghi với nhau hoặc giữa một thanhghi với một hằng số k Hầu hết các lệnh của PIC16F877A đều phải liên quan đến thanh ghi Wcũng vì lý do đó Khi thực hiện một dòng lệnh nào đó, thì PIC sẽ không phải tốn 8 bit để lưuđịa chỉ của thanh ghi W trong mã lệnh ( vì được hiểu ngầm) Có thể xem thanh ghi W làthanh ghi trung gian trong quá trình viết chương trình cho PIC16F877A
PIC16F877A có tất cả 35 lệnh và được trình bày khá rõ trong datasheet Em sẽ đínhkèm tập lệnh ở phần cuối cùng của bài báo cáo
Trong chương trình, em sử dụng ngôn ngữ asembly để viết Trình biên dịch là Mplabđược Microchip cung cấp miễn phí cho người dùng
2.1.2.7/ Khái quát về chức năng các Port trong vi điều khiển PIC 16F877A:
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương tácvới thế giới bên ngoài Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó,chức năng của vi điều khiển được thể hiện một cách rõ ràng
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo cách bốtrí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng chân trong mỗicổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tích hợp sẵn bên trong các đặctính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường, một sốchân xuất nhập còn có thêm các chức năng khác để thể hiện sự tác động của các đặc tínhngoại vi nêu trên đối với thế giới bên ngoài Chức năng của từng chân xuất nhập trong mỗicổng hoàn toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liênquan đến chân xuất nhập đó
Trang 35Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD và PORTE
2.1.2.7.1/ Port A và thanh ghi TRIS A:
PORTA gồm có 6 chân Các chân của PortA, ta lập trình để có thể thực hiện được chứcnăng “hai chiều” : xuất dữ liệu từ vi điều khiển ra ngoại vi và nhập dữ liệu từ ngoại vi vào viđiều khiển
Hình 2.23 Block diagram of RA3:RA0 Pins
Port A gồm 6 chân từ RA0 đến RA5 Việc ghi giá trị vào thanh ghi TRISA sẽ qui định các chân của Port A là input hay output(nếu là 1 thì là input, là output nếu là 0) Việc đọcthanh ghi Port A sẽ đọc trạng thái của các chân ở Port A Việc ghi giá trị vào thanh ghi Port A
sẽ thay đổi trạng thái của các chân Port A Riêng chân RA4 được tích hợp chức năng là châncung cấp xung clock ngoài cho Timer 0 (RA4/T0CKI) Những chân khác của Port A được đahợp với các chân ngõ vào Analog của ADC và chân ngõ vào điện thế so sánh của bộ so sánhComparator Hoạt động của những chân này được quy định bằng những bit tương ứng trongcác thanh ghi ADCCON1 và CMCON1
Trang 36Đồ án tốt nghiệp khĩa 2007-2010 GVHD: Nguyễn Hữu Phước
Hình 2.24 Block Diagram of RA4/TOCKI Pin
Khi các chân của Port A được sử dụng làm ngõ vào Analog thì các bit trong thanh ghi TRISA phải được set bằng 1.
Chức năng các chân trong Port A
Hình 2.24 PORT A Function
Ngồi ra, PORTA cịn cĩ các chức năng quan trọng sau :
- Ngõ vào Analog của bộ ADC : thực hiện chức năng chuyển từ Analog sang Digital
- Ngõ vào điện thế so sánh
- Ngõ vào xung Clock của Timer0 trong kiến trúc phần cứng : thực hiện các nhiệm vụđếm xung thơng qua Timer0…
- Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port)
Các thanh ghi FSR liên quan đến PORTA bao gồm:
• PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA
• TRISA (địa chỉ 85h) : điều khiển xuất nhập
Trang 37• CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
• CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánhđiện áp
• ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC
2.1.2.7.2/ PORT B và thanh ghi TRISB:
PORTB cĩ 8 chân từ chân RB0-RB7 Việc ghi giá trị vào thanh ghi TRISB sẽ quyđịnh các chân của Port B là input hay output (1: input, 0: output) Việc đọc thanh ghi PortB sẽđọc trạng thái của các chân ở Port B Việc ghi giá trị vào thanh ghi Port B sẽ thay đổi trạngthái của các chân Port B
Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và Low VoltageProgramming function: RB3/PGM, RB6/PGC, RB7/PGD Mỗi chân Port B cĩ một transistorkéo lên Vdd Chức năng này hoạt động khi bit RBPU (Option <7>) được xĩa Chức năng này
sẽ tự động được xĩa khi Port B được quy định là input
Bốn chân của Port B từ RB7 đến RB4 cĩ chức năng ngắt khi trạng thái chân Port Bthay đổi (Khi Port B được quy định là output thì chức năng này khơng hoạt động Giá trịchâncủa PortB được so sánh với giá trị đã được lưu trước đĩ, khi cĩ sự sai lệch giữa 2 giá trị nàyngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0) sẽ bật lên Ngắt cĩ thể làm cho VĐK thốtkhỏi trạng thái SLEEP
Bất cứ sự truy xuất nào trên PortB sẽ xĩa trạng thái sai lệch, kết thúc ngắt và chophép xĩa cờ ngắt RBIF
Hình 2.25 Cấu trúc bên trong Port B.
Chức năng các chân trong portB
Trang 38Đồ án tốt nghiệp khĩa 2007-2010 GVHD: Nguyễn Hữu Phước
Hình 2.26 Chức năng các chân trong Port B
Các thanh ghi SFR liên quan đến PORTB bao gồm:
• PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trongPORTB
• TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
• OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0
2.1.2.7.3/ P ort C và thanh ghi TRISC:
Port C gồm 8 chân từ chân RC0-RC7 Việc ghi giá trị vào thanh ghi TRISC sẽ quy địnhcác chân của Port C là input hay output (1: input, 0: output) Việc đọc thanh ghi Port C sẽđọc trạng thái của các chân ở Port C Việc ghi giá trị vào thanh ghi Port C sẽ thay đổi trạngthái của các chân Port C
Các chân của Port C được đa hợp với các chức năng ngoại vi
Khi các chức năng ngoại vi được cho phép ta cần quan tâm chặt chẽ tới giá trị các bitcủa thanh ghi TRISC Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lên các bit của thanh ghiTRISC và mặc định các chân này là output, ngồi ra một số chức năng ngoại vi khác sẽ tựđộng mặc định một số chân là ngõ vào Do đĩ cần xem xét kĩ các tính năng của các hàmngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho thích hợp
Trang 39Hình 2.27 Port C Block Diagram
Bảng chức năng các chân trong portC
Hình 2.28 PORT C Functions
Các thanh ghi điều khiển liên quan đến PORTC:
• PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
• TRISC (địa chỉ 87h) : điều khiển xuất nhập
2.1.2.7.4 /Port D và thanh ghi TRISD:
Trang 40Đồ án tốt nghiệp khĩa 2007-2010 GVHD: Nguyễn Hữu Phước
Port D gồm 8 chân từ chân RD0-RD7 Bên cạnh chức năng là port xuất nhập, PortDcịn cĩ thể hoạt động như một cổng song song bằng cách set bit PSPMODE (TRISD<4>),trong chế độ này buffer ngõ vào là TTL PORTD còn là cổng xuất dữ liệucủa chuẩn giao tiếp PSP (Parallel Slave Port)
Bảng chức năng của PortD
Hình 2.29 PORTD Functions
Các thanh ghi liên quan đến PORTD bao gồm:
• Thanh ghi PORTD : chứa giá trị các pin trong PORTD
• Thanh ghi TRISD : điều khiển xuất nhập
• Thanh ghi TRISD : điều khiển xuất nhập PORTD và chuẩngiao tiếp PSP
2.1.2.7.5 /PortE và thanh ghi TRISE:
Port E cĩ 3 chân RE0 / RD/ AN5, RE1/ WR / AN6, RE2 / CS/AN7, cĩ thể được cấuhình như các chân xuất nhập thơng thường
Các chân của Port E cĩ thể trở thành các chân điều khiển cho cổng song song của VĐKkhi bit PSPMODE (TRISE<4>) được set bằng 1 Trong chế độ này, người sử dụng phải đảmbảo các chân của PortE là ngõ vào
Ngồi ra các chân Port E cịn cĩ thể được cấu hình như các ngõ vào Analog, tại
chế độ này, khi đọc giá trị của các chân này sẽ cho ta giá trị là 0
Thanh ghi TRISE quy định chức năng xuất nhập của Port E ngay cả khi nĩ được sửdụng như các ngõ vào Analog Phải đảm bảo các chân này được quy định là ngõ vào trongchế độ này