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

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

  • Пример: Dim a(10) as Byte, c as Byte ‘это самый важный пример For c = 1 To 10 A(с) = с ‘заполним массив Next PRINTBIN a(1) ‘пошлем первый элемент массиваPRIORITY

  • Пример: PRIORITY SET SERIAL ‘посл. порт - наивысший уровеньREAD, RESTORE Действие

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

  • REPLACE Действие: Заменить в сроковой переменной один символ другимСинтаксис

  • Пример: Dim S1 as String S1 = “123.456” Replace S1 , “.” , “,” Print S1 ‘получим “123,456”RESET, SET Действие

  • RETURN Действие

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

  • RND() Действие: Возвращает случайное числоСинтаксис

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

  • SERVOx Действие

  • Пример: Servo1 = 8 800 uS Servo2 = 12 1200 uS SHIFTIN. SHIFTOUT Действие

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

  • Пример: SPACE(), STRING(), SPC() Действие

  • SPIIN, SPIOUT Действие: Считать значение переменной из SPI-шины (устройства) или послать содержимое переменной в SPI-шину (устройство). Интерфейс программный.Синтаксис

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

  • Синтаксис : START timer, STOP timer Timer – имена объекта управления TIMER0, TIMER1, TIMER2, COUNTER0 илиCOUNTER1.Пример

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

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

  • Синтаксис : SWAP var1, var2 var1 и var2 - переменные типа: bit, byte, integer/wordПример

  • Справочник по программировани 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
    КатегорияПромышленность. Энергетика
    страница8 из 25
    1   ...   4   5   6   7   8   9   10   11   ...   25
    Пример:
    Dim A As Byte , B1 As Byte , C As Integer
    A = 1
    Print «print variable a=» ; A
    Print ‘пустая строка
    Print «Text to print.» ‘печать текстовой константы
    B1 = 10 : Printhex B1 ‘печать в шестнадцатеричном виде
    C = &HA000 : Printhex C ‘аналогично в HEX-формате
    Print C ‘а теперь в десятичном виде
    C = -32000
    Print C ‘выведется -32000!
    Printhex C ‘выведется 8300
    =============================================================================
    4-33

    ===================================== Справочник по программированию «Bascom-8051» ==
    PRINTBIN
    Действие:
    Послать данные в последовательный порт, содержащиеся в переменных, без преобразования в текст и без символов разделителя строк (0Dh, 0Ah). PRINTBIN почти эквивалент оператора
    PRINT CHR(var), но с тем отличием, что может выводить индексированные переменные (из массивов).
    Синтаксис
    :
    PRINTBIN var [,varn] Var – имя переменной, данные которой будут передаваться. Varn - можно посылать несколько переменных в одной строке. Количество посылаемых байт определяется длиной переменной. В одной строке, разделяя запятой (« , »), можно выводить несколько переменных.
    Пример:
    Dim a(10) as Byte, c as Byte
    ‘это самый важный пример
    For c = 1 To 10
    A(с) = с ‘заполним массив
    Next
    PRINTBIN a(1) ‘пошлем первый элемент массива
    PRIORITY
    Действие:
    Установить или снять высший уровень приоритета прерывания. Применяется в тех случая, когда нужно изменить естественный или установленный ранее порядок приоритетов. Исходный порядок приоритетов: INT0 - 1 (самый высокий); TIMER0 - 2; INT1 - 3; TIMER1
    - 4; PCA – 5; SERIAL – 6; TIMER2 – 7 (самый низкий). Смысл приоритетов в том, что прерывание более высокого уровня может прервать исполнение прерывания более низкого уровня. Прерывание наивысшего уровня (приоритет установлен) не может быть прервано другим прерыванием и обеспечивает наивысшую скорость реакции на событие, вызвавшее его.
    Фактически, эта команда устанавливает и сбрасывает биты в регистры IP.
    Синтаксис
    :
    PRIORITY SET / RESET interrupt
    SET – установить приоритет выше.
    RESET - сбросить (отменить) высший уровень приоритета.
    Interrupt - прерывание, с которым производится операция. Это может быть: INT0, INT1,
    SERIAL, TIMER0, TIMER1 and TIMER2.
    Пример:
    PRIORITY SET SERIAL ‘посл. порт - наивысший уровень
    READ, RESTORE
    Действие:
    RESTORE разрешает оператору READ прочитать значение, объявленное как непосредственные данные (оператором DATA). По сути, оператор RESTORE устанавливает указатель считываемых данных. READ записывает в указанную переменную значение константы, указываемое оператором RESTORE. При повторном использовании оператораREAD считывается следующая константа, т.е. происходит последовательный доступ к непосредственным данным. Для произвольного доступа к данным (как к таблице) следует применять более совершенный оператор LOOKUP.
    Синтаксис
    :
    READ var var – переменная, принимающая данные. Важно, чтобы переменная и тип данных были одинаковыми.
    RESTORE label
    Label - метка блока DATA, которая будет использоваться последующим оператором READ.
    Пример:
    Dim a As Byte, I As Integer
    Restore Dta1
    For a = 1 TO 3
    Read a : Print a
    Next
    Restore Dta2 : Read I : Print I : Read I : Print I
    End
    Dta1: Data 5, 10, 100
    Dta2: Data -1%, 1000% ‘Integers с % (Integer : <0 или >255)
    =============================================================================
    4-34

    ===================================== Справочник по программированию «Bascom-8051» ==
    REM или ‘
    Действие:
    Начало строки комментариев. Текст в строке комментария пропускается компилятором.
    Не рекомендуется применение третьего способа создания многострочных комментариев –
    ‘( это комментарии ‘).
    Синтаксис'>REPLACE
    Действие:
    Заменить в сроковой переменной один символ другим
    Синтаксис
    :
    REPLACESET String , Old , New String – имя обрабатываемой переменной. Old – строковая или байтовая константа, указывающая на заменяемый символ. New –строковая или байтовая константа, указывающая на заменяющий символ.
    Пример:
    Dim S1 as String
    S1 = “123.456”
    Replace S1 , “.” , “,”
    Print S1 ‘получим “123,456”
    RESET, SET
    Действие:
    Reset – сбросить (записать «0») и Set – установить (записать «1») битовую переменную. Оператор работает как с битово адресуемыми регистрами и портами, так и битами одно-, двух- и четырехбайтовых переменных во внутренней памяти.
    Синтаксис
    :
    RESET bit , RESET var.x , SET bit , SET var.x Bit - имя физического бита или переменной в битовой области процессора. X – константа – место бита в байте (x=0-7), в слове
    (x=0-15) или двойном слове (x=0-31). Var – имя переменной, в которой находится изменяемый бит. Типы переменных: Byte, Integer, Word и Long.
    Пример:
    Dim b1 as bit, b2 as byte, I as Integer
    RESET P1.3 ‘сброс бита 3 порта 1
    RESET b1 ‘битовая переменная
    RESET b2.0 ‘сброс бита 0 байтовой переменной b2
    RESET I.15 ‘сброс MS (старшего) бита I
    RETURN
    Действие:
    Возврат из подпрограммы (компилируется как RET) или из подпрограммы обработки прерывания
    (компилируется RETI). В последнем случае компилятор сам заменяет RET на RETI. Причем команда RETI устанавливается только один раз вместо первого оператора Return, встреченного после метки вызова данной подпрограммы. Если у программы обработки прерываний несколько выходов, то все последующие должны оформляться ассемблерной вставкой с командой RETI. И наоборот, если подпрограмма прерывания написана на ассемблере, то она должна завершаться, хотя бы одним оператором RETURN.
    Синтаксис
    :
    RETURN
    Пример:
    GOSUB Pr ‘вызвать подпрограмму
    PRINT result ‘что-то печатать
    END ‘конец программы
    Pr: ‘подпрограмма result = 5 * y : result = result + 100 ‘делать что-нибудь
    RETURN ‘возврат из подпрограммы
    RND()
    Действие:
    Возвращает случайное число
    Синтаксис
    :
    Var = RND(Lim) Var – имя переменной типа Word, принимающей результат.
    Lim – максимальное число, которое может принимать случайное значение переменной
    Пример:
    Dim Ar As Word
    Do
    Ar = Rnd(1000) : Print Br
    Loop
    =============================================================================
    4-35

    ===================================== Справочник по программированию «Bascom-8051» ==
    ROTATE
    Действие:
    Сдвиг по кругу всех битов переменной на одну или несколько позиций
    Синтаксис
    :
    ROTATE var , LEFT/RIGHT [, Shifts] Var – имя преобразуемой переменной типа
    Byte, Integer/Word or Long. Shifts - число сдвигов, которое нужно произвести. Замечательно, что значение флага С (carry) принимает старший или младший бит сдвигаемой переменной. Т.е.
    ROTATE работает также как команды RLC и RRC. Когда эта возможность не требуется, очищайте С (carry) перед сдвигом командой CLR C.
    Пример:
    Dim a as Byte a = 128 : ROTATE a, LEFT , 2 : Print a ‘1
    ;генерируемый код
    Mov R7,#2 ;число сдвигов
    Mov R0,#h’21 ;адрес сдвигаемой переменной
    Mov a,@r0
    M1: Rlc a
    Djnz r7,M1
    Mov @r0,a
    SERVOx
    Действие: Загрузка значения, определяющего длительность генерируемого импульса в 100 мкс. Период повторения импульсов 20 мс, т.е. с частотой 50 Гц.
    Синтаксис: ServoX = NN
    X – номер выхода от 1 до 16. NN – число, равное длительности генерируемых импульсов.
    Пример:_Servo1_=_8__800_uS_Servo2_=_12_1200_uS_SHIFTIN._SHIFTOUT_Действие'>Пример:
    Servo1 = 8 ' 800 uS
    Servo2 = 12 '1200 uS
    SHIFTIN. SHIFTOUT
    Действие:
    Побитный вывод или ввод данных для записи в сдвиговый регистр или для считывания из сдвигового регистра
    Синтаксис
    :
    SHIFTIN pin , pclock , var , option [PRE}
    SHIFTOUT pin , pclock , var , option
    Pin - имя порта, используемого для ввода или вывода данных.
    Pclock - имя порта, используемого для генерации сигнала синхронизации.
    Var – приемник или источник сдвигаемых данных.
    Option – дополнительный параметр (режим). Может иметь следующие значения:
    0 - старший бит переменной выдвигается первым и используется положительная полярность импульсов синхронизации (0 - 1 - 0).
    1 - старший бит первый при отрицательных импульсах синхронизации (1 - 0 - 1).
    2 - младший бит выдвигается первым при положительных импульсах (0 - 1 - 0).
    3 - младший бит первый при отрицательных импульсах синхронизации (1 - 0 - 1).
    Для SHIFTIN вы можете использовать также параметры 4 – 7 при использовании внешнего сигнала синхронизации сдвига, соответствующие фазам считывания режимов 0 – 3. . Длина переменной определяет количество сдвигаемых бит.
    PRE – еще один дополнительный параметр, указывающий на необходимость считывания состояния порта данных перед импульсом синхронизации (применимо в режимах 0 – 3).
    Можно работать с переменными типа Byte, Word, Integer или Long.
    Пример:
    Dim Temp as byte , R_bd As Long
    ‘подключение синтезатора
    B_data Alias P1.5 : B_clk Alias P1.3
    B_fqud Alias P1.4 : B_res Alias P1.7
    ‘---------------------
    ‘подпрограмма загрузки данных в синтезатор
    Sload_9850:
    Set B_fqud : Reset B_fqud ‘сбросить интерфейс
    Set B_clk : Reset B_clk ‘защелкнуть код посл. режима
    Set B_fqud : Reset B_fqud ‘разрешить посл. режим
    ‘выдвинуть данные из R_bd в режиме 3 (мл. сначала ,
    /\
    )
    Shiftout B_data , B_clk , R_bd , 3
    ‘выдвинуть последний байт с режимом и фазой
    Temp = 0 : Shiftout B_data , B_clk , Temp , 3
    Set B_fqud : Reset B_fqud ‘исполнять заруженные данные
    Return
    =============================================================================
    4-36

    ===================================== Справочник по программированию «Bascom-8051» ==
    SOUND
    Действие:
    Послать импульсы в порт. Можно для генерации звуков, если каким-то образом подключить к порту громкоговоритель.
    Синтаксис
    :
    SOUND pin, duration, frequency [,NOINT]
    Pin - имя любого порта ввода-вывода.
    Duration - число посылаемых импульсов (по сути, это длительность). Может быть задано имя переменной типа: Byte, integer, word или константа. Диапазон задаваемых значений от 1 до 32768.
    Frequency – время в микросекундах, в течении которого вывод находится в низком и высоком уровне.
    NOINT – необязательная опция. При ее применении на время генерации звука запрещаются прерывания и звук получается чистым.
    SOUND P1.1 , 10000, 10 ‘BEEP
    Пример:
    SPACE(), STRING(), SPC()
    Действие:
    Space() – возвращает строку, заполненную пробелами.
    String() – возвращает строку, заполненную одинаковыми символами.
    Spc() – вставляется в операторы Print или Lcd для вывода даданного числа пробелов
    Главное достоинство этих функции перед строкой A = « » или A = «11111» в том, что они работаю намного быстрее, более компактны, дают возможность в процессе работы гибко изменять число пробелов, задавая его с помощью переменной. Применяются при форматировании выводимых данных.
    Синтаксис
    :
    var = SPACE(x) x - число пробелов. Число пробелов может быть задано константой и переменной. Var – строковая переменная. Использование значения x=0 приведет к появлению строки из 255 байт. var = STRING(m,n) m – число записываемых символов. n – код символа (десятичный)
    SPC(x) x – число выводимых пробелов.
    Пример:
    Dim s as XRAM String * 15, z as XRAM String * 15
    S = Space(5) ‘пять пробелов
    S = String(5,65) ‘пять символов “A”
    S = “123”
    Print S ; Spc(3) ; S ‘получим ”123 123”
    Lcd “{“; S ; Spc(2) ; “}” ‘получим ”{123 }”
    Acall _sStr_String ; ---- библиотечная подпрограмма -----
    _sStr_String:
    Mov @r1 , a
    Inc r1
    Djnz r2 ,_sStr_String
    Clr a
    Mov @r1 , a
    Ret
    Синтаксис'>SPIIN, SPIOUT
    Действие:
    Считать значение переменной из SPI-шины (устройства) или послать содержимое переменной в
    SPI-шину (устройство). Интерфейс программный.
    Синтаксис
    :
    SPIIN var, bytes
    SPIOUT var , bytes
    Var - переменная, содержащая данные для посылки или принимающая данные.
    Bytes - число байт обмена.
    Пример:
    Dim a(10) as Byte , X As Byte
    CONFIG SPI=SOFT , DIN=P1.0 , DOUT=P1.1 , CS=P1.2 , CLK=P1.3
    SPIIN a(1) , 4 ‘считать 4 байта
    SPIOUT a(1) , 5 ‘послать 5 байтов
    SPIOUT X , 1 ‘послать байт
    =============================================================================
    4-37

    ===================================== Справочник по программированию «Bascom-8051» ==
    START TIMER, STOP TIMER
    Действие:
    Разрешить или запретить счет указанного таймера (0, 1 или 2):
    Start Timer - разрешить счет TRx=1. Stop Timer – остановить счет TRx=0
    Синтаксис
    :
    START timer, STOP timer
    Timer – имена объекта управления TIMER0, TIMER1, TIMER2, COUNTER0 или
    COUNTER1.
    Пример:
    Dim Count As Byte , Gt As Byte
    Config Timer0 = Timer , Gate = Internal , Mode = 2
    On Timer0 Timer_0_int ‘назначить вектор прерывания
    Load Timer0 , 100 ‘зададим периодичность прерываний
    Enable Interrupts ‘разрешим использовать прерывания
    Enable Timer0 ‘разрешим прерывание таймера
    Priority Set Timer0 ‘дадим ему высший приоритет
    Start Timer0 ‘разрешим счет
    Count = 0 ‘сбросит счетчик
    Do
    Input «Number « , Gt
    Print «You entered : « ; Gt
    Loop Until Gt = 1 ‘ждем, в цикле пока не появится символ ESC
    Stop Timer0
    End Rem обработка прерывания Timer0
    Timer_0_int:
    Inc Count
    If Count = 2 Then
    Print «Timer0 Interrupt occured»
    Count = 0
    End If
    Return
    STOP
    Действие:
    Остановить исполнение программы
    Пример:
    PRINT var ‘печатать нечто
    STOP ‘остановиться здесь
    STR()
    Действие:
    Возвращает строку со значением числа, записанного в указанной переменной. Этя функция производит действия обратное, выполняемое функцией Val(). Применяется при выводе цифровых данных в последовательный порт или при формировании строки дла индикации.
    Синтаксис
    :
    var = Str(x) var - строковая переменная с длиной, достаточной для запоминания полученной строки. X – числовая переменная типа: Byte, Integer, Word, Long, Single.
    Пример:
    Dim a as Byte, S as XRAM String * 10
    A = 123 : S = Str(a) : Print S
    S = “S=” + Str(a) ‘можно применять при суммировании
    =============================================================================
    4-38

    ===================================== Справочник по программированию «Bascom-8051» ==
    SUB
    Действие:
    Определить подпрограмму или процедуру, оформленную как подпрограмма. Вы должны объявить процедуру с помощью Declare Sub перед ее определением. Имена параметров и типы указываются и при объявлении, и при определении самой процедуры. Определенные параметры имеют глобальной значение и должны быть объявлены оператором DIM. Смысл такого сложного способа определения процедуры - возможность вызова ее с другими переменными, но и того же типа, с которыми процедура была объявлена. В этом ее главное достоинство и отличие от простой подпрограммы.
    Синтаксис
    :
    SUB Name[(var1)]
    Тело процедуры, описывающие необходимые действия.
    END SUB
    Name - имя процедуры, любое нерезервированное слово. var1 - имя параметра (переменной, функциональная зависимость, от которой задается). Параметров может не быть, а может быть заявлено больше (до 10 параметров). Параметры должны разделяться запятой (« , »). Оператор
    Return при описании процедуры не применяется, т.к. компилятор вставляет его сам. Если точек выхода несколько, и они обусловлены какими-то параметрами, то для выхода может применяться оператор EXIT SUB.
    Пример:
    Declare Sub Test(a As Byte , B1 As Byte) ‘объявить процедуры
    Declare Sub Test2
    Declare Sub Test3(cl As Bit)
    Declare Sub Test4(x As Xram Byte)
    Declare Sub Test5(a as byte)
    Dim A As Byte , B1 As Byte , Cl As Bit ‘объвить перем.
    Dim X As Xram Byte , Xa(10) As Xram Byte
    B1 = 3 : Call Test2 ‘вызов sub без параметров
    Call Test(1 , B1) : Print B1 ‘вызов sub с параметрами
    Call Test3(p1.1) ‘вызов с другой перем.
    Xa(1) = 1 : Call
    Test4 Xa(1)
    Call test5 (a) ‘вызов с параметром A
    Test5 a ‘альтернативная запись с параметром A
    End
    ‘определение процедур. важно, чтобы указанные здесь
    ‘переменные были объявлены только один раз и были глобальными
    Sub Test(a As Byte , B1 As Byte) ’начало sub
    Print A ; « » ; B1 ‘отпечатать встреченную перем.
    B1 = 3
    End Sub
    Sub Test2 ‘sub без параметров *
    Print «No parameters»
    End Sub
    Sub Test3(bl As Bit) ‘bit как параметр
    Print Bl
    End Sub
    Sub Test4(x As Xram Byte) ‘с параметром во внешней памяти
    Print X
    End Sub
    SUB Test5(b1 as byte) ‘используем такую же, по размеру,
    ‘что и объявленная
    LCD b1 : LCD BCD(b1) ’что-то индицировать на LCD
    End SUB
    =============================================================================
    4-39

    ===================================== Справочник по программированию «Bascom-8051» ==
    SWAP
    Действие:
    Поменять местами значения двух переменных одного типа. С индексированными переменными этот оператор не работает!
    Синтаксис
    :
    SWAP var1, var2 var1 и var2 - переменные типа: bit, byte, integer/word
    Пример:
    Dim a as integer,b1 as integer a = 1 : b1 = 2 ‘assign two integers
    SWAP a , b1 ‘swap them
    VAL()
    Действие:
    Преобразовать строку, содержащую числовое значение в числовую переменную (число).
    Синтаксис
    :
    var = Val( s )
    Var - числовая переменная типа: Byte, Integer, Word, Long, Single. S – строковая переменная.
    Пример:
    Dim a as byte, s As XRAM string * 10 s = «123» : a = Val(s) ‘преобразовать
    Print a ‘выведется 123
    1   ...   4   5   6   7   8   9   10   11   ...   25


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