PIC в C - создание собственной процедуры сканирования клавиатуры с использованием RC0-3

Меня попросили создать мою собственную процедуру, которая будет сканировать клавиатуру, но только с использованием PORTC и с использованием RC0-3, мне нужно только вернуть 4 значения, то есть 1,2,4,5, которые, если я прав, находятся в расположение 2x2 на клавиатуре 4x4. Клавиатура, которую я использую, представляет собой клавиатуру 4x4, подключенную к PORTC, мне просто интересно, как вы это сделаете? Поскольку меня этому не учили, тем не менее, это большая часть работы. Было бы неплохо, если бы я получил не решение, а скорее объяснение, подталкивающее меня в правильном направлении, чтобы я мог сделать это сам. Микроконтроллеры PIC : Сканируйте входы на клавиатуре 4x4, используя только порт C RC0-RC3 в C, это в основном этот вопрос, но ответы там на самом деле не помогли, поэтому я подумал, что попробую задать этот вопрос сам :) Любая помощь будет оценена!


person Joeliomason    schedule 30.12.2014    source источник


Ответы (1)


В предыдущем вопросе, который вы связали, «1,2,4,5» относятся к легендам клавиатуры, которые могут быть любыми и часто не имеют никакого отношения к значениям битов, которые вы получаете обратно. Вы записываете бит «1» на каждый выход (строку) по очереди (или «0» для инвертированной логики) и ищете старшие (или младшие, если инвертированная логика) биты на входах столбца. Вы беспокоитесь о том, что написано на клавишах впоследствии, используя таблицу поиска. Независимо от того, есть ли у вас ключевая матрица 2x2 или 4x4, это не имеет значения, если только вы не хотите встроенное решение, а не циклическое.

Если бы клавиатура действительно была 2x2, ей не нужно было бы быть матрицей, проводка и кодирование были бы проще с 4 битами, используемыми в качестве входов вместо 2 выходов и 2 входов для управления и чтения матрицы.

Если вы не перемонтируете клавиатуру 4x4, ваше подмножество 2x2, вероятно, будет использовать RC0,1 и RC4,5.

person Weather Vane    schedule 30.12.2014
comment
Именно так я и думал, потому что он уже подключен, но в спецификации сказано, что нам нужно использовать RC0-3, я буду показывать готовый продукт на, и только на Real PIC Simulator, это часть курсовой работы для моего последний год в университете. Итак, если это на симуляторе реального изображения, могу ли я изменить строки и столбцы на все, что захочу? РЕДАКТИРОВАТЬ: Только что поиграл на симуляторе Real PIC, я могу подключить ключи, как захочу, поэтому мой следующий вопрос: как настроить RC0-1 в качестве выходов и RC2-3 в качестве входов? спасибо :) - person Joeliomason; 30.12.2014
comment
@user2988392 user2988392, если все устройство и код смоделированы, я бы настроил назначения портов, когда задан вопрос. RC0,1 в качестве выходов и RC2,3 в качестве входов. Странный вопрос в нереальной ситуации. Как я заметил выше, зачем использовать матрицу 2x2, а с другой стороны, наверняка матрица 4x4 не будет слишком обременительна для проекта последнего года? - person Weather Vane; 30.12.2014
comment
@user2988392 Порт C и регистр TRISC Порт C — это 8-битный двунаправленный порт. Биты регистра TRISC определяют функцию его выводов. Подобно другим портам, логическая единица (1) в регистре TRISC настраивает соответствующий вывод порта в качестве входа. - person Weather Vane; 30.12.2014
comment
Итак, я установил TRISC на 0b00001100, если я хочу, чтобы RC0 и RC1 были выходами? Чтение: Установите RC0 на высокий уровень, RC1 на низкий. Считайте RC2. Если высокий, нажимается 1. Чтение RC3. Если высокий, нажимается 2 Установите RC0 на низкий уровень, RC1 на высокий. Считайте RC2. Если высокий, нажимается 4. Чтение RC3. Если высокий, нажимается 5 Теперь эта часть ответа (очевидно, она будет другой, так как я перевернул ее), как мне проверить, являются ли они высокими? Университет, на мой взгляд, довольно странный, они всегда просят тебя сделать то, чему нас на самом деле не учили... - person Joeliomason; 30.12.2014
comment
...даже не как изолировать немного? Чтобы прочитать бит 3: if ((portc & 0x08) != 0) printf ("High"); И это весь код, который вы получите! - person Weather Vane; 30.12.2014
comment
спасибо за вашу помощь, флюгер :) не могли бы вы указать мне какие-либо ресурсы, которые, по вашему мнению, будут полезны мне как новичку, когда дело доходит до таких вещей? - person Joeliomason; 30.12.2014
comment
@user2988392 user2988392 Я погуглил направление данных PortC, используя TRISC (я забыл) в течение нескольких секунд, как я уверен, вы могли бы это сделать. Надеюсь, вы проголосуете за помощь, которую я оказал. - person Weather Vane; 30.12.2014