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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Чтение битов из слова
VITEK Дата: Чт, 30.10.2014, 23:22  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 1
Репутация: 0   ±
Замечания:   ±
На сайте с 30.10.2014

Статус: Offline

Такая проблема.Нужно из 16-ти разрядной переменной получить значение n-разряда.По идее не должно быть сложно, но как, голова пухнет.

иванов
ЯНДЕКС Дата: 30.10.2014
ivan_fd Дата: Чт, 30.10.2014, 23:51  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 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
Репутация: 17   ±
Замечания:   ±
На сайте с 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
  • Страница 1 из 1
  • 1
Поиск: