Справочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001). Справочник по программированию bascom8051 Краснодар 2001
Скачать 6.61 Mb.
|
=========================================================================== Справочник по программированию «Bascom-8051» == =========================================================================================================================== A-1 Приложение A Переменные Бейсика Числовые переменные Старший байт (Adessr + 3) (Adress = 2) (Adress = 2) Младший байт (Adress) Его адрес - имя переменной Тип переменной Число байт Диапазон Пример 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 Bit – битовая 1 или 1/8 От 0 до 1 «1» 1 Byte – байтовая 1 От 0 до 255 «100» 1 1 0 0 0 1 0 0 Word - двухбайтовая 2 От 0 до 655535 «1000» 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 Integer – двухбайтовая со знаком 2 От минус 32768 до 32767 «-1000» 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 «20000» 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 Long – четырехбайтовая со знаком 4 От минус- 2147483648 до 2147483647 «-20000» 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 Знак Порядок (двоичный от минус 127 до +127 24-битная мантисса – значение от 1 до 2 . Старший бит мантиссы не записывается – всегда подразумевается, что там записана единица «1» 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 «128» 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Single – в формате с плавающей точкой 4 От ±5,8E-39 до ±1,7E+38 «-2.5» 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Строковые переменные Содержимое ячеек в Hex-коде, начиная с нулевой (Adress) Назначение Длина Содержание 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Dim S1 As String * 20 21 байт «123 S5.5+12» 31 32 33 20 53 35 2E 35 2B 31 32 00 xx xx xx xx xx xx xx xx xx Dim S1 As String * 16 17 байт «1S.5» 31 53 2E 35 00 xx xx xx xx xx xx xx xx xx xx xx xx Dim S1 As String * 8 9 байт «ST2» 53 54 32 00 xx xx xx xx xx xx – произвольный код. ===================================== Справочник по программированию «Bascom-8051» == Приложение B Система команд микроконтроллера 8051 Действие команды Мнемоническое обозначение КОП (16) Описание Кол. циклов Команды передачи данных MOV A,R0 E8 (A) ←(R0) 1 MOV A,R1 E9 (A) ←(R1) 1 MOV A,R2 EA (A) ←(R2) 1 MOV A,R3 EB (A) ←(R3) 1 MOV A,R4 EC (A) ←(R4) 1 MOV A,R5 ED (A) ←(R5) 1 MOV A,R6 EE (A) ←(R6) 1 Загрузка А из РОН MOV A,R7 EF (A) ←(R7) 1 Загрузка А из прямо адресуемого регистра MOV A, direct E5,da (A) ←(direct) 1 MOV A,@R0 E6 (A) ←((R0)) 1 Загрузка А из косвенно адресуемого регистра MOV A,@R1 E7 (A) ←((R1)) 1 Загрузка А константой MOV A, #data 74,dt (A) ←#data 1 MOV R0,A F8 (R0) ←(A) 1 MOV R1,A F9 (R1) ←(A) 1 MOV R2,A FA (R2) ←(A) 1 MOV R3,A FB (R3) ←(A) 1 MOV R4,A FC (R4) ←(A) 1 MOV R5,A FD (R5) ←(A) 1 MOV R6,A FE (R6) ←(A) 1 Загрузка РОН из А MOV R7,A FF (R7) ←(A) 1 MOV R0,direct A8,da (R0) ←(direct) 2 MOV R1,direct A9,da (R1) ←(direct) 2 MOV R2,direct AA,da (R2) ←(direct) 2 MOV R3,direct AB,da (R3) ←(direct) 2 MOV R4,direct AC,da (R4) ←(direct) 2 MOV R5,direct AD,da (R5) ←(direct) 2 MOV R6,direct AE,da (R6) ←(direct) 2 Загрузка РОН из адресуемого регистра MOV R7,direct AF,da (R7) ←(direct) 2 MOV R0,#data 78,dt (R0) ←(#data) 1 MOV R1,#data 79,dt (R1) ←(#data) 1 MOV R2,#data 7A,dt (R2) ←(#data) 1 MOV R3,#data 7B,dt (R3) ←(#data) 1 MOV R4,#data 7C,dt (R4) ←(#data) 1 MOV R5,#data 7D,dt (R5) ←(#data) 1 MOV R6,#data 7E,dt (R6) ←(#data) 1 Загрузка РОН константой MOV R7,#data 7F,dt (R7) ←(#data) 1 Загрузка прямо адресуемого регистра из А MOV direct, A F5,da (direct) ←(A) 1 MOV direct,@R0 86,da (direct) ←((R0)) 2 Загрузка прямо адресуемого регистра из косвенно адресуемого регистра MOV direct,@R1 87,da (direct) ←((R1)) 2 Загрузка прямо адресуемого регистра константой MOV direct, #data 75,da,dt (direct) ← #data 2 Загрузка прямо адресуемого регистра из прямо адресуемого регистра MOV direct, direct 85,da пр ,da ист. (direct) ←(direct) 2 ============================================================================= B-1 ===================================== Справочник по программированию «Bascom-8051» == Действие команды Мнемоническое обозначение КОП (16) Описание Кол. циклов Команды передачи данных (продолжение) MOV direct,R0 88,da (direct) ←(R0) 2 MOV direct,R1 89,da (direct) ←(R1) 2 MOV direct,R2 8A,da (direct) ←(R2) 2 MOV direct,R3 8B,da (direct) ←(R3) 2 MOV direct,R4 8C,da (direct) ←(R4) 2 MOV direct,R5 8D,da (direct) ←(R5) 2 MOV direct,R6 8E,da (direct) ←(R6) 2 Загрузка прямо адресуемого регистра из РОН MOV direct,R7 8F,da (direct) ←(R7) 2 MOV @R0, A F6 ((R0)) ←(A) 1 Загрузка косвенно адресуемого регистра из A MOV @R1, A F7 ((R1)) ←(A) 1 MOV @R0, direct A6,da ((R0)) ←(direct) 2 Загрузка косвенно адресуемого регистра из прямо адресуемого регистра MOV @R1, direct A7,da ((R1)) ←(direct) 2 MOV @R0, #data 76,dt ((R0)) ←#data 1 Загрузка косвенно адресуемого регистра константой MOV @R1, #data 77,dt ((R1)) ←#data 1 Загрузка индексного регистра 16 битной константой MOV DPTR #data16 90,dt (DPTR) ←#data 15..0 2 MOVC A, @A+DPTR 93 (A) ←((A)+(DPTR)) 2 Загрузка A из памяти команд регистров MOVC A, @A+PC 83 (PC) ←(PC)+1 (A) ←((A)+(PC)) 2 MOVX A,@R0 E2 (A) ←((R0)) 2 MOVX A,@R1 E3 (A) ←((R1)) 2 Загрузка A из памяти данных MOVX A,@DPTR E0 (A) ←((DPTR)) 2 MOVX @R0,A F2 ((R0)) ←(A) 2 MOVX @R1,A F3 ((R1)) ←(A) 2 Загрузка в память данных из A MOVX @DPTR,A F0 ((DPTR)) ←(A) 2 Загрузка в стек указанного регистра PUSH direct C0,da (SP) ←(SP)+1 ((SP)) ←(direct) 2 Загрузка в указанный регистр из стека POP direct D0,da (direct) ←((SP)) (SP) ←(SP)-1 2 XCH A,R0 C8 (A)↔(R0) 1 XCH A,R1 C9 (A)↔(R1) 1 XCH A,R2 CA (A)↔(R2) 1 XCH A,R3 CB (A)↔(R3) 1 XCH A,R4 CC (A)↔(R4) 1 XCH A,R5 CD (A)↔(R5) 1 XCH A,R6 CE (A)↔(R6) 1 Обмен А байтовый с РОН XCH A,R7 CF (A)↔(R7) 1 Обмен А с прямо адресуемым регистром XCH A, direct CA,da (A)↔(direct) 1 XCH A,@R0 C6 (A)↔((R0)) 1 Обмен А с косвенно адресуемых регистров XCH A,@R1 C7 (A)↔((R1)) 1 XCHD A,@R0 D6 (A 3..0 )↔((R0) 3..0 ) 1 Обмен полубайтов косвенно адресуемых регистров с А XCHD A,@R1 D7 (A 3..0 )↔((R1) 3..0 ) 1 ============================================================================= B-2 ===================================== Справочник по программированию «Bascom-8051» == Действие команды Мнемоническое обозначение КОП (16) Описание Кол. циклов Команды перехода Вызов подпрограмы с полным адресом LCALL addr16 12,adr 16 PC ←addr16 SP ←SP+2 2 ACALL 0XX 11,adr 8 2 ACALL 1XX 31,adr 8 2 ACALL 2XX 51,adr 8 2 ACALL 3XX 71,adr 8 2 ACALL 4XX 91,adr 8 2 ACALL 5XX B1,adr 8 2 ACALL 6XX D1,adr 8 2 Вызов подпрограмы в пределах текущих 2- х килобайт ACALL 7XX F1,adr 8 PC ←addr11 (0..10) SP ←SP+2 2 Возврат из подпрограммы обработки прерываний RET 22 PC ←(SP) SP ←SP-2 2 Возврат из подпрограммы с разрешением прерываний RETI 32 PC ←(SP) SP ←SP-2 бит EA ←1 2 Переход с полным адресом LJMP addr16 02,adr 16 PC ←addr16 2 AJMP 0XX 01,adr 8 2 AJMP 1XX 21,adr 8 2 AJMP 2XX 41,adr 8 2 AJMP 3XX 61,adr 8 2 AJMP 4XX 81,adr 8 2 AJMP 5XX A1,adr 8 2 AJMP 6XX C1,adr 8 2 Переход в пределах текущих 2-х килобайт AJMP 7XX E1,adr 8 PC 0..10 ←addr11 2 Переход на смещение ±127 байт SJMP rel 80,rel PC ←PC+2+rel 2 Косвенный относительный переход JMP @A+DPTR 73 PC ←(A+DPTR) 2 JZ rel 60,rel Если А=0 PC ←PC+2+rel 2 Тестирование аккумулятора на ноль (на самом деле бита Z) JNZ rel 70,rel Если А ≠0 PC ←PC+2+rel 2 Сравнение аккумулятора с прямо адресуемым регистром и переход ±127 байт CJNZ A,#direct, rel B5,dt,rel Если А≠direct PC ←PC+3+rel Если A > direct C ←1 2 Сравнение аккумулятора с константой и переход ±127 байт CJNZ A, #data, rel B4,dt,rel Если А≠data PC ←PC+3+rel Если A > data C ←1 2 CJNZ R0,#data,rel B8,dt,rel 2 CJNZ R1,#data,rel B9,dt,rel 2 CJNZ R2,#data,rel BA,dt,rel 2 CJNZ R3,#data,rel BB,dt,rel 2 CJNZ R4,#data,rel BC,dt,rel 2 CJNZ R5,#data,rel BD,dt,rel 2 CJNZ R6,#data,rel BE,dt,rel 2 Сравнение РОН с константой и переход в диапазоне ±127 байт CJNZ R7,#data,rel BF,dt,rel Если R i ≠data PC ←PC+3+rel Если R i > data C ←1 иначе С ←0 2 CJNZ@R0,#data,rel B6,dt,rel 2 Сравнение косвенно адресуемого регистра с константой и переход ±127 байт CJNZ@R1,#data,rel B7,dt,rel Если @R i ≠data PC ←PC+3+rel Если @R i > data C ←1 2 ============================================================================= B-3 ===================================== Справочник по программированию «Bascom-8051» == Действие команды Мнемоническое обозначение КОП (16) Описание Кол. циклов Команды перехода (продолжение) DJNZ R0, rel D8,rel 2 DJNZ R1, rel D9,rel 2 DJNZ R2, rel DA,rel 2 DJNZ R3, rel DB,rel 2 DJNZ R4, rel DB,rel 2 DJNZ R5, rel DC,rel 2 DJNZ R6, rel DE,rel 2 Декремент РОН и переход, если не ноль DJNZ R7, rel DF,rel R i ←R i -1 если R i ≠0 PC ←PC+2+rel 2 Декремент прямо адресуемого байта и переход, если не ноль DJNZ direct, rel D5,da,rel direct ←direct-1 если direct≠0 PC ←PC+3+rel 2 Нет операции NOP 00 1 Логические операции ANL A,R0 58 (A) ←(A) AND (R0) 1 ANL A,R1 59 (A) ←(A) AND (R1) 1 ANL A,R2 5A (A) ←(A) AND (R2) 1 ANL A,R3 5B (A) ←(A) AND (R3) 1 ANL A,R4 5C (A) ←(A) AND (R4) 1 ANL A,R5 5D (A) ←(A) AND (R5) 1 ANL A,R6 5E (A) ←(A) AND (R6) 1 Логическое “И” А с РОН ANL A,R7 5F (A) ←(A) AND (R7) 1 Логическое “И” А с прямо адресуемым регистром ANL A, direct 55,da (A) ←(A) AND (direct) 1 ANL A,@R0 56 (A) ←(A) AND ((R0)) 1 Логическое “И” А с косвенно адресуемым регистром ANL A,@R1 57 (A) ←(A) AND ((R1)) 1 Логическое “И” А с константой ANL A, #data 54,dt (A) ←(A) AND #data 1 Логическое “И” прямо адресуемого регистра с А ANL direct, A 52,da (direct) ←(direct) AND (A) 1 Логическое “И” прямо адресуемого регистра с константой ANL direct, #data 53,da,dt (direct) ←(direct) AND #data 2 ORL A,R0 48 (A) ←(A) OR (R0) 1 ORL A,R1 49 (A) ←(A) OR (R1) 1 ORL A,R2 4A (A) ←(A) OR (R2) 1 ORL A,R3 4B (A) ←(A) OR (R3) 1 ORL A,R4 4C (A) ←(A) OR (R4) 1 ORL A,R5 4D (A) ←(A) OR (R5) 1 ORL A,R6 4E (A) ←(A) OR (R6) 1 Логическое “ИЛИ” А с РОН ORL A,R7 4F (A) ←(A) OR (R7) 1 Логическое “ИЛИ” А с прямо адресуемым регистром ORL A, direct 45,da (A) ←(A) OR (direct) 1 ORL A,@R0 46 (A) ←(A) OR ((R0)) 1 Логическое “ИЛИ” А с косвенно адресуемым регистром ORL A,@R1 47 (A) ←(A) OR ((R1)) 1 Логич еское “ИЛИ” А с константой ORL A, #data 44,dt (A) ←(A) OR #data 1 Логическое “ИЛИ” прямо адресуемого регистра с А ORL direct, A 42,da (direct) ←(direct)OR(A) 1 Логическое “ИЛИ” прямо адресуемого регистра с константой ORL direct, #data 43,da,dt (direct) ←(direct) OR #data 2 ============================================================================= B-4 ===================================== Справочник по программированию «Bascom-8051» == Действие команды Мнемоническое обозначение КОП (16) Описание Кол. циклов Логические операции (продолжение) XRL A,R0 68 (A) ←(A) XOR (R0) 1 XRL A,R1 69 (A) ←(A) XOR (R1) 1 XRL A,R2 6A (A) ←(A) XOR (R2) 1 XRL A,R3 6B (A) ←(A) XOR (R3) 1 XRL A,R4 6C (A) ←(A) XOR (R4) 1 XRL A,R5 6D (A) ←(A) XOR (R5) 1 XRL A,R6 6E (A) ←(A) XOR (R6) 1 Исключающее “ИЛИ” А с РОН XRL A,R7 6F (A) ←(A) XOR (R7) 1 Исключающее “ИЛИ” А с прямо адресуемым регистром XRL A, direct 65,da (A) ←(A) XOR (direct) 1 XRL A,@R0 66 (A) ←(A) XOR ((R0)) 1 Исключающее “ИЛИ” А с косвенно адресуемым регистром XRL A,@R1 67 (A) ←(A) XOR ((R1)) 1 Исключающее “ИЛИ” А с константой XRL A, #data 64,dt (A) ←(A) XOR #data 1 Исключающее “ИЛИ” прямо адресуемого регистра с А XRL direct, A 62,da (drect) ←(direct)XOR (A) 1 Исключающее “ИЛИ” прямо адресуемого регистра с константой XRL direct, #data 63,da,dt (direct) ←(direct) XOR #data 2 Очистка А CLR A E4 (A) ←0 1 Инвертирование А CPL A F4 (A) ← NOT (A) 1 Сдвиг А влево RL A 23 (A n+1 ) ←(A n ) (A 0 ) ←(A 7 ), n=0..6 1 Сдвиг А влево через перенос RLC A 33 (A n+1 ) ←(A n ) (A 0 ) ←(C), n=0..6 (C) ←(A 7 ) 1 Сдвиг А вправо RR A 03 (A n ) ←(A n+1 ) (A 7 ) ←(A 0 ), n=0..6 1 Сдвиг А вправо через перенос RRC A 13 (A n ) ←(A n+1 ) (A 7 ) ←(C), n=0..6 (C) ←(A 0 ) 1 Перестановка полубайтов А SWAP A C4 (A 3..0 )↔(A 7..4 ) 1 A A C A A C ============================================================================= B-5 ===================================== Справочник по программированию «Bascom-8051» == Действие команды Мнемоническое обозначение КОП (16) Описание Ко л. цикло в C Команды битовой обработки (команды логического процессора) Установка переноса SETB C D3 (C) ←1 1 + Установка бита SETB bit D2,bit (bit) ←1 1 Сброс переноса CLR C C3 (C) ←0 1 0 Сброс бита CLR bit C2,bit (bit) ←0 1 Загрузка переноса битом MOV C, bit A2,bit (C) ←(bit) 1 + Загрузка бита переносом MOV bit, C 92,bit (bit) ←(C) 2 ANL C, bit 82,bit (C) ←(C)AND(bit) 2 + Логическое «И» с битом переносом ANL C, /bit B0,bit (C) ←(C)AND NOT(bit) 2 + ORL C, bit 72,bit (C) ←(C) OR (bit) 2 + Логическое «ИЛИ» с битом переносом ORL C, /bit A0,bit (C) ←(C)OR NOT(bit) 2 + JZ rel 60,rel Если А=0 PC ←PC+2+rel 2 - Тестирование бита Z JNZ rel 70,rel Если А ≠0 PC ←PC+2+rel 2 - JC rel 40,rel Если C=1 PC ←PC+2+rel 2 Тестирование переноса JNC rel 50,rel Если C=0 PC ←PC+2+rel 2 JB bit, rel 20,bit,rel Если bit=1 PC ←PC+3+rel 2 JNB bit, rel 30,bit,rel Если bit=0 PC ←PC+3+rel 2 Тестирование битов JBC bit, rel 10,bit,rel Если bit=C PC ←PC+3+rel , bit=0 2 Инверсия бита CPL bit B2,bit (bit) ←NOT(bit) 1 Инверсия переноса CPL C B3 (C) ←NOT(C) 1 + ============================================================================= B-6 ===================================== Справочник по программированию «Bascom-8051» == Флаги цик л Действие команды Мнемоническое обозначение КОП (16) Описание С OV AC Команды арифметических операций ADD A, R0 28 (A) ←(A)+(R0) + + + 1 ADD A, R1 29 (A) ←(A)+(R1) + + + 1 ADD A, R2 2A (A) ←(A)+(R2) + + + 1 ADD A, R3 2B (A) ←(A)+(R3) + + + 1 ADD A, R4 2C (A) ←(A)+(R4) + + + 1 ADD A, R5 2D (A) ←(A)+(R5) + + + 1 ADD A, R6 2E (A) ←(A)+(R6) + + + 1 Сложение аккумулятора с РОН ADD A, R7 2F (A) ←(A)+(R7) + + + 1 Сложение аккумулятора с прямо адресуемым регистром ADD A, direct 25,da (A) ←(A)+(direct) + + + 1 ADD A, @R0 26 (A) ←(A)+((R0)) + + + 1 Сложение аккумулятора с косвенно адресуемым регистром ADD A, @R1 27 (A) ←(A)+((R1)) + + + 1 Сложение аккумулятора с константой ADD A, #data 24,dt (A) ←(A)+#data + + + 1 ADDC A, R0 38 (A) ←(A)+(C)+(R0) + + + 1 ADDC A, R1 39 (A) ←(A)+(C)+(R1) + + + 1 ADDC A, R2 3A (A) ←(A)+(C)+(R2) + + + 1 ADDC A, R3 3B (A) ←(A)+(C)+(R3) + + + 1 ADDC A, R4 3C (A) ←(A)+(C)+(R4) + + + 1 ADDC A, R5 3D (A) ←(A)+(C)+(R5) + + + 1 ADDC A, R6 3E (A) ←(A)+(C)+(R6) + + + 1 Сложение аккумулятора с РОН с учетом переноса ADDC A, R7 3F (A) ←(A)+(C)+(R7) + + + 1 Сложение аккумулятора с прямо адресуемым регистром с учетом переноса ADDC A, direct 35,da (A) ←(A)+(C)+(direct) + + + 1 ADDC A, @R0 36 (A) ←(A)+(C)+((R0)) + + + 1 Сложение аккумулятора с косвенно адресуемым регистром с учетом переноса ADDC A, @R1 37 (A) ←(A)+(C)+((R1)) + + + 1 Сложение аккумулятора с константой с учетом переноса ADDC A, #data 34,dt (A) ←(A)+(C)+#data + + + 1 SUBB A, R0 98 (A) ←(A)-(C)-(R0) + + + 1 SUBB A, R1 99 (A) ←(A)-(C)-(R1) + + + 1 SUBB A, R2 9A (A) ←(A)-(C)-(R2) + + + 1 SUBB A, R3 9B (A) ←(A)-(C)-(R3) + + + 1 SUBB A, R4 9C (A) ←(A)-(C)-(R4) + + + 1 SUBB A, R5 9D (A) ←(A)-(C)-(R5) + + + 1 SUBB A, R6 9E (A) ←(A)-(C)-(R6) + + + 1 Вычитание от аккумулятора C (заема) и РОН SUBB A, R7 9F (A) ←(A)-(C)-(R7) + + + 1 Вычитание от аккумулятора C (заема) и прямо адресуемого регистра SUBB A, direct 95,da (A) ←(A)-(C)-(direct) + + + 1 SUBB A, @R0 96 (A) ←(A)-(C)-((R0)) + + + 1 Вычитание от аккумулятора C (заема) и косвенно адресуемого регистра SUBB A, @R1 97 (A) ←(A)-(C)-((R1)) + + + 1 Вычитание от аккумулятора C (заема) и константы SUBB A, #data 94,dt (A) ←(A)-(C)-#data + + + 1 ============================================================================= B-7 |