Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Команда DIG
Команда DIG
Флюс Дата: Вт, 01.05.2012, 17:11  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2012

Статус: Offline

Помогите начинающему пжалста?
Образовался вопрос:
команда dig может извлечь 4 порядковых номера в числе, а как поступить если у меня число из 8 цифр или 10?
то есть 0123 она может обработать, а 01234567 уже ни как... cry
Если можно, то с простым примером, чтобы понять принцип surprised
ЯНДЕКС Дата: 01.05.2012
ADMIN Дата: Вт, 01.05.2012, 18:34  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Online

Если число из 8 цифр, то имеет смысл разбить его на два числа по 4 цифры. Например, число 12345678 можно разбить на 1234 и 5678.
Флюс Дата: Вт, 01.05.2012, 18:41  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2012

Статус: Offline

как?
ADMIN Дата: Вт, 01.05.2012, 18:56  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Online

Пока не знаю, нужно подумать. А какая конечная задача? Может, есть другое решение?
Флюс Дата: Вт, 01.05.2012, 19:49  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2012

Статус: Offline

Задача нарисовать на семисегментном индикаторе 12345678
rvstar Дата: Вт, 01.05.2012, 21:07  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 69
Репутация: 7   ±
Замечания:   ±
На сайте с 09.10.2007

Статус: Offline

a = 123

b = a DIG 0 т.е. 0 разряд от 123, т.е. b = 3

b = a DIG 1 - b = 2

b = a DIG 2 - b = 1

RE: Задача нарисовать на семисегментном индикаторе 12345678

Думаю, надо использовать конструкцию SELECT....CASE (см. мануал)

Сообщение отредактировал rvstar - Вт, 01.05.2012, 21:11
Флюс Дата: Ср, 02.05.2012, 00:25  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2012

Статус: Offline

Quote (rvstar)
a = 123 b = a DIG 0 т.е. 0 разряд от 123, т.е. b = 3 b = a DIG 1 - b = 2 b = a DIG 2 - b = 1 RE: Задача нарисовать на семисегментном индикаторе 12345678 Думаю, надо использовать конструкцию SELECT....CASE (см. мануал)

И что нам это дает?
Как использовать DIG и почитать мануал я и так додумался tongue
Вопрос что делать если в вашем примере, например к примеру, а=12345678?и нужно не четыре цыфири а все восемь? cool
и как вы предлагаете использовать CASE? Я с таким же успехом могу посоветовать использовать DELAYMS к примеру
Неуж-то ни кто не отображал на семисегментниках цыфры?
Думаю тут есть решение, только где тут сцобако порылась? cool
passer_by Дата: Ср, 02.05.2012, 06:39  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 23.10.2011

Статус: Offline

Quote (Флюс)
Думаю тут есть решение, только где тут сцобако порылась?


icecream Э... а если, ну так, скуки ради, кнопочку "поиск" нажать по слову "индикация" icecream
rvstar Дата: Ср, 02.05.2012, 10:17  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 69
Репутация: 7   ±
Замечания:   ±
На сайте с 09.10.2007

Статус: Offline

Схему девайса нарисуйте, помогу. В Splan`е или в любом графическом формате
Сообщение отредактировал rvstar - Ср, 02.05.2012, 10:17
ivan_fd Дата: Ср, 02.05.2012, 17:48  |                                                                                                                Сообщение # 10
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Например вот так:

Code
Dim dwrd As Dword
  Dim dig1 As Byte
  Dim dig2 As Byte
  Dim dig3 As Byte
  Dim dig4 As Byte
  Dim dig5 As Byte
  Dim dig6 As Byte
  Dim dig7 As Byte
  Dim dig8 As Byte

   
   
   
  begin:
   
  dwrd = 12345678
   
  dig1 = (dwrd / 10000000) // 10
  dig2 = (dwrd / 1000000) // 10
  dig3 = (dwrd / 100000) // 10
  dig4 = (dwrd / 10000) // 10
  dig5 = (dwrd / 1000) // 10
  dig6 = (dwrd / 100) // 10
  dig7 = (dwrd / 10) // 10
  dig8 = (dwrd / 1) // 10
   

  GoTo begin
Флюс Дата: Ср, 02.05.2012, 21:39  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2012

Статус: Offline

Уважаемый ivan_fd!
Можно с комментами плз? почему так заработает? ну не умею я профессионально программировать cry объясните тупому?
Quote (ivan_fd)
Dim dig8 As Byte            begin:      dwrd = 12345678      dig1 = (dwrd / 10000000) // 10   dig2 = (dwrd / 1000000) // 10   dig3 = (dwrd / 100000) // 10   dig4 = (dwrd / 10000) // 10   dig5 = (dwrd / 1000) // 10   dig6 = (dwrd / 100) // 10   dig7 = (dwrd / 10) // 10   dig8 = (dwrd / 1) // 10      GoTo begin


А то тут только в гугл отсылают да в поиск, а меня в гугле забанили уже.. wacko
ЯНДЕКС Дата: 02.05.2012
ivan_fd Дата: Ср, 02.05.2012, 22:14  |                                                                                                                Сообщение # 12
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

dwrd = 12345678 - ваше число, поскольку оно занимает 6 байт, то берем тип переменной DWORD.

dig1 = (dwrd / 10000000) // 10 - первая цифра слева, у нас 1. Делаем целочисленное деление на 10 000 000, потому, что у нас есть 7 знаков после той цифры, какую нам нужно узнать. И дальше, остаток от деления на 10.
Флюс Дата: Ср, 02.05.2012, 23:59  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2012

Статус: Offline

понятно. Спасибо biggrin
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Команда DIG
  • Страница 1 из 1
  • 1
Поиск: