ПІК читання клавіатури / сну

F

fastbike

Guest
Привіт,

Я читаю 4 х 7 матриці мембрани клавіатури.Я використовую PIC16F88 і використання PortB4: 7 шпильки для колон і PortA0: 7 шпильки для рядків.

Я встановив свій код встановлення колонок шпильки в якості внеску, високо внутрішнім pullups.Рядки встановити в якості виходу і встановити його в низькому рівні.

У моїй основний цикл код я переглядаю PortB4: 7 шукаєте низькі колонці пін - Ідея полягає в тому, коли натиснута клавіша контактний PORTB піде низькому рівні.
Якщо це відбудеться, я потім встановити цей стовпець у якості вихідного (низька), встановити в якості вхідних даних рядків (високо піднятою із зовнішніми pullups) і знайдіть рядок, яка є низькою.

Це добре працює.

Моя проблема полягає в наступному:
Я хочу використовувати команду SLEEP, щоб я міг повернути ПІК с для економії енергії акумулятора.Я хочу прокинутися його за допомогою переривання на функцію PORTB.

Однак, коли я дозволити біт RBIE, мій код перестає працювати або працює з перебоями.

Я очищення прапор RBIF в переривання процедури.Я пробував налаштування 50mSec затримки debounce ключ, перш ніж погасити прапор, але знайти це мало що міняє.

Хіба я переглянув що-небудь просто?

 
Привіт,Використовується контактний RA5?Я подивився на дані, і я побачив, що цей висновок лише вхід, тому він не може бути використана для перевірки вашої клавіатурі.

Ви повинні відключити PORTB переривання при читанні ключі статус, ви це робите?

чому ви не використовуєте таймер читати статус?Ви робите 1 сканування в 10ms, якщо ключ тиск 2 або 3 рази ви можете зробити дій для даного ключа.

Подивіться на креслення RA5 ПІН-код:

 
Привіт,

Microchip є кілька ідей про те, як робити, і всі вони будуть вам заощадити багато часу, конструкції та потужності на bettary в кінці.
Прочитайте деякі з них: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1490&filterID=419

Якщо вам потрібно більше інформації, розмістити його тут.
Бажаю удачі.

 

Welcome to EDABoard.com

Sponsor

Back
Top