ĐỒ ÁN TỐT NGHIỆP: BÃI GIỮ XE TỰ ĐỘNG
Trang 1LỜI NÓI ĐẦU
Ngày nay Khoa học – Kỹ thuật phát triển mạnh mẽ,cùng với sự phát triển không ngừng của các ngành kỹ thuật nói chung và kỹ thuật - điện tử nói riêng Chúng đã đi sâu vào mọi mặc đời sống hàng ngày của người dân Đặc biệt sử dụng vi điều khiển để điều khiển các thiết bị dân dụng
và các thiết bị công nghiệp Nắm được tầm quan trọng đó,
em làm đề tài: BÃI GIỮ XE TỰ ĐỘNG để làm đồ án tốt nghiệp cho mình, vừa để tạo ra 1 sản phẩm có khả năng ứng dụng trong thực tế.
Những kiến thức và năng lực đạt được trong quá trình học tập tại trường sẽ được đánh giá qua đợt bảo vệ đồ án tốt nghiệp Vì vậy em đã cố gắng tận dụng tất cả những kiến thức đã học ở trường cùng với sự tìm tòi nghiên cứu, để có thể hoàn thành tốt đồ án tốt nghiệp này Những kết quả, những sản phẩm đạt được trong ngày hôm nay tuy không lớn lao nhưng nó là thành quả của ba năm học tập tại trường Là thành công đầu tiên của em trước khi ra trường.
Do khoảng thời gian và kiến thức còn hạn hẹp, mặc dù
em cố gắng hoàn thành đồ án tốt nghiệp này đúng thời hạn.
Nên không tránh khỏi những thiếu xót mong Quý thầy cô thông cảm Em mong nhận được những ý kiến đóng góp tận tình của quý thầy cô và các bạn Cuối cùng em xin chân thành cảm ơn quý thầy cô và các bạn
Trang 2Lời Cảm Ơn
Sau những năm học tại trường,em đã được học và tiếp thu nhiều kiến thức mới từ sự chỉ bảo tận tình của Quý Thầy Cô,sự giúp đỡ của bạn bè Đây là khoảng thời gian đầy ý nghĩa Đồ án tốt nghiệp ra trường là nền tảng quan trọng và đánh dấu một bước ngoặc mới trong cuộc đời của em.
Em xin gửi lời cảm ơn chân thành đến thầy THƯỢNG VĂN BÉ đã tận tình hướng dẫn em thực hiện đồ án tốt nghiệp và cung cấp cho em nhiều kinh nghiệm quý báu.
Em xin chân thành cảm ơn Quý Thầy cô khoa Điện
Tử - Tin Học và các Cán bộ Công nhân viên Trường Cao Đẳng Kỹ Thuật Cao Thắng, đã tạo điều kiện thuận lợi để em
có thể hoàn thành tốt đồ án tốt nghiệp này
Sinh viên thực hiện:
NGUYỄN BÁ ĐÀO
MỤC LỤC
Trang 3CHƯƠNG DẪN NHẬP 4
I.ĐẶT VẤN ĐỀ 4
II CHỌN PHƯƠNG ÁN THIẾT KẾ 4
III.GIỚI HẠN ĐỀ TÀI 5
IV.MỤC ĐÍCH NGHIÊN CỨU 6
CHƯƠNG 2: PIC 7
I.TỔNG QUAN VỀ PIC 7
II.CẤU TRÚC TỔNG QUÁT PIC 16F877A 9
III TẬP LỆNH SỬ DỤNG LẬP TRÌNH PIC TRONG CCS 43
CHƯƠNG 3: LED 7 ĐOẠN 57
CHƯƠNG 4:LED HỒNG NGOẠI 59
I.KHÁI NIỆM VỀ TIA HỒNG NGOẠI 59
II.LED HỒNG NGOẠI 59
CHƯƠNG 5:IC 61
I.IC ỔN ÁP KA 7805 61
II.LM555 61
CHƯƠNG 6:THIẾT KẾ VÀ THI CÔNG MẠCH 66
I.SƠ ĐỒ KHỐI 66
II.KHỐI NGUỒN 66
III.KHỐI HIỂN THỊ 67
IV.KHỐI CẢM BIẾN HỒNG NGOẠI 70
V.KHỐI VI XỬ LÝ 72
VI.LƯU ĐỒ GIẢI THUẬT 73
VII CODE CHƯƠNG TRÌNH 74
CHƯƠNG TỔNG KẾT 76
I.TỔNG KẾT 76
II.HƯỚNG PHÁT TRIỂN ĐỀ TÀI 76
TÀI LIỆU THAM KHẢO 77
Trang 4CHƯƠNG DẪN NHẬP
I.ĐẶT VẤN ĐỀ:
Ngày nay, khi mà cả thế giới như đang nĩng lên vì sự vận động, phát triển vềmọi mặt như kinh tế, chính trị, khoa học kỹ thuật….v…v Trong đĩ, những ứngdụng của khoa học kỹ thuật tiên tiến đã và đang làm cho thế giới ngày càng thayđổi, văn minh hơn và hiện đại hơn Sự phát triển của Kỹ thuật điện tử đã tạo ra hànglọat những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọnnhẹ là những yếu tố rất cần thiết gĩp phần cho họat động của con người đạt hiệu quảcao
Tại các đơ thị lớn như Hà Nội Và TP Hồ Chí Minh ơ tơ là 1 phương tiện đilại khá phổ biến Nhưng với những bãi giử xe thủ cơng như hiện nay thì rất mấtnhiều thời gian cũng như nhân lực Để khắc phục được những nhược điểm trên, quaquá trình tìm hiểu, khảo sát vi điển khiển PIC 16F877A em nhận thấy rằng: ứngdụng vi điều khiển PIC 16F877A vào bãi giữ xe là phương pháp tối ưu, vừa tiếtkiệm được thời gian cả về vật chất Được sự đồng ý của khoa Điện Tử - Tin Hoc
trường Cao Đẳng Kỹ Thuật Cao Thắng em tiến hành thực hiện đề tài “ Bãi giử xe
tự động”.
Đề tài là sự kết hợp giữa kiến thức học được trong nhà trường với quá trìnhtìm tịi nghiên cứu và sự hướng dẫn tận tình của giáo viên hướng dẫn, song chắcchắn khơng tránh khỏi những hạn chế và thiếu sĩt Em rất mong nhận được những ýkiến đĩng gĩp quý báu cùng những phê bình, chỉ dẫn của Thầy Cơ và các bạn sinhviên
II CHỌN PHƯƠNG ÁN THIẾT KẾ:
1 Với mạch dùng ICù rời :
Cĩ các ưu điểm sau:
-Cho phép tăng hiệu suất lao động
-Đảm bảo độ chính xác cao
-Tần số đáp ứng của mạch nhanh
-Khoảng cách đặt phần phát và phần thu xa nhau cho phép nhận biết đượccác xe cĩ kích thước lớn
-Tổn hao công suất bé, mạch có thể sử dụng pin hoặc accu
-Khả năng đếm rộng
-Giá thành hạ
-Mạch đơn giản dễ thực hiện
Trang 5Với việc sử dụng kỹ thuật số khó có thể đáp ứng được việc thay đổi số đếm.Muốn thay đổi một yêu cầu nào đó của mạch thì buộc lòng phải thay đổi phầncứng.Do đó mỗi lần phải lắp lại mạch dẫn đến tốn kém về kinh tế mà nhiều khiyêu cầu đó không thực hiện được bằng phương pháp này.
Với sự phát triển mạnh của nghành kỹ thuật số đặc biệt là cho ra đời các họ
vi xử lí và vi điều khiển rất đa chức năng do đó việc dùng kỹ thuật vi xử lí, kỹthuật vi điều khiển đã giải quyết những bế tắc và kinh tế hơn mà phương phápdùng IC rời kết nối lại không thực hiện được
2 Với mạch dùng kỹ thuật vi xử lí:
Ngoài những ưu điểm như đã liệt kê trong phương pháp dùng IC rời thìmạch dùng kỹ thuật vi xử lí còn có những ưu điểm sau:
-Mạch có thể thay đổi một cách linh hoạt bằng việc thay đổi phần mềm,trong khi đó phần cứng không cần thay đổi mà mạch dùng IC rời không thể thựchiện được
- Số linh kiện sử dụng trong mạch ít hơn
-Mạch đơn giản hơn
-Mạch có thể lưu lại số liệu của các xe trong bãi
-Mạch cũng có thể kết nối giao tiếp được với máy tính thích hợp cho nhữngngười quản lí tại phòng kỹ thuật nắm bắt được tình hình trong bãi mà khơng vần
cĩ mặt trực tiếp tại bãi
3 Phương pháp dùng vi điều khiển:
Ngoài những ưu điểm có được của hai phương pháp trên, phương pháp nàycòn có những ưu điểm :
-Trong mạch có thể sử dụng ngay bộ nhớ trong đối với những chương trìnhcó quy mô nhỏ, rất tiện lợi mà vi xử lí không thực hiện được
-Nó có thể giao tiếp nối tiếp trực tiếp với máy tính mà vi xử lí cũng giaotiếp được với máy tính nhưng là giao tiếp song song nên cần có linh kiện chuyểnđổi dữ liệu từ song song sang nối tiếp để giao tiếp với máy tính
Trong thiết kế người ta thường chọn phương pháp tối ưu nhưng kinh tế dođó em chọn phương pháp dùng kỹ thuật vi điều khiển
III.GIỚI HẠN ĐỀ TÀI:
Với thời gian gần năm tuần thực hiện đề tài cũng như trình độ chuyên mơn
cĩ hạn,chúng em đã cố gắng hết sức để hồn thành đồ án này nhưng chỉ
giải quyết được nhữngvấn đề sau:
Dùng cảm biến hồng ngoại để nhận biết xe vào , xe ra
Trang 6 Hiễn thị số xe có trong bãi bằng led 7 đoạn.
Báo đèn và ngưng đếm số xe vào khi số xe trong bãi đã đầy
Dùng ngôn ngữ CCS lập trình cho PIC 16F877A
IV.MỤC ĐÍCH NGHIÊN CỨU :
- Mục đích của người thực hiện đề tài đã tiến hành nghiên cứu là: Trước tiên là đệhoàn thành môn học để đũ điều kiện ra trường
- Với bản thân người thực hiện đề tài, đây chính là một cơ hội tốt để có thể tự kiểmtra lại kiến thức của mình, đồng thời có cơ hội để nỗ lực vận động tìm hiểu, tiếp cậnnghiên cứu được với những vấn đề mình chưa biết, chưa hiểu rõ nhằm trang bị chobản thân nhiều kiến thức bổ ích sau này có thể ứng dụng vào thực tế cuộc sống
- Tập tính làm việc độc lập, khả năng tự suy nghĩ tìm tòi, học hỏi, phát huy năng lựccủa bản than
- Ngoài ra còn tạo được 1 sản phẩm có tính ứng dụng trong thực tế
Trang 7“Programmable Intelligent Computer” (Máy tính khả trình thông minh) là một sảnphẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên của họ làPIC1650 Lúc này, PIC 1650 được dùng để giao tiếp với các thiết bị ngoại vi chomáy chủ 16 bit CP1600, vì vậy, người ta cũng gọi PIC với tên “Peripheral InterfaceController” (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ì vậy PIC 8-bit được phát triển vào khoảngnăm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơngiả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ực sự là một vi điều khiển vớ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 1985 General Instruments bán bộ phận 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 – lúc đó quá lỗi thời.Tuy nhiên, PIC được bổ sung EPROM để tạo thành 1 bộ điều khiển vào ra khả trình.Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vitích hợp sẵn (như USART, PWM, ADC…), với bộ nhớ chương trình từ 512 Wordđến 32K Word
2. Tại sao dùng Pic?
Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam Giáthành không quá đắt Có đầy đủ các tính năng của một vi điều khiển khi hoạt độngđộc lập Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điềukhiển mang tính truyền thống: họ vi điều khiển 8051 Số lượng người sử dụng họ viđiều khiển PIC Hiện nay 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ở đã đượcphá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ặpkhó khăn,… Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạpchương trình từ đơn giản đến phức tạp,… Các tính năng đa dạng của vi điều khiểnPIC, và các tính năng này không ngừng được phát triển
3 Các dòng Pic và cách lựa chọn Vi điều khiển Pic:
Trang 8Các sản phẩm vi điều khiển PIC của Microchip có gần 100 loại sản phẩm từ
họ 10Fxxx đến các họ 12Cxxx, 12Fxxx, 16Cxx, 17Cxx, 16Fxx, 16Fxxx, 16FxxxA,16LFxxxA, 18Fxxx, 18LFxxx, 18Fxxxx, 18LFxxxx,…
Cách phân loại PIC theo chữ cái:
Các họ PIC xxCxxx được đưa vào một nhóm, gọi là OTP (One TimeProgrammable): chúng ta chỉ có thể lập trình và nạp chương trình cho nó được mộtlần duy nhất
Nhóm thứ hai có chữ cái F hoặc LF: chúng ta gọi nhóm này là nhóm Flash,nhóm này cho phép ghi xóa nhiều lần bằng các mạch điện thông thường
Cách phân loại theo hai con số đầu tiên của sản phẩm:
Loại thứ nhất là dòng PIC cơ bản( Base – line ), gồm các PIC 12Cxxx, có độ dài12bit
Loại thứ hai là các dòng PIC 10F, 12F va 16F, gọi là dòng phổ thông ( Mid –Range ), có dộ dài 14 bit
Loại thứ ba là dòng PIC 18( High – End ), có độ dài 16 bit
Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sảnxuấ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,ngoài ra còn có các
vi điều khiển 18, 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ốichứ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 Saucùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép
4 Ngôn ngữ lập trình cho Pic:
Ngôn ngữ lập trình cho PIC rất đa dạng Ngôn ngữ lập trình cấp thấp cóMPLAB (được cung cấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữ lậptrình cấp cao hơn bao gồm C, Basic, Pascal, … Ngoài ra còn có một số ngôn ngữ lậptrình được phát triển dành riêng cho PIC như PICBasic, MikroBasic,…
5 Mạch nạp Pic:
Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC Cóthể sử dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như:PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II Có thể dùng cácsản phẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB Dòngsản phẩm chính thống này có ưu thế là nạp được cho tất cả các vi điều khiển PIC,tuy nhiên giá thành rất cao và thường gặp rất nhiều khó khăn trong quá trình muasản phẩm
II.CẤU TRÚC TỔNG QUÁT PIC 16F877A
1.Một vài thông số về Pic 16F877A
Trang 9Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt độngtối đa cho phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớ chương trình8Kx14 bit, bộ nhớ dữ liệu 368 byte RAM và bộ nhớ dữ liệu EEPROM với dunglượng 256 byte Số PORT I/O là 5 với 33 pin I/O
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
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ỉ
Nạp được chương trình ngay trên mạch điện ICSP (In Circuit SerialProgramming)
thông qua 2 chân
Một vài đặc tính khác của vi điều khiển như:
Được chế tao bằng công nghệ CMOS
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Bộ 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
Chức năng bảo mật mã chương trình
Chế độ Sleep
Có thể hoạt động với nhiều dạng Oscillator khác nhau
Bảng 1.1: Tóm tắt đặc điểm của PIC16F877A
Trang 10Reset và Delay POR, BOR (PWRT, OST)
Giao tiếp nối tiếp MSSP, USART
Giao tiếp song song PSP
Module A/D 10-bit 8 kênh ngõ vào
Trang 11Hình 1: Sơ đồ chân Pic 16F877A loại 40 chân PDIP
Chức năng các chân :
* Chân OSC1/CLKI (13) : ngõ vào dao động thạch anh hoặc xung clock bên ngoài
- OSC1 : ngõ vào dao động thạch anh hoặc xung clock bên ngoài Ngõ vào Schmittrigger khi được cấu tạo ở chế độ RC ; một cách khác của CMOS
- CLKI : ngõ vào nguồn xung bên ngoài Luôn được kết hợp với chức năng OSC1
* Chân OSC2/CLKO (13) : ngõ vào dao động thạch anh hoặc xung clock
- OSC2 : Ngõ ra dao động thạch anh Kết nối đến thạch anh hoặc bộ cộng hưởng
- CLKO : ở chế độ RC, ngõ ra của OSC2, bằng tần số của OSC1 và chỉ ra tốc độ củachu kỳ lệnh
- AN1 : ngõ vào tương tự 1
* Chân RA2/NA2/VREF-/CVREF (4) :
- RA2 : xuất/nhập số
- AN2 : ngõ vào tương tự 2
Trang 12- VREF -: ngõvào điện áp chuẩn (thấp) của bộ A/D
- CVREF: điện áp tham chiếu VREF ngõ ra bộ so sỏnh
* Chân RA3/NA3/VREF+ (5) :
- RA3 : xuất/nhập số
- AN3 : ngõ vào tương tự 3
- VREF+ : ngõ vào điện áp chuẩn (cao) của bộ A/D
* Chân RA4/TOCKI/C1OUT (6) :
- RA4 : xuất/nhập số - mở khi được cấu tạo như ngõ ra
- TOCKI : ngõ vào xung clock bên ngoài cho Timer 0
- C1 OUT : Ngõ ra bộ so sánh 1
* Chân RA5/AN4/ /C2OUT (7) :
- RA5 : xuất/nhập số
- AN4 : ngõ vào tương tự 4
- SS : ngõ vào chọn lựa SPI phụ
Trang 13- RC0 : xuất/nhập số
- T1 OCO : ngõ vào bộ dao động Timer 1
- T1 CKI : ngõ vào xung clock bên ngoài Timer 1
* Chân RC1/T1 OSI/CCP2 (16) :
- RC1 : xuất/nhập số
- T1 OSI : ngõ vào bộ dao động Timer 1
- CCP2 : ngõ vào Capture 2, ngõ ra compare 2, ngõ ra PWM2
- SCK : ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI
- SCL : ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra của chế độ I2C
* Chân RC4/SDI/SDA (23) :
- RC4 : xuất/nhập số
- SDI : dữ liệu vào SPI
- SDA : xuất/nhập dữ liệu vào I2C
Trang 14- PSP0 : dữ liệu port nhánh song song
* Chân RD1/PSP1 (20) :
- RD1 : xuất/nhập số
- PSP1 : dữ liệu port nhánh song song
* Các chân RD2/PSP2 (21), RD3/PSP3 (22), RD4/PSP (27), RD5/PSP5 (28),RD6/PSP6 (29), RD7/PSP7 (30) tương tự chân 19,20
* Chân RE0/ /AN6 (8) :
- RE0 : xuất nhập số
- RD : điều khiển việc đọc ở port nhánh song song
- AN5 : ngõ vào tương tự 5
* Chân RE1/ /AN6 (9) :
- RE1 : xuất/nhập số
- WR : điều khiển việc ghi ở port nhánh song song
- AN6 : ngõ vào tương tự 6
* Chân RE2/ /AN7 (10) :
- RE2 : xuất/nhập số
- CS : Chip lựa chọn sự điều khiển ở port nhánh song song
- AN7 : ngõ vào tương tự 7
* Chân VDD(11,32), và VSS(12,31) : là các chân nguồn của PIC
3.Sơ đồ khối của Pic16F877A
Trang 15Hình 2: Sơ đồ khối vi điều khiển PIC16F877A
Bộ nhớ chương trình còn bao gồm một ngăn xếp( Stack) 8 mức
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h(Reset vector) Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h(Interrupt vector)
Ngăn xếp và bản đồ bộ nhớ chương trình:
Trang 164.2 Tổ chức của bộ nhớ dữ liệu:
Bộ nhớ dữ liệu của PIC được chia ra làm nhiều bank Đối với PIC16F877A bộnhớ dữ liệu được chia ra làm 4 bank: bank 0, bank 1, bank 2 và bank 3 Mỗi bank códung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFR (SpecialFunction Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chungGPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank Các thanhghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ởtất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làmgiảm bớt lệnh của chương trình
Các bank được lựa chọn bằng bitb RP0 và bit RP1 ở thanh ghi Status
Trang 17Sơ đồ bộ nhớ dữ liệu PIC16F877A
4.3 Bộ nhớ dữ liệu EEPROM và bộ nhớ chương trình FLASH:
Bộ nhớ dữ liệu EEPROM và bộ nhớ chương trình FLASH cho phép đọc hoặcghi trong suốt hoạt động bình thường trong phạm vi VDD Những thao tác này xảy
ra trên một byte đơn cho bộ nhớ dữ liệu EEPROM và trên một từ đơn cho bộ nhớchương trình FLASH Một thao tác ghi gây ra sự xóa rồi ghi, thao tác này được thựchiện trên một byte hoặc một từ được chỉ định Sự truy cập vào bộ nhớ chương trình
Trang 18phải kể đến sự tính toán checksum Ghi một byte hoặc một word sẽ tự động xóavùng nhớ và ghi lên giá trị mới (xóa trước khi ghi) Việc ghi vào bộ nhớ dữ liệuEEPROM không ảnh hưởng đến hoạt động của thiết bị Việc ghi vào bộ nhớ chươngtrình sẽ dừng thực thi các lệnh cho đến khi quá trình ghi hoàn thành Bộ nhớ chươngtrình không thể được truy cập trong suốt quá trình ghi Trong suốt quá trình ghi, bộdao động tiếp tục chạy, thiết bị ngoại vi vẫn tiếp tục hoạt động và những sự kiện vềngắt sẽ được phát hiện và đợi cho đến khi quá trình ghi hoàn thành Khi quá trìnhghi hoàn thành, lệnh tiếp theo trong hàng đợi lệnh sẽ được thực hiện và một rẽnhánh đến vectơ ngắt sẽ xảy ra đến ngắt được phép và gây ra trong suốt quá trìnhghi Việc đọc và ghi truy cập đến cả hai bộ nhớ xảy ra gián tiếp thông qua việc đặtnhững thanh ghi mục đích chung (SFR) Có sáu thanh ghi mục đích chung được sửdụng là:
Bộ nhớ dữ liệu EEPROM cho phép những thao tác đọc và ghi byte không canthiệp đến những thao tác bình thường của bộ vi điều khiển Khi có sự trao đổi với bộnhớ dữ liệu EEPROM, thanh ghi EEADR giữ địa chỉ sẽ được truy cập Phụ thuộcvào thao tác, thanh ghi EEDATA giữ dữ liệu được ghi hoặc được đọc tại địa chỉtrong thanh ghi EEADR PIC16F877A có 256 byte cho bộ nhớ dữ liệu EEPROM và
do đó nó sử dụng tất cả 8 bit của EEADR Bộ nhớ chương trình FLASH không chophép truy cập vào quá trình đọc, nhưng quá trình ghi sẽ dừng thực thi các lệnh chođến khi quá trình ghi hoàn thành Khi trao đổi với bộ nhớ chương trình cặp thanhghi EEADRH:EEADR sẽ tạo thành một từ hai byte, và sẽ chứa 13 bit địa chỉ củavùng nhớ được truy cập Sự kết hợp hai thanh ghi EEDATH:EEDATA sẽ chứa dữliệu 14 bit cho việc ghi, hoặc phản ánh giá trị của bộ nhớ chương trình sau mỗi lầnđọc Giống sự truy cập vào bộ nhớ dữ liệu EEPROM, giá trị của những thanh ghiEEADRH:EEADR phải bên trong phạm vi hợp lệ của bộ nhớ chương trình, phụthuộc vào linh kiện (0000h đến 1FFFh đối với PIC16F873/83.9)
4.4 Quá trình đọc bộ nhớ dữ liệu EEPROM:
Quá trình đọc bộ nhớ dữ liệu EEPROM chỉ yêu cầu địa chỉ cần truy cập phải đượcghi vào thanh ghi EEADR và xóa bit EEPGD Sau khi bit RD được set, dữ liệu sẽ phải sẵnsàng trong thanh ghi EEDATA trong chu kỳ lệnh kế tiếp EEDATA sẽ giữ giá trị này chođến khi thao tác đọc kế tiếp được bắt đầu hoặc cho đến khi nó được ghi bởi vi chươngtrình
Các bước trong quá trình đọc bộ nhớ dữ liệu EEPROM là:
1 Ghi địa chỉ cần truy cập vào thanh ghi EEADR và hãy chắc rằng địa chỉ này thìkhông lớn hơn kích thước bộ nhớ của linh kiện PIC16F877A
2 Xóa bit EEPGD để trỏ đến bộ nhớ dữ liệu EEPROM
3 Set bit RD để bắt đầu thao tác đọc
4 Đọc dữ liệu từ thanh ghi EEDATA
4.5 Quá trình ghi vào bộ nhớ dữ liệu EEPROM:
Quá trình ghi dữ liệu vào bộ nhớ dữ liệu EEPROM được tiến hành qua vàibước Cả địa chỉ và giá trị dữ liệu cần phải được ghi vào những thanh ghi mục đích
Trang 19chung SFR Bit EEPGD cần phải được xóa, và bit WREN phải được set để cho phépghi Bit WREN phải bị xóa trong suốt thời gian ngoại trừ trong quá trình ghi vào bộnhớ dữ liệu EEPROM Bit WR chỉ có thể được set khi bit WREN đã được set trước
đó, chúng không thể được set cùng lúc Bit WREN sau đó phải được xóa bằng vichương trình sau khi ghi
Các bước trong quá trình ghi vào bộ nhớ dữ liệu EEPROM:
1 Nếu bước thứ 10 chưa được thực hiện, hãy kiểm tra bit WR để xem việc ghi cóđang tiến hành
2 Ghi địa chỉ cần truy cập vào thanh ghi EEADR và hãy chắc rằng địa chỉ này thìkhông lớn hơn kích thước bộ nhớ của linh kiện PIC16F877A
3 Ghi giá trị dữ liệu 8 bit được chương trình hóa vào thanh ghi EEDATA
4 Xóa bit EEPGD để trỏ đến bộ nhớ dữ liệu EEPROM
5 Set bit WREN để cho phép những thao tác lập trình
6 Không cho phép những ngắt
7 Thực hiện chuỗi 5 lệnh đặc biệt sau:
o Ghi giá trị 55h vào EECON2 qua hai bước (đầu tiên đưa vào W, sau đómới đưa EECON2)
o Ghi giá trị AAh vào EECON2 qua hai bước (đầu tiên đưa vào W, sau đómới đưa vào EECON2)
o Set bit WR
8 Cho phép các ngắt (nếu sử dụng ngắt)
9 Xóa bit WREN để không cho phép các thao tác lập trình
10 Tại thời điểm chu kỳ ghi hoàn thành, bit WR bị xóa và bit cờ ngắt EEIF đượcset Nếu bước 1 chưa được thực hiện, sau đó vi chương trình sẽ kiểm tra xemEEIF được set hay chưa hoặc bit WR có bị xóa hay không để báo kết thúc chu
kỳ chương trình
4.6 Quá trình đọc bộ nhớ chương trình FLASH
Quá trình đọc bộ nhớ chương trình FLASH cũng giống với quá trình đọc bộnhớ dữ liệu EEPROM, chỉ cần thêm vào hai lệnh NOP sau khi set bit RD Hai chu
kỳ lệnh được thực hiện bởi lệnh NOP sẽ được bộ vi điều khiển sử dụng để đọc dữliệu ra khỏi bộ nhớ chương trình và chèn giá trị đó vào trong cặp thanh ghiEEDATH:EEDATA Dữ liệu sẽ được sẵn sàng ở lệnh thứ hai EEDATH vàEEDATA sẽ giữ giá trị này cho đến khi thao tác đọc tiếp theo được bắt đầu, hoặccho đến khi chúng được ghi bởi vi chương trình
Các bước trong quá trình đọc bộ nhớ chương trình FLASH:
1 Ghi địa chỉ cần truy cập vào cặp thanh ghi EEADRH:EEADR Hãy chắc rằngđịa chỉ đó không lớn hơn kích thước bộ nhớ của linh kiện PIC16F877A
2 Set bit EEPGD để trỏ đến bộ nhớ chương trình FLASH
3 Set bit RD để bắt đầu thao tác đọc
4 Thực hiện hai lệnh NOP để cho phép bộ vi điều khiển đọc dữ liệu ra khỏi bộ nhớchương trình
5 Đọc dữ liệu từ cặp thanh ghi EEDATH:EEDATA
Trang 204.7 Quá trình ghi dữ liệu vào bộ nhớ chương trình FLASH
Các bước trong quá trình ghi dữ liệu vào bộ nhớ chương trình FLASH:
1 Ghi địa chỉ cần truy cập vào cặp thanh ghi EEADRH:EEADR Chắc rằng địa chỉnày thì không lớn hơn kích thước bộ nhớ của linh kiện PIC16F877A
2 Ghi giá trị dữ liệu 14 bit đã được chương trình hóa vào cặp thanh ghiEEDATH:EEDATA
3 Set bit EEPGD để trỏ đến bộ nhớ chương trình FLASH
4 Set bit WREN để cho phép những thao tác lập trình
5 Không cho phép ngắt
6 Thực hiện chuỗi 5 lệnh đặc biệt sau:
o Ghi giá trị 55h vào EECON2 qua hai bước (đầu tiên đưa vào W, sau đóđưa vào EECON2 )
o Ghi giá trị AAh vào EECON2 qua hai bước ( đầu tiên đưa vào W, sau đóđưa vào EECON2)
o Set bit WR
7 Thực hiện hai lệnh NOP để cho phép bộ vi điều khiển thiết lập thao tác ghi
8 Cho phép các ngắt (nếu sử dụng ngắt)
9 Xóa bit WREN để không cho phép các thao tác lập trình
Tại thời điểm chu kỳ ghi hoàn thành, bit WR bị xóa và bit cờ ngắt EEIF đượcset Khi bộ vi điều khiển không thực hiện các lệnh trong suốt chu kỳ ghi, vi chươngtrình sẽ không nhất thiết phải kiểm tra cả EEIF, hoặc WR, để xác định quá trình ghi
đã hoàn thành hay chưa
Vi điều khiển PIC16F877A có hai cơ chế bảo vệ mã, một bit dành cho bộ nhớ
dữ liệu EEPROM và hai bit dành cho bộ nhớ chương trình FLASH Dữ liệu có thểđược đọc và ghi vào bộ nhớ dữ liệu EEPROM , bất chấp trạng thái của bit bỏa vệ
mã CPD Khi sự bảo vệ mã được cho phép và bit CPD bị xóa thì sự truy cập ngoàithông qua bit ICSP không được cho phép, bất chấp trạng thái của những bit bảo vệ
Trạng thái đọc ghi của bộ nhớ chương trình FLASH nội
Trang 214.8 Sự phân trang bộ nhớ chương trình:
PIC16F877A có khả năng định vị một khối liên tục 8K từ của bộ nhớ chươngtrình Các lệnh CALL và GOTO chỉ cung cấp 11 bit địa chỉ và chỉ xác định được 2K
bộ nhớ chương trình Khi thực hiện lệnh CALL hoặc GOTO, 2 bit cao nhất của địachỉ được cung cấp bởi PCLATH<4:3> Khi thực hiện lệh CALL hoặc GOTO, người
sử dụng phải bảo đảm rằng trang chọn bit phải được lập trình để trang bộ nhớchương trình được định địa chỉ Nếu lệnh CALL (hoặc ngắt) được thi hành, toàn bộ
13 bit của PC sẽ được cất vào ngăn xếp Vì vậy việc vận dụng các bitPCLATH<3:4> thì không đòi hỏi lệnh Return để lấy địa chỉ từ ngăn xếp
5 Các đặc tính của Oscillator
Pic16F877A có khả năng sử dụng một trong 4 loại oscillator, đó là:
LP: (low power crystal)
XT: thạch anh bình thường
HS: (high-speed crystal)
RC: (resistor/capacitor) dao động do mạch rc tạo ra đối với các loại oscillator lp, hs,
xt, Oscillator được gắn vào vi điều khiển thông
qua các pin osc1/clki và Osc2/Clko
đối với các ứng dụng không cần các loại oscillator tốc độ cao, ta có thể sử dụngmạch dao động rc làm nguồn cung cấp xung hoạt động cho vi vi điều khiển tần sốtạo ra phụ thuộc vào các giá trị điện áp, giá trị điện trở và tụ điện, bên cạnh đó là sựảnh hưởng của các yếu tố như nhiệt độ, chất lượng của các linh kiện
các linh kiện sử dụng cho mạch rc oscillator phải bảo đảm các giá trị sau:
3 k < rext < 100 k
cext >20 pf
6 Các chế độ Reset
Có nhiều chế độ reset vi điều khiển, bao gồm:
Power-on Reset POR (Reset khi cấp nguồn hoạt động cho vi điều khiển)
Trang 22Reset trong quá trình hoạt động.
Từ chế độ sleep
WDT reset (reset do khối WDT tạo ra trong quá trình hoạt động)
WDT wake up từ chế độ sleep
Brown-out reset (BOR)
- Power-on reset (POR): Đây là xung reset do vi điều khiển tạo ra khi phát hiệnnguồn cung cấp VDD Khi hoạt động ở chế độ bình thường, vi điều khiển cần đượcđảm bảo các thông số về dòng điện, điện áp để hoạt động bình thường Nhưng nếucác tham số này không được đảm bảo, xung reset do POR tạo ra sẽ đưa vi điềukhiển về trạng thái reset và chỉ tiếp tục hoạt động khi nào các tham số trên đượcđảm bảo
- Power-up Timer (PWRT): đây là bộ định thời hoạt động dựa vào mạch RC bêntrong
vi điều khiển Khi PWRT được kích hoạt, vi điều khiển sẽ được đưa về trạng tháireset
PWRT sẽ tạo ra một khoảng thời gian delay (khoảng 72 ms) để VDD tăng đến giátrị thích
hợp
- Oscillator Start-up Timer (OST): OST cung cấp một khoảng thời gian delay bằng
1024 chu kì xung của oscillator sau khi PWRT ngưng tác động (vi điều khiển đã đủđiều kiện hoạt động) để đảm bảo sự ổn định của xung do oscillator phát ra Tác độngcủa OST còn xảy ra đối với POR reset và khi vi điều khiển được đánh thức từ chế
đợ sleep OST chỉ tác động đối với các lọai oscillator là XT, HS và LP
- Brown-out reset (BOR): Nếu VDD hạ xuống thấp hơn giá trị VBOR (khoảng 4V)
và kéo dài trong khoảng thời gian lớn hơn TBOR (khoảng 100 us), BOR được kíchhoạt và vi điều khiển được đưa về trạng thái BOR reset Nếu điện áp cung cấp cho
vi điều khiển hạ xuống thấp hơn VBOR trong khoảng thời gian ngắn hơn TBOR, viđiều khiển sẽ không được reset Khi điện áp cung cấp đủ cho vi điều khiển hoạtđộng, PWRT được kích hoạt để tạo ra một khoảng thời gian delay (khoảng 72ms).Nếu trong khoảng thời gian này điện áp cung cấp cho vi điều khiển lại tiếp tục hạxuống dưới mức điện áp VBOR, BOR reset sẽ lại được kích hoạt khi vi điều khiển
đủ điện áp hoạt động Một điểm cần chú ý là khi BOR reset được cho phép, PWRTcũng sẽ hoạt động bất chấp trạng thái của bit PWRT
- Tóm lại để vi điều khiển hoạt động được từ khi cấp nguồn cần trải qua các bướcsau: POR tác động
PWRT (nếu được cho phép hoạt động) tạo ra khoảng thời gian delay TPWRT để ổn
Trang 237 Thanh ghi đếm chương trình PC( Program Counter):
Thanh ghi đếm chương trình( PC ) chứa địa chỉ của lệnh được thực hiện kếtiếp Bộ đếm chương trình (PC) có độ rộng 13 bit Byte thấp là thanh ghi PCL, nó cóthể đọc và ghi Ba bit cao là thanh ghi PCH (PC<12:8>) không cho phép đọc nhưng
nó cho phép ghi gián tiếp thông qua thanh ghi PCLATH Khi Reset thì ba bit caocủa PC sẽ bị xoá
PC sẽ tự động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chươngtrình theo đúng qui trình định trước
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được 8địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ nhớ Stacklần thứ 9 sẽ ghi đè
lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lần thứ 10 sẽ ghi
đè lên giá trị cất vào Stack lần thứ 2
Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta không biếtđược khi nào stack tràn Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũngkhông có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn được điềukhiển bởi CPU
Trang 248 Thanh ghi EECON1 và EECON2:
Thanh ghi EECON1 là thanh ghi điều khiển sự cấu hình và sự truy cập Thanhghi EECON2 không phải là thanh ghi vật lý được bổ sung, nhưng nó được sử dụng
để ghi một chuỗi nhớ để ngăn chặn sự ghi vô ý
Một vài bit được sử dụng để điều khiển các thao tác đọc hoặc ghi đến bộ nhớ
dữ liệu EEPROM và bộ nhớ chương trình FLASH Bit EEPGD xác định sự truy cậpđến bộ nhớ chương trình hoặc bộ nhớ dữ liệu Khi bị xóa, những thao tác tiếp theo
sẽ làm việc trên bộ nhớ dữ liệu EEPROM Khi được đặt, tất cả những thao tác tiếptheo sẽ thao tác trên bộ nhớ chương trình
Thao tác đọc sử dụng một bit thêm vào là RD, mà nó bắt đầu cho thao tác đọc
từ vùng nhớ mong muốn Mỗi lần bit này được đặt, giá trị của vùng nhớ này sẽ đượcsẵn sàng trong thanh ghi dữ liệu Bit này không thể xóa bằng vi chương trình Nó sẽ
tự động xóa sau khi thao tác đọc kết thúc Khi đọc bộ nhớ dữ liệu EEPROM, dữ liệu
sẽ được chuẩn bị sẵn trong thanh ghi EEDATA trong chu kỳ lệnh kế tiếp sau khi bit
RD được đặt Khi đọc bộ nhớ chương trình, sau khi bit RD được đặt, dữ liệu sẽđược load vào cặp thanh ghi EEDATH:EEDATA sau lệnh thứ hai
Thao tác ghi có hai bit điều khiển, WR và WREN, và hai bit trạng tháiWRERR và EEIF Bit WREN được sử dụng để cho phép hoặc không cho phép ghi.Khi bit WREN bị xóa, thao tác ghi sẽ không được cho phép Do đó, bit WREN cầnphải được set trước khi thực hiện thao tác ghi Bit WR được sử dụng để bắt đầu chothao tác ghi Nó sẽ tự động xóa sau khi thao tác ghi kết thúc Cờ ngắt EEIF được sửdụng để xác định việc ghi vào bộ nhớ đã hoàn thành Cờ này cần phải được xóabằng phần mềm trước khi bit WR được set Đối với bộ nhớ dữ liệu EEPROM, mỗilần bit WREN và WR đã được set, địa chỉ của vùng nhớ mong muốn trong thanh ghiEEADR sẽ bị xóa, sau đó là việc ghi dữ liệu vào thanh ghi EEDATA Khi thao tácghi hoàn thành, bit cờ EEIF sẽ được set Đối với bộ nhớ chương trình, mỗi lần bitWREN và WR đã được set, bộ vi điều khiển sẽ ngừng thực hiện các lệnh Vùng nhớmong muốn được trỏ đến bởi EEADRH:EEADR sẽ bị xóa Sau đó, giá trị dữ liệutrong EEADTH:EEDATA sẽ được chương trình hóa Khi hòan thành bit cờ EEIF sẽđược set và bộ vi điều khiển sẽ tiếp tục thực hiện
Thanh ghi EECON1(địa chỉ 18Ch)
Trang 259.Định địa chỉ gián tiếp , các thanh ghi INDF và FSR:
Thanh ghi INDF không phải là thanh ghi vật lý Địa chỉ của thanh ghi INDF sẽđược định vị gián tiếp Định vị gián tiếp có thể thực hiện được bằng cách sử dụngthanh ghi INDF Trên thực tế, bất kì lệnh nào sử dụng thanh ghi INDF để truy cậpthanh ghi con trỏ bằng thanh ghi FSR (File Select Register) Việc đọc chính thanhghi INDF, một cách gián tiếp (FSR = ‘0’) sẽ có giá trị 00h Một địa chỉ 9 bit có hiệuquả thu được bằng cách ghép 8 bit của thanh ghi FSR với bit IRP (STATUS<7>),như được chỉ bên dưới Một chương trình mẫu dùng để xoá vùng RAM từ 20h đến2Fh sử dụng cách định địa chỉ gián tiếp
Trang 2610 Thanh ghi chức năng đặc biệt SFR:
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điềukhiển các khối chức năng được tích hợp bên trong vi điều khiển Có thể phân thanhghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU)
và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví
dụ như ADC, PWM, …)
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi 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ần truy xuất trong bộnhớ dữ liệu
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho
phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các tham số
về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi,
chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT
và ngắt interrputon- change tại các chân của PORTB
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối
chức năng ngoại vi
Trang 27 Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng
CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các
ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset
của vi điều khiển
11 Các cổng xuất nhập
PIC16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức năng khácnhau Trong đó có một số chân đa công dụng( đa hợp): mỗi chân có thể họat độngnhư một đường xuất nhập ( I/O) hoặc là một chân chức năng đặc biệt dùng để giaotiếp với các thiết bị ngoại vi
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ác với bên ngoài Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồmPORTA, PORTB, PORTC, PORTD và PORTE
11.1 Port A và thanh ghi TRISA:
PortA gồm 6 chân từ RA0-RA5 Việc ghi các giá trị vào thanh ghi TRISA sẽquy định các chân của PortA là Input hay Output Nếu là 0 thì là Output, 1 là Input.Việc đọc thanh ghi PortA sẽ đọc trạng thái các chân PortA Việc ghi giá trị vàothanh ghi PortA sẽ thay đổi trạng thái của các chân PortA
Riêng chân RA4 được tích hợp thêm chức năng là chân cung cấp xung Clockngoài cho Timer0 (RA4/TOCKI) Những chân khác của PortA được đa hợp với cácchâ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ánh(Comparator) Hoạt động của những chân này được qui địng bằng những Bit tươngứng trong thanh ghi ADCCON1 va CMCON1 Khi các chân của PortA được sửdụng là ngõ vào Analog thì các Bit của thanh ghi TRISA phải luôn bằng 1
Trang 28Cấu trúc chân RA3-RA0: Cấu trúc chân RA4/TOCKI:
Cấu trúc chân RA5:
Chức năng các chân PortA:
Trang 29Các thanh ghi SFR 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
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
11.2 Port B và thanh ghi TRISB:
PortB gồm 8 chân từ RB0-RB7 Việc ghi các giá trị vào thanh ghi TRISB sẽquy định các chân của PortB là Input hay Output Nếu là 0 thì là Output, 1 là Input.Việc đọc thanh ghi PortB sẽ đọc trạng thái các chân PortB Việc ghi giá trị vàothanh ghi PortB sẽ thay đổi trạng thái của các chân PortB
Ba chân của PortB được đa hợp với chức năng In-Circuit Debugger và LowVoltage Programming fuction: RB3/PGM, RB6/PGC và RB7/PGD
Mỗi chân của PortB có một transistor kéo lên Vdd, chức năng này hoạt độngkhi Bit RPBU được xóa Chứ năng này sẽ tự động tắt khi chân Port đựơc quy địng làInput
Bốn chân của Portb từ RB7-RB4 có chức năng ngắt (Interrupt) khi trạng tháichân Port thay đổi (Khi chân Port được quy định là Ouput thì chức na7ng ngắtkhông họat động) Giá trị chân Port được so sánh với giá trị được lưu lại trước đó,khi có trạng thái sai lệch giữa 2 giá trị này, ngắt sẽ xảy ra với cờ ngắt RBIFINTCON<0> bật lên Ngắt có thể làm cho Vi điều khiển thoát khỏi trạng thái
“SLEEP”
Bất cứ một họat động truy xuất nào trên PortB sẽ xóa trạng thái sai lệch, kếtthúc ngắt và cho phép xóa cờ RBIF
Trang 30Cấu trúc chân RB3-RB0: Cấu trúc chân RB7-RB4:
Chức năng các chân PortB:
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 trong PORTB
Trang 31TRISB (đị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
11.3 Port C và thanh ghi TRISC:
PortC gồm 8 chân từ RC0-RC7 Việc ghi các giá trị vào thanh ghi TRISC sẽquy định các chân của PortC là Input hay Output Nếu là 0 thì là Output, 1 là Input.Việc đọc thanh ghi PortC sẽ đọc trạng thái các chân PortC Việc ghi giá trị vàothanh ghi PortC sẽ thay đổi trạng thái của các chân PortC
Các chân của PortC được đa gợp với các chức năng ngọai vi
Khi các hàm chức năng ngoại vi được cho phép, ta cần quan tâm chặt chẽ tớigiá trị các Bit của thanh ghi TRISC và mặt định các chân này là Ouput, ngoài ra một
số chức năng ngoại vi khác sẽ tự động mặt định các chân là ngõ vào
Trang 32Chức năng các chân PortC:
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
11.4 Port D và thanh ghi TRISD:
PortD gồm 8 chân từ RD0-RD7 Ngoài việc PortD được cấu trúc là một Portvừa xuất nhập nó còn có thể họat động như một cổng song song bằng cách xét BitPSPMODE, trong chế độ này Buffer ngõ vào linh kiện TTL
Cấu trúc chân I/O PortD:
Trang 33Chức năng các chân PortD:
Các thanh ghi liên quan đến PORTD bao gồm:
Thanh ghi PORTD(địa chỉ 08h): chứa giá trị các pin trong PORTD
Thanh ghi TRISD(địa chỉ 88h): điều khiển xuất nhập
11.5 PortE và thanh ghi TRISE:
PortE có 3 chân RE0/RD/AN5, RE1/WR/AN6 VÀ RE2/CS/AN7 có thể đượccấu hình là các chân xuất nhập
Các chân của PortE có thể trở thành các chân điều khiển cho các cổng của Viđiều khiển khi Bit PSPMODE được xét là 1 Trong chế độ này phải đảm bảo rằngcác Bit từ 0 dến 2 cua thanh ghi TRISE phải được xét bằng 1 để các chân này đượccấu hình như các chân ngõ vào
Ngoài ra các chân PortE còn được cấu hình như các ngõ vào Analog, tại chế độnày khi đọc trạng thái các chân PortE sẽ cho ta giá trị 0
Thanh ghi TRISE quy định chức năng xuất nhập của các chân PortE ngay cảkhi nó được sử dụng là các ngõ vào Analog
Trang 34Cấu trúc chân I/O PortE:
Chức năng các chân PortE:
Các thanh ghi liên quan đến PORTE bao gồm:
PORTE(địa chỉ 09h) : chứa giá trị các chân trong PORTE
TRISE(địa chỉ 89h) : điều khiển xuất nhập và xác lập các thông số cho chuẩngiao tiếp PSP
ADCON1(địa chỉ 9Fh) : thanh ghi điều khiển khối ADC
Trang 3511.6 Parallel Slave Port:
PORTD hoạt động như port phụ song song có độ rộng 8 bit hoặc port vi xử lýkhi bit điều khiển PSPMODE (TRISE<4>) được Set Trong chế độ phụ , nó đượcđọc và ghi không đồng bộ thông qua tín hiệu điều khiển ở ngõ vào RD của chânRE0/RD và tín hiệu điều khiển ở ngõ vào WRcủa chân RE1/WR PSP có thể ghépnối trực tiếp với bus dữ liệu của vi xử lý 8 bit Bộ vi xử lý bên ngoài có thể đọc hoặcghi vào chốt PORTD như bộ chốt 8 bit Khi bit PSPMODE được đặt thì chân RE0/
RD là ngõ vàoRD, chân RE1/WR là ngõ vào WRvà chân RE2/CS là ngõ vào
CS (chọn chip) Trong hoạt động này, những bit dữ liệu trực tiếp tương ứng củathanh ghi TRISE(TRISE<2:0> ) phải được cấu hình như những ngõ vào Những bitcấu hình của bộ A/D là PCFG3:PCFG0 (ADCON1<3:0>) phải được đặt để cấu hìnhcho những chân RE2:RE0 như I/O số
Thực tế có hai bộ chốt 8 bit : một cho dữ liệu ở ngõ ra và một cho dữ liệu ởngõ vào Người sử dụng có thể ghi dữ liệu 8 bit vào bộ chốt dữ liệu của PORTD vàđọc dữ liệu từ bộ chốt ( chú ý rằng chúng có cùng địa chỉ) Trong chế độ này, thanhghi TRISE được bỏ qua, khi những thiết bị ngoài đang điều khiển hướng của luồng
dữ liệu
Hoạt động ghi vào PSP xuất hiện khi cả CS và WRđược dò thấy ở mức thấplần đầu tiên Khi cả CS và WRtrở về mức cao khi đó bit cờ trạng thái IBF ( InputBuffer Full ) ( TRISE<7> ) được bật tại chu kỳ xung clock Q4, chu kỳ kế tiếp là Q2,báo hiệu việc ghi đã hoàn thành Bit cờ ngắt PSPIF ( PIR1<7> ) cũng được bật tạichu kỳ xung clock Q4 IBF chỉ có thể được xóa bằng cách đọc bộ chốt ngõ vào củaPORTD Bit cờ trạng thái IBOV ( Input Buffer Overflow) (TRISE<5>) được bậtnếu lần ghi thứ hai vào PSP được thực hiện khi byte trước đó chưa được đọc ra khỏivùng đệm Hoạt động đọc từ PSP xuất hiện khi cả CS và RD được dò thấy ở mứcthấp lần đầu tiên bit cờ trạng thái OBF (Output Buffer Full) (TRISE<6> ) bị xóangay lập tức báo hiệu rằng bộ chốt của PORTD đang chờ đọc dữ liệu bởi bus ngoại.Khi một trong hai chân CS và RD trở về mức cao, bit cờ ngắt PSPIF được bật tạichu kỳ xung clock Q4, chu kỳ kế tiếp là Q2, báo hiệu rằng việc đọc đã hòan thành.Bit OBF vẫn được giữ ở mức thấp cho đến khi dữ liệu được ghi vào PORTD bởi vichương trình của người sử dụng
Khi không hoạt động trong chế độ PSP, những bit IBF và OBF được giữnguyên Tuy nhiên nếu trước đó bit IBOV đã được bật nó phải được xóa bằng vichương trình Một ngắt được phát ra và được chốt vào bit cờ PSPIF khi hoạt độngđọc hoặc ghi hoàn thành Bit PSPIF phải được xóa bằng vi chương trình của người
sử dụng và ngắt không được cho phép bằng cách xóa bit cho phép ngắt PSPIE( PIE<7>)
Dạng sóng khi ghi lên Parallel Slave Port:
Trang 36Dạng sóng khi trong quá trình đọc từ Parallel Slave Port
Trang 37Sơ đồ khối của PORTD và PORTE trong chế độ Parallel Slave Port
Các thanh ghi liên quan đến Parallel Slave Port:
12.MCLR( MASTER CLEAR):
Ngõ vào MCLR( Reset) trên chân số 1 của Vi điều khiển Khi đưa MCLRxuống thấp, các thanh ghi bên trong Vi điều khiển sẽ được tải những giá trị thíchhợp để khởi động lại hệ thống
Trang 3813.Hoạt động của các bô ngoại vi:
Bộ Capture/Compare/PWM :
Họ PIC16F87X có hai bộ CCP, mỗi bộ là một thanh ghi 16 bit mà có thể hoạtđộng như là :
Thanh ghi Capture 16 bit
Thanh ghi Compare 16 bit
Thanh ghi chu trình làm việc chủ/tớ PWM
Cả hai bộ CCP1 và CCP2 cơ bản hoạt động giống nhau, ngoại trừ trong khi hoạtđộng với sự kiện trigger đặt biệt
Trang 39 Sau mỗi cạnh lên của xung clock.
Sau mỗi cạnh xuống của xung clock
Sau mỗi canh lên thứ tư
Sau mỗi cạnh lên thứ 16
Việc lựa chọn sự kiện nào được cấu hình bởi các bit điều khiểnCCP1M3:CCP1M0 Nếu một sự kiện mới xảy ra trước khi giá trị trong thanh ghiCCPR1 được đọc, giá trị mới sẽ đè lên giá trị cũ
Sơ đồ khối của bộ CCP hoạt động trong chế độ Capture: