Сам написал программу! Всё же приятно самому сделать что-то работающее. Получилась немного кривая программа.
Писал программу пользуясь другими программами, т.е. пришлось перерыть много "литературы", чтобы найти то что нужно.
Что получилось: хотел написать программу типа кодового замка, получилось, что-то вроде: жмём три кнопки 1,6,8 по очереди, загорается один, два и три светодиода (нажали нужные кнопки).
Причём в обратном направлении кнопки 8,6,1 также жмутся и светодиоды загораются, реализовать код не получилось.
Что хочу получить в новой версии программы, но не знаю как это реализовать:чтобы светодиоды загорались только при нажатии на кнопки 1,6,8. И чтобы когда загорелся третий светодиод, загорались все четыре светодиода и продолжали гореть, а при нажатии на любую кнопку они прекращали гореть.
Выслушаю любые советы и подсказки.
sfr P0=0x80; //ну тут стандартно, решил расписать каждую "ножку" отдельно, чтобы было легче писать программу и чтобы не запутаться
sfr P1=0x90;
sbit P0_0=0x80; //1 светодиод
sbit P0_1=0x81; //2 светодиод
sbit P0_2=0x82; //3 светодиод
sbit P0_3=0x83; //4 светодиод
sbit P0_4=0x84; //1 столбец клавиатуры матричного типа
sbit P0_5=0x85; //2 столбец
sbit P0_6=0x86; //3 столбец
sbit P1_0=0x90; //1 строка
sbit P1_1=0x91; //2 строка
sbit P1_2=0x92; //3 строка
sbit P1_3=0x93; //4 строка
int k;
char a[3]; //переменная "а" будет содержать 3 символа? или состоит из матрицы с 3 столбцами?
main()
{
char b[3]={'1','6','8'}; //это вроде как значение кода, но он не работает или это что-то другое? переменная, то для чего?
inception: P0=0; P1=0;//inception я придумал название, это же переменная?
while(k!=3) //почему "k" не равно 3??? когда будет больше нажатий то обнулиться?
{
P0_4=0; P0_5=1; P0_6=1; //ну тут на 1 столбец 0 подаём, что означает что на этом столбце будет нажата какая-то клавиша
if (P1_0==0) {k++; while(P1_0==0) a[k]='1'; //указали строку, нажата 1 клавиша, добавили к "k" единичку, далее пока клавиша нажата, то что? переменная "а" равна 1 кодовому символу?
P0_3=1; P0_2=0; P0_1=0; P0_0=0;} //включаем светодиод подавая 1 (специфичная схема

)
P0_4=1; P0_5=1; P0_6=0;
if (P1_1==0) {k++; while(P1_1==0) a[k]='6';
P0_3=0; P0_2=1; P0_1=0; P0_0=0;}
P0_4=1; P0_5=0; P0_6=1;
if (P1_2==0) {k++; while(P1_1==0) a[k]='8';
P0_3=0; P0_2=0; P0_1=1; P0_0=0;}
}
//тут охота чтобы после третьей нажатой клавиши загорались все 4 светодиода и продолжали гореть пока не нажму на любую другую клавишу
goto inception; //идём к "началу" и повторяем цикл?
}
PS: не важно в каком порядке буду код вводить, подскажите как включить все 4 светодиода и выключить их при нажатии на любую клавишу.
Спасибо!
Сообщение отредактировал Djumper - Dec 16 2010, 15:06