Toddy123 | Дата: Пятница, 15.04.2016, 21:25 | Сообщение # 1 |
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Доброй ночи уважаемые форумчане! Я еще не сильно освоил азы "баскома", устройство Автомата подачи звонка делаю уже его несколько месяцев. Чтобы было нагляднее выкладываю код который не доделан но есть важные вопросы по коду а именно по условиям в подпрограмме меню. на сколько он практичен? стоит ли такое меню использовать? помогите прошу не судите за код строго
regfile = "m16def.dat" $crystal = 12000000 $hwstack = 40 $swstack = 16 $framesize = 32 $baud = 9600 '*********************************************************************** Config Lcdpin = Pin , Rs = Porta.6 , E = Porta.4 , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 'ioeaai?iue noaia Cursor Off Cls
Config Int1 = Falling On Int1 Button Enable Interrupts Enable Int1
Config Portb.0 = Input Config Portb.1 = Input Config Portb.2 = Input Config Portb.3 = Input Config Portd.5 = Input Config Portb.4 = Input Config Portd.6 = Output '************************************************************************ Dim W As Byte Dim Z As Word Dim A(52) As Byte '************************************************************************
Dim Nazv1 As Byte Dim Sur2 As Byte Dim Nazv3 As Byte Dim Sur4 As Byte
Dim Minestr As String * 2 Dim Hourstr As String * 2 Dim Mine As Byte Dim Hour As Byte
' Z = 0
Do
If Z > 0 Then Gosub Menu End If Loop
Menu: Do Wait 1 If Z > 0 Then Locate 1 , 1 Lcd "SETUP PROGRAMM" End If Wait 2 Do
If Z = 1 Then Cls Locate 1 , 1 Lcd "M" Locate 1 , 4 Lcd ">" ; Minestr ; ":" ; Hourstr 'Ustanovka uslovii menu End If
'************************************************************ If Z = 2 Then Cls Locate 1 , 1 Lcd "H" Locate 1 , 4 Lcd ; Minestr ; ":>" ; Hourstr End If
If Z = 3 Then
'*********************************************************** Cls Locate 1 , 1 Lcd "P1" Locate 1 , 4 Lcd ">" ; A(1) ; ":" ; A(2) ; " " ; A(3) ; ":" ; A(4) End If '*********************************************************** If Z = 4 Then Cls Locate 1 , 1 Lcd "P1" Locate 1 , 4 Lcd A(1) ; ":" ; ">" ; A(2) ; " " ; A(3) ; ":" ; A(4) End If '********************************************************** If Z = 5 Then '*********************************************************** Cls Locate 1 , 1 Lcd "P1" Locate 1 , 4 Lcd A(1) ; ":" ; A(2) ; " " ; ">" ; A(3) ; ":" ; A(4) End If '*********************************************************** If Z = 6 Then Cls Locate 1 , 1 Lcd "P1" Locate 1 , 4 Lcd A(1) ; ":" ; A(2) ; "" ; A(3) ; ":" ; ">" ; A(4) End If '*********************************************************** If Z = 7 Then Cls Locate 1 , 1 Lcd "P2" Locate 1 , 4 Lcd ">" ; A(5) ; ":" ; A(6) ; " " ; A(7) ; ":" ; A(8) End If '*********************************************************** If Z = 8 Then Cls Locate 1 , 1 Lcd "P2" Locate 1 , 4 Lcd A(5) ; ":" ; ">" ; A(6) ; "" ; A(7) ; ":" ; A(8) End If
If Z = 9 Then Cls Locate 1 , 1 Lcd "P2" Locate 1 , 4 Lcd A(5) ; ":" ; A(6) ; " >" ; A(7) ; ":" ; A(8) End If '*********************************************************** If Z = 10 Then Cls Locate 1 , 1 Lcd "P2" Locate 1 , 4 Lcd A(5) ; ":" ; A(6) ; "" ; A(7) ; ":" ; ">" ; A(8) End If ' * * * * * * * * * * * * * * * * * * * * * * Ia?aei Aoi?ie I?ia?aiiu * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
If Z = 11 Then
'*********************************************************** Cls Locate 1 , 1 Lcd "P3" Locate 1 , 4 Lcd ">" ; A(9) ; ":" ; A(10) ; " " ; A(11) ; ":" ; A(12) End If '*********************************************************** If Z = 12 Then Cls Locate 1 , 1 Lcd "P3" Locate 1 , 4 Lcd A(9) ; ":>" ; A(10) ; " " ; A(11) ; ":" ; A(12) End If '********************************************************** If Z = 13 Then '*********************************************************** Cls Locate 1 , 1 Lcd "P3" Locate 1 , 4 Lcd A(9) ; ":" ; A(10) ; "> " ; A(11) ; ":" ; A(12) End If '*********************************************************** If Z = 14 Then Cls Locate 1 , 1 Lcd "P3" Locate 1 , 4 Lcd A(9) ; ":" ; A(10) ; "" ; A(11) ; ":" ; ">" ; A(12) End If '*********************************************************** If Z = 15 Then Cls Locate 1 , 1 Lcd "P4" Locate 1 , 4 Lcd ">" ; A(13) ; ":" ; A(14) ; " " ; A(15) ; ":" ; A(16) End If '*********************************************************** If Z = 16 Then Cls Locate 1 , 1 Lcd "P4" Locate 1 , 4 Lcd A(13) ; ":" ; ">" ; A(14) ; "" ; A(15) ; ":" ; A(16) End If
If Z = 17 Then Cls Locate 1 , 1 Lcd "P4" Locate 1 , 4 Lcd A(13) ; ":" ; A(14) ; " >" ; A(15) ; ":" ; A(16) End If
If Z = 18 Then Cls Locate 1 , 1 Lcd "P4" Locate 1 , 4 Lcd A(13) ; ":" ; A(14) ; "" ; A(15) ; ":" ; ">" ; A(16) End If
'***********************************************************
If Z = 19 Then Cls Locate 1 , 1 Lcd "P5" Locate 1 , 4 Lcd ">" ; A(17) ; ":" ; A(18) ; " " ; A(19) ; ":" ; A(20) End If '*********************************************************** If Z = 20 Then Cls Locate 1 , 1 Lcd "P5" Locate 1 , 4 Lcd A(17) ; ":" ; ">" ; A(18) ; "" ; A(19) ; ":" ; A(20) End If
If Z = 21 Then Cls Locate 1 , 1 Lcd "P5" Locate 1 , 4 Lcd A(17) ; ":" ; A(18) ; " >" ; A(19) ; ":" ; A(20) End If '*********************************************************** If Z = 22 Then Cls Locate 1 , 1 Lcd "P5" Locate 1 , 4 Lcd A(17) ; ":" ; A(18) ; "" ; A(19) ; ":" ; ">" ; A(20) End If
'***********************************************************
If Z = 23 Then Cls Locate 1 , 1 Lcd "P6" Locate 1 , 4 Lcd ">" ; A(21) ; ":" ; A(22) ; " " ; A(23) ; ":" ; A(24) End If '*********************************************************** If Z = 24 Then Cls Locate 1 , 1 Lcd "P6" Locate 1 , 4 Lcd A(21) ; ":" ; ">" ; A(22) ; "" ; A(23) ; ":" ; A(24) End If
If Z = 25 Then Cls Locate 1 , 1 Lcd "P6" Locate 1 , 4 Lcd A(21) ; ":" ; A(22) ; " >" ; A(23) ; ":" ; A(24) End If '*********************************************************** If Z = 26 Then Cls Locate 1 , 1 Lcd "P6" Locate 1 , 4 Lcd A(21) ; ":" ; A(22) ; "" ; A(23) ; ":" ; ">" ; A(24) End If '***********************************************************
If Z = 27 Then Cls Locate 1 , 1 Lcd "P7" Locate 1 , 4 Lcd ">" ; A(25) ; ":" ; A(26) ; " " ; A(27) ; ":" ; A(28) End If '*********************************************************** If Z = 28then Cls Locate 1 , 1 Lcd "P7" Locate 1 , 4 Lcd A(25) ; ":" ; ">" ; A(26) ; "" ; A(27) ; ":" ; A(28) End If
If Z = 29 Then Cls Locate 1 , 1 Lcd "P7" Locate 1 , 4 Lcd A(25) ; ":" ; A(26) ; " >" ; A(27) ; ":" ; A(28) End If '*********************************************************** If Z = 30 Then Cls Locate 1 , 1 Lcd "P7" Locate 1 , 4 Lcd A(25) ; ":" ; A(26) ; "" ; A(27) ; ":" ; ">" ; A(28) End If
'*************************************************************
If Z = 31 Then Cls Locate 1 , 1 Lcd "P8" Locate 1 , 4 Lcd ">" ; A(29) ; ":" ; A(30) ; " " ; A(31) ; ":" ; A(32) End If '*********************************************************** If Z = 32 Then Cls Locate 1 , 1 Lcd "P8" Locate 1 , 4 Lcd A(29) ; ":" ; ">" ; A(30) ; "" ; A(31) ; ":" ; A(32) End If
If Z = 33 Then Cls Locate 1 , 1 Lcd "P8" Locate 1 , 4 Lcd A(29) ; ":" ; A(30) ; " >" ; A(31) ; ":" ; A(32) End If '*********************************************************** If Z = 34 Then Cls Locate 1 , 1 Lcd "P8" Locate 1 , 4 Lcd A(29) ; ":" ; A(30) ; "" ; A(31) ; ":" ; ">" ; A(32) End If
If Z = 35 Then Cls Locate 1 , 1 Lcd "P9" Locate 1 , 4 Lcd ">" ; A(33) ; ":" ; A(34) ; " " ; A(35) ; ":" ; A(36) End If '*********************************************************** If Z = 36 Then Cls Locate 1 , 1 Lcd "P9" Locate 1 , 4 Lcd A(33) ; ":" ; ">" ; A(34) ; "" ; A(35) ; ":" ; A(36) End If
If Z = 37 Then Cls Locate 1 , 1 Lcd "P9" Locate 1 , 4 Lcd A(33) ; ":" ; A(34) ; " >" ; A(35) ; ":" ; A(36) End If '*********************************************************** If Z = 38 Then Cls Locate 1 , 1 Lcd "P9" Locate 1 , 4 Lcd A(33) ; ":" ; A(34) ; "" ; A(35) ; ":" ; ">" ; A(36) End If
If Z = 39 Then Cls Locate 1 , 1 Lcd "P10" Locate 1 , 4 Lcd ">" ; A(37) ; ":" ; A(38) ; " " ; A(39) ; ":" ; A(40) End If '*********************************************************** If Z = 40 Then Cls Locate 1 , 1 Lcd "P10" Locate 1 , 4 Lcd A(37) ; ":" ; ">" ; A(38) ; "" ; A(39) ; ":" ; A(40) End If
If Z = 41 Then Cls Locate 1 , 1 Lcd "P10" Locate 1 , 4 Lcd A(37) ; ":" ; A(38) ; " >" ; A(39) ; ":" ; A(40) End If '*********************************************************** If Z = 42 Then Cls Locate 1 , 1 Lcd "P10" Locate 1 , 4 Lcd A(37) ; ":" ; A(38) ; "" ; A(39) ; ":" ; ">" ; A(40) End If
If Z = 43 Then Cls Locate 1 , 1 Lcd "P11" Locate 1 , 4 Lcd ">" ; A(41) ; ":" ; A(42) ; " " ; A(43) ; ":" ; A(44) End If '*********************************************************** If Z = 44 Then Cls Locate 1 , 1 Lcd "P11" Locate 1 , 4 Lcd A(41) ; ":" ; ">" ; A(42) ; "" ; A(43) ; ":" ; A(44) End If
If Z = 45 Then Cls Locate 1 , 1 Lcd "P11" Locate 1 , 4 Lcd A(41) ; ":" ; A(42) ; " >" ; A(43) ; ":" ; A(44) End If '*********************************************************** If Z = 46 Then Cls Locate 1 , 1 Lcd "P11" Locate 1 , 4 Lcd A(41) ; ":" ; A(42) ; "" ; A(43) ; ":" ; ">" ; A(44) End If
If Z = 47 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd ">" ; A(45) ; ":" ; A(46) ; " " ; A(47) ; ":" ; A(48) End If '*********************************************************** If Z = 48 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd A(45) ; ":" ; ">" ; A(46) ; "" ; A(47) ; ":" ; A(48) End If
If Z = 49 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd A(45) ; ":" ; A(46) ; " >" ; A(47) ; ":" ; A(48) End If '*********************************************************** If Z = 50 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd A(45) ; ":" ; A(46) ; "" ; A(47) ; ":" ; ">" ; A(48) End If
If Z = 51 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd ">" ; A(49) ; ":" ; A(50) ; " " ; A(51) ; ":" ; A(52) End If '*********************************************************** If Z = 52 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd A(49) ; ":" ; ">" ; A(50) ; "" ; A(51) ; ":" ; A(52) End If
If Z = 53 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd A(49) ; ":" ; A(50) ; " >" ; A(51) ; ":" ; A(52) End If '*********************************************************** If Z = 54 Then Cls Locate 1 , 1 Lcd "P12" Locate 1 , 4 Lcd A(49) ; ":" ; A(50) ; "" ; A(51) ; ":" ; ">" ; A(52) End If
If Z = 55 Then Cls Locate 1 , 1 Lcd "P13" Locate 1 , 4 Lcd ">" ; A(49) ; ":" ; A(50) ; " " ; A(51) ; ":" ; A(52) End If '*********************************************************** Waitms 100 Loop Return Loop End
Z = 0
Ok: If Z = 55 Then End If Incr Z Return
Esc: Decr Z If Z = 0 Then Z = 1 End If Waitms 30 'i?eaaiea ooeoaiey a?aaacaa Gifr = 128 'na?in oeaaa i?a?uaaiey Return
Up: Incr Hour Incr Mine Select Case Z 'oaaee?eaaai cia?aiea iaiie ec ia?aiaiiuo
Case 1 : Decr Hour Case 2 : Decr Mine Case 3 : Decr A(1) Case 4 : Decr A(2) Case 5 : Decr Nazv3 Case 6 : Decr Sur4
End Select
'If Dat > 31 Or Dat = 0 Then Dat = 1 'If Month = 0 Or Month > 12 Then Month = 1 'If Year > 99 Then Year = 0 If Hour > 23 Then Hour = 0 If Mine > 59 Then Mine = 0
Minestr = Str(mine) Minestr = Format(minestr , "00") Hourstr = Str(hour) Hourstr = Format(hourstr , "00") 'Daystr = Str(day) 'Daystr = Format(daystr , "00") 'Datstr = Str(dat) 'Datstr = Format(datstr , "00") 'Monthstr = Str(month) 'Monthstr = Format(monthstr , "00") 'Yearstr = Str(year) 'Yearstr = Format(yearstr , "00")
Return '4: Down: Select Case Z
Case 11 : Incr Hour Case 12 : Incr Mine 'Case 13 : Incr Nazv1 'Case 14 : Incr Sur2 'Case 15 : Incr Nazv3 'Case 16 : Incr Sur4
End Select
'If Dat > 31 Or Dat = 0 Then Dat = 1 'If Month = 0 Or Month > 12 Then Month = 1 'If Year > 99 Then Year = 0 If Hour > 23 Then Hour = 0 If Mine > 59 Then Mine = 0
Minestr = Str(mine) Minestr = Format(minestr , "00") Hourstr = Str(hour) Hourstr = Format(hourstr , "00") 'Daystr = Str(day) 'Daystr = Format(daystr , "00") 'Datstr = Str(dat) 'Datstr = Format(datstr , "00") 'Monthstr = Str(month) 'Monthstr = Format(monthstr , "00") 'Yearstr = Str(year) 'Yearstr = Format(yearstr , "00")
Return
Button:
If Pinb.0 = 0 Then 'Waitms 10 Gosub Ok End If
If Pind.5 = 0 Then 'Waitms 10 Gosub Esc End If
If Pinb.2 = 0 Then 'Waitms 10 Gosub Up End If
If Pinb.3 = 0 Then 'Waitms 10 Gosub Down End If 'Start Timer1 Waitms 500 Gifr = 128 Return End
|
|
| |
Toddy123 | Дата: Суббота, 16.04.2016, 16:22 | Сообщение # 3 |
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Здравствуйте Exersizze! да код рабочий, я делал ее по вашим примерам из "логгера, барометра " . Меня смущает просто такое количество условий в меню но как ни странно код работает! когда начал программировать контроллер то вышло что объем ее составил 10 Кб ! Я просто был не в восторге, чуть позже пришла идея может быть нужно совсем по другому сделать использовав несколько условий, а далее просто интрементировать флаг Z, и адрес вводящих значений. Но я не смог этого сделать опыта нету но в теорий я чувствую что я прав, и можно сделать. Ну если вы говорите что все нормально, думаю я продолжу ее делать. И еще вопрос на счет кнопок: тут я сделал вариант на диодиках и прерываний это нормально? если нет, то подскажите как мне улучшить ? спасибо!
|
|
| |