Создание меню.
|
|
shaman |
Дата: Чт, 12.01.2012, 12:35 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Здравствуйте,помогите пожалуйста с построением меню,имеются кнопки Menu , Left Right (листать) , Enter , Esc (возврат) При нажатии на кнопку Меню, на ЛСД выводится 4 пункта 1.2.3.4. При нажатии в право и влево не работают,использовал программу For Next подскажите в чем ошибка или у кого имеются живые примеры чтобы разобраться. Заранее спасибо,текст программы прилагаю: DEFINE OSC 4 ;-----------------------------------------; DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 0 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 1 DEFINE LCD_BITS 4 DEFINE LCD_LINES 4 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 ;-----------------------------------------; ADCON1 = 6 TrisA = %11111111 PortA = %00000000 TrisB = %00000000 PortB = %00000000 TrisC = %00000000 PortC = %00000000 ;-----------------------------------------; Symbol Menu = PORTA.0 Symbol Enter = PORTA.1 Symbol Left = PORTA.2 Symbol Right = PORTA.3 Symbol Esc = PORTA.4 ;-----------------------------------------; Symbol Led1 = PORTC.0 Symbol Led2 = PORTC.1 Symbol Led3 = PORTC.2 Symbol Led4 = PORTC.3 Symbol Led5 = PORTC.4 Symbol Led6 = PORTC.5 Symbol Led7 = PORTC.6 Symbol Led8 = PORTC.7 Symbol Led9 = PORTD.0 Symbol Led10 = PORTD.1 Symbol Led11 = PORTD.2 Symbol Led12 = PORTD.3 Symbol Led13 = PORTD.4 Symbol Led14 = PORTD.5 Symbol Led15 = PORTD.6 Symbol Led16 = PORTD.7 ;-----------------------------------------; w var byte i var byte ;-----------------------------------------; main: Lcdout $FE,1 LCDOut $FE,$C0+7,0 LCDOUT $FE,$94-1," Hello" lcdout $FE,$40,$00,$0A,$0A,$0A,$00,$11,$0E,$00 ;-----------------------------------------; if Menu = 0 then pause 50 goto LCD endif ;-----------------------------------------; L: if (Left = 0) and (i = 0) then for i = 0 to 5 IF i = 1 THEN goto Lcdout $FE,$80,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 2 THEN goto Lcdout $FE,$C0,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 3 THEN goto Lcdout $FE,$94,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 4 THEN goto Lcdout $FE,$D4,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 5 THEN Clear next goto main ;-----------------------------------------; LCD: LCDOUT $FE,$80,"1.Led 1" LCDOUT $FE,$C0,"2.Led 2" LCDOUT $FE,$94,"3.Led 3" LCDOUT $FE,$D4,"4.Led 4" goto main end
|
|
|
|
ADMIN |
Дата: Чт, 12.01.2012, 17:51 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
В этом куске программы:
L: if (Left = 0) and (i = 0) then If есть, а где endif? Также - если i = 0, for i = 0 to 5 IF i = 1 THEN то как оно может здесь равно 1? goto Lcdout $FE,$80,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 2 THEN if...endif goto Lcdout $FE,$C0,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 3 THEN if...endif goto Lcdout $FE,$94,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 4 THEN if...endif goto Lcdout $FE,$D4,0 Lcdout $FE,$40,$00,$04,$02,$1F,$02,$04,$00,$00 IF i = 5 THEN Clear next
потом - Lcdout - это команда, а не метка в программе. Это зарезервированное слово
|
|
|
|
shaman |
Дата: Вт, 17.01.2012, 11:17 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Добрый вечер,спасибо горомное за помощьADMIN,буду разбираться дальше. Добавлено (17.01.2012, 11.17.05) --------------------------------------------- Добрый день, подскажите пожалуйста что я не так сделал, в выделенном куске я запутался. Заранее спасибо текст программы прилогаю: b0 var byte;Введём переменную b1 var byte;Введём переменную b2 var byte;Введём переменную b3 var byte;Введём переменную b4 var byte;Введём переменную ;----------------LEFT RIGHT---------------; L: if Left = 0 and b0 = 1 then pause 60 endif If b0 >= 5 Then b0 = b0 + 1 Endif If b0 = 5 Then endif goto select_lcd R: if Right = 0 and b1 = 5 then pause 60 endif if b1 <= 5 then b1 = b1 - 1 endif If b1 = 5 Then endif goto select_lcd [color=purple]select_lcd: if (b0 = 1) and (b1 = 4) then loop1 if (b0 = 2) and (b1 = 3) then loop2 if (b0 = 3) and (b1 = 2) then loop3 if (bo = 4) and (b1 = 1) then loop4 if (bo = 5) and (b1 = 5) then endif goto L[/color] loop1: LCDOUT $FE,1,"LED" lcdout $FE,$C0,"1" loop2: LCDOUT $FE,1,"LED" lcdout $FE,$C0,"2" loop3: lcdout $FE,1,"LED" lcdout $FE,$C0,"3" loop4: lcdout $FE,1,"LED" lcdout $FE,$C0,"4" end
|
|
|
|
Matrix252005 |
Дата: Вт, 17.01.2012, 11:39 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток.
shaman, Ваш код, не заработает никогда!!! У Вас в каждой строчке (почти) ошибки!!! Или это не весь код??? Например: If b1 = 5 Then endif - Если "b1 = 5", то что ?????????????? Где у Вас изменяется переменные b1 и b0???? Дальше "if (b0 = 1) and (b1 = 4) then loop1 " - даже если он сработает это строчка (в чем я сильно сомневаюсь!!!!) он перейдет на "loop1:", а как он от туда выйдет!!!
Без обид, но вначале напишите все на бумаге, в виде блок схемы, посмотрите все ли правильно, а потом переведите все в код!!!
Если Вас интересует реализация меню, поищите по форуму, тут есть готовые проекты реализации "Меню".
Если не сможете, опишите весь алгоритм, попробуем Вам помочь...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
ADMIN |
Дата: Вт, 17.01.2012, 12:44 | Сообщение # 5 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Да-да. Здесь не пошлют на три буквы
|
|
|
|
shaman |
Дата: Вт, 17.01.2012, 15:20 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
При включении появляется надпись Hello и будет гореть до тех пор пока не будет нажата кнопка Menu,нажимаем Menu высвечивается 2 пункта. 1.Контроллеры 2.Звуковой сигнал Кнопками Left-Right перемещаем укозатель в виде стрелочки в нужный пункт Menu,например выбрали 1.Контроллеры нажимаем кнопку ОК,высвечивается меню 1 пункта 1.8/14/20 2.28/40 3.18 Кнопками Left-Right перемещаем укозатель в виде стрелочки в нужный пункт,например выбрали 1.8/14/20 нажимаем кнопку ОК загорается 5 свето диодов нажимаем 2 раз выключаем,так и для 2. и 3. Если выбрали 2. Звуковой сигнал нажимаем ОК включили 2 раз выключаем Кнопкой ESC делать возврат на предедыщий пунк. Спасибо Вам за помощь,подскажите как лучше сделать,схему прилогаю:
|
|
|
|
Matrix252005 |
Дата: Вт, 17.01.2012, 15:31 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
shaman, Вам обязательно на "PicBasicPro"??? Я уже давно перешел на Протон... И если не трудно, я смотрю, Вы делали схему в протеусе, выложите ее, я попробую Вам помочь.
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
shaman |
Дата: Вт, 17.01.2012, 15:45 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Выкладываю что есть. Добавлено (17.01.2012, 15.45.51) --------------------------------------------- Matrix252005 а Вы можете скинуть книгу и исталяху на Протон я почитаю.
|
|
|
|
|
shaman |
Дата: Вт, 17.01.2012, 16:45 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Немогу скачать патч для протона
|
|
|
|
Matrix252005 |
Дата: Вт, 17.01.2012, 16:48 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
По какой ссылке?
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
shaman |
Дата: Вт, 17.01.2012, 16:58 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
http://www.picbasic.ru/load/proton_development_suite_3_5_2_7/3-1-0-233
|
|
|
|
Matrix252005 |
Дата: Вт, 17.01.2012, 17:03 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Скачивается!!!!! Выложите Ваш ящик, я скину Вам его.
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
shaman |
Дата: Вт, 17.01.2012, 17:09 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
moskvitin21@mail.ru
|
|
|
|
Matrix252005 |
Дата: Вт, 17.01.2012, 17:26 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Отправил. Добавлено (17.01.2012, 17.26.56) --------------------------------------------- shaman, я не совсем понял эту строчку: Quote (shaman) ...нажимаем кнопку ОК загорается 5 свето диодов нажимаем 2 раз выключаем... !!!
Какие именно св.диоды, и 2 раза или 2-ой раз...??? Также и для звука...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|