Главная страница
Навигация по странице:

  • ===================================== Справочник по программированию «Bascom-8051» == I2C: I2START, I2CSTOP, I2CRBYTE, I2CWBYTE Действие

  • ===================================== Справочник по программированию «Bascom-8051» == IDLE Действие

  • Синтаксис : IDLEПример

  • IF, ELSE , ELSEIF, END IF Действие

  • Пример 2: Dim X As Integer ‘новая возможность проверки – сравнение со значением символа If X = "A" Then when X = 65 the test will pass Пример 3

  • ===================================== Справочник по программированию «Bascom-8051» == INP(), OUT Действие

  • INSTR () Действие

  • ===================================== Справочник по программированию «Bascom-8051» == INPUT, INPUTHEX, INPUTBIN Действие

  • ===================================== Справочник по программированию «Bascom-8051» == INKEY, WAITKEY Действие

  • Синтаксис : var = INKEY var = WAITKEY var – переменная типа Byte, Integer, Word, Long или String. Если символ не введен, возвращается нулевое значениеПример

  • LCASE(), UCASE() Действие

  • Синтаксис : dest = LCASE(source) и dest = UCASE(source) dest – строка-приемник. Source – строка-источник. Пример

  • LCD, LCDHEX Действие

  • ===================================== Справочник по программированию «Bascom-8051» == LCD: CURSOR, DISPLAY, HOME, LOCATE, SHIFTLCD, SHIFTCURSOR

  • ===================================== Справочник по программированию «Bascom-8051» == LEFT(), MID(), RIGHT() Действие

  • LEN() Действие

  • Синтаксис : Var = LEN( string ) Var – цифровая переменная, принимающая значение длины строки. String – строка, длина которой вычисляется.Пример

  • LOAD TIMER Действие: Записывает значение в таймер, работающий в режиме самозагрузки (записывает в регистры, определяющие частоту переполнения).Синтаксис

  • Справочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001). Справочник по программированию bascom8051 Краснодар 2001


    Скачать 6.61 Mb.
    НазваниеСправочник по программированию bascom8051 Краснодар 2001
    АнкорСправочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001).pdf
    Дата26.04.2017
    Размер6.61 Mb.
    Формат файлаpdf
    Имя файлаСправочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001).pdf
    ТипСправочник
    #5699
    КатегорияПромышленность. Энергетика
    страница6 из 25
    1   2   3   4   5   6   7   8   9   ...   25
    ===================================== Справочник по программированию «Bascom-8051» ==
    I2C: I2CRECEIVE, I2CSEND
    Действие:
    I2CRECEIVE - принять данные из устройства I2C.
    I2CSEND - послать данные в устройство I2C.
    Это готовые процедуры, больше пригодные для работы с простыми устройствами, адресуемыми одним байтом. Для более сложных устройств протокол обмена необходимо формировать с помощью операторов: I2CSTART, I2CSTOP, I2CRBYTE, I2CWBYTE.
    Синтаксис
    :
    I2CRECEIVE slave, var
    I2CRECEIVE slave, var ,b2W, b2R
    2CSEND slave, var
    I2CSEND slave, var , bytes
    Slave - адрес I2C записанный в переменой типа byte, Word/Integer или в виде константы.
    Var - переменная, куда будут помещены считанные данные из устройства I2C. b2W - число записываемых байт. Не задавать очень много! b2R - число считываемых байт. Также не задавать очень много!
    Bytes - число байт для передачи.
    Пример:
    x = 0 ‘reset variable slave = &H40 ‘адрес расширителя PCF8574
    I2CRECEIVE slave, x ‘считали его порт
    PRINT x ‘посмотрели
    ‘------------
    Dim buf(10) as String ‘10-местный буфер buf(1) = 1 : buf(2) = 2 ‘2 ячейки иниц.
    I2CRECEIVE slave , buf() , 2 , 1 ‘запишем из и счит. Одну
    Print buf(1) ‘посмотрим, что считали
    ‘------------ x = 5
    I2CSEND slave , x ‘запишем 5
    ‘------------
    Dim ax(10) As Byte
    For a = 1 to 10 ax(a) = a ‘заполним пространство от 1 до 10
    Next
    Bytes = 10 ‘? - резерв. переменная BASCOM
    I2CSEND slave , ax() , bytes ‘запишем 10 байт
    =============================================================================
    4-19

    ===================================== Справочник по программированию «Bascom-8051» ==
    I2C: I2START, I2CSTOP, I2CRBYTE, I2CWBYTE
    Действие:
    I2CSTART - генерировать условия старта.
    I2CSTOP - генерировать стоп-условия для окончания сессии обмена.
    I2CRBYTE - принять один байт из I2C-устройства.
    I2CWBYTE – послать байт в I2C-устройство.
    Синтаксис
    :
    I2CSTART
    I2CSTOP
    I2CRBYTE var, 8/9
    I2CWBYTE val
    Var – переменная-приемник данных I2C-устройства. 8/9 - опция типа считывания. 8 - (ACK), когда считывается не последний байт, т.е. считывание еще будет продолжаться. 9 - (NACK), если это последний байт считываемой последовательности. Val - переменная-источник данных или константа. Функции записи и считывания работают через аккумулятор, поэтому для экономии переменных его можно использовать как источник и приемник данных.
    Пример:
    Dim Addressw As Const 160 ‘адрес микросхем типа 24Cxx
    Dim Wadr As Word ‘адрес считываемой переменной
    Dim Fld As Single ‘приемник данных
    ‘п/п считывания 4-байт. числа из AT24с01A,AT24c02 - AT24c16
    Rds_24c: $asm mov A , {wadr + 1} ;готовим старший байт, cодержащий
    Rl A ;старшие разряды адреса
    Orl A , #{Addressw} ;добавим код микросхемы
    Mov B , A
    $end Asm
    I2cstart ‘старт
    I2cwbyte B ‘первый байт режима
    $asm mov A , {wadr + 0}
    $end Asm
    I2cwbyte Acc ‘младший адрес в EEPROM
    Set B.0 ‘переключим в режим считывания
    I2cstart ‘повторим старт
    I2cwbyte B ‘байт режима
    I2crbyte Acc , 8 ‘считали 1-й байт с опцией ACK (8)
    $asm mov {Fld + 0} , A
    $end Asm
    I2crbyte Acc , 8 ‘2-й байт
    $asm mov {Fld + 1} , A
    $end Asm
    I2crbyte Acc , 8 ‘3-й байт
    $asm mov {Fld + 2} , A
    $end Asm
    I2crbyte Acc , 9 ‘последний байт с опцией NOACK (9)
    $asm mov {Fld + 3} , A
    $end Asm
    I2cstop ‘стоп
    Return
    =============================================================================
    4-20

    ===================================== Справочник по программированию «Bascom-8051» ==
    IDLE
    Действие:
    Переводит процессор в режим останова (IDLE), выход из которого происходит только в случае любого прерывания или системного сброса.
    Синтаксис
    :
    IDLE
    Пример:
    Mc: ‘цикл ожидание бита, устанавливаемого в прерывании
    Do
    Idle ‘останов для снижения энергопотребления
    If Bit_a=1 Then ‘проснулся и проверяет: есть событие?
    Bit_a=0 : Goto Wba ‘да – отработать
    End If
    Loop
    Wba:
    Set P1.1 ‘действие, вызванное событием в прерывании
    Goto Mc ‘обратно в цикл ожидания
    IF, ELSE , ELSEIF, END IF
    Действие:
    Проверить условия, в результате которых выполняются или пропускаются указанные действия.
    Производится проверка значений и сравнение всех типов переменных, включая значения отдельных битов одно-, двух- и четырехбайтных переменных!!!
    Синтаксис
    :
    1-я конструкция. Исполняется действие Action 1 если выполнено условие expression 1:
    IF expression 1 THEN
    ‘Action 1
    END IF
    2-я конструкция. Исполняется действие Action 1 если выполнено условие expression 1 и Action 2 если не выполнено:
    IF expression 1 THEN
    ‘Action 1
    ELSE
    ‘Action 2
    END IF
    3-я конструкция. Исполняется Action 1, если выполнено условие expression 1, Action 2 если не выполнено, однако при условии выполнения expression 2, и Action 3, если не выполнено ни одно из предыдущих условий. Может быть задано несколько проверок дополнительных условий:
    IF expression 1 THEN
    ‘Action 1
    ELSEIF expression 2 THEN
    ‘Action 2
    ELSE
    ‘Action 3
    END IF
    Пример 1:
    DIM A AS INTEGER
    A = 10
    IF A = 10 THEN ‘проверка
    PRINT « This part is executed.» ‘это отпечатается
    ELSE PRINT « This will never be executed.»
    THEN
    PRINT «BIT 15 IS SET»
    END IF
    REM Пример использования в одной строке
    IF THEN IF A.15 = 0 THEN PRINT «BIT 15=0»
    ELSE PRINT «BIT 15=1»
    END IF
    Пример 2:
    Dim X As Integer
    ‘новая возможность проверки – сравнение со значением символа
    If X = "A" Then 'when X = 65 the test will pass
    Пример 3:
    ‘новая возможность проверки – запись опертора в одну строку
    If X = 10 Then Goto M1 Else Goto M2
    =============================================================================
    4-21

    ===================================== Справочник по программированию «Bascom-8051» ==
    INP(), OUT
    Действие:
    Первая функция возвращает переменной значение из ячейки во внешней памяти, вторая - записывает значение переменной в ячейку внешней памяти. Функции перемещают только байтовые данные.
    Синтаксис
    :
    var = INP(address)
    OUT address, value
    Var - числовая переменная. Address - адрес ячейки. Адрес может задаваться одно- или двухбайтной переменной. Value - записываемое значение или переменная, содержащая записываемые данные.
    Пример:
    Dim a As Byte a = INP(&H8000) ‘считать по адресу 8000h
    PRINT a
    OUT &H8000,1 ‘записать 1 по адресу 8000h
    ‘Будет следующий генериться код последнего оператора:
    ‘ Mov A,#1
    ‘ Mov dptr,#h’8000
    ‘ Movx @dptr,a
    INSTR ()
    Действие: Возвращает значение позиции в строке, указанной для поиска подстроки (включения). Пока работает только во внутренней памяти.
    Синтаксис: var = INSTR( start , string , substr ) var = INSTR( string , substr )
    Var – числовая переменная, принимающая значение позиции типа byte и возвращающая 0, если заданное включение не найдено. Start – параметр, который может отсутствовать и задает первую позицию, с которой начнется поиск. Если параметр не указан, поиск начинается с позиции 1.
    String – имя строки, в которой ищется включение.
    Substr – имя строки, содержащей искомое включение.
    Пример:
    Dim S As String * 10 , Z as String * 5
    Dim bP as Byte s = "This is a test" 'строка, в которой ищем
    Z = "is" ‘эту строку
    BP = Instr(s,z) : Print bP 'если ищем сначала – это позиция 6 bP = Instr(4,s,z) : Print bP 'если ищем с четвертой позиции это – 3
    End
    =============================================================================
    4-22

    ===================================== Справочник по программированию «Bascom-8051» ==
    INPUT, INPUTHEX, INPUTBIN
    Действие:
    Функция INPUT может быть использована, когда в системе имеется интерфейс RS-232. При подключении к нему компьютера с программой эмулятора терминала (или другой программой, воспроизводящей аналогичные функции) имеется возможность ввода значений переменных в текстовом виде (числовых и символьных). BASCOM также поддерживает с помощью функция
    INPUTHEX ввод переменных в HEX-коде, записанном символами (каждый байт записывается двумя символами). Прием заканчивается при поступлении символа (0dh).
    Функция INPUTBIN записывает принятые последовательным портом значения «как есть». Ввод заканчивается, как только переменная заполнится, т.е. будет принято необходимое число байт
    (один для байтовой переменной, два для слова).
    Синтаксис_:_var_=_INKEY_var_=_WAITKEY_var_–_переменная_типа_Byte,_Integer,_Word,_Long_или_String._Если_символ_не_введен,_возвращается_нулевое_значениеПример'>Синтаксис
    :
    INPUT [“prompt”] , var [, varn] [NOECHO] [ TIMEOUT = xx]
    INPUTHEX [“prompt”] , var [, varn] [NOECHO] [ TIMEOUT = xx]
    INPUTBIN var1 [,varn] Prompt - приглашение (сообщение, которое будет выводится на терминал перед вводом переменной).
    Var, varn - переменные (их может быть несколько), значения которых вводятся.
    NOECHO - опция, запрещающая эхо (передачи обратно введенных символов).
    TIMEOUT – опция, указывающая на необходимость проверки времени ввода. В версии компилятора старше 2.01 эту опцию перед использованием необходимо объявить директивой
    $TIMEOUT
    XX – параметр задержки до 2^31, по истечению которой произойдет возврат даже при отсутствии ввода данных. Единица времени ожидания приблизительно равна 100 мкс(при 12 МГц). При использовании этой опции компилятор занимает в памяти четыре байта для счетчика времени.
    Пример:
    $baud = 1200 ‘порт должен быть настроен
    $crystal = 12000000
    $timeout ‘будет применяться ввод с тайм-аутом!
    Dim V As Byte , B1 As Byte
    Dim C As Integer , D As Byte
    Dim S As String * 15 ‘только если поддерживается XRAM
    Input «Введите V» , V ‘вводить только десятичные цифры
    Input B1 ‘без запроса
    Inputhex «Enter hex number (4 bytes)» , C ‘только шестнадц.
    Print C
    Inputhex «Enter hex byte (2 bytes)» , D ‘2 байта шестнадцатер.
    Print D Input «More variables» , C , D ‘несколько переменных
    Print C ; « » ; D
    Input C Noecho ‘без эха
    Input «Enter your name» , S
    Print «Hello» ; S
    Input S Noecho Timeout = 10000 ‘без эха символьную строку
    ‘на ввод строки 400 мс
    Print S
    =============================================================================
    4-23

    ===================================== Справочник по программированию «Bascom-8051» ==
    INKEY, WAITKEY
    Действие:
    Функция INKEY возвращает ASCII значение первого символа в последовательном входном буфере. Если буфер пуст, возвращается нуль.
    Функция WAITKEY действует почти также, но возврат происходит только после приема символа.
    Синтаксис
    :
    var = INKEY var = WAITKEY var – переменная типа Byte, Integer, Word, Long или String. Если символ не введен, возвращается нулевое значение
    Пример:
    DO ‘начать цикл
    A = INKEY ‘проверить буфер
    IF A > 0 THEN ‘есть символ? (>0)
    PRINT A ‘да, показать его
    END IF
    LOOP ‘замкнуть петлю
    A = Waitkey ‘здесь просто ждать символа
    LCASE(), UCASE()
    Действие:
    Возвращает строки строчных и прописных символов (преобразует соответственно строчные из приписных и прописные из строчных). Преобразует символы только латинского алфавита.
    Цифры и другие знаки не изменяет.
    Синтаксис
    :
    dest = LCASE(source) и dest = UCASE(source) dest – строка-приемник. Source – строка-источник.
    Пример:
    Dim S as string * 12 , Z as string * 12
    S = “asDFv” 'assign string
    Z = LCASE(s) 'convert to lowercase
    Print Z '”asdfv”
    Z = UCASE(s) 'convert to upper case
    Print Z '”ASDFV”
    LCD, LCDHEX
    Действие:
    Послать константу или переменную на индикатор LCD.
    Функция LCD очень похожа на функцию PRINT. Имеется внутренняя подпрограмма – вывод символа на индикатор в позицию курсора из аккумулятора. Например:
    Acc = $h33 ‘«3» в ACC
    Call Write_lcd ‘на индикатор
    Функция LCDHEX посылает значение переменной на индикатор в шестнадцатеричном виде
    (каждый байт в виде двух символов от 00 - FF).
    Синтаксис
    :
    LCD var
    LCDHEX var
    Var – выводимая переменная или константа. Тип: Byte, Integer, Word, Long, Single, Constant.
    Можно показывать несколько переменных, отделяя их знаком « ; » :
    LCD a ; b1 ; «constant»
    Пример:
    Ar = 65 : Locate 2 , 1 ‘поставить курсор
    Lcd «*» : Lcd « = » ; Ar ‘увидим «* = A»
    Ar = &HBF : Clr : LCDHEX Ar ‘увидим «BF»
    =============================================================================
    4-24

    ===================================== Справочник по программированию «Bascom-8051» ==
    LCD: CURSOR, DISPLAY, HOME, LOCATE, SHIFTLCD, SHIFTCURSOR
    FOURTHLINE, LOWERLINE, THIRDLINE, UPPERLINE
    FOURTH, LOWER, THIRD, UPPER
    Действие:
    Управлять курсором LCD:
    CURSOR ON - включить курсор (сделать видимым)
    CURSOR OFF - выключить курсор (сделать невидимым)
    CURSOR BLINK - сделать курсор мигающим (в виде блока или прямоугольника)
    CURSOR NOBLINK - сделать курсор немигающим (в виде подчеркивателя)
    HOME - поставить курсор в начало первой строки
    HOME LOWER или HOME L – поставить курсор в начало строки ниже
    HOME UPPER или HOME U – поставить курсор в начало строки выше
    HOME THIRD или HOME T – поставить курсор в начало третьей строки
    HOME FOURTH или HOME F – поставить курсор в начало четвертой строки
    LOCATE y,x – расположить курсор в строке y, в знакоместе x
    SHIFTCURSOR LEFT – сдвинуть курсор влево на одну позицию
    SHIFTCURSOR RIGHT – сдвинуть курсор вправо на одну позицию
    LOWERLINE – поставить курсор на нижнюю строку (на одну строку ниже)
    UPPERLINE – поставить курсор на верхнюю строку (на одну строку выше)
    THIRDLINE – поставить курсор на третью строку (если она есть)
    FOURTHLINE – поставить курсор на четвертую строку (если она есть)
    При включении питания курсор видимый (OFF)и не мигает (NOBLINK).
    Управление изображением на LCD:
    DISPLAY ON – включить индикацию (сделать изображение видимым)
    DISPLAY OFF – выключить индикацию (сделать изображение невидимым)
    SHIFTLCD LEFT – сдвинуть изображение влево на одну позицию (во всех строках)
    SHIFTLCD RIGHT – сдвинуть изображение вправо на одну позицию
    Синтаксис
    :
    CURSOR ON/OFF, CURSOR BLINK/NOBLINK
    CURSOR ON/OFF, DISPLAY ON/OFF , LOCATE y , x
    X - константа или переменная со значением позиции (1-64*)
    Y - константа или переменная со значением строки (1-4*)
    * определяется типом индикатора
    Пример:
    Dim a As Byte
    Cursor Blink ‘мигать курсором a = 255 : Lcd a : Cursor Off ‘невидимый курсор
    Display Off : Wait 1 : DISPLAY On ‘выключить индикацию на 1 с
    Locate 1 , 10 : LCD «Hello» ‘начиная с 10 позиции вывести сообщение
    Cls : LCD «Very long text» ‘очистить и написать снова
    Shiftlcd Left : Wait 1 : Shiftlcd Right : LCD a : Lowerline ‘сдвигать
    CD a : Upperline
    =============================================================================
    4-25

    ===================================== Справочник по программированию «Bascom-8051» ==
    LEFT(), MID(), RIGHT()
    Действие:
    Функции разделения строковых (текстовых) переменных: LEFT() - возвращает значение самого левого символа (или несколько символов cлева). MID() - возвращает значение символа из середины строки (или несколько средних символов). Может заменить часть строки символами другой переменной. RIGHT - возвращает значение самого правого символа (или несколько правых символов). Строковые переменные, применяемые в этих операциях, должны быть одного типа, т.е. располагаться или во внутренней памяти или во внешней. Длина переменных, используемых при этих операциях, может быть различной.
    Синтаксис
    :
    var = Left(var1 , n ) – взять символы слева var = RIGHT(var1 ,st ) – взять символы справо var = MID(var1 ,st [,l] ) – взять символы из середины
    MID(var ,st [, l] ) = var1 – вставить символы в середину строки var – строка результата операции. Var1 – исходная строка. N – число забираемых символов.
    Тип n : Byte, Integer, Word, Long, Constant. St – стартовая позиция (с слева. Крайний слева символ – первый). L – число извлекаемых или вставляемых символов.
    Пример:
    Dim s As XRAM String * 15, z As XRAM String * 15
    S = «ABCDEFG» : z = Left(s,5) : Print z ‘ABCDE
    S = «ABCDEFG» : z = Right(s,2) : Print z ‘FG
    S = «ABCDEFG» : z = Mid(s,2,3): Print z ‘BCD
    Z = «12345» : Mid(s,2,2) = z : Print s ‘A12DEFG
    LEN()
    Действие:
    Функция возвращает длину строки. Под длиной строки имеется в виду число символов, загруженной строки, а не длина буфера, определенного как строковая переменная. Применяется совместно в операциях преобразования строк.
    Синтаксис
    :
    Var = LEN( string ) Var – цифровая переменная, принимающая значение длины строки. String – строка, длина которой вычисляется.
    Пример:
    Dim S As String * 12 , A As Byte ‘буфер на 12 символов
    S = «test» : A = Len(s) : Print A ‘а длина переменной только 4
    LOAD TIMER
    Действие:
    Записывает значение в таймер, работающий в режиме самозагрузки (записывает в регистры, определяющие частоту переполнения).
    Синтаксис
    :
    LOAD TIMER , value
    TIMER – имя одного из таймеров: TIMER0, TIMER1 или TIMER2.
    Value – переменная или константа. Задаваемое значение определяет интервал времени (в режиме ON TIMERx и MODE 2), по истечении которого наступит прерывание. Диапазон значений – от 1 до 255 для TIMER0, TIMER1 и от 1 до 65535 для TIMER2. Директива LOAD корректирует загружаемое значение: TLx = THx = (256 - value) – внимание! записывает одинаковые значения! RCAP2L , RCAP2H = (65536 - value) Для загрузки непосредственно задаваемого значения (без корректировки) применять оператор COUNTERx .
    1   2   3   4   5   6   7   8   9   ...   25


    написать администратору сайта