8-900-374-94-44
[email protected]
Slide Image
Меню

Mcs 51: Моисейкин_Микроконтроллеры.indd

Моисейкин_Микроконтроллеры.indd

%PDF-1.3 % 1 0 obj >]/Pages 3 0 R/Type/Catalog/ViewerPreferences>>> endobj 2 0 obj >stream 2017-09-19T12:36:48+05:00 2017-09-19T12:37:02+05:00 2017-09-19T12:37:02+05:00 Adobe InDesign CS6 (Windows) uuid:58b9ea3a-da84-4449-827c-7efa2e02eefb xmp.did:A3EFBA1FB752E4118BF5AA137F15CC0C xmp.id:0094412B069DE711B1FFCA7326EF1CAA proof:pdf 1 xmp.iid:FE93412B069DE711B1FFCA7326EF1CAA xmp.did:A7EFBA1FB752E4118BF5AA137F15CC0C xmp.did:A3EFBA1FB752E4118BF5AA137F15CC0C default

  • converted from application/x-indesign to application/pdf Adobe InDesign CS6 (Windows) / 2017-09-19T12:36:48+05:00
  • application/pdf
  • Моисейкин_Микроконтроллеры.indd
  • Adobe PDF Library 10.0.1 False PDF/X-1:2001 PDF/X-1:2001 PDF/X-1a:2001 endstream endobj 3 0 obj > endobj 6 0 obj > endobj 7 0 obj > endobj 8 0 obj > endobj 9 0 obj > endobj 10 0 obj > endobj 31 0 obj > endobj 32 0 obj > endobj 33 0 obj > endobj 34 0 obj > endobj 35 0 obj > endobj 36 0 obj > endobj 37 0 obj > endobj 38 0 obj > endobj 74 0 obj >/Font>/ProcSet[/PDF/Text]>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 75 0 obj >/Font>/ProcSet[/PDF/Text]>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 76 0 obj >/Font>/ProcSet[/PDF/Text]/Properties>>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 77 0 obj >/Font>/ProcSet[/PDF/Text]/Properties>>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 78 0 obj >/Font>/ProcSet[/PDF/Text]>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 79 0 obj >/Font>/ProcSet[/PDF/Text]/Properties>>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 80 0 obj >/Font>/ProcSet[/PDF/Text]>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 81 0 obj >/Font>/ProcSet[/PDF/Text]>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 82 0 obj >/Font>/ProcSet[/PDF/Text]>>/TrimBox[0.0 0.0 481.89 680.315]/Type/Page>> endobj 114 0 obj >stream HUMO1G#Ucg_E(ĉW--HQ;3g B!מy͛2[l·>!8i0 eoVf#@?O#F7DZvыgɂ% Kc{GQsЗ[email protected]=JAh5ǭ!B_xS]MXOa**PAuߠIO{(Z`^`.ϮhqnpuX9}}[email protected]ԃDYS^% LY̔EAe$49 zhF0^!:#;3*e]i8=qRjG9:[email protected] :ظ`ul.a!KlԾPPJeF+/[email protected]#\U(.*Mc=,0;.blS`i-'QwNIoT~ҔO\ v{g γ;\C9r'ϓiQDFљC[m;eX2aNz;F:@'4%\&cC.7m/(aϾU揮UC5= [email protected],e8v.Bn 06CFa3*7 Zϋ"ki.*\f,7b?7I-^;ci;4/Aa|aBl\ZeR` 5WyԈ)(T{kwo QFHgZ,bt=".=z)IGu"pii`!SX,sZ ܼ2"a Obq[o]S

    Пишем и парсим на ассемблере MCS-51, как на Бейсике / Хабр
    Доброго времени суток, уважаемые.

    В свободное от работы время увлекаюсь программированием микроконтроллеров, на ассемблере. Пока вожусь в основном со всякими PIC(12,16) и AVR, но и MCS-51 не брезгую, тем более что именно с них я собственно и начал. Уровень мой — «вечно начинающий». Это типа светодиодиком уже умею мигать, даже по таймеру.

    Сейчас поставил себе задачу написать программу для взаимодействия с GSM модулем SIM900. Для этого необходимо уметь слать что-то в UART, и принимать что-то оттуда.

    По грамотному на все это дело заводится 2 кольцевых буфера: на прием, и на передачу. Вроде как классика жанра, ничего нового не придумаешь. Но я такой человек, что не люблю костыли, но при этом обожаю велосипеды. Захотелось придумать свой. Итак:

    1. У меня не мультизадачная система, предполагаеться отправка 1 команды в модуль, затем ожидание 1 ответа. А значит отправку уже можно делать не на прерываниях, а просто в основном цикле. Обойдемся без буфера на отправку.

    2. Ответ от модуля меня устраивает только один (хотя если проверять например уровень сигнала, это уже не так), и я ожидаю, каким он должен быть. Поэтому я решил обойтись без буфера и парсить тоже прямо в основном цикле.

    3. И чтобы все было удобно и красиво, оформить все это дело в макросы.

    Основой моего кода стал пример из статьи «МК для начинающих» из журнала «Радиолюбитель», №3 за 2008г.

    Сперва «печатаем»:

    ; Тип: процедура, вызываемая в макросе
    ; Передаваемые параметры: String,Destiny_
    ; Возвращаемое значение: отсутствует
    
    ; Данная процедура позволяет строчить как на Бейсике, примеры:
    ; Print	'First string',UART	; Вывод в UART
    ; Print	'Second string',LCD     ; Вывод на LCD
    
    UART 	equ	0
    LCD	equ	1
    
    Print	macro	String;,Destiny_	; String - строка для вывода, Destiny_ - пункт назначения: Display или UART
    	mov     destiny,#Destiny_
    	call	Output                  ; При вызове процедуры мы автоматически заныкаем в стек адрес следующей команды. По факту это будет адрес 1 символа строки
    	db	String,0Dh,0Ah,0
    	endm
    
    Print_data	segment data
    rseg		Print_data
    destiny:	ds      1
    
    Print_code	segment code
    rseg		Print_code
    
    Output:                                 ; Описываем процедуру, вызываемую из макроса
    	pop	DPH			; Извлекаем из стека в DPTR адрес возврата,
    	pop	DPL                     ; он понадобится нам в дальнейшем
    Loop_Output:
    	clr	A
    	movc	A,	@A+DPTR		; Получаем очередной символ из строки
    	inc	DPTR			; Сразу берем следующий символ
    	jnz	Output_Symbol		; Если не конец строки, продолжаем вывод
    	jmp	@A+DPTR                 ; Иначе возврат
    Output_Symbol:
    ;------ Тут выводим очередной символ на дисплей или в UART -------------------------
    	push    ACC                     ; Сохраним содежимое акумулятора, там очередной символ из строки
    	mov     A,	Destiny
    	jz      Out_UART                ; Смотрим пункт назначения строки
    Out_LCD:
    	pop     ACC                     ; Восстановим символ из строки
    	call    Out_2_LCD               ; Выводим на дисплей
    	jmp	Loop_Output		; Повторяем цикл вывода
    Out_UART:
    	pop     ACC                     ; Восстановим символ из строки
    	jnb     TI,	$		; Ждем окончания предыдущей передачи
    	clr	TI                      ; Предыдущий байт ушел, сбросим флаг передачи
    	mov	SBUF,	A		; Отправим байт
    	jmp	Loop_Output		; Повторяем цикл вывода
    

    В сравнении с оригиналом я только добавил возможность вывода в несколько «точек назначения».

    Увидев как получилось просто и красиво, я решил сделать и парсинг подобным образом. Вот что получилось:

    ; Тип: процедура, вызываемая в макросе
    ; Передаваемые параметры: String,Label,waiting_value
    ; Возвращаемое значение: jmp на Label в случае ошибки парсинга String
    
    ; Данная процедура позволяет парсить легко и непринужденно, примеры:
    ; Parsing	'First string',UART_Error,1000	; Ждем строку из UART на протяжении 1000 мс, если ошибка парсинга, переход на метку UART_Error
    ; Parsing	'Second string',UART_Error,0	; Ждем строку из UART, если приходит с ошибкой, переход на метку UART_Error, если не приходит вообще ничего - ждем вечно
    
    Parsing macro   String,Label,waiting_value	; String - строка для сравнения, Label - метка для перехода в случае ошибки, waiting_value - время ожидания каждого символа строки в Х*100 мс (при 11,0592 MHz)
    	mov     parsing_delay,#waiting_value	; Минимальное время ожидания - 100 мс, максимальное - 25,5 сек
    	call	Intput                          ; При вызове процедуры мы автоматически заныкаем в стек адрес следующей команды. По факту это будет адрес 1 символа строки
    	db	String,0Dh,0Ah,0
    	jbc	parsing_error,Label		; Проверяем признак ошибки парсинга
    	endm
    
    Parsing_data	segment data
    rseg		Parsing_data
    parsing_delay:	ds      3
    
    Parsing_bit	segment bit
    rseg		Parsing_bit
    parsing_error:	dbit	1
    
    Parsing_code	segment code
    rseg		Parsing_code
    
    Intput:                                 ; Описываем процедуру, вызываемую из макроса
    	clr     RI                      ; Сбросим признак последнего принятого байта, чтобы всякий мусор принятый до этого момента, не приводил к ошибке парсинга
    	pop	DPH			; Извлекаем из стека в DPTR адрес возврата,
    	pop	DPL                     ; там находиться адрес 1 символа строки
    Loop_Intput:
    	clr	A
    	movc	A,	@A+DPTR		; Получаем очередной символ из строки
    	inc	DPTR			; Сразу берем следующий символ
    	jnz	Wait			; Если не конец строки, проверяем
    	jmp	@A+DPTR                 ; А теперь маленький грязный хак. В DPTR у нас адрес команды после строки, вернемся по этому адресу
    Wait:                                   ; Принимаем и сравниваем полученный символ с символом из строки
    	push    ACC                     ; Сохраним символ из флеша
    	mov     A,	parsing_delay
    	jz	Always_Wait             ; Если задержка ожидания = 0, ждем входящий байт неограничено долго
    	mov	parsing_delay+2,#0
    	mov	parsing_delay+1,#90	; Задержка расчитана на кварц 11,0592 МГц
    Loop_Wait:
    	jb	RI,     Stop_Wait       ; Если принят байт, прекращаем ожидание
    	djnz    parsing_delay+2,Loop_Wait
    	jb	RI,     Stop_Wait
    	djnz    parsing_delay+1,Loop_Wait
    	jb	RI,     Stop_Wait
    	mov	parsing_delay+1,#90     ; Задерка расчитана на кварц 11,0592 МГц
    	djnz    parsing_delay,Loop_Wait	; Цикл ожидания входящего байта
            pop     ACC                     ; Время ожидания байта истекло, восстановливаем АСС
    	jmp	Error_Intput		; Выход по превышению времени парсинга
    Always_Wait:
    	jnb	RI,     $               ; Ждем входящий байт
    Stop_Wait:
    	mov     parsing_delay,SBUF      ; Используем ячейку задержки для сравнения полученого символа с символом из строки
    	clr	RI
    	pop     ACC                     ; Восстановим символ из флеша
    	cjne    A,parsing_delay,Error_Intput ; Если хоть 1 полученный символ не совпал, на выход без восстановления АСС
    	jmp	Loop_Intput		; Иначе повторяем цикл сравнения
    Error_Intput:                          	; Выход по ошибке парсинга, либо превышению времени ожидания
    	clr	A
    	movc	A,	@A+DPTR
    	inc	DPTR
    	jnz	Error_Intput		; Ищем конец строки
    	setb	parsing_error		; Устанавливаем признак ошибки парсинга
    	jmp	@A+DPTR                 ; А теперь маленький грязный хак. В DPTR у нас адрес команды после строки, вернемся по этому адресу
    

    Кварц 11,0592 МГц позволяет «принтить» и парсить строки на скорости 57600 bps прямо в основном цикле без каких-либо пропусков символов. При кварце в 22,1184 Мгц ожидаемо можно будет проделывать аналогичное на скорости 115200 bps.
    12. Логическая организация памяти микроконтроллера mcs-51.

    CSEG - сегмент кода

    DSEG - сегмент данных (внутренний)

    Для стека отводится память, начиная с указателя стека, равного 07h.

    Запись в стек осуществляется по байтам. Стек растет вверх. Область стека контролируется только программистом.

    BSEG - битовый сегмент 256 бит. Адресация в нём происходит байтами. 128 бит - биты регистров специальных функций (SFR)

    XSEG - внешний сегмент данных (64 Кбайт)

    Независима от памяти программ.

    Для работы используется команда MOVX.

    RSEG - регистровый сегмент

    Состоит из 32-х регистров, которые образуют 4 банка по 8 регистров.

    Выбор банка производится через PSW:

    C - флаг переноса. AC - флаг вспомогательного переноса. F0 - флаг 0. Может быть установлен, сброшен или проверен программой как флаг, специфицируемый пользователем.

    RS1 RS0 - выбор банка регистров. OV - флаг переполнения. P - флаг паритета. Устанавливается и сбрасывается аппаратно в каждом цикле команды и фиксирует нечетное/четное число единичных бит в аккумуляторе, т.е. выполняет контроль по четности.

    RS1 RS0 Банк Границы адресов

    0 0 0 00h-07h

    0 1 1 08h-0fh

    1 0 2 10h-17h

    1 1 3 18h-1fh

    RSEG и BSEG находится в DSEG?

    1. 13. Характеристика системы команд микроконтроллера мcs-51. Слово состояния программы, типы данных, способы адресации. Организация ветвлений в программах.

    Система команд МК51 содержит 111 (49 - 1б, 45 - 2б, 17 - 3б) базовых команд, которые можно разделить на 5 групп: команды передачи данных (пересылки), арифметических операций, логических операций, передачи управления и операций с битами.

    Состав операндов МК51: биты, четырёхбитные операнды, байты и 16-битные слова. Четырехбитные операнды используются только при операциях обмена (команды SWAP и XCHD). Восьмибитным операндом может быть ячейка памяти программ или данных (резидентной или внешней), константа (непосредственный операнд), регистры специальных функций (РСФ), а также порты ввода/вывода. Порты и РСФ адресуются только прямым способом. Двухбайтные операнды - это константы и прямые адреса, для представления которых используются второй и третий байты команды.

    PSW – слово состояния программы (регистр состояния), представляет собой набор флагов, показывающих текущее состояние МП. Эти флаги автоматически устанавливаются в «1» или в «0» при наступлении определенных событий (в соответствии с результатом выполнения команд). Флаги:

    1. Знак результата (S) (старший разряд аккумулятора)

    2. Признак нулевого результата (Z).

    3. Перенос (С) при сложении (заем при вычитании). При выполнении операций умножения и деления флаг C сбрасывается.

    4. Паритет (четность) (Р). Если число единичных бит аккумулятора нечетное, то флаг P устанавливается, а если четное - сбрасывается.

    5. Дополнительный перенос между тетрадами (признак коррекции тетрады) (АС).

    6. Переполнение при обработке чисел со знаками (OV). Флаг OV устанавливается, если результат операции сложения/вычитания не укладывается в семи битах и старший (восьмой) бит результата не может интерпретироваться как знаковый. При выполнении операции деления флаг OV сбрасывается, а в случае деления на нуль устанавливается. При умножении флаг OV устанавливается, если результат больше 255.

    7. Признак, используемый для коррекции при вычитании 2-10 чисел по сравнению с коррекцией при сложении (N).

    Способы адресации данных. В МК51 используются такие же способы адресации данных, как и в МК48: прямая, непосредственная, косвенная и неявная. Следует отметить, что при косвенном способе адресации РПД в отличие от МК48 используются все восемь бит адресных регистров R0 и R1.

    Способы адресации:

    1. Регистровая адресация (операнд в регистре).

    2. Непосредственная адресация (операнд в команде).

    3. Прямая адресация (указывается адрес ячейки операнда).

    4. Косвенно-регистровая адресация (в регистре указывается адрес операнда). К этому же типу относится и стековая адресация.

    НУЖНО ЛИ ПРИВОДИТЬ СПИСОК ОПЕРАЦИЙ И ИХ ОПЕРАНДОВ?

    Старые проекты (MCS51, PC) с исходниками | msc51

    1

    2

    3

    12to300.zip

     

    отлаженная схема преобразователя DC 12 В >> DC 300 В, со стабилизацией, в формате ACCEL EDA 14

    adc2.arj

    MCS51

    сервисный интерфейс к пейджинговому передатчику с использованием АЦП AD7858 (восьмиканальный, с последовательным интерфейсом). Там же принципиальная схема в формате Corel Draw 5.

    i2c_sl.arj

    MCS51

    работа микропроцессора AT89C1051 в качестве slave-устройства на шине I2C, но: кривовато, не хватает быстродействия

    at24cxx.arj

    MCS51

    работа с микросхемами энергонезависимой памяти по шине I2C

    lead.arj

    MCS51

    регулятор напряжения для паяльника на AT89C2051 (!..)

    c_loader.arj

    MCS51

    программа загрузчика для самодельного эмулятора 80C31

    24cxx.zip

    Delphi

    программирование микросхем 24Cxx с интерфейсом I2C через порт LPT компьютера

    homefone.arj

    MCS51

    программа для домофона

    hf_bell1.arj

    MCS51

    тоже программа для домофона, но звук ДИН-ДОН генерируется с помощью ШИМ

    kl1.arj

    MCS51 + Delphi

    программатор для микросхем KeeLoq (брелки для автомобильных сигнализаций с прыгающим кодом). Сам программатор выполнен на AT89C2051, работает через RS232 с компьютерной программой.

    brel_prg.zip

     

    принципиальная схема и разводка печатной платы программатора kl1.arj в формате MicroSim Design Center 8

    tele2.arj

    MCS51

    интегрированное управление системой телевизионного наблюдения (поворот камер, управление видеокоммутатором ROBOT).

    t_mdm.zip

     

    принципиальная схема и разводка печатной платы приёмника DTMF для tele2.arj (подключение удалённого пульта управления) в формате Corel Draw 5.

    keybrd7.arj

    MCS51

    удалённый пульт управления для tele2.arj. Сам пульт - обыкновенная PC-клавиатура, подключенная напрямую к AT89C52. Управляющая информация передаётся в линию с помощью DTMF (генерация ШИМ).

    k7.arj

    MCS51 + Delphi

    тот же пульт управления, но реализованный с помощью компьютера. Для передачи информации в кодер DTMF (на AT89C2051) используется RS232.

    driver.arj

    ASM8086

    простой пример написания DOS-драйвера

    ed_pgm.arj

    ASM8086

    редактор основной (conventional) памяти AT-совместимого компьютера

    dtmf.arj

    ASM8086 + Borland C

    генерация DTMF с использованием LPT, ЦАП на резисторах и прерываний таймера

    go_mus.arj

    ASM8086 + Borland C

    проигрывание звуков (wav без заголовков) через LPT и ЦАП на резисторах.

    load_old.arj, loader.arj

    Borland C

    старая и новая версии программы-загрузчика для эмулятора ПЗУ (Borland C). Эмулятор собран с использованием макетной платы, вставляемой в шину ISA, эмуляционная память встраивается в адресное пространство convertional-памяти AT-совместимого компьютера с адреса D0000H.

    prog.arj

    Borland C

    программатор ПЗУ, собранный на той же макетной плате. Но здесь обмен данными уже происходит через порты ввода/вывода

    make_f2.arj

    Borland C

    формирование частотных таблиц для номерных фильтров в программе радиотелефона "Волемот-АРС"

    rs-232.arj

    ASM8086 + Borland C

    работа с портом RS232 через прерывания - чтение данных от мышки

    tst62256.arj

    MCS51

    проверка микросхем статической памяти 62256 с помощью псевдослучайной последовательности

    rd_eepr5.arj

    MCS51

    автономный программатор/считыватель микросхем X24022 (интерфейс I2C). Индикация режимов с помощью азбуки Морзе (!)

    iblock.zip

    MCS51

    электронный замок с использованием ключей-таблеток iButton фирмы Dallas Semiconductor.

    2ton.arj

    MCS51

    пример декодирования DTMF

    3s6.arj, cdr.arj

    MCS51

    приставка для радиотелефона "Алтай-3С", схема и разводка печатной платы приставки в формате Corel Draw 5

    443va12.arj

    MCS51

    программа для радиотелефона "Волемот-АРС"

    aon1.arj

    MCS51

    тоже программа для радиотелефона "Волемот-АРС", но с возможностью изменения АОНа с клавиатуры

    amd.arj, amd1.arj, amd_cdr.arj

    MCS51

    система подключения сигнализации "Vista-10" к компьютеру, схема этой системы в формате Corel Draw 5

    sota.arj, sota1.arj

    MCS51

    подключение сотового телефона NOKIA (аналоговой системы NMT450) к телефонной сети

    imp51.arj, imp52.arjimp_cdr.arj

    MCS51

    приставка для радиотелефона "Волемот-АРС", схема и разводка печатной платы приставки в формате Corel Draw 5

    decoder.zip

    MCS51

    декодирование POCSAG с использованием фазовой подстройки частоты. Этот пример скачан откуда-то из Интернет (не проверял).

    ps9_1.arj, spp-v1_1.zip

    MCS51

    кодер POCSAG, схема и разводка печатной платы кодера POCSAG (ps9_1.arj) в формате MicroSim Design Center 8. В эпоху популярности пейджинга этот кодер трудился в Калуге, в Обнинске и в Останкино (Москва).

    r20.arj, eh_filtr.arj

    MCS51

    пейджинговый ретранслятор, расчёт низкочастотного фильтра для пейджингового ретранслятора

    r10a.zip

     

    схема и разводка печатной платы пейджингового ретранслятора r20.arj в формате ACCEL EDA 14

    repit10.zip, compar.zip

     

    то же самое, но в формате MicroSim Design Center 8

    testbch4.arj

    Delphi

    проверка работы алгоритма BCH коррекции ошибок пейджингового ретранслятора r20.arj

    tstrs.zip

    Delphi

    тестовая программа для пейджингового ретранслятора r20.arj

    sp.arj, sp8m1.zip

    8080

    программа для радиотелефона "Алтай-СП"

    ats.arj

    MCS51

    старая версия приставки для радиотелефона "Алтай-СП" (импульсный набор цифр)

    prist.arj

    MCS51

    более новая версия приставки для радиотелефона "Алтай-СП" (тональный набор цифр)

    sp_cdr.arj

     

    схема и разводка печатной платы приставки prist.arj в формате Corel Draw 5

    Методы адресации и система команд семейства MCS-51

    39

    Опрос состояния системы прерываний производится в конце каждого машинного цикла в фазе S5P2, за исключением команд RETI и любых команд с обращением к регистрам IE и IP. От момента фиксации запроса на прерывания до обслуживания прерывания требуется от 38 до 86 периодов частоты fOSC , в зависимости от фазы поступления запроса и числа машинных циклов команды, во время выполнения которой поступил запрос.

    При реализации прерывания аппаратным способом выполняется команда LCALL addr16, обеспечивающая запоминание в стеке текущего состояния программного счетчика (запоминание адреса возврата), и переход к стартовому адресу addr16 соответствующей процедуры обслуживания. С каждым источником запроса прерываний связан свой

    стартовый адрес (вектор прерывания):

    ____

    EXTI0

    IE0

    0003h

    Внешнее прерывание INT0.

    TIMER0

    TF0

    000Bh

    Прерывание таймера/счетчика ТС0.

    EXTI1

    IE1

    0013h

    Внешнее прерывание INT1.

    TIMER0

    TF1

    001Bh

    Прерывание таймера/счетчика ТС1.

    SINT

    RI TI

    0023h

    Прерывание последовательного порта.

    Система команд семейства MCS-51 ориентирована на организацию гибкого ввода-вывода данных через универсальные порты P0...P3 и первичную обработку информации. Особое внимание уделено операциям с битами и передаче управления по их значению. Команды, выполняющие такие операции, составляют многочисленную группу и образуют вместе с соответствующими аппаратными средствами так называемый «булев процессор» в составе архитектуры MCS-51.

    Система команд предоставляет программисту возможность использовать большинство операций с полным набором методов адресации и программно-доступных ресурсов аппаратуры.

    2.7.1. Методы адресации

    Каждая команда сообщает процессору выполняемую операцию и методы доступа к операндам. Код команды имеет несколько полей, имеющих определенное функциональное назначение. Важнейшими полями любой команды являются код операции (КОП), определяющий действие команды, и адресная часть. Поля адресной части содержат информацию об адресах операндов и результата операции, а в некоторых случаях информацию об адресе следующей команды.

    Если адрес указывает на номер ячейки памяти, в которой находится или куда заносится операнд , то его называют прямым адресом.

    Методы адресации представляют собой набор механизмов доступа к операндам. Одни из них просты, приводят к компактному формату команды и быстрому доступу к операнду, но имеют ограниченный объем доступных ресурсов. Другие позволяют оперировать всеми имеющимися в системе ресурсами, но команда получается длинной, на ее

    40

    ввод и выполнение тратится много времени. Набор методов адресации в каждой системе команд является компромиссным сочетанием известных механизмов адресации, выбранных проектировщиками архитектуры исходя из набора решаемых задач.

    Ниже приведены основные методы адресации, используемые в системе команд семейства MCS-51.

    Неявная адресация. В команде не содержится явных указаний об адресе участвующего в операции операнда или адресе, по которому помещается результат операции, но этот адрес подразумевается. В командах наиболее часто неявно адресуется аккумулятор как приемник результата операции. Например, результат сложения содержимого аккумулятора (A) и регистра R1 текущего банка данных командой ADD A,R1 записывается в неявно адресуемый аккумулятор. Вся указанная команда занимает в памяти один байт, в то время как адрес только аккумулятора (8Eh области SFR) содержит один байт.

    Непосредственная адресация. В поле адреса команды содер-

    жится не адрес операнда, а непосредственно сам операнд. На непосредственную адресацию указывает специальный символ # перед числом. Например, командой MOV A,#15h шестнадцатеричное число 15 (второй байт команды) загружается в аккумулятор. В системе команд непосредственная адресация обозначена как #data, где data – число

    (data = 00h...FFh).

    Прямая адресация. В поле адреса команды указан прямой адрес ячейки памяти данных, в которой находится или куда заносится операнд. Например, командой MOV A,15h содержимое ячейки DSEG с адресом 15h загружается в аккумулятор. Ячейка памяти имеет прямую адресацию, а аккумулятор - неявную. В зависимости от местонахождения адресуемого операнда, прямая адресация подразделяется на прямую регистровую и абсолютную.

    Прямая регистровая адресация. В поле адреса команды указан прямой адрес регистра текущего регистрового банка. Регистров в каждом банке восемь, и для их адресации необходим трехбитовый прямой адрес. В мнемонике команд адресуемый регистр обозначен Rn, где n=0...7. Все поля команды умещаются в один байт. Такую адресацию называют короткой. Например, MOV R4,R1.

    Прямая абсолютная адресация позволяет обратиться к любой ячейке DSEG и области SFR. Прямой адрес в этом случае занимает один байт, а команда – два байта. В системе команд байт прямого адреса обозначен словом direct (прямой) (direct = 00h…FFh). Например, команда MOV 80h,R2 (или MOV P0,R2) загружает содержимое регистра R2 текущего банка данных в порт Р0 (ячейка 80h области SFR). Если оба операнда имеют прямую абсолютную адресацию, то команда становится трехбайтовой (Например, MOV 80h,15h).

    Косвенная адресация. В поле адреса указан адрес ячейки памяти, в которой находится прямой адрес операнда. В системе команд на косвенную адресацию указывает специальный символ @. Свойством

    41

    хранить прямой адрес обладают регистры R0 и R1 (@Ri, i = 0,1) каждого регистрового банка. Например, если содержимое регистра R1 текущего банка регистров равно 15h, то команда MOV A,@R1 выполнит то же действие, что и приведенная выше команда MOV A,15h – загрузит содержимое ячейки памяти DSEG с адресом 15h в аккумулятор. Однако команда MOV A,@R1 однобайтовая, но самое главное, здесь имеется возможность программным способом изменять адрес, изменяя содержимое регистра R1.

    Относительная адресация. При относительной адресации прямой адрес формируется путем сложения базового адреса с адресным полем команды. В качестве базового адреса используется содержимое программного счетчика, а адресное поле команды представляет собой восьмиразрядное смещение rel (relative - относительный). Число rel интерпретируется командой как целое со знаком, представленное в дополнительном коде. Диапазон его представления - (-128...+127). При определении числа rel следует учесть, что программный счетчик указывает на следующую, подлежащую выполнению, команду. Относительная адресация широко используется в командах передачи управления, что позволяет создавать перемещаемые программные модули. Команды передачи управления с относительной адресацией позволяют организовать ветвление относительно текущего положения программного счетчика PC в обе стороны на (-128...+127) байт.

    В программах на языке ассемблера в поле смещения можно указать метку, на которую необходимо перейти. В результате трансляции ассемблер вычислит величину смещения, если она не превышает (-128…+127). В противном случае будет выдано сообщение об ошибке.

    Базовая адресация представляет разновидность относительной адресации. Прямой адрес в этом случае формируется путем сложения адреса, указанного в команде, с содержимым базового регистра, в котором хранится базовый адрес. Функцию базового регистра в семействе MCS-51 выполняет регистр-указатель данных DPTR или программный счетчик PC. Этот тип адресации особенно удобен при обработке таблиц и массивов данных. В командах MOVC A,@A+DPTR и MOVC A,@A+PC 16-разрядный прямой адрес формируется как сумма содержимого регистров DPTR и A или PC и A.

    Страничная адресация. При использовании страничной адресации память разбивается на ряд страниц одинаковой длины. Адресация страниц осуществляется отдельным регистром страниц, а адресация ячеек памяти внутри страницы – адресом, содержащимся в команде. Прямой адрес формируется конкатенацией (присоединением) адреса страниц и адреса ячейки памяти внутри страницы. В команде MOVX A,@Ri функцию регистра страниц выполняет порт P2 (старший байт адреса), а содержимое регистра Ri (младший байт адреса) задает адрес внутри страницы. При этом память разбивается на 256 страниц по 256 ячеек в каждой из них.

    42

    Стековая адресация используется в безадресных командах и представляет собой сочетание автоинкрементного и автодекрементного способов адресации, работающее по принципу LIFO (Last Input – First Output)- «последним вошел – первым вышел». Стек располагается в DSEG и растет в сторону увеличения адреса. Адрес вершины стека содержится в указателе стека SP. При записи байта в стек сначала выполняется инкремент содержимого SP, а затем по этому адресу производится запись. При чтении байта из стека сначала выполняется чтение по адресу, на который указывает SP, а затем - декремент SP. При использовании стека необходимо учитывать, что глубина стека (максимальное число ячеек памяти, занятых под стек) аппаратными средствами не контролируется. При чрезмерном увеличении стека могут быть заняты не предназначенные для него ячейки памяти с потерей информации в них. Аппаратно стек используется для сохранения адреса возврата при обслуживании прерывания.

    2.7.2. Система команд семейства MCS-51

    Система команд представлена в таблицах П2.1...П2.6 приложения 2. В таблицах указаны наименование команды, ее мнемоника, двоичный код операции, влияние выполняемой команды на флаги C, OV, AC и P, длина команды в байтах (Б) и время выполнения в машинных циклах (Ц), а также содержание преобразования, выполняемого командой. В качестве разделителя адресных полей в командах используется запятая. Для улучшения читаемости можно добавить пробелы после запятой, если их поддерживает используемый ассемблер.

    Все множество команд можно разбить на 5 групп: операции передачи данных, арифметические операции, логические операции, операции с битами и операции передачи управления.

    Группа команд операций передачи данных (таблица П2.1) со-

    держит команды MOV (передачи данных между DSEG и RSEG), MOVC (между CSEG и A), MOVX (между XSEG и A), команды обращения к стеку PUSH и POP, а также две команды обмена XCH и XCHD. Все команды передачи данных, у которых приемником является аккумулятор, устанавливают флаг паритета P содержимого аккумулятора, а команды с прямой адресацией, у которых приемником является регистр PSW, изменяют все флаги. Наиболее емкой является команда MOV, использующая четыре способа адресации: прямой регистровый (A, Rn, DPTR), прямой (direct), косвенный (@Ri), непосредственный (#data, #data16). Второй операнд команды является источником, первый – приемником. Для указания приемника служат три способа адресации (кроме непосредственного), а для указания источника все четыре. Трехбайтовая команда MOV direct,direct обеспечивает пересылку между двумя любыми ячейками памяти (DSEG и SFR), включая RSEG. Для обмена с RSEG предусмотрены специальные двух- и однобайтовые форматы:

    MOV Rn,direct

    MOV A,Rn

    MOV direct,Rn

    MOV Rn,A

    43

    Специальная команда MOV DPTR,#data16 позволяет загрузить 16-разрядный указатель DPTR значением data16.

    Команда MOVC позволяет считывать информацию из программной памяти CSEG не в регистр команд устройства управления, а в аккумулятор операционного устройства. В команде используются два способа адресации: по базе DPTR и относительно PC. В обоих случаях целое без знака смещение (индекс) хранится в аккумуляторе. Приемником результата также служит аккумулятор. Команда позволяет выполнять быструю перекодировку по таблицам.

    Обращение к внешней памяти осуществляется с помощью команды MOVX. Обмен производится по байтам между аккумулятором и внешним XSEG. Ячейка XSEG может быть адресована двумя способами: косвенно через 16-разрядный указатель DPTR и странично косвенно через 8-разрядный указатель Ri, i=0,1. В последнем случае регистром страниц служит регистр P2.

    Безадресные команды PUSH и POP обеспечивают передачу дан-

    ных между DSEG, RSEG и SFR.

    Команда обмена XCH обеспечивает двухсторонний обмен байтами, а команда XCHD - младшими тетрадами байтовых операндов.

    Группа команд арифметических операций (таблица П2.2) со-

    держит команды сложения ADD, сложения с учетом переноса ADDC, вычитания с учетом заема SUBB, увеличения и уменьшения на единицу INC и DEC, десятичной коррекции сложения в двоично-десятичном (BCD) коде упакованного формата, умножения MUL и деления DIV. Операции выполняются над беззнаковыми целыми числами. В операциях сложения и вычитания первым операндом и приемником результата служит аккумулятор. Для определения второго операнда используется прямая регистровая, прямая абсолютная, непосредственная и косвенная адресации. Операции INC и DEC применимы к аккумулятору, прямо адресуемому регистру, прямо или косвенно адресуемой ячейке памяти. Кроме того, операция INC применима к содержимому 16разрядного регистра указателя DPTR.

    В операциях целочисленного умножения и деления без знака участвуют аккумулятор и регистр B. При умножении 8-разрядное значение A умножается на 8-разрядное значение B, а 16-разрядный результат записывается в пару BA. При этом регистр B хранит старшую часть произведения. Флажок OV устанавливается, если произведение больше 255. При делении 8-разрядного значения A на 8-разрядное значение B частное записывается в A, а остаток в B. При попытке деления на 0 устанавливается флаг переполнения OV.

    Команда десятичной коррекции аккумулятора DA размещается после команды сложения. Слагаемые необходимо представить в BCD коде. Коррекция выполняется стандартным способом.

    Группа команд логических операций (таблица П2.3) содержит три типовые операции: ANL – логическое И, ORL – логическое ИЛИ, XRL – логическое исключающее ИЛИ. Источником первого операнда

    44

    служит либо аккумулятор A, либо прямо адресуемая ячейка памяти. Второй операнд задается одним из четырех основных методов адресации. В состав группы входят также одноместные операции над содержимым аккумулятора: CLR - очистки, CPL – инверсии, а также RL, RLC, RR и RRC – операции циклического и расширенного сдвигов вправо и влево. Сюда же включена операция обмена тетрад в аккумуляторе SWAP,которая может интерпретироваться как циклический сдвиг байта на четыре разряда.

    Группа команд операций с битами (таблица П2.6) содержит ко-

    манды SETB – установки бита в 1, CLR – сброса бита в 0, CPL – инверсии бита, ANL и ORL – логическое И и логическое ИЛИ содержимого флага C и прямо адресуемого бита, MOV – пересылка бита.

    Вбитовых операциях флаг C исполняет роль булевого аккумулятора. В качестве операндов используется содержимое флага C или прямо адресуемого бита bit области BSEG. В операциях ANL и ORL можно использовать содержимое прямо адресуемого бита (bit) или инверсию содержимого (/bit).

    Вэту группу входят также команды условного перехода с относительным 8-разрядным смещением rel. Условный переход может быть осуществлен как при установленном (команда JB), так и при сброшенном (команда JNB) бите. Особо следует отметить команду JBC, которая при установленном бите реализует ветвление и одновременно с этим сбрасывает бит в 0.

    Группа команд передачи управления (таблицы П2.4 и П2.5) со-

    держит команды безусловного перехода AJMP, LJMP, SJMP, JMP, условного перехода JZ, JNZ, CJNE, вызова ACALL, LCALL, возврата RET, RETI и модификации с условным переходом DJNZ. Сюда же включена пустая команда NOP.

    Вкомандах передачи управления широко применяется относительная адресация, позволяющая создавать перемещаемые программные модули. В качестве относительного адреса выступает 8-разрядное смещение rel – байт со знаком, обеспечивающее переход на (–128… +127) байт относительно текущего положения PC. Для перехода в любую другую точку 64 Кбайтового адресного пространства может быть использован либо прямой addr16, либо косвенный @A+DPTR адрес. В последнем случае содержимое A интерпретируется как целое без знака. Вариант короткой прямой адресации addr11 внутри 2 Кбайтовой текущей страницы введен для совместимости с семейством MCS-48.

    Все эти типы адресации применяются в командах перехода. В командах вызова используются только прямой addr16 и внутристраничный addr11 способы адресации. Во всех условных командах используется только относительная адресация.

    Когда микроконтроллер опознает запрос на прерывание, он генерирует команду LCALL addr16, что автоматически обеспечивает запоминание адреса возврата в стеке. Информация о состоянии программы (содержимое регистра PSW) автоматически не сохраняется. При этом

    Тема 12. Специальные режимы и характеристика выводов контроллера mcs 51

    1) загрузка программ в память программ. Байты команд передаются через порт Р.0, а через Р.1, Р.2 передаются адреса загружаемых байт. Некоторые выводы подключены к Земле, например питание.

    2) защита резидентной памяти программ имеется специальный бит защиты блокирующий доступ к резидентной памяти программ любыми средствами. Для его установки при записи программы на вывод P2.6 требуется подать логическую единицу. Для сброса этого бита необходимо стереть всю память программ.

    3) режим пониженного энергопотребления. PCON – power control. Выход при помощи Reset. Контроллеры обеспечивают также мониторинг напряжения питания для обеспечения работы системы при отказах или сбоях питания. Для этого содержит аккумуляторную батарею и питания от нее переходит, когда напряжения опускается ниже определенного уровня.

    Выводы mcs 51

    Базовый микроконтроллер реализован 40-выводном DIP-м корпусе. 4 порта микроконтроллера используется для интерфейса с периферийными устройствами и датчикам и в стандарте ТТЛ схем с тремя состояниями выхода. Для подключения кварцевого резонатора имеются два вывода.

    Параллельные порты микроконтроллера mcs-51

    Порты P0, P1, P2, P3 являются квазидвухнаправленными портами ввода-вывода и предназначены для обеспечения обмена информацией микроконтроллера с внешними устройствами, образуя 32 линии ввода- вывода. Каждый из портов содержит восьмиразрядный регистр, имеющий байтовую и битовую адресацию для установки или сброса разрядов этого регистра с помощью команд.

    Кроме работы в качестве обычных портов ввода - вывода, внешние выводы портов Р0 .. Р3 могут выполнять ряд дополнительных (альтернативных) функций:

    • Порт P0 может быть использован для организации шины данных при работе микроконтроллера с внешней памятью данных или программ, при этом через него выводится младший байт адреса A0 - A7, выдается из микроконтроллера или принимается в микроконтроллер байт данных.

    Использование порта P0 в качестве шины данных/адреса рассмотрено дальше.

    • Порт P1. Может быть использован для чтения внутренней памяти программ или для передачи младшего байта адреса при программировании внутреннего РПЗУ. В младших моделях микроконтроллера семейства других альтернативных функций у порта P1 нет. При сбросе микросхемы во все разряды порта записываются '1'.

    • Порт P2. Через порт Р2 выводится старший байт адреса (А8 - А15) при работе с внешней памятью программ и внешней памятью данных (с 16- разрядным адресом). Во время доступа к внешней памяти содержимое регистра - защелки порта P2 не изменяется.

    • Порт P3. Каждая линия порта Р3 имеет индивидуальную альтернативную функцию, которая может быть задействована простым обращением к устройству, соединенному с ножкой порта (например, для того чтобы был выработан строб WR, достаточно обратиться с внешней памяти командой MOVX @DPTR, A или MOVX @R0,A). Линии порта Р3 могут выполнять альтернативные функции только в том случае, если в соответствующие этим линиям разряды регистра записаны логические '1', иначе на линиях порта будет присутствовать '0' независимо от характера принимаемой или передаваемой информации. При сбросе микросхемы во все разряды порта записываются '1'.

    Р3.0 RxD - вход последовательного порта; Р3.1 TxD - выход последовательного порта; Р3.2 INT0 -используется как вход 0 внешнего запроса прерываний; Р3.3 INT1 -используется как вход 1 внешнего запроса прерываний; Р3.4 Т0 - используется как вход счетчика внешних событий 0; Р3.5 Т1 - используется как вход счетчика внешних событий 1; Р3.6 WR - строб записи во внешнюю память данных; Р3.7 RD - строб чтения из внешней памяти данных.

    Назначение остальных выводов кристалла следующее.

    • RST/VPD – используется для сброса и программирования памяти программ (RST – reset сброс)

    • Х1, Х2 – выводы для подключения внешнего кварцевого резонатора;

    • Vss – Земля;

    • Vcc – питание 5В;

    • EA/VPP - (VPP – напряжение, используемое для программирования). - в зависимости от того = 0 или 1, позволяет запрещать обращение к резидентной памяти программ (все обращения будут во внешней памяти с теми же адресами) разрешать;

    • PROG- сигнал для программирования контроллера;

    • ALE – address letch enable – сигнал ALE выполняет функцию строба для загрузки во внешний регистр адреса, адреса внешней памяти, непосредственно через порт Р0.

    • PSEN- сигнал чтения команд памяти программ.

    • Р0 – двунаправленный порт для передачи данных и команд для внешней памяти;

    P2 хранит адрес AH , через порт P0 адрес AL загружается в регистр AR.

    90000 90001 90002% PDF-1.2 % 3962 0 obj > endobj xref 3962 235 0000000016 00000 n 0000005056 00000 n 0000005293 00000 n 0000010929 00000 n 0000011193 00000 n 0000011279 00000 n 0000011436 00000 n 0000011494 00000 n 0000011604 00000 n 0000011769 00000 n 0000011860 00000 n 0000011918 00000 n 0000012013 00000 n 0000012196 00000 n 0000012289 00000 n 0000012399 00000 n 0000012457 00000 n 0000012640 00000 n 0000012733 00000 n 0000012828 00000 n 0000012886 00000 n 0000013073 00000 n 0000013177 00000 n 0000013272 00000 n 0000013330 00000 n 0000013523 00000 n 0000013580 00000 n 0000013678 00000 n 0000013773 00000 n 0000013966 00000 n 0000014072 00000 n 0000014174 00000 n 0000014231 00000 n 0000014441 00000 n 0000014497 00000 n 0000014601 00000 n 0000014696 00000 n 0000014753 00000 n 0000014871 00000 n 0000014928 00000 n 0000015042 00000 n 0000015151 00000 n 0000015208 00000 n 0000015265 00000 n 0000015322 00000 n 0000015379 00000 n 0000015492 00000 n 0000015549 00000 n 0000015669 00000 n 0000015726 00000 n 0000015851 00000 n 0000015908 00000 n 0000016062 00000 n 0000016175 00000 n 0000016232 00000 n 0000016372 00000 n 0000016429 00000 n 0000016577 00000 n 0000016634 00000 n 0000016743 00000 n 0000016800 00000 n 0000016946 00000 n 0000017003 00000 n 0000017153 00000 n 0000017210 00000 n 0000017330 00000 n 0000017387 00000 n 0000017534 00000 n 0000017591 00000 n 0000017744 00000 n 0000017801 00000 n 0000017963 00000 n 0000018020 00000 n 0000018131 00000 n 0000018188 00000 n 0000018302 00000 n 0000018359 00000 n 0000018473 00000 n 0000018530 00000 n 0000018686 00000 n 0000018743 00000 n 0000018864 00000 n 0000018921 00000 n 0000019072 00000 n 0000019129 00000 n 0000019249 00000 n 0000019306 00000 n 0000019449 00000 n 0000019506 00000 n 0000019649 00000 n 0000019706 00000 n 0000019826 00000 n 0000019883 00000 n 0000020003 00000 n 0000020060 00000 n 0000020181 00000 n 0000020238 00000 n 0000020295 00000 n 0000020352 00000 n 0000020410 00000 n 0000020538 00000 n 0000020662 00000 n 0000020720 00000 n 0000020833 00000 n 0000020891 00000 n 0000021006 00000 n 0000021064 00000 n 0000021173 00000 n 0000021231 00000 n 0000021351 00000 n 0000021409 00000 n 0000021513 00000 n 0000021571 00000 n 0000021684 00000 n 0000021742 00000 n 0000021872 00000 n 0000021930 00000 n 0000022043 00000 n 0000022101 00000 n 0000022223 00000 n 0000022281 00000 n 0000022339 00000 n 0000022397 00000 n 0000022455 00000 n 0000022569 00000 n 0000022679 00000 n 0000022737 00000 n 0000022862 00000 n 0000022920 00000 n 0000023026 00000 n 0000023084 00000 n 0000023195 00000 n 0000023253 00000 n 0000023386 00000 n 0000023444 00000 n 0000023562 00000 n 0000023620 00000 n 0000023741 00000 n 0000023799 00000 n 0000023902 00000 n 0000023960 00000 n 0000024069 00000 n 0000024127 00000 n 0000024241 00000 n 0000024299 00000 n 0000024412 00000 n 0000024470 00000 n 0000024578 00000 n 0000024636 00000 n 0000024694 00000 n 0000024752 00000 n 0000024810 00000 n 0000024928 00000 n 0000024986 00000 n 0000025111 00000 n 0000025239 00000 n 0000025297 00000 n 0000025411 00000 n 0000025469 00000 n 0000025594 00000 n 0000025652 00000 n 0000025767 00000 n 0000025825 00000 n 0000025934 00000 n 0000025992 00000 n 0000026096 00000 n 0000026154 00000 n 0000026284 00000 n 0000026342 00000 n 0000026455 00000 n 0000026513 00000 n 0000026631 00000 n 0000026689 00000 n 0000026797 00000 n 0000026855 00000 n 0000026972 00000 n 0000027030 00000 n 0000027088 00000 n 0000027146 00000 n 0000027204 00000 n 0000027322 00000 n 0000027380 00000 n 0000027505 00000 n 0000027613 00000 n 0000027671 00000 n 0000027784 00000 n 0000027842 00000 n 0000027954 00000 n 0000028012 00000 n 0000028070 00000 n 0000028195 00000 n 0000028305 00000 n 0000028363 00000 n 0000028483 00000 n 0000028541 00000 n 0000028663 00000 n 0000028721 00000 n 0000028842 00000 n 0000028900 00000 n 0000029009 00000 n 0000029067 00000 n 0000029171 00000 n 0000029229 00000 n 0000029346 00000 n 0000029404 00000 n 0000029524 00000 n 0000029582 00000 n 0000029690 00000 n 0000029748 00000 n 0000029865 00000 n 0000029923 00000 n 0000029981 00000 n 0000030039 00000 n 0000030097 00000 n 0000030237 00000 n 0000030357 00000 n 0000030415 00000 n 0000030473 00000 n 0000030585 00000 n 0000030703 00000 n 0000030761 00000 n 0000030819 00000 n 0000030877 00000 n 0000030932 00000 n 0000030974 00000 n 0000031096 00000 n 0000031118 00000 n 0000031246 00000 n 0000031269 00000 n 0000031736 00000 n 0000031853 00000 n 0000031896 00000 n 0000031920 00000 n 0000005351 00000 n 0000010905 00000 n trailer ] >> startxref 0 %% EOF 3963 0 obj > >> endobj 3964 0 obj > endobj 4195 0 obj > stream HS {TiL% P4L1;% 3-R Զ R, EvND-gEʲ & KŨ @ h '@ 4nZ, 236gϙ {n} ^ 5 @ (@ _ @! 90003.90000 90001 microsin - (MCS51, PC) 90002 90003 90004 . 90005 90006 90007 90008 90009 90004 1 90005 90012 90009 90004 2 90005 90012 90009 90004 3 90005 90012 90021 90008 90009 90004 90025 12to300.zip 90026 90005 90012 90029 90004 90005 90012 90009 90004 DC 12 >> DC 300,, ACCEL EDA 14 90005 90012 90021 90008 90009 90004 90025 adc2.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 AD7858 (,). Corel Draw 5. 90005 90012 90021 90008 90009 90004 90025 i2c_sl.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 AT89C1051 slave- I2C,:, 90005 90012 90021 90008 90009 90004 90025 at24cxx.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 I2C 90005 90012 90021 90008 90009 90004 90025 lead.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 AT89C2051 (! ..) 90005 90012 90021 90008 90009 90004 90025 c_loader.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 80C31 90005 90012 90021 90008 90009 90004 90025 24cxx.zip 90026 90005 90012 90009 90004 Delphi 90005 90012 90009 90004 24Cxx I2C LPT 90005 90012 90021 90008 90009 90004 90025 homefone.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90012 90021 90008 90009 90004 90025 hf_bell1.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 , - 90005 90012 90021 90008 90009 90004 90025 kl1.arj 90026 90005 90012 90009 90004 MCS51 + Delphi 90005 90012 90009 90004 KeeLoq (). AT89C2051, RS232. 90005 90012 90021 90008 90009 90004 90025 brel_prg.zip 90026 90005 90012 90029 90004 90005 90012 90009 90004 kl1.arj MicroSim Design Center 8 90005 90012 90021 90008 90009 90004 90025 tele2.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 (, ROBOT). 90005 90012 90021 90008 90009 90004 90025 t_mdm.zip 90026 90005 90012 90029 90004 90005 90012 90009 90004 DTMF tele2.arj () Corel Draw 5. 90005 90012 90021 90008 90009 90004 90025 keybrd7.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 tele2.arj. - PC-, AT89C52. DTMF (). 90005 90012 90021 90008 90009 90004 90025 k7.arj 90026 90005 90012 90009 90004 MCS51 + Delphi 90005 90012 90009 90004 ,.DTMF (AT89C2051) RS232. 90005 90012 90021 90008 90009 90004 90025 driver.arj 90026 90005 90012 90009 90004 ASM8086 90005 90012 90009 90004 DOS- 90005 90012 90021 90008 90009 90004 90025 ed_pgm.arj 90026 90005 90012 90009 90004 ASM8086 90005 90012 90009 90004 (Conventional) AT- 90005 90012 90021 90008 90009 90004 90025 dtmf.arj 90026 90005 90012 90009 90004 ASM8086 + Borland C 90005 90012 90009 90004 DTMF LPT, 90005 90012 90021 90008 90009 90004 90025 go_mus.arj 90026 90005 90012 90009 90004 ASM8086 + Borland C 90005 90012 90009 90004 (Wav) LPT.90005 90012 90021 90008 90009 90004 90025 load_old.arj 90026, 90025 loader.arj 90026 90005 90012 90009 90004 Borland C 90005 90012 90009 90004 - (Borland C). , ISA, convertional- AT- D0000H. 90005 90012 90021 90008 90009 90004 90025 prog.arj 90026 90005 90012 90009 90004 Borland C 90005 90012 90009 90004 ,./ 90005 90012 90021 90008 90009 90004 90025 make_f2.arj 90026 90005 90012 90009 90004 Borland C 90005 90012 90009 90004 "-" 90005 90012 90021 90008 90009 90004 90025 rs-232.arj 90026 90005 90012 90009 90004 ASM8086 + Borland C 90005 90012 90009 90004 RS232 - 90005 90012 90021 90008 90009 90004 90025 tst62256.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 62256 90005 90012 90021 90008 90009 90004 90025 rd_eepr5.arj 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 / X24022 (I2C). (!) 90005 90012 90021 90008 90009 90004 90025 iblock.zip 90026 90005 90012 90009 90004 MCS51 90005 90012 90009 90004 - iButton Dallas Semiconductor. 90005 90012 90021 90008 90029 90004 90025 2ton.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 DTMF 90005 90012 90021 90008 90029 90004 90025 3s6.arj 90026, 90025 cdr.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 "-3", Corel Draw 5 90005 90012 90021 90008 90029 90004 90025 443va12.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 "-" 90005 90012 90021 90008 90029 90004 90025 aon1.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 "-", 90005 90012 90021 90008 90029 90004 90025 amd.arj 90026, 90025 amd1.arj 90026, 90025 amd_cdr.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 "Vista-10", Corel Draw 5 90005 90012 90021 90008 90029 90004 90025 sota.arj 90026, 90025 sota1.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 NOKIA (NMT450) 90005 90012 90021 90008 90029 90004 90025 imp51.arj 90026, 90025 imp52.arj 90026, 90025 imp_cdr.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 "-", Corel Draw 5 90005 90012 90021 90008 90029 90004 90025 decoder.zip 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 POCSAG. - (). 90005 90012 90021 90008 90029 90004 90025 ps9_1.arj 90026, 90025 spp-v1_1.zip 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 POCSAG, POCSAG (ps9_1.arj) MicroSim Design Center 8., (). 90005 90012 90021 90008 90029 90004 90025 r20.arj 90026, 90025 eh_filtr.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 , 90005 90012 90021 90008 90029 90004 90025 r10a.zip 90026 90005 90012 90029 90004 90005 90012 90029 90004 r20.arj ACCEL EDA 14 90005 90012 90021 90008 90029 90004 90025 repit10.zip 90026, 90025 compar.zip 90026 90005 90012 90029 90004 90005 90012 90029 90004 , MicroSim Design Center 8 90005 90012 90021 90008 90029 90004 90025 testbch4.arj 90026 90005 90012 90029 90004 Delphi 90005 90012 90029 90004 BCH r20.arj 90005 90012 90021 90008 90029 90004 90025 tstrs.zip 90026 90005 90012 90029 90004 Delphi 90005 90012 90029 90004 r20.arj 90005 90012 90021 90008 90029 90004 90025 sp.arj 90026, 90025 sp8m1.zip 90026 90005 90012 90029 90004 8080 90005 90012 90029 90004 "-" 90005 90012 90021 90008 90029 90004 90025 ats.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 "-" () 90005 90012 90021 90008 90029 90004 90025 prist.arj 90026 90005 90012 90029 90004 MCS51 90005 90012 90029 90004 "-" () 90005 90012 90021 90008 90029 90004 90025 sp_cdr.arj 90026 90005 90012 90029 90004 90005 90012 90029 90004 prist.arj Corel Draw 5 90005 90012 90021 90746 90747 90004 90749: 90750 2 MCS51 8751H, AT8951 8031 ​​(183031), Delphi - IBM PC (486), 8080 - 8080 (58080), ASM8086 - 8086 (), Borland C - Borland (DOS). 90005 90004 [90753 90754] 90005 90004 90753 1 90754.. 90759 90753 2 90754. . 90759 90753 3 90754. . 90759 90753 4 90754. . . 90759 90753 5 90754. thomas twin t2. 90005 90012 90747.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *