Ngày nay, việc ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ biến: từ những ứng dụng đơn giản như điều khiển một chốt đèn giao thông định thời, đếm sản phẩm trong một dây chuyền sản xuất, điều khiển tốc độ động cơ điện một chiều, thiết kế một biển quảng cáo dùng Led ma trận, một đồng hồ thời gian thực .đến các ứng dụng phức tạp như hệ thống điều khiển robot, bộ kiểm soát trong nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân. Các hệ thống tự động trước đây sử dụng nhiều công nghệ khác nhau như các hệ thống tự động hoạt động bằng nguyên lý khí nén, thủy lực, rơle cơ điện, mạch điện tử số, các thiết bị máy móc tự động bằng các cam chốt cơ khí. các thiết bị, hệ thống này có chức năng xử lý và mức độ tự động thấp so với các hệ thống tự động hiện đại được xây dựng trên nền tảng của các hệ thống nhúng.
Với mong muốn giới thiệu ứng dụng cơ bản của hệ thống nhúng trong đời sống hiện đại, nhóm chúng em đưa ra mô hình thiết kế hệ thống điều khiển đèn thông minh dùng cho các phòng họp.
Trong quá trình thực hiện đồ án môn học, nhóm chúng em cố gắng thiết kế sao cho mô hình là đơn giản nhất, ổn định nhất; tuy nhiên do vấn đề thời gian và kinh nghiệm nên mô hình vẫn còn gặp phải những vấn đề chưa thể khắc phục được.
38 trang |
Chia sẻ: oanhnt | Lượt xem: 4487 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế hệ thống điều khiển đèn thông minh dùng cho các phòng họp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
BỘ MÔN: KỸ THUẬT MÁY TÍNH
ĐỒ ÁN MÔN HỌC
MÔN HỌC
HỆ THỐNG NHÚNG
Nhóm sinh viên : Nguyễn Thị Hòa
Nguyễn Văn Hợp
Tống Quang Long
Lớp : K43DDK .
Giáo viên hướng dẫn : Nguyễn Văn Huy
Thái Nguyên – 2011
Nhận xét của giáo viên hướng dẫn
Thái Nguyên, Ngày Tháng Năm 2011
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
Nhận xét của giáo viên chấm
Thái Nguyên, Ngày Tháng Năm 2011
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
MỤC LỤC
LỜI NÓI ĐẦU
Ngày nay, việc ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ biến: từ những ứng dụng đơn giản như điều khiển một chốt đèn giao thông định thời, đếm sản phẩm trong một dây chuyền sản xuất, điều khiển tốc độ động cơ điện một chiều, thiết kế một biển quảng cáo dùng Led ma trận, một đồng hồ thời gian thực….đến các ứng dụng phức tạp như hệ thống điều khiển robot, bộ kiểm soát trong nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân. Các hệ thống tự động trước đây sử dụng nhiều công nghệ khác nhau như các hệ thống tự động hoạt động bằng nguyên lý khí nén, thủy lực, rơle cơ điện, mạch điện tử số, các thiết bị máy móc tự động bằng các cam chốt cơ khí... các thiết bị, hệ thống này có chức năng xử lý và mức độ tự động thấp so với các hệ thống tự động hiện đại được xây dựng trên nền tảng của các hệ thống nhúng.
Với mong muốn giới thiệu ứng dụng cơ bản của hệ thống nhúng trong đời sống hiện đại, nhóm chúng em đưa ra mô hình thiết kế hệ thống điều khiển đèn thông minh dùng cho các phòng họp.
Trong quá trình thực hiện đồ án môn học, nhóm chúng em cố gắng thiết kế sao cho mô hình là đơn giản nhất, ổn định nhất; tuy nhiên do vấn đề thời gian và kinh nghiệm nên mô hình vẫn còn gặp phải những vấn đề chưa thể khắc phục được.
Trân trọng và chân thành cảm ơn!
Nhóm thực hiện đề tài:
Nguyễn Thị Hòa
Nguyễn Văn Hợp
Tống Quang Long
CHUƠNG 1: PHÂN TÍCH BÀI TOÁN
Khảo sát và phân tích bài toán
Hiện nay hầu hết việc giám sát và điều khiển chiếu sáng trong các phòng công cộng được điều khiển bằng tay thông qua đóng mở các công tắc, các aptomat, cầu dao.... Điều này khá thuận lợi và đơn giản vì ta có thể bật tắt đèn theo nhu cầu sử dụng. Tuy nhiên, do là phòng công cộng nên việc bật tắt đèn hầu như do người trực khu nhà đó làm. Vì thế họ không biết được chính xác khi nào thì có người tới và khi nào thì mọi người đã ra hết khỏi phòng hoặc họ biết nhưng vì phải quản lý nhiều phòng nên họ vẫn cứ để điện đến hết ca trực, điều này gây lãng phí điện rất lớn, đặc biệt trong hoàn cảnh nước ta đang thiếu điện một cách trầm trọng như hiện nay.
Trên thị trường hiện nay đã có một số thiết bị bật tắt đèn thông minh, như SmartLight do Hàn Quốc sản xuất: Được tích hợp sensor cảm ứng hồng ngoại thân nhiệt, đèn sẽ tự động được bật khi có người đi vào vùng cảm ứng và tắt khi không có người.
Hình 1.1: Đèn thông minh Smartlight
SmartLight phù hợp với mọi nhu cầu chiếu sáng thông minh của bạn tại sân cổng, phòng khách, phòng ngủ, phòng vệ sinh, cầu thang, văn phòng... giúp bạn bật tắt đèn hoàn toàn tự động, mang lại sự an toàn, tiện nghi và tiết kiệm điện... Tuy nhiên thiết bị này tích hợp luôn bộ điều khiển với đèn trong 1 sản phẩm. Do đó giá thành cao và không thích hợp cho các phòng cần lượng chiếu sáng lớn, không thay đổi được loại bóng đèn theo yêu cầu.
Hệ thống giám sát điều khiển chiếu sáng sử dụng camera kết nối với máy tính để kiểm soát số người trong phòng, qua đó phát lệnh đóng mở các công tắc tơ bật tắt bóng đèn.
Hình 1.2: Hệ thống camera giám sát
Hệ thống này giúp việc bật tắt đèn ở nơi lắp đặt một cách chính xác, tự động hoặc bán tự động. Tuy nhiên do sử dụng máy tính nên giá thành của hệ thống rất cao, mặt khác không giải quyết được vấn đề tiết kiệm điện. Vì thế nó thường chỉ được sử dụng ở những tòa nhà công nghệ cao, những khu vực cần điều chỉnh chiếu sáng không phải vì mục đích tiết kiệm điện năng.
Hệ thống bật tắt đèn tự động sử dụng các IC số và mạch Logic cho phép ta dựa vào lượng người vào ra để đóng ngắt các công tắc một cách tự động.
Hình 1.3: Hệ thống bật tắt đèn thông minh dùng IC số
Hệ thống này có cấu tạo đơn giản, rẻ, không phải lập trình mà chỉ dựa vào các mạch Logic… nhưng tính linh động không cao, khó chỉnh định khi điều kiện làm việc thay đổi, ít có khả năng nâng cấp mở rộng hệ thống.
Với những phòng họp công cộng, khi mà lưu lượng người không lớn và có thể kiểm soát được việc đếm người qua cửa thì ta hoàn toàn có thể áp dụng hệ thống đèn thông minh sử dụng Vi điều khiển được lập trình để bật đèn khi có người và tắt khi không có người. Điều này vừa tiện lợi cho mọi người: ứng dụng công nghệ tự động hóa vào cuộc sống con người, đảm bảo đủ ánh sáng trong quá trình làm việc, người quản lý thì đỡ tốn thời gian… đồng thời góp phần giải quyết vấn đề tiết kiệm điện năng trong thời kỳ mà nhu cầu điện tiêu thụ đã vượt quá khả năng cung cấp của các nhà máy điện hiện nay.
Lựa chọn giải pháp
Giải pháp công nghệ
Qua phân tích ở trên, nhóm chúng em đưa ra giải pháp xây dựng hệ thống điều khiển đèn thông minh cho các phòng họp: điều khiển bật tắt đèn qua việc kiểm soát lượng người ra vào phòng. Thu nhận tín hiệu rồi xử lý tín hiệu, khi có người vào phòng, nếu đèn đang bật thì vẫn bật, đèn chưa bật thì bật đèn lên; khi mọi người ra hết khỏi phòng thì tắt đèn đi. Trong quá trình làm việc hệ thống luôn hiển thị số người còn đang ở trong phòng để tiện cho việc kiểm tra, theo dõi.
Giải pháp thiết kế
Để phát hiện người ra ta dùng 2 bộ thu phát hồng ngoại mắc gần nhau đặt ở cửa ra vào.
Xử lý, điều khiển dùng vi điều khiển Pic: lập trình để Pic nhận tín hiệu vào từ 2 bộ Led hồng ngoại, tính toán xử lý để đưa ra lệnh bật tắt đèn.
Để hiển thị ta dùng Led 7 thanh: lấy tín hiệu ra từ Pic để thông báo xem trong phòng có bao nhiêu người
Điều khiển tắt/mở bóng đèn nhờ transistor cấp dòng cho rơ le.
Các yêu cầu
Hệ thống điều khiển đèn thông minh này áp dụng cho các phòng họp:
Số lượng người trong phòng tối đa không quá 99 người.
Phòng chỉ có một cửa ra vào.
Ở một thời điểm chỉ có 1 người qua cửa.
Cửa cao 2.5m, rộng 2m.
Có người đi vào thì bật đèn và đi ra hết thì tắt đèn.
Hệ thống có 2 chế độ làm việc tự động và bằng tay.
Làm việc với điện áp 220V/50Hz.
Sensor và công nghệ tùy chọn.
Có khả năng nâng cấp, cải tiến.
Giới hạn hạn định
Làm việc cả ban ngày lẫn ban đêm.
Thu nhận tín hiệu liên tục khi có người ra vào.
Nhiệt độ môi trường: trong nhà 100C đến 400C.
Hệ thống cấp điện mới từ đầu.
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG
Sơ đồ tổng quát
Hệ thống điều khiển đèn thông minh gồm có 5 khối chính.
Khối
xử
lý
Khối
chấp
hành
Khối hiển
thị
Khối
cảm biến
Khối nguồn
Hình 2.1: Sơ đồ tổng quát hệ thống bật tắt đèn thông minh
Khối Nguồn: Cung cấp nguồn cho hệ thống.
Khối Cảm biến: Sử dụng sensor hồng ngoại dùng để thu nhận tín hiệu người vào ra phòng, đưa tín hiệu thu được vào chân Pic để xử lý. Để nhận biết người đi vào hay đi ra ta dùng 2 bộ thu phát hồng ngoại mắc gần nhau.
Khối Xử lý: Dùng VDK Pic 16F877A để lấy tín hiệu từ cảm biến, tính toán, lưu trữ và đưa ra khối hiển thị và khối chấp hành.
Khối Hiển thị: Lấy tín hiệu ra từ chân Pic để hiển thị số lượng người hiện đang ở trong phòng trên Led 7 thanh.Khối Chấp hành: Nhận tín hiệu từ khối xử lý để thực hiện đóng cắt tiếp điểm mạch động lực.
Sơ đồ Callgraph
Chương trình
điều khiển chính
Module
Xử lý
Cảm biến
Module
Xử lý
Chương trình
Cảm biến
Chấp hành
Hiển thị
Hình 2.2: Sơ đồ Callgraph của hệ thống bật tắt đèn thông minh
Sơ đồ đặc tả
Phân lượng người
trong phòng
Bật đèn
Hiển thị
Số người
Tắt đèn
Người ra
Người vào
Có người
Không người
Hình 2.3: Sơ đồ đặc tả của hệ thống bật tắt đèn thông minh
Các module trong hệ thống
Module khối nguồn
Module này tạo ra điện áp một chiều từ nguồn xoay chiều 220V để cung cấp cho các linh kiện trong hệ thống. Sử dụng biến áp để biến điện áp xoay chiều 220V thành điện áp xoay chiều 12V, dùng chỉnh lưu từ 12V xoay chiều sang 12V một chiều, dùng IC 7805 ổn áp để lấy ra điện áp ổn định 5V ở ngõ ra.
Hình 2.4.: Module nguồn cấp
Module cảm biến
Bộ phận cảm biến của hệ thống sử dụng mạch thu phát hồng ngoại. Led phát hồng ngoại nối với nguồn 1 chiều qua điện trở R1, R2: phát ra ánh sáng hồng ngoại truyền tới Led thu. Led thu hồng ngoại có 3 chân: chân 3 và 1 nối với nguồn qua R3, R4 và đất, chân 2 lấy tín hiệu ra đưa vào chân Vi xử lý. Ở trạng thái bình thường, tín hiệu hồng ngoại truyền từ khối phát được Led thu thu nhận, trên đầu ra 2 tín hiệu ở mức cao (mức 1); khi có người đi cắt qua khiến Led thu mất tín hiệu, đầu ra 2 cho tín hiệu ở mức thấp (mức 0). Để có thể phân biệt được là người đi vào hay đi ra ta mắc 2 bộ Thu- Phát song song và đặt cạnh nhau. Tín hiệu thu được từ đầu ra của 2 Led thu được đưa vào 2 chân Vi xử lý để thực hiện quá trình tính toán, kiểm tra, lưu trữ…
Module phát Module thu
Hình 2.5: Module thu phát hồng ngoại
Module điều khiển trung tâm
Khối điều khiển trung tâm dùng vi điều khiển Pic 16F877A. Khi có tín hiệu ngắt từ bộ thu hồng ngoại qua các chân RB4 và RB5 của cổng B thi Vi điều khiển sẽ kích hoạt ngắt cổng B từ RB4>>RB7, qua thuật toán đã nạp Pic thực hiện chương trình điều khiển đưa tới các cổng A, C, D tín hiệu để điều khiển khối hiển thị (Led 7 thanh) và khối chấp hành (module động lực).
Bộ tạo dao động dùng thạch anh 20M cung cấp ngồn dao động cho Pic
Bộ Reset cấp nguồn 5V và xác lập trạng thái ban đầu cho Pic.
Hình 2.6: Module điều khiển trung tâm
Module tương tác điều khiển (hiển thị)
Để tiện cho việc kiểm tra theo dõi số người hiện đang ở trong phòng, ta sử dụng 2 Led 7 thanh mắc chung Anot với số người hiển thị tối đa là 99 người. Tín hiệu điều khiển từ Vi xử lý đưa ra cổng C để bật tắt các thanh Led từ 1 đến 7( tích cực ở mức dương) tương ứng với các con số từ 0 đến 9 cần hiển thị. Để hiển thị cả hai Led ta dùng thuật toán quét Led với tín hiệu đưa ra từ cổng D quyết định Led 1 hay Led 2 được bật.
Hình 2.7 : Module hiển thị
Module chấp hành.
Bộ phận chấp hành có Role nối với thiết bị điện. Vi xử lý sau khi xử lý tín hiệu sẽ gửi lệnh điều khiển để đóng mở Transistor cấp nguồn cho cuộn dây của Role (dòng hoặc áp). Đèn điện được nối với nguồn 220V xoay chiều qua tiếp điểm của Role, khi Role tác động thì đèn bật lên và ngược lại đèn tắt khi Role thôi tác động. Để đảm bảo cho hệ thống có thể làm việc ở cả hai chế độ bằng tay và tự động ta dùng công tắc 3 vị trí: ở vị trí 1 là chế độ làm việc tự động, còn vị trí 2 và 3 tương ứng với tắt/ bật đèn.
Hình 2.8 : Module chấp hành của hệ thống bật tắt đèn thông minh
Lựa chọn linh kiện.
Vi điều khiển PIC16F877A
Sơ đồ chân vi điều khiển PIC 16F877A
Hình 2.9: Sơ đồ chân PIC 16F877A
Một vài thông số về vi điều khiển PIC 16F877A
Đâ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 động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 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:
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 đếm dự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 RD, WR, CS bên ngoài.
Các đặc tính Analog: 8 kênh chuyển đổi ADC 10 bit. Hai bộ so sánh.
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. Nạp được chươ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. Chế độ Sleep. Có thể hoạt động với nhiều dạng Oscillator khác nhau.
Sơ đồ khối vi điều khiển PIC 16F877A
Hình 2.10 : Sơ đồ khối vi điều khiển PIC16F877A
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) .
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash , dung lượng bộ nhớ 8k word (1 word= 14bit) và được phân thành nhiều trang (từ page 0 đến page 3) .Như vậy bộ nhớ chương trinh có khả năng chứa được 8*1024 =8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit). Để mã hóa được địa chỉ của 8k word bộ nhớ chương trình , bộ đếm chương trình có dung lượng 13 bit (PC) . Khi vi điều khiển 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). Bộ nhớ chương trình không bao gồm bộ nhớ stack sẽ được đề cập cụ thể trong phần sau.
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank. Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Pegister) nằm ở vùng địa chỉ còn lại trong bank. Các thanh ghi 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àm giảm bớt lệnh của chương trình.
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC tự động được vi điều khiển cất vào trong stack. Khi một trong các lệnh RETURN, RETLW hat RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trì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ớ Stack lầ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ị 6 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ũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn được điều khiển bởi CPU.
Các cổng xuất nhập của PIC16F877A
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 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ỗi cổ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 đặc tí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ính ngoạ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ỗi cổ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ên quan đến chân xuất nhập đó.
Port A
Port A (RPA) bao gồm 6 I/O pin. Đây là các chân “hai chiều” (bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức năng của một chân trong PortA là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong Port A là output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA. Thao tác này hoàn toàn tương tự đối với các PORT còn lại. Bên cạnh đó Port A còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port).
Các thanh ghi SFR liên quan đến Port A bao gồm:
Port A (địa chỉ 05h) : chứa giá trị các pin trong
Port A. 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.
Port B
Port B (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISB. Bên cạnh đó một số chân của Port B còn đươc sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. Port B còn liên quan đến ngắt ngoại vi và bộ Timer0. Port B còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến Port B bao gồm:
Port B (địa chỉ 06h,106h) : chứa giá trị các pin trong
Port B 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
Port C
PortC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISC. Bên cạnh đó Port C còn chứa các chân chức năng của bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Các thanh ghi điều khiển liên quan đến Port C:
Port C (địa chỉ 07h) : chứa giá trị các pin trong
Port C TRISC (địa chỉ 87h) : điều khiển xuất nhập.
Port D
Port D (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là TRISD. Port D còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port).
Các thanh ghi liên quan đến Port D bao gồm:
Thanh ghi Port D : chứa giá trị các pin trong Port D.
Thanh ghi TRISD : điều khiển xuất nhập.
Thanh ghi TRISE : điều khiển xuất nhập Port E và chuẩn giao tiếp PSP.
Port E
Port E (RPE) gồm 3 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISE. Các chân của PortE có ngõ vào analog. Bên cạnh đó Port E còn là các chân điều khiển của chuẩn giao tiếp PSP.
Các thanh ghi liên quan đến Port E bao gồm:
Port E : chứa giá trị các chân trong PortE.
TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếp PSP
ADCON1: thanh ghi điều khiển khối ADC.
Ngắt (Interrupt)
PIC16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển bởi thanh ghi INTCON (bit GIE). Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng. Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuộc vào bit GIE và các bit điều khiển khác. Bit điều khiển ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn chứa bit cho phép các ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2. Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2.
Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trình ngắt được kết thúc bằng lệnh RETFIE. Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h. Lệnh RETFIE được dùng để thoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIE cũng sẽ được set để cho phép các ngắt hoạt động trở lại. Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.
Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các pin của PORTB (PORTB Interrupt on change), việc xác định ngắt nào xảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt.
Cần chú ý là trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trình được cất vào trong Stack, trong khi một số thanh ghi quan trọng sẽ không được cất và có th