Список используемых источников
1 Граф Р., Шиитс В. Энциклопедия электронных схем. - М.: ДМК, 2001 - 385с.;
2 Угрюмов Е. Цифровая схемотехника. – СПБ.: БХВ-Петербург, 2002. – 528с.;
3 Степаненко И.П. Основы микроэлектроники: учеб. пособие для вузов.-2-е изд. перераб. и доп. - М.: Лаборатория базовых знаний, 2000 – 488 с.;
4 http://www.condor.com.ru
5 http://www.micom.net.ru
6 http://ru.wikipedia.org
7 Андреев Д.В. Программирование микроконтроллеров MCS-51.: Учеб. Пособие – Ульяновск: УлГТУ, 2000 – 88с.
8 Логинов А.В. Программирование микро-ЭВМ семейства МК51: Учеб. Пособие. – СПб.: Балт. гос. тех. ун-т, 1996 – 72с.;
9 Горфинкель В.Я., Купрякова Е.М. "Экономика предприятия". М.: «Юнит», 1996г
10 ГОСТ Р 50775-95 "Системы тревожной сигнализации. Общие требования. Общие положения".
11 ГОСТ Р 50776-95 "Системы тревожной сигнализации. Общие требования. Руководство по проектированию, монтажу и тех обслуживанию".
12 ГОСТ Р 51241-99 "Средства и системы контроля и управления доступом. Общие технические требования и методы испытаний".
13 Инструкция по применению и испытанию средств защиты, используемых в Эл. установках. СПб.: 2004
14 ПУЭ Правила устройства электроустановок. М.: «Энергоатомиздат», 1998.
15 А. Д. Шишкин. Методическое пособие для выполнения дипломного и курсового проектирования. СПб,-2008. изд. РГГМУ.
Приложение А
Система команд микроконтроллера семейства 8051.
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Пересылка в аккумулятор из регистра (n=0÷7) | MOV A, Rn | 11101rrr | 1 | 1 | 1 | (A) ¬ (Rn) |
Пересылка в аккумулятор прямоадресуемого байта | MOV A, ad | 11100101 | 3 | 2 | 1 | (A) ¬ (ad) |
Пересылка в аккумулятор байта из РПД (i=0,1) | MOV A, @Ri | 1110011i | 1 | 1 | 1 | (A) ¬ ((Ri)) |
Загрузка в аккумулятор константы | MOV A, #d | 01110100 | 2 | 2 | 1 | (A) ¬ #d |
Пересылка в регистр из аккумулятора | MOV Rn, A | 11111rrr | 1 | 1 | 1 | (Rn) ¬ (A) |
Пересылка в регистр прямоадресуемого байта | MOV Rn, ad | 10101rrr | 3 | 2 | 2 | (Rn) ¬ (ad) |
Загрузка в регистр константы | MOV Rn, #d | 01111rrr | 2 | 2 | 1 | (Rn) ¬ #d |
Пересылка по прямому адресу аккумулятора | MOV ad, A | 11110101 | 3 | 2 | 1 | (ad) ¬ (A) |
Пересылка по прямому адресу регистра | MOV ad, Rn | 10001rrr | 3 | 2 | 2 | (ad) ¬ (Rn) |
Пересылка прямоадресуемого байта по прямому адресу | MOV add, ads | 10000101 | 9 | 3 | 2 | (add) ¬ (ads) |
Пересылка байта из РПД по прямому адресу | MOV ad, @Ri | 1000011i | 3 | 2 | 2 | (ad) ¬ ((Ri)) |
Пересылка по прямому адресу константы | MOV ad, #d | 01110101 | 7 | 3 | 2 | (ad) ¬ #d |
Пересылка в РПД из аккумулятора | MOV @Ri, A | 1111011i | 1 | 1 | 1 | ((Ri)) ¬ (A) |
Пересылка в РПД прямоадресуемого байта | MOV @Ri, ad | 0110011i | 3 | 2 | 2 | ((Ri)) ¬ (ad) |
Пересылка в РПД константы | MOV @Ri, #d | 0111011i | 2 | 2 | 1 | ((Ri)) ¬ #d |
Загрузка указателя данных | MOV DPTR, #d16 | 10010000 | 13 | 3 | 2 | (DPTR) ¬ #d16 |
Пересылка в аккумулятор байта из ПП | MOVC A, @A+DPTR | 10010011 | 1 | 1 | 2 | ¬ ((A) +(DPTR)) |
Пересылка в аккумулятор байта из ПП | MOVC A, @A+PC | 10000011 | 1 | 1 | 2 | (PC) ¬ (PC)+1, (A) ¬ ((A)+(PC)) |
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Пересылка в аккумулятор байта из ВПД | MOVX A, @Ri | 1110001i | 1 | 1 | 2 | (A) ¬ ((Ri)) |
Пересылка в аккумулятор байта из расширенной ВПД | MOVX A,@DPTR | 11100000 | 1 | 1 | 2 | (A) ¬ ((DPTR)) |
Пересылка в ВПД из аккумулятора | MOVX @Ri, A | 1111001i | 1 | 1 | 2 | ((Ri)) ¬ (A) |
Пересылка в расширенную ВПД из аккумулятора | MOVX @DPTR,A | 11110000 | 1 | 1 | 2 | ((DPTR)) ¬ (A) |
Загрузка в стек | PUSH ad | 11000000 | 3 | 2 | 2 | (SP) ¬ (SP) + 1, ((SP)) ¬ (ad) |
Извлечение из стека | POP ad | 11010000 | 3 | 2 | 2 | (ad) ¬ (SP), (SP) ¬ (SP) - 1 |
Обмен аккумулятора с регистром | XCH A, Rn | 11001rrr | 1 | 1 | 1 | (A) ↔ (Rn) |
Обмен аккумулятора с прямоадресуемым байтом | XCH A, ad | 11000101 | 3 | 2 | 1 | (A) ↔ (ad) |
Обмен аккумулятора с байтом из РПД | XCH A, @Ri | 1100011i | 1 | 1 | 1 | (A) ↔ ((Ri)) |
Обмен младших тетрад аккумулятора и байта РПД | XCHD A, @Ri | 1101011i | 1 | 1 | 1 | (A0…3) ↔((Ri)0…3) |
Сложение аккумулятора с регистром (n=0÷7) | ADD A, Rn | 00l01rrr | 1 | 1 | 1 | (A) ¬ (A) + (Rn) |
Сложение аккумулятора с прямоадресуемым байтом | ADD A, ad | 00100101 | 3 | 2 | 1 | (A) ¬ (A) + (ad) |
Сложение аккумулятора с байтом из РПД (i = 0,1) | ADD A, @Ri | 0010011i | 1 | 1 | 1 | (A) ¬ (A) + ((Ri)) |
Сложение аккумулятора с константой | ADD A, #d | 00100100 | 2 | 2 | 1 | (A) ¬ (A) + #d |
Сложение аккумулятора с регистром и переносом | ADDC A, Rn | 00111rrr | 1 | 1 | 1 | (A) ¬ (A) + (Rn) + (C) |
Сложение аккумулятора с прямоадресуемым байтом и переносом | ADDC A, ad | 00110101 | 3 | 2 | 1 | (A) ¬ (A) + (ad) + (C) |
Сложение аккумулятора с байтом из РПД и переносом | ADDC A, @Ri | 0011011i | 1 | 1 | 1 | (A) ¬ (A) + ((Ri)) + (C) |
Сложение аккумулятора с константой и переносом | ADDC A, #d | 00110100 | 2 | 2 | 1 | (A) ¬ (A) + # d + (C) |
Десятичная коррекция аккумулятора | DAA | 11010100 | 1 | 1 | 1 | Если (А0…3)>9 или ((AC)=1),то(А0…3)¬ (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) ¬ (А4…7) + 6 |
Вычитание из аккумулятора регистра и заёма | SUBB A, Rn | 10011rrr | 1 | 1 | 1 | (A) ¬ (A) - (C) - (Rn) |
Вычитание из аккумулятора прямоадресуемого байта и заема | SUBB A, ad | 10010101 | 3 | 2 | 1 | (A) ¬ (A) - (C) - ((ad)) |
Вычитание из аккумулятора байта РПД и заема | SUBB А, @Ri | 1001011i | 1 | 1 | 1 | (A) ¬ (A) - (C) - ((Ri)) |
Вычитание из аккумулятора константы и заема | SUBB А, d | 10010100 | 2 | 2 | 1 | (A) ¬ (A) - (C) - #d |
Инкремент аккумулятора | INC А | 00000100 | 1 | 1 | 1 | (A) ¬ (A) + 1 |
Инкремент регистра | INCRn | 00001rrr | 1 | 1 | 1 | (Rn) ¬ (Rn) + 1 |
Инкремент прямоадресуемого байта | INC ad | 00000101 | 3 | 2 | 1 | (ad) ¬ (ad) + 1 |
Инкремент байта в РПД | INC @Ri | 0000011i | 1 | 1 | 1 | ((Ri)) ¬ ((Ri)) + 1 |
Инкремент указателя данных | INC DPTR | 10100011 | 1 | 1 | 2 | (DPTR ) ¬ (DPTR) + 1 |
Декремент аккумулятора | DECA | 00010100 | 1 | 1 | 1 | (A) ¬ (A) – 1 |
Декремент регистра | DEC Rn | 00011rrr | 1 | 1 | 1 | (Rn) ¬ (Rn) – 1 |
Декремент прямоадресуемого байта | DEC ad | 00010101 | 3 | 2 | 1 | (ad) ¬ (ad) – 1 |
Декремент байта в РПД | DEC @Ri | 0001011i | 1 | 1 | 1 | ((Ri)) ¬ ((Ri)) - 1 |
Умножение аккумулятора на регистр В | MUL AB | 10100100 | 1 | 1 | 4 | (B)(A) ¬ (A)*(В) |
Деление аккумулятора на регистр В | DIV AB | 10000100 | 1 | 1 | 4 | (B).(A) ¬ (A)/(В) |
Логическое И аккумулятора и регистра | ANL A, Rn | 01011rrr | 1 | 1 | 1 | (A) ¬ (A) AND (Rn) |
Логическое И аккумулятора и прямоадресуемого байта | ANL A, ad | 01010101 | 3 | 2 | 1 | (A) ¬ (A) AND (ad) |
Логическое И аккумулятора и байта из РПД | ANL A, @Ri | 0101011i | 1 | 1 | 1 | (A) ¬ (A) AND ((Ri)) |
Логическое И аккумулятора и константы | ANL A, #d | 01010100 | 2 | 2 | 1 | (A) ¬ (A) AND #d |
Логическое И прямоадресуемого байта и аккумулятора | ANL ad, A | 01010010 | 3 | 2 | 1 | (ad) ¬ (ad) AND (A) |
Логическое И прямоадресуемого байта и константы | ANL ad, #d | 01010011 | 7 | 3 | 2 | (ad) ¬ (ad) AND #d |
Логическое ИЛИ аккумулятора и регистра | ORL A, Rn | 01001rrr | 1 | 1 | 1 | (A) ¬ (A) OR (Rn) |
Логическое ИЛИ аккумулятора и прямоадресуемого байта | ORL A, ad | 01000101 | 3 | 2 | 1 | (A) ¬ (A) OR (ad) |
Логическое ИЛИ аккумулятора и байта из РПД | ORL A, @Ri | 0100011i | 1 | 1 | 1 | (A) ¬ (A) OR ((Ri)) |
Логическое ИЛИ аккумулятора и константы | ORL A, #d | 01000100 | 2 | 2 | 1 | (A) ¬ (A) OR #d |
Логическое ИЛИ прямоадресуемого байта и аккумулятора | ORL ad, A | 01000010 | 3 | 2 | 1 | (ad) ¬ (ad) OR (A) |
Логическое ИЛИ прямоадресуемого байта и константы | ORL ad, #d | 01000011 | 7 | 3 | 2 | (ad) ¬ (ad) OR #d |
Исключающее ИЛИ аккумулятора и регистра | XRL A, Rn | 01101rrr | 1 | 1 | 1 | (A) ¬ (A) XOR (Rn) |
Исключающее ИЛИ аккумулятора и прямоадресуемого байта | XRL A, ad | 01100101 | 3 | 2 | 1 | (A) ¬ (A) XOR (ad) |
Исключающее ИЛИ аккумулятора и байта из РПД | XRL A, @Ri | 0110011i | 1 | 1 | 1 | (A) ¬ (A) XOR ((Ri)) |
Исключающее ИЛИ аккумулятора и константы | XRL A, #d | 01100100 | 2 | 2 | 1 | (A) ¬ (A) XOR #d |
Исключающее ИЛИ прямоадресуемого байта и аккумулятора | XRL ad, A | 01100010 | 3 | 2 | 1 | (ad) ¬ (ad) XOR (A) |
Исключающее ИЛИ прямоадресуемого байта и константы | XRL ad, #d | 01100011 | 7 | 3 | 2 | (ad) ¬ (ad) XOR #d |
Сброс аккумулятора | CLRA | 11100100 | 1 | 1 | 1 | (A) ¬ 0 |
Инверсия аккумулятора | CPL A | 11110100 | 1 | 1 | 1 | (A) ¬ NOT(A) |
Сдвиг аккумулятора влево циклический | RL A | 00100011 | 1 | 1 | 1 | (An+1) ¬ (An), n=0÷6, (A0) ¬ (A7) |
Сдвиг аккумулятора влево через перенос | RLC A | 00110011 | 1 | 1 | 1 | (An+1) ¬ (An), n=0÷6(A0) ¬ (C), (C) ¬(A7) |
Сдвиг аккумулятора вправо циклический | RR A | 00000011 | 1 | 1 | 1 | (An) ¬ (An+1), n=0÷6, (A7) ¬ (A0) |
Сдвиг аккумулятора вправо через перенос | RRC A | 00010011 | 1 | 1 | 1 | (An) ¬ (An+1), n=0÷6(A7) ¬ (C), (C) ¬(A0) |
Обмен местами тетрад в аккумуляторе | SWAP A | 11000100 | 1 | 1 | 1 | (A0…3) ↔ (A4…7) |
Сброс переноса | CLR С | 11000011 | 1 | 1 | 1 | (C) ¬ 0 |
Сброс бита | CLRbit | 11000010 | 4 | 2 | 1 | (b) ¬ 0 |
Установка переноса | SETB С | 11010011 | 1 | 1 | 1 | (C) ¬ 1 |
Установка бита | SETBbit | 11010010 | 4 | 2 | 1 | (b) ¬ 1 |
Инверсия переноса | CPL С | 10110011 | 1 | 1 | 1 | (C) ¬ NOT(C) |
Инверсия бита | CPLbit | 10110010 | 4 | 2 | 1 | (b) ¬ NOT(b) |
Логическое И бита и переноса | ANL С, bit | 10000010 | 4 | 2 | 2 | (C) ¬ (C) AND (b) |
Логическое И инверсии бита и переноса | ANL С, /bit | 10110000 | 4 | 2 | 2 | (C) ¬ (C) AND (NOT(b)) |
Логическое ИЛИ бита и переноса | ORL С, bit | 01110010 | 4 | 2 | 2 | (C) ¬ (C) OR (b) |
Логическое ИЛИ инверсии бита и переноса | ORL С, /bit | 10100000 | 4 | 2 | 2 | (C) ¬ (C) OR (NOT(b)) |
Пересылка бита в перенос | MOV С, bit | 10100010 | 4 | 2 | 1 | (C) ¬ (b) |
Пересылка переноса в бит | MOV bit, С | 10010010 | 4 | 2 | 2 | (b) ¬ (C) |
Длинный переход в полном объеме ПП | LJMP ad16 | 00000010 | 12 | 3 | 2 | (PC) ¬ ad16 |
Абсолютный переход внутри страницы в 2 Кб | AJMP ad11 | a10a9a800001 | 6 | 2 | 2 | (PC) ¬ (PC) + 2, (PC0-10) ¬ ad11 |
Короткий относительный переход внутри страницы в 256 байт | SJMP rel | 10000000 | 5 | 2 | 2 | (PC) ¬ (PC) + 2, (PC) ¬ (PC) +rel |
Косвенный относительный переход | JMP @A+DPTR | 01110011 | 1 | 1 | 2 | (PC) ¬ (A) + (DPTR) |
Переход, если аккумулятор равен нулю | JZ rel | 01100000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (A)=0, то (PC)¬(PC)+rel |
Переход, если аккумулятор не равен нулю | JNZ rel | 01110000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (A)≠0, то (PC)¬(PC)+rel |
Переход, если перенос равен единице | JCrel | 01000000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (С)=1, то (PC)¬(PC)+rel |
Переход, если перенос равен нулю | JNCrel | 01010000 | 5 | 2 | 2 | (PC)¬(PC)+2, если (С)=0, то (PC)¬(PC)+rel |
Переход, если бит равен единице | JB bit, rel | 00100000 | 11 | 3 | 2 | (PC)¬(PC)+3, если (b)=l, то (PC)¬(PC)+rel |
Переход, если бит равен нулю | JNB bit, rel | 00110000 | 11 | 3 | 2 | (PC)¬(PC)+3, если (b)=0, то (PC)¬(PC)+rel |
Переход, если бит установлен, с последующим сбросом бита | JBC bit, rel | 00010000 | 11 | 3 | 2 | (PC) ¬ (PC) + 3, если (b)=1, то (b) ¬ 0 и (PC)¬ (PC) + rel |
Декремент регистра и переход, если не нуль | DJNZ Rn, rel | 11011rrr | 5 | 2 | 2 | (PC) ¬ (PC) + 2, (Rn) ¬ (Rn) - 1,если (Rn) ≠ 0, то (PC) ¬ (PC) + rel |
Декремент прямоадресуемого байта и переход, если не нуль | DJNZ ad, rel | 11010101 | 8 | 3 | 2 | (PC) ¬ (PC) + 2, (ad) ¬ (ad) - 1, если (ad) ≠ 0, то (PC) ¬ (PC) + rel |
Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно | CJNE A, ad, rel | 10110101 | 8 | 3 | 2 | (PC) ¬ (PC) + 3,если (A) ≠ (ad), то (PC) ¬ (PC) + rel,если (A) < (ad), то (C) ¬ 1, иначе (C) ¬ 0 |
Сравнение аккумулятора с константой и переход, если не равно | CJNE A, #d, rel | 10110100 | 10 | 3 | 2 | (PC) ¬ (PC) + 3,если (A) ≠ #d, то (PC) ¬ (PC) + rel,если (A) < #d, то (C) ¬ 1, иначе (С) ¬ 0 |
Сравнение регистра с константой и переход, если не равно | CJNE Rn, #d, rel | 10111rrr | 10 | 3 | 2 | (PC) ¬ (PC) + 3,если (Rn) ≠ #d, то (PC) ¬ (PC) + rel,если (Rn) < #d, то (C) ¬ 1, иначе (С) ¬ 0 |
Сравнение байта в РПД с константой и переход, если не равно | CJNE @Ri,#d,rel | 1011011i | 10 | 3 | 2 | (PC) ¬ (PC) + 3,если ((Ri)) ≠ #d, то (PC) ¬ (PC) + rel,если ((Ri)) < #d, то (C) ¬ 1, иначе (C) ¬ 0 |
Длинный вызов подпрограммы | LCALL adl6 | 00010010 | 12 | 3 | 2 | (PC) ¬ (PC) + 3, (SP) ¬ (SP) +1,((SP)) ¬ (PC0…7), (SP) ¬ (SP) + 1,((SP)) ¬ (PC8…15), (PC) ¬ ad16 |
Абсолютный вызов подпрограммы в пределах страницы в 2 Кб | ACALL ad11 | a10a9a810001 | 6 | 2 | 2 | (PC) ¬ (PC) + 2, (SP) ¬ (SP) + 1,((SP)) ¬ (PC0…7), (SP) ¬ (SP) + 1,((SP)) ¬ (PC8…15), (PC0-10) ¬ ad11 |
Возврат из подпрограммы | RET | 00100010 | 1 | 1 | 2 | (PC8…15) ¬ ((SP)), (SP) ¬ (SP) - 1,(PC0…7) ¬ ((SP)), (SP) ¬ (SP) – 1 |
Возврат из подпрограммы обработки прерывания | RETI | 00110010 | 1 | 1 | 2 | (PC8…15) ¬ ((SP)), (SP) ¬ (SP) - 1,(PC0…7) ¬ ((SP)), (SP) ¬ (SP) – 1 |
Пустая операция | NOP | 00000000 | 1 | 1 | 1 | (PC) ¬ (PC) + 1 |
Приложение Б