| 
| 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, и  адрес вводящих значений. Но я не смог этого сделать опыта нету но в теорий я чувствую что я прав, и можно сделать. Ну если вы говорите что все нормально, думаю я продолжу ее делать. И еще вопрос на счет кнопок: тут я сделал вариант  на диодиках и прерываний это нормально? если нет, то подскажите как мне улучшить ?  спасибо! 
 
 |  
 |  |  |  |