ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

Программа для мыши

Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
3 55
0 0
 
17.04.2012 09:37 #1
К PIC16f877a подключил(в протеусе, но это неважно) матричную панель 8х8 кнопок к порте c и d. c попорядку посылает сигналы d принимает, порт а выводит. Написал програмку, чтобы порт а показывал куда я виду по понельке, но чивото непоказывает...
Ошибка точно в программе. Вот программа:
Код:
#include <pic.h> 
__CONFIG(0x03F72);

int a=0,aa=0;
void main(void)
{
	T0IE=0;
	GIE=0;	
	TRISC=0;
    TRISA=0;
	TRISD=0b11111111;
    TRISB=0;
    PORTB=0;
    PORTA=0;
	while(1)
	{

while(1) //установка начальной точки нажатия
{
a=0;
PORTC=0b00000001;
if(RD0) { a=1; }
if(RD1) { a=2; }
if(RD2) { a=3; }
if(RD3) { a=4; }
if(RD4) { a=5; }
if(RD5) { a=6; }
if(RD6) { a=7; }
if(RD7) { a=8; }
if(a!=0) break;
PORTC=0b00000010;
if(RD0) { a=9; }
if(RD1) { a=10; }
if(RD2) { a=11; }
if(RD3) { a=12; }
if(RD4) { a=13; }
if(RD5) { a=14; }
if(RD6) { a=15; }
if(RD7) { a=16; }
if(a!=0) break;
PORTC=0b00000100;
if(RD0) { a=17; }
if(RD1) { a=18; }
if(RD2) { a=19; }
if(RD3) { a=20; }
if(RD4) { a=21; }
if(RD5) { a=22; }
if(RD6) { a=23; }
if(RD7) { a=24; }
if(a!=0) break;
PORTC=0b00001000;
if(RD0) { a=25; }
if(RD1) { a=26; }
if(RD2) { a=27; }
if(RD3) { a=28; }
if(RD4) { a=29; }
if(RD5) { a=30; }
if(RD6) { a=31; }
if(RD7) { a=32; }
if(a!=0) break;
PORTC=0b00010000;
if(RD0) { a=33; }
if(RD1) { a=34; }
if(RD2) { a=35; }
if(RD3) { a=36; }
if(RD4) { a=37; }
if(RD5) { a=38; }
if(RD6) { a=39; }
if(RD7) { a=40; }
if(a!=0) break;
PORTC=0b00100000;
if(RD0) { a=41; }
if(RD1) { a=42; }
if(RD2) { a=43; }
if(RD3) { a=44; }
if(RD4) { a=45; }
if(RD5) { a=46; }
if(RD6) { a=47; }
if(RD7) { a=48; }
if(a!=0) break;
PORTC=0b01000000;
if(RD0) { a=49; }
if(RD1) { a=50; }
if(RD2) { a=51; }
if(RD3) { a=52; }
if(RD4) { a=53; }
if(RD5) { a=54; }
if(RD6) { a=55; }
if(RD7) { a=56; }
if(a!=0) break;
PORTC=0b10000000;		
if(RD0) { a=57; }
if(RD1) { a=58; }
if(RD2) { a=59; }
if(RD3) { a=60; }
if(RD4) { a=61; }
if(RD5) { a=62; }
if(RD6) { a=63; }
if(RD7) { a=64; }
if(a!=0) break;
}
do                //установка второй точки,
{                 
aa=0;
PORTC=0b00000001;
if(RD0) { aa=1; }
if(RD1) { aa=2; }
if(RD2) { aa=3; }
if(RD3) { aa=4; }
if(RD4) { aa=5; }
if(RD5) { aa=6; }
if(RD6) { aa=7; }
if(RD7) { aa=8; }

PORTC=0b00000010;
if(RD0) { aa=9; }
if(RD1) { aa=10; }
if(RD2) { aa=11; }
if(RD3) { aa=12; }
if(RD4) { aa=13; }
if(RD5) { aa=14; }
if(RD6) { aa=15; }
if(RD7) { aa=16; }

PORTC=0b00000100;
if(RD0) { aa=17; }
if(RD1) { aa=18; }
if(RD2) { aa=19; }
if(RD3) { aa=20; }
if(RD4) { aa=21; }
if(RD5) { aa=22; }
if(RD6) { aa=23; }
if(RD7) { aa=24; }

PORTC=0b00001000;
if(RD0) { aa=25; }
if(RD1) { aa=26; }
if(RD2) { aa=27; }
if(RD3) { aa=28; }
if(RD4) { aa=29; }
if(RD5) { aa=30; }
if(RD6) { aa=31; }
if(RD7) { aa=32; }

PORTC=0b00010000;
if(RD0) { aa=33; }
if(RD1) { aa=34; }
if(RD2) { aa=35; }
if(RD3) { aa=36; }
if(RD4) { aa=37; }
if(RD5) { aa=38; }
if(RD6) { aa=39; }
if(RD7) { aa=40; }

PORTC=0b00100000;
if(RD0) { aa=41; }
if(RD1) { aa=42; }
if(RD2) { aa=43; }
if(RD3) { aa=44; }
if(RD4) { aa=45; }
if(RD5) { aa=46; }
if(RD6) { aa=47; }
if(RD7) { aa=48; }

PORTC=0b01000000;
if(RD0) { aa=49; }
if(RD1) { aa=50; }
if(RD2) { aa=51; }
if(RD3) { aa=52; }
if(RD4) { aa=53; }
if(RD5) { aa=54; }
if(RD6) { aa=55; }
if(RD7) { aa=56; }

PORTC=0b10000000;		
if(RD0) { aa=57; }
if(RD1) { aa=58; }
if(RD2) { aa=59; }
if(RD3) { aa=60; }
if(RD4) { aa=61; }
if(RD5) { aa=62; }
if(RD6) { aa=63; }
if(RD7) { aa=64; }

}
while( a==aa || aa==0 ); //проверка не является ли вторая точка первой.
if(a<aa) { if(aa-8==a) { PORTA=1; } else{ PORTA=0b000010;} } //обработка инф.
else     { if(a-8==aa) { PORTA=0b001000;} else{ PORTA=0b0000100;} }

	}	
}
Помогите.
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей.
Новичок
 
Регистрация: 17.08.2011
Сообщений: 30
Репутация: 30
20 3
0 1
 
19.04.2012 18:21 #2
какую ошибку выдаёт что не работает? Или просто тупо не работает? Схема точно правильная? Отдельные куски кода работают?
Оценка
Новичок
 
Регистрация: 08.06.2011
Сообщений: 3
Репутация: 10
 
19.04.2012 19:31 #3
Схемку включения контроллера не мешало-бы. А по сути попробуй это делать на контрах Atmel. В AVR Studio есть отличный эмулятор позволяющий протестить программу на предмет ошибок.
Хм, а что за панель 8х8? Как её звать то? А то кажется что ты пытаешся построить комп на транзисторах
Последний раз редактировалось Alexs-560; 19.04.2012 в 19:40.
Оценка
Знаток
 
Аватар для dimmich
 
Регистрация: 12.11.2010
Адрес: Владимир
Сообщений: 239
Репутация: 108
98 79
1 0
 
20.04.2012 10:18 #4
Язык Си не знаю. Я на ассемблере лабаю. Но может что умное скажу. Если глупость - сильно не бейте )))

Во-первых, вижу установку портов A и B в двух соседних строчках. Стараюсь избегать этого. На ассемблере вставляю штуки три "nop" в таких случаях. Это из-за особенности ПИКов по записи значений в порты, оно производится в три этапа: Чтение - Модификация - Запись, и на эти этапы процу нужно время, например в виде пустых команд "nop". Да, возможно в данном случае это и не требуется, так как порты разные (A и B), но лучше перебздеть чем недобздеть ))

А где настройка переферии? И еще я не вижу где в этой программе настройка АЦП например. Они на порту A задействованы могут быть. И значит порт A в качестве порта ввода-вывода цифровых сигналов использовать не сможете. Вобщем для начала в проге единоразово надо пройтись по установке регистров периферии.
Оценка
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
3 55
0 0
 
20.04.2012 10:39 #5
Панель, (если Вы знакомы с протеусом) это сенсорная панель от шахмат, немного доработанная. Называется CHEES-KEYPAD.
В архиве программа , файл протеуса и документ с фотографией схемы.
Вы не поверите, я открыл чтобы вспомнить какие глюки и обноружил что все работает, хочу доработать программу чтобы распозновалось движение по диагонали. Я думаю получится.
Я же помню что несколько дней назад я двигал хоть куда, а эта схема показывала вверх, а сейчас работает
Оценка
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 23:01.
Обратная связь РадиоЛоцман Вверх