VITEK |
Дата: Чт, 30.10.2014, 23:22 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
1
Замечания:
±
На сайте с 30.10.2014
Статус:
Offline
|
Такая проблема.Нужно из 16-ти разрядной переменной получить значение n-разряда.По идее не должно быть сложно, но как, голова пухнет.
иванов
|
|
|
|
ivan_fd |
Дата: Чт, 30.10.2014, 23:51 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
test1 var word test2 var byte bn var byte
test1 = %10100111 bn = 3 test2 = (test1 >> bn) & 1 ; проверяем бит bn в переменной test1, 1 или 0, и записываем в переменную test2
|
|
|
|
terrarus |
Дата: Пт, 31.10.2014, 10:14 | Сообщение # 3 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Протон Вам в помощь.GetBit
Синтаксис:
Variable = GetBit Variable, Index
С помощью команды GetBit можно вычленить отдельный бит переменной, или бит регистра микроконтроллера.
Первый параметр Variable -это ранее определенная пользователем переменная, типа Byte, Word, или DWord в которую будет занесен результат.
Второй параметр Variable -это исследуемая переменная типа Byte, Word, или DWord из которой нужно получить требуемый бит.
Параметр Index - может быть константой, переменной, или выражением, которые указывают на бит исследуемой переменной или регистра.
Пример
Листинг программы getbit.bas
' Исследовать и отобразить на ЖКИ отдельно каждый бит переменной EX_VAR '--------------------------------------------------Общие настройки--------------------------------------------------- Device = 16F873A XTAL = 4
'------------------------------------------Настройки подключения ЖКИ--------------------------------------------- Declare LCD_TYPE ALPHA ' Тип ЖКИ - буквенно-цифровой Declare LCD_DTPIN PORTB.4 ' Порт данных ЖКИ Declare LCD_ENPIN PORTB.3 ' Цепь управления E Declare LCD_RSPIN PORTB.2 ' Цепь управления RS Declare LCD_INTERFACE 4 ' Разрядность шины данных Declare LCD_COMMANDUS 2000 ' Задержка перед посылкой команды Declare LCD_DATAUS 50 ' Задержка перед посылкой данных Declare LCD_LINES 4 ' Количество строк ЖКИ '----------------------------------------------Объявления переменных------------------------------------------------- Dim EX_VAR As Byte ' Объявить переменную EX_VAR как Byte Dim INDEX As Byte ' Объявить переменную INDEX как Byte Dim VAR1 As Byte ' Объявить переменную VAR1 как Byte '----------------------------------------Присвоение первоначальных значений--------------------------------------- EX_VAR = %10110111 ' Присвоить переменной EX_VAR двоичное значение 10110111 '---------------------------------------------------Главная программа--------------------------------------------------- AGAIN: ' Начало главного цикла Cls ' Очистка экрана ЖКИ Print At 2,1, BIN8 EX_VAR ' Вывести на дисплей значение исследуемой переменной Cursor 3,1 ' Переместить курсор в позицию - строка 3, столбец 1 For INDEX = 7 To 0 Step -1 ' Создать нисходящий цикл в 8 проходов VAR1 = GetBit EX_VAR, INDEX ' Исследовать каждый бит переменной EX_VAR Print Bin8 VAR1 ' Вывести на дисплее двоичный результат исследования DelayMS 100 ' Замедлите процесс, чтобы видеть то, что получается Next ' Закрыть нисходящий цикл GoTo AGAIN ' Повторить главный цикл
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 31.10.2014, 10:29
|
|
|
|