Приложение 1
Принятые условные обозначения
Физические величины и их единицы измерения по умолчанию
I — ток, ампер (А);
U — напряжение, вольт (В, V);
R — электрическое сопротивление, ом (Ом, Ohm);
Е — энергия, джоуль (Дж);
Р — электрическая мощность, ватт (Вт, W);
W — тепловая мощность, ватт (Вт, W);
С — электрическая емкость, микрофарад (мкФ, μF);
Q — заряд, кулон (Кл);
t — время, секунда (с);
T,0 — температура, градус Цельсия (°С);
L — длина, метр (м);
S — площадь (м2);
ρ — удельное сопротивление (ом∙м/мм2).
Примечание
Все наименования единиц измерения, которые названы по фамилиям ученых, в сокращении пишутся с большой буквы (вольт — В , ом — Ом , ватт — Вт , ампер — А ), а все остальные — с маленькой (секунда — с , метр — м ).
Приставки и множители для образования десятичных кратных и дольных единиц
В табл. П. 1.1 приведены приставки и множители для образования десятичных кратных и дольных единиц.
Некоторые буквенные обозначения в электрических схемах
R — резистор;
С — конденсатор;
VT — транзистор;
VD — диод;
Н — цифровой индикатор;
К — тумблер, кнопка;
Р — реле;
DA — аналоговая микросхема;
DD — цифровая микросхема;
D — микросхема, содержащая аналоговые и цифровые узлы;
Q — кварцевый резонатор;
L — лампа (газоразрядная или накаливания).
Некоторые символические обозначения в электрических схемах
В табл. П1.2 приведены символические обозначения в электрических схемах.
Символические обозначения мощности резисторов на схемах
В табл. П1.3 приведены символические обозначения мощности резисторов на схемах.
Приложение 2
Стандартные обозначения и размеры некоторых гальванических элементов
В табл. П2.1 приведены стандартные разновидности бытовых одноразовых электрохимических элементов питания. Элементы одного типоразмера взаимозаменяемы (а также заменяются на аналогичные типоразмеры аккумуляторов), однако могут различаться по энергоемкости. Щелочные (с буквой «L» или надписью «alcaline») элементы приблизительно в три раза превышают по емкости «обычные». Кроме указанных в таблице «пальчиковых» элементов, широко распространены «таблетки» — серебряно-цинковые или угольные малогабаритные элементы с напряжением питания обычно около 3 В, предназначенные для питания маломощных устройств.
* Буква L означает щелочной элемент.
** Для щелочных элементов.
Приложение 3
Справочные данные некоторых компонентов
Далее приведены справочные данные некоторых компонентов, которые мы использовали в схемах, размещенных в этой книге. Разумеется, поместить данные всех упомянутых в тексте компонентов, и к тому же в полном объеме невозможно, поэтому были выбраны лишь самые характерные и часто упоминающиеся полупроводниковые приборы, таким образом, что они в совокупности образуют некий базовый набор, достаточный, чтобы повторить примерно 9 из 10 радиолюбительских конструкций. Данные о некоторых типах приводятся также при описании соответствующей конструкции в тексте глав. Сведения далее «профильтрованы» на предмет реальной информативности: к примеру, нет никакой необходимости размещать информацию о прямом падении напряжения на кремниевых диодах, т. к. оно одно и то же для всех без исключения типов, в то же время такие, к примеру, параметры, как емкость коллекторного перехода или граничное напряжение транзисторов просто бесполезны для радиолюбителя и потому также не приводятся.
Такие характеристики, как предельно допустимая мощность рассеяния для транзисторов малой (но не средней и не большой!) мощности, также на практике требуются очень редко (можете спокойно принимать ее равной примерно 0,2–0,7 Вт, в зависимости от корпуса). Не привожу я и данные логических микросхем, т. к. их характеристики в целом одинаковы и описаны в главе 8, а разводка выводов приведена на ряде схем и в тексте. Исключение сделано только для сводной таблицы (табл. П3.1) соответствия отечественных и импортных КМОП-микросхем (базовой серии), потому что эту информацию разыскать не всегда просто.
Источники, откуда взяты приведенные данные, слишком многочисленны (это и официальные справочники, и справочные данные, размещенные в литературе и в Интернете, и информация из каталогов торгующих организаций, и фирменная документация, как в виде бумажных каталогов, так и в формате PDF), чтобы их перечислить, — вы не поверите, сколько бумажной «макулатуры» пришлось «перелопатить» и сколько интернет-часов потратить с целью найти, систематизировать и привести к более-менее единому «знаменателю» данные даже о таком небольшом количестве компонентов. Отечественные производители (и некоторые зарубежные тоже) просто «сговорились» в своем стремлении скрыть от пользователя как можно больше критически важных параметров. Часто для компонентов, аналогичных по назначению, но от разных производителей, приводится разный набор параметров, из-за чего сравнение приборов становится довольно нетривиальной задачей. Этот недостаток я по мере возможности также постарался устранить.
Заметки на полях
Яркий пример такой ситуации, к нашему изложению, правда, отношения не имеющий: характеристики чувствительности светочувствительных матриц для цифровых фотоаппаратов приводятся в единицах ISO, как для фотопленок, а для цифровых видеокамер — в единицах освещенности, хотя матрицы часто одни и те же! В нашем же случае можно привести пример статического коэффициента передачи тока для транзисторов, который у одних приборов приводится для режима, близкого к насыщению, у других — для активного режима, есть и третьи, не очень понятные случаи, поэтому я величину U к , при которой производились измерения β , просто опускаю, т. к. это только запутывает неискушенного пользователя, не давая никакой реальной информации, т. к. справочное значение коэффициента все равно есть величина ориентировочная.
Следует учесть, что предпочтение тут отдано отечественным компонентам, т. к. нахождение справочных данных для них представляет наибольшие трудности. Конечно, информация о производителе того или иного компонента, особенно отечественного, ориентировочная: кроме приведенных, это могут быть и другие фирмы, а отечественные заводы могли прекратить выпуск продукции с тех пор, когда была собрана информация.
Обращаю внимание, что это издание ни в коем случае не является официальным, и поэтому помещенные данные не могут служить основанием для претензий к тому или иному производителю в случае их несоответствия реальным характеристикам того или иного компонента.
Соответствие наименований зарубежных и отечественных микросхем КМОП
Примечание
CD4xxxx — наименование серии 4000, принятое в фирме Fairchild Semiconductor, МС14хххх — в фирме Motorola. У других фирм могут быть свои префиксы, например, НСС или HCF — у фирмы ST Microelectronics. Сами обозначения микросхем остаются одинаковыми независимо от производителя.
Диоды
• КД521
Кремниевые диоды.
Производитель: неизвестен (СНГ).
Назначение: предназначены для применения в импульсных устройствах.
Выпускаются в стеклянном корпусе с гибкими выводами. Тип и полярность диодов обозначается одной широкой и двумя узкими цветными полосками на корпусе со стороны положительного (анодного) вывода: КД521А — полосы синие; КД521Б — серые; КД521В — желтые; КД521Г — белые; КД521Д — зеленые. В табл. П3.2 приведены предельные значения обратного напряжения.
Постоянный или средний прямой ток при Т = -60…+50 °C, не более… 50 мА.
Перегрузка по прямому току не более 5 мин при Т = -60…+50 °C… 200 мА.
Постоянный обратный ток при U обр = U мax :
при Т = -60 и +25 °C… 1 мкА;
при Т = +125 °C… 100 мкА.
• 1 Nxxxx
Кремниевые диоды.
Производитель: Fairchild Semiconductor (США) и др.
Назначение: выпрямление переменного тока.
В табл. ПЗ.З приведены предельные значения токов и напряжений.
Примечание 1. Частота выпрямления до 1 МГц.
Примечание 2. Для диодов 1N54xx максимальная рассеиваемая мощность 6,25 Вт, макс. импульсный ток (одиночная синусоидальная полуволна 8,3 мс) -200 А.
• КД 202
Кремниевые диоды.
Производитель: неизвестен (СНГ).
Назначение: выпрямление переменного тока.
В табл. П3.4 приведены предельные значения обратного напряжения.
Постоянное обратное напряжение… 0,7 U обр. макс .
Постоянный (средний) прямой ток при Т = -60 до +75 °C… 5 А.
Макс. импульсный ток (одиночная синусоидальная полуволна 10 мс)… 30 А. Частота выпрямления до 1,2 кГц.
• КЦ 407А
Кремниевый выпрямительный мост.
Производитель: неизвестен (СНГ).
Назначение: выпрямление переменного тока.
Максимальное обратное напряжение… 400 В.
Средний выпрямленный ток при Т = -60…+55 °C, не более… 500 мА. Частота выпрямления до 20 кГц.
• КУ202Н
Кремниевый тиристор.
Производитель: неизвестен (СНГ).
Назначение: ключи средней мощности.
Напряжение в открытом состоянии… 1,5 В.
Импульсное отпирающее напряжение на управляющем электроде при t отп > 10 мс… 7 В.
Импульсный отпирающий ток управляющего электрода при t отп > 10 мс, не более… 200 мА.
Постоянное прямое напряжение в закрытом состоянии, не более… 400 В.
Постоянный ток в открытом состоянии при Т < 50 °C, не более… 10 А.
Транзисторы
• КТ315, КТ361
Транзисторы кремниевые малой мощности высокочастотные.
Производитель: «Кремний» (г. Брянск, Россия), НИИПП (г. Томск, Россия). Структура: n-р-n (КТ315), р-n-р (КТ361).
Тип прибора указывается на корпусе в виде буквы номинала: для КТ315 буква слева, для КТ361 увеличенная и посередине корпуса.
Назначение: усилители НЧ и ВЧ.
Тип корпуса: КТ-13.
Статический коэффициент передачи тока ( I к = 1 мА):
КТ315А, КТ315В… 30—120;
КТ315Б, КТ315Г, КТ315Е, КТ361Б, КТ361Г, КТ361Е… 50—350;,
КТ315Д, КТ361А, КТ361Д… 20–90;
КТ315Ж… 30—250;
КТ315И… >30;
КТ361В… 40—160.
Макс. постоянное напряжение коллектор-эмиттер, В :
КТ315А, КТ361А… 25;
КТ315Б, КТ315Ж, КТ361Б… 20;
КТ315В, КТ315Д, КТ361В, КТ361Д… 40;
КТ315Г, КТ315Е, КТ361Г, КТ361Е… 35;
КТ315И… 60.
Максимальный постоянный ток коллектора, мА :
КТ315А, КТ315Б, КТ315В, КТ315Г, КТ315Д, КТ315Е… 100;
КТ361 (все буквы), КТ315Ж, КТ315И… 50.
Граничная частота… 250 МГц.
• КТ3102, КТ3107
Транзисторы кремниевые малой мощности высокочастотные.
Производитель: АО «Светлана» (г. Санкт-Петербург, Россия), АО «Кремний» (г. Брянск, Россия), Нальчикский завод полупроводниковых приборов (г. Нальчик, Россия).
Структура: n-p-n (КТ3102), p-n-p (КТ3107).
Тип прибора указывается на корпусе или непосредственно, или на торце корпуса наносится метка: КТ3102А — темно-красная, КТ3102Б — желтая, КТ3102В — темно-зеленая, КТ3102Г — голубая, КТ3102Д — синяя, КТ3102Е — белая, КТ3102Ж — две темно-красные, КТ3102И — две желтые, КТ3102К — две темно-зеленые, КТ3107А — голубая и розовая, КТ3107Б — голубая и желтая; КТ3107В — голубая и синяя; КТ3107Г — голубая и бежевая; КТ3107Д — голубая и оранжевая; КТ3107Е — голубая и цвета электрик; КТ3107Ж — голубая и салатовая; КТ3107И — голубая и зеленая; КТ3107К — голубая и красная; KT3107JT — голубая и серая. Другой способ маркировки состоит в том, что тип транзистора указывается условным значком-треугольником (см. рисунок корпуса). Иногда вместо этих значков ставится просто цифра (2 или 7). Кроме этого, на маркировочной поверхности ставится буква, соответствующая группе (А, Б, В и т. п.) и иногда еще дополнительно два значка, условно означающие год и месяц выпуска (например, М 6 означает июнь 2000).
Назначение: для низкочастотных устройств с малым уровнем шумов, переключающих, усилительных и генераторных устройств средней и высокой частоты.
Тип корпуса: КТ-26 (ТО-92).
Статический коэффициент передачи тока при ( I э = 2 мА; Т = +25 °C):
КТ3102А, КТ3102Ж… 100–250;
КТ3102Б, КТ3102В, КТ3102Г, КТ3102И, КТ3102К… 200–500;
КТ3102Г, КТ3102Е… 400—1000;
КТ3107А, КТ3107В… 70—140;
КТ3107Б, КТ3107Г, КТ3107Е… 120–220;
КТ3107Д, КТ3107Ж, КТ3107И… 180–460;
КТ3107К, КТ3107Л… 380–800.
Макс. постоянное напряжение коллектор-эмиттер, В:
КТ3102А, КТ3102Б, КТ3102Ж, КТ3102И… 50;
КТ3102В, КТ3102Д, КТ3102К… 30;
КТ3102Г, КТ3102Е, КТ3107Е, КТ3107Ж, КТ3107Л… 20;
КТ3107А, КТ3107Б, КТ3107И… 45;
КТ3107В, КТ3107Г, КТ3107Д, КТ3107К… 25.
Максимальный постоянный ток коллектора, мА… 100.
Граничная частота… 200 МГц (КТ3102А-Е… 150 МГц).
• КТ814, КТ815, КТ816, КТ817
Транзисторы кремниевые средней мощности низкочастотные.
Производитель: АО «Кремний» (г. Брянск, Россия), «Искра» (г. Ульяновск, Россия).
Структура: n-p-n (КТ815, КТ817), p-n-p (КТ814, КТ816).
Тип прибора указывается на корпусе.
Назначение: усилители низкой частоты, импульсные устройства.
Тип корпуса: КТ-27 (ТО-126).
Статический коэффициент передачи тока при ( I э = 1 А; Т = +25 °C):
КТ814А-В, КТ815А-В… 40;
КТ814Г, КТ815Г… 30;
КТ816А-Г, КТ817А-Г… 25.
Макс. постоянное напряжение коллектор-эмиттер, В :
КТ814А, КТ816А, КТ817А… 25;
КТ814Б, КТ815А…40;
КТ816Б, КТ817Б… 45;
КТ815Б… 50;
КТ814В, КТ816В, КТ817В… 60;
КТ815В… 70;
КТ814Г, КТ816Г, КТ817Г… 80;
КТ815Г… 100.
Максимальный постоянный ток коллектора, А :
КТ814, КТ815… 1,5;
КТ816, КТ817… 3.
Постоянная рассеиваемая мощность коллектора, Вт :
Без теплоотвода КТ814 — КТ817… 1;
С теплоотводом КТ814, КТ815… 10;
С теплоотводом КТ816, КТ817… 25.
Граничная частота… 3 МГц.
• КТ972, КТ973
Чертеж корпуса и разводку выводов см. КТ814—КТ817.
Транзисторы кремниевые средней мощности высокочастотные структуры Дарлингтона.
Производитель: «Транзистор» (г. Минск, Белоруссия).
Структура: n-p-n (КТ972), p-n-p (КТ973).
Тип прибора указывается на корпусе (зависит от производителя). Назначение: управление импульсными устройствами.
Тип корпуса: КТ-27 (ТО-126).
Статический коэффициент передачи тока при ( I э = 1 А; Т = +25 °C):
КТ972А.Б, КТ973А,Б… 750.
Макс. постоянное напряжение коллектор-эмиттер, В :
КТ972А, КТ973А… 60;
КТ972Б, КТ973Б… 45.
Максимальный постоянный ток коллектора… 4 А.
Постоянная рассеиваемая мощность коллектора (с теплоотводом)… 8 Вт.
Напряжение насыщения коллектор-эмиттер… 1,5 В.
Напряжение насыщения база-эмиттер… 2,5 В.
Граничная частота… 100 МГц.
• КТ818, КТ819
Транзисторы кремниевые большой мощности низкочастотные. Производитель: АО «Кремний» (г. Брянск, Россия).
Структура: n-р-n (КТ819), р-n-р (КТ818).
Тип прибора указывается на корпусе.
Назначение: усилители НЧ и переключающие устройства.
Приложение 3. Справочные данные некоторых компонентов
511
Тип корпуса: КТ-28 (ТО-220). Есть модификации в металлическом корпусе типа ТО-3, а также ТО-218 с шагом выводов 5,5 мм.
Минимальный статический коэффициент передачи тока при ( I э = 5 А: T =+25 °C):
КТ818А, КТ818В, КТ819А, КТ819В… 15;
КТ818Б, КТ819Б… 20;
КТ818Г, КТ819Г… 12.
Макс. постоянное напряжение коллектор-эмиттер, В :
КТ818А, КТ819А…40;
КТ818Б, КТ819Б… 50;
КТ818В, КТ819В… 70;
КТ818Г… 90;
КТ819Г… 100.
Максимальный постоянный ток коллектора… 10 А.
Постоянная рассеиваемая мощность коллектора (с теплоотводом)… 60 Вт.
Граничная частота… 3 МГц.
• КТ829
Чертеж корпуса и разводку выводов см. КТ818, КТ819.
Транзистор кремниевый большой мощности низкочастотный структуры Дарлингтона.
Производитель: АО «Элиз» (г. Фрязино, Россия).
Структура: n-р-n.
Тип прибора указывается на корпусе.
Назначение: усилители НЧ и переключающие устройства.
Тип корпуса: КТ-28 (ТО-220).
Статический коэффициент передачи тока при ( I э = 3 А; Т = +25 °C)… 750.
Макс. постоянное напряжение коллектор-эмиттер, В :
КТ829А… 100;
КТ829Б… 80;
КТ829В… 60;
КТ829Г… 45.
Максимальный постоянный ток коллектора… 8 А.
Постоянная рассеиваемая мощность коллектора (с теплоотводом)… 60 Вт.
Напряжение насыщения коллектор-эмиттер… 2 В.
Напряжение насыщения база-эмиттер… 2,5 В.
Граничная частота… 10 МГц.
• BDW93, BDW94
Транзисторы кремниевые большой мощности низкочастотные структуры Дарлингтона.
Производитель: Fairchild Semiconductor (США), ST Microelectronics (Европа).
Структура: n-p-n (BDW93), p-n-p (BDW94).
Тип прибора указывается на корпусе.
Тип корпуса: ТО-220.
Минимальный статический коэффициент передачи тока:
при I к = 3 А… 1000.
при I к = 10 А… 100.
Максимальный статический коэффициент передачи тока… 20 000.
Макс. постоянное напряжение коллектор-эмиттер, В :
BDW93, BDW94… 45;
BDW93A, BDW94A…60;
BDW93B, BDW94B… 80;
BDW93C, BDW94C… 100.
Максимальный постоянный ток коллектора… 12 А.
Постоянная рассеиваемая мощность коллектора (с теплоотводом):
при Т = +25 °C… 60 Вт;
при T = +100 °C… 35 Вт.
Напряжение насыщения коллектор-эмиттер (макс.)… 3 В.
Напряжение насыщения база-эмиттер (макс.)… 4 В.
Граничная частота [19] … 1 МГц.
• КП303
Транзистор кремниевый полевой малой мощности с затвором на основе pn-перехода и каналом n-типа.
Производитель: АООТ «Элекс» (г. Александров, Россия).
Тип прибора указывается на корпусе.
Назначение: общего назначения.
Тип корпуса: КТ-1-12 (ТО-17).
Начальный ток стока (при U зи = 0), мА :
КП303А, КП303Б… 0,5–2,5;
КП303В, КП303И… 1,5–5;
КП303Г… 3-12;
КП303Д… 3–9;
КП303Е… 5-20;
КПЗОЗЖ… 0,3–3.
Напряжение отсечки (при I с = 10 мкА), В :
КП303А, КП303Б… 0,5–3;
КП303В… 1–4;
КП303Г, КП303Д, КП303Е… < 8;
КП303Ж… 0,3–3;
КП303И… 0,5–2.
Максимальное напряжение сток-исток, В … 25.
Максимальное напряжение затвор-сток, В … 30.
Максимальный постоянный ток стока… 20 мА.
Электронные реле и оптроны
• АОД130
Диодный оптрон.
Производитель: з-д «Протон» (Россия). Тип прибора указывается на корпусе.
Тип корпуса: модифицированный DIP-8.
Постоянное прямое входное напряжение, В … 1,5. Максимальный входной ток, мА… 20.
Максимальный импульсный входной ток, мА …100.
Максимальное входное обратное напряжение, В … 3,5.
Максимальное выходное обратное напряжение, В … 30.
Коэффициент передачи тока, %… 1.
Максимальное напряжение изоляции, В … 1500.
• АОР124Б
Резисторный оптрон со светодиодом на входе. Производитель: неизвестен (Россия).
Тип прибора указывается на корпусе.
Тип корпуса: советский вариант ТО-39.
Постоянное прямое входное напряжение, В … 3,8.
Максимальный входной ток, мА … 15.
Максимальный импульсный входной ток, мА … 100.
Максимальное входное обратное напряжение, В … 6.
Максимальный выходной ток, мА … 9.
Максимальное напряжение изоляции, В … 1000.
• КР293КП1 (5П14)
Электронное реле малой мощности.
Производитель: з-д «Протон» (Россия).
Тип прибора указывается на корпусе.
Тип корпуса: DIP-6.
Постоянное прямое входное напряжение, В … 1,5.
Максимальный входной ток, мА … 25.
Минимальный входной ток, мА … 5.
Максимальный импульсный входной ток, мА … 150.
Максимальное коммутируемое напряжение, В :
КР293КП1А… 60;
КР293КП1Б… 230;
КР293КП1И… 400.
Максимальный коммутируемый ток, мА :
КР293КП1А… 250;
КР293КП1Б… 100;
КР293КП1И… 80.
Максимальное напряжение изоляции, В… 1500.
• PF240D25
Электронное реле большой мощности.
Производитель: CRYDOM (San Diego, США).
Тип прибора указывается на корпусе.
Управляющее входное напряжение, В … 3—15.
Входной ток при упр. напряж. 5 В, мА … 15.
Максимальное коммутируемое напряжение, В … 12—280 (действ, значение).
Коммутируемый ток, А … 0,06–25.
Перегрузка по току (1 полупериод 50–60 Гц), А … 250.
Примечание. При коммутируемых токах более 10 А требуется принудительной обдув корпуса.
Микросхемы
• 1019ЕМ1
Термодатчик с линейной зависимостью выходного напряжения от температуры.
Производитель: АООТ «Фотон» (г. Ташкент, Узбекистан).
Тип прибора указывается на корпусе.
Тип корпуса: ТО-18.
Ток питания, мА … 0,5… 1,5.
Выходное напряжение, мВ при токе питания 1 мА и температуре:
298 К (25 °C)… 2952–3012;
398 К (125 °C)… 3932…4032;
263 К (-10 °C)… 2582–2682 для К1019ЕМ1А;
228 К (-45 °C)… 2232…2332 для К1019ЕМ1.
Рабочий температурный интервал, ° С :
К1019ЕМ1… от-45 до +125;
К1019ЕМ1А… от-10 до+125.
• 7805, 7809, 7812, 7815, 7905, 7909, 7912, 7915
Стабилизаторы постоянного тока большой мощности.
Производитель: National Semiconductor (США), Fairchild Semiconductor (США), ST Microelectronics (Европа).
Отечественные аналоги:
КР142ЕН5А (7805), КР142ЕН8А (7809), КР142ЕН8Б (7812), КР142ЕН8В (7815), КР1162ЕН5 (7905), КР1162ЕН9 (7909), КР1162ЕН12 (7912), КР1162ЕН15 (7915).
Тип прибора указывается на корпусе.
Тип корпуса: ТО-220.
Выходное напряжение, В :
7805… +5 ±0,2;
7809… +9 ±0,36;
7812… +12±0,5;
7815… +15 ±0,6;
7905… -5 ±0,2;
7909… -9 + 0,36;
7912… -12 ±0,5;
7915…-15 ±0,6.
Максимальный постоянный выходной ток (внутреннее ограничение), А :
7805, 7905… 2,1;
7809,7909… 1,8;
7812,7912… 1,5;
7815,7915… 1,2.
Максимальное входное напряжение, В … 35 (для 78хх), — 35 (для 79хх).
Максимальная рассеиваемая мощность, Вт (Т = 0…+75 °C):
без теплоотвода… 3; с теплоотводом… 20.
• 78L05, 78L09, 78L12, 78L15, 79L05, 79L09, 79L12, 79L15
Стабилизаторы постоянного тока малой мощности.
Производитель: National Semiconductor (США), Fairchild Semiconductor (США), ST Microelectronics (Европа).
Отечественные аналоги:
КР1157ЕН5 (78L05), КР1157ЕН9 (78L09), КР1157ЕН12 (78L12), КР1157ЕН15 (78L15), КР1168ЕН5 (79L05), КР1168ЕН9 (79L09), КР1168ЕН12 (79L12), КР1168ЕН15 (79L15).
Тип прибора указывается на корпусе.
Тип корпуса: ТО-92.
Выходное напряжение, В :
78L05… +5 ±0,2;
78L09… +9 ±0,36;
78L12… +12±0,5;
78L15… +15 ±0,6;
79L05…-5 ±0,2;
79L09…-9 ±0,36;
79L12…-12 ±0,5;
79L15… -15 ±0,6.
Максимальный постоянный выходной ток, мА … 100.
Максимальное входное напряжение, В … 35 (для 78хх), — 35 (для 79хх).
Максимальная рассеиваемая мощность, Вт :
при Т= 0 °C… 1 Вт; при Т = +75 °C… 0,5 Вт.
• LM311 (521САЗ, 554CA3)
Быстродействующий компаратор.
Производитель: National Semiconductor (США).
Тип прибора указывается на корпусе.
Тип корпуса: DIP-8, ТО-99 (металлический круглый), DIP-14.
Максимальное напряжение питания, В … ±18 или +36.
Максимальное выходное напряжение (коллектор-отриц. напр, пит.), В … 50.
Максимальный выходной ток, мА … 50.
Входной ток смещения, нА … <10.
Входное напряжение сдвига при сопротивлении источника <10 кОм, мВ … <2.
• μА741 (140УД7)
Операционный усилитель общего назначения.
Производитель: Philips Semiconductors (Европа), ST Microelectronics (Европа) и др.
Тип прибора указывается на корпусе.
Тип корпуса: DIP-8.
Максимальный ток потребления ( R н = #b.jpg , U пит = ±15 В), мА… 2,8.
Напряжение питания, В … от ±5 до ±18.
Максимальное входное напряжение, В … ±15.
Максимальное выходное напряжение ( U пит = ±15 В), В :
R н = 10 кОм… ±14;
R н = 2 кОм… ±13.
Выходное сопротивление, Ом … 75.
Коэффициент усиления… 50 000–200 000.
Входной ток смещения, нА … 80—500.
Разность входных токов смещения, нА … 20—200.
Входное напряжение сдвига при сопротивлении источника <10 кОм, мВ … 2.
Температурный дрейф напряжения сдвига (ТКЕ), мкВ/°С … 10.
Частота единичного усиления, МГц … 1.
Скорость нарастания, В/мкс … 0,5.
• μА747 (140УД20)
Два операционных усилителя типа μА741 в одном корпусе.
Производитель: Texas Instruments (США) и др.
Тип прибора указывается на корпусе.
Тип корпуса: DIP-14.
Максимальный ток потребления ( R н = #b.jpg , U пит = ±15 В), мА … 5,5.
Остальные характеристики — см. μА741.
• МАХ478
Два прецизионных операционных усилителя в одном корпусе.
Производитель: MAXIM/DALLAS (США).
Тип прибора указывается на корпусе.
Тип корпуса: DIP-8 (SO-8).
Максимальный ток потребления ( R н = #b.jpg , U пит = ±15 В), мкА … 50.
Напряжение питания, В … от ±2,2 до ± 18.
Максимальное входное напряжение, В… ± U пит .
Максимальное выходное напряжение ( U пит = ±15 В, R, = 2 кОм), В ±12,7.
Коэффициент усиления… 300 000—1200 000.
Входной ток смещения, нА … 5.
Разность входных токов смещения, нА … 0,25.
Входное напряжение сдвига при сопротивлении источника <10 кОм, мкВ … 100.
Температурный дрейф напряжения сдвига (ТКЕ), мкВ/°С … 0,9.
Частота единичного усиления, кГц … 60.
Скорость нарастания, В/мкс … 0,02.
• TDA3020
Усилитель мощности звуковой частоты.
Производитель: ST Microelectronics (Европа).
Тип прибора указывается на корпусе.
Тип корпуса: пятивыводной ТО-220.
Напряжение питания, В … от ±6 до ±18.
Максимальный выходной ток, А … 3,5.
Максимальная рассеиваемая мощность, Вт … 20.
Входной ток смещения, мкА … 2.
Входное напряжение сдвига, мВ … 20.
Ширина полосы пропускания по уровню 3 дБ, Гц … 10—140 000.
• AT90S2313, AT90S8515, AT90S8535
Микроконтроллеры AVR. Микросхемы с буквой «L» в наименовании обладают пониженным энергопотреблением. Как вы знаете из главы 12, в настоящее время указанные типы микроконтроллеров AVR «Classic» заменяются на более развитые версии, в названиях которых присутствуют приставки «Mega» или «Типу» (например, ATmega8515), но электрические характеристики у них одни и те же, за исключением быстродействия (до 16 МГц, а в случае ATtuny2313 до 20 МГц) и в некоторых случаях расширенного диапазона питания (до 1,8 В).
Производитель: Atmel (США).
Тип прибора указывается на корпусе.
Тип корпуса: DIP-20 (AT90S2313), DIP-40 (AT90S8515, AT90S8535) и др.
Основные электрические параметры
Напряжение питания, В … 2,7–6,0.
Входное напряжение лог. 0, не более, В … 0,2 U пит .
Входное напряжение лог. 1, не менее, В… 0,6 U пит .
Входное напряжение лог. 1 выводов XTAL, не менее, В… 0,8 U пит
Входное напряжение лог. 1 вывода Reset, не менее, В… U пит
Максимальное входное напряжение лог. 1, В… U пит + 0.5 В.
Минимальное входное напряжение лог. 0, В… — 0,5 В.
Выходное напряжение лог. 0, не более, В… 0,6.
Выходное напряжение лог. 1, не менее, В:
Uпит = 5 В… 4,2;
Uпит = 3 В… 2,3.
Потребляемый ток в режиме:
Uпит = 3 В, FT = 4 МГц… 3,5 мА;
Power Down… 1 мкА;
Power Down + WDT… 50 мкА.
Входной ток утечки в режиме входа, мкА … 8.
Нагрузочный резистор по входу, кОм … 35—120.
Входное напряжение сдвига аналогового компаратора, мВ … 20.
Входной ток смещения аналогового компаратора, нА … 10.
Максимальный ток через вывод питания или «земли», мА:
AT90S2313, AT90S8515… 140;
AT90S8535… 200.
Максимально допустимый ток одного вывода порта, мА … 40.
Максимальный постоянный ток одного вывода порта, мА … 20.
Максимально допустимый суммарный ток всех выводов порта, мА :
для AT90S2313… 80 (каждый из портов В и D);
для AT90S8515… 80 (порт А), 80 (порты В, С и D в сумме);
для AT90S8535… 100 (порт А), 100 (порты В, С и D в сумме).
Максимальная частота тактового генератора, МГц :
при Uпит = 2,7–6,0 В… 10 (AT90S2313), 4 (AT90S8515, AT90S8535);
при Uпит = 4,0–6,0 В… 16 (AT90S2313), 8 (AT90S8515, AT90S8535).
Приложение 4
Базовые команды
Atmel AVR
Система команд микроконтроллеров Atmel AVR довольно обширна и включает в себя от 90 до 133 команд, в зависимости от разновидности микроконтроллера. Далее приводится выборочный перечень наиболее часто употребляемых команд по группам. Приведенных команд в принципе достаточно для того, чтобы составить большинство законченных программ для МК AVR, хотя многие полезные, но редко употребляемые команды (такие как eor, сом, neg и др.), здесь отсутствуют. Поэтому для полноценной работы следует иметь полный справочник по командам. Краткие таблицы команд прилагаются ко всем описаниям МК, полный перечень команд на русском имеется в пособиях [1]Меандр — тип геометрического узора с повторяющимися ломаными линиями (по названию извилистой реки Меандр в Малой Азии).
и [2]Префикс «К» в названии отечественных микросхем, обозначающий их принадлежность к бытовому/коммерческому диапазону температур, мы будем в этой книге опускать, подробнее см. главу 8 .
(берегитесь неточностей, которые встречаются в первых изданиях этих пособий!). Официальный перечень команд на английском (AVR Instruction Set) можно скачать с сайта atmel.com в виде PDF-документа.
Будьте внимательны при работе с командами: следует обращать внимание на то, что некоторые команды могут быть применены только к определенным регистрам (к примеру, операции с константами работают только со старшими 16 регистрами, начиная с R16), а сами константы не всегда могут иметь полный диапазон значений. Поэтому следует внимательно смотреть характеристики команд, прежде чем использовать их в программе. Команды, помеченные серым цветом, действительны не для всех моделей AVR (для семейства Mega, как правило, действительны все, но стоит уточнить по описанию конкретного контроллера).
В табл. П4.1—П4.6 приняты следующие сокращения: РОН (регистр общего назначения), РВВ — регистр ввода/вывода, PC — счетчик команд (программный счетчик, Program Counter). Буквой с в регистре флагов SREG обозначается флаг переноса (устанавливается при возникновении переноса при арифметических операциях), буквой z — флаг нуля (устанавливается по равенству операндов при сравнении). Последний не путать с парой регистров R31:R30, которые задействованы в командах переноса данных, и также обозначаются буквой z. В этих командах используются также обозначения X (пара регистров R27:R26) и Y (пара регистров R29:R28).
Арифметические и логические команды
Арифметические и логические команды приведены в табл. П4.1.
Команды операций с битами
Команды операций с битами приведены в табл. П4.2.
1 Команды SBI и CBI действительны для PBB по первым 32 адресам (0…31)
Команды сравнения
В операциях сравнения с регистрами производятся те же действия, что и в соответствующих арифметических и логических операциях, однако результат никуда не помещается (и, соответственно, операнды не портятся), лишь устанавливаются соответствующие флаги (C и Z) в регистре флагов SREG. Значением этих флагов в дальнейшем определяется работа тех команд условного перехода, которые употребляются в паре с командами сравнения (исключение составляет опущенная здесь и редко употребляемая команда CPSE, которая содержит сравнение и переход «в одном флаконе»). Описание команд сравнения приведено в табл. П4.3.
Команды передачи управления
Команды передачи управления делятся, с одной стороны, на команды безусловного перехода и похожие на них команды вызова подпрограмм (последние от первых отличаются тем, что явно размещают в стеке содержимое счетчика команд для последующего возврата из подпрограммы), с другой стороны, — на команды условного перехода, т. е. нарушения последовательности выполнения операторов по какому-то условию. Большинство таких команд оперируют с адресом в памяти (К) оператора, на который производится переход. В тексте ассемблерных программ абсолютные или относительные числа, обозначающие адрес, в команды передачи управления не подставляются, вместо них указывают метки, которые затем компилятор интерпретирует, как абсолютный адрес. Команды, начинающиеся с буквы «В» (от Branch— «ветка») предполагают предварительный вызов одной из команд сравнения. Описание команд передачи управления приведено в табл. П4.4—П4.5.
Команды безусловного перехода и вызова подпрограмм
1 Для устройств с максимально возможным объемом памяти программ до 64 К слов (128 кбайт).
Команды условного перехода
1 Значение 2 — если следующая команда занимает одно слово (два байта) и 3 — если следующая команда занимает два слова (четыре байта).
2 Команды SBIC и SBIS действительны только для РВВ по первым 32 адресам (0..31).
Команды переноса данных
В табл. П4.6 приведено описание команд переноса данных.
Команды управления системой
В табл. П4.7 приведены команды управления системой.
Приложение 5
Тексты программ
Далее приведены полные тексты микропрограмм для конструкций, разбираемых в книге. Каждая программа подробно описана в указанных далее главах. Для воспроизведения сканируйте исходный текст с помощью Fine Reader, проверьте и сохраните в виде текстового файла с расширением asm. После этого программу можно компилировать и загружать в память контроллера, как описано в главе 13.
Программа для часов
Описание схемы и программы часов см. главу 14. Программа (листинг П5.1) занимает в памяти МК 298 слов (596 байт).
Листинг П5.1
;============== Программа часов
;AT90S2313 4 МГц
.include "2313def.inc"
;==== Управление сегментами ====
.equ segA = 5; PD5 (pin 9)
.equ segB = 6; PD6 (pin 11)
.equ segC = 2; PB2 (pin 14)
.equ segD = 4; PB4 (pin 16)
.equ segE = 5; PB5 (pin 17)
.equ segF = 6; PB6 (pin 18)
.equ segG = 7; PB7 (pin 19)
;==== Управление разрядами ====
.еqu em = 0; PD0 (pin2)
.equ dm = 1; PD1 (pin 3)
.equ eh = 2; PD2 (pin 6)
.equ dh = 4; PD4 (pin 8)
;==== Рабочие переменные ====
.def POS = r16 ;отсчет разрядов для динамической индикации
.def sek = r17 ;число секунд
.def temp = r18 ;рабочая переменная
.def emin = r19 ;число единиц минут
.def dmin = r20 ;число десятков минут
.def ehh = r21 ;число единиц часов
.def dhh = r22 ;число десятков часов
.def set_up = r23 ;отсчет разрядов при установке
.def count = r24 ;счетчик для мигания
.def Flag = r25 ;флаги режимов
;в регистре Flag: если бит0=1, то идет установка часов
;если бит1=1, то внешнее напряжение пропало
;======== Прерывания =========
rjmp RESET ;процедура Reset
reti
rjmp INTT1 ;прерывание INTI по нажатию Кн1
reti
rjmp TIM1 ;прерывание Timer1 по сравнению CompareA (счет времени)
reti
rjmp TIM0 ;прерывание Timer0 по переполнению (управл. разрядами)
reti
reti
reti
rjmp ACOMPI ;прерывание аналогового компаратора
;===== Программа =====
;===== прерывание по нажатию кнопки Кн1 ====
INTT1:
sbrc Flag,1 ;если бит1=1 напряжения нет
rjmp END_SET ;какая установка — на выход
clr temp
out GIMSK,temp ;запрещаем INTI
sbr Flag,1 ;устанавливаем бит 0 флага — идет установка
inc set_up ;отсчет, какой разряд устанавливаем
clr count ;очищаем счетчик мигания
cpi set_up,5 ;если счетчик разрядов
brne END_SET ;еще не больше 4, то на выход
clr set_up ;если больше, то обнуляем счетчик
ldi sek,59 ;и устанавливаем число секунд = 59
cbr Flag,1 ;сбрасываем бит 0 флага — конец установки
END_SET:
reti ;конец прерывания INT1
;===== прерывание Timerl — ход часов ====
TIM1:
sbrc Flag,1 ;если бит1=1 напряжения нет
rjmp mtime ;сразу посылаем на счет времени
sbrs Flag,0 ;если бит0=1 идет установка
rjmp mtime ;иначе сразу на счет времени
ldi temp, 0b10000000 ;на всякий случай
out GIFR,temp ;очищаем прерывание INT1
cpi count,0 ;если счетчик =0
breq CONT_1 ;то на продолжение
ldi temp,1<<INT1 ;иначе разрешаем прерывание INT1
out GIMSK,temp
CONT_1: ;установка
inc count ;увеличиваем счетчик мигания на 1
cpi set__up,1 ;если первый разряд, устанавливаем его
brne mm1 ;иначе на следующий
sbis PinB,0 ;если Кн2 нажата
inc emin ;увеличиваем число единиц минут на 1
cpi emin,10 ;если число единиц минут еще не равно 10
brne END_TIM1 ;то на выход из процедуры
clr emin ;если =10, то обнуляем
rjmp END_TIM1 ;на выход
mm1: cpi set_up,2 ;если второй разряд, устанавливаем его
brne mm2 ;иначе на следующий
sbis PinB,0 ;если Кн2 нажата
inc dmin ;увеличиваем число десятков минут на 1
cpi dmin,6 ;если число десятков минут еще не равно 6
brne END_TIM1 ;то на выход из процедуры
clr dmin ;если =6, то обнуляем
rjmp END_TIM1 ;на выход
mm2: cpi set_up,3 ;если третий разряд, устанавливаем его
brne mm3 ;иначе на следующий
sbis PinB,0 ; если Кн2 нажата
inc ehh ;увеличиваем число единиц часов на 1
cpi ehh,4 ;если число единиц часов еще меньше 4
brio END_TIM1 ;то на выход из процедуры
cpi dhh,2 ;если число десятков часов не равно 2
brne mm21 ;то на метку mm21
clr ehh ;иначе обнуляем число единиц часов
rjmp END_TIM1 ;на выход из процедуры
mm21: cpi ehh, 10 ;если число единиц часов не равно 10
brne END_TIM1 ;то на выход
clr ehh ;иначе обнуляем число единиц часов
rjmp END_TIM1 ;на выход
mm3: sbis PinB,0 ;четвертый разряд
inc dhh ;увеличиваем число десятков часов на 1
cpi dhh,3 ;если оно еще не равно 3
brne END_TIM1 ;то на выход
clr dhh ;иначе обнуляем
rjmp END_TIM1 ;на выход
;счет времени
mtime: inc sek ;увеличиваем число секунд на 1
cpi sek,60 ;если оно не равно 60
brne END_TIM1 ;то на выход
clr sek ;иначе обнуляем секунды
inc emin ;и увеличиваем единиц минут
cpi emin,10 ;если число единиц минут не равно 10
brne END_TIM1 ;то на выход
clr emin ;иначе обнуляем единиц минут
inc dmin ;и увеличиваем число десятков минут
cpi dmin,6 ;если оно не равно 6
brne END_TIM1 ;то на выход
clr dmin ;иначе обнуляем число десятков минут
inc ehh ;и увеличиваем число единиц часов
cpi ehh,4 ;если число единиц часов не равно 4
brio END_TIM1 ;то однозначно на выход
cpi dhh,2 ;если число десятков часов при этом не равно 2
brne mhh ;то на метку mhh
clr ehh ;иначе обнуляем число единиц часов
clr dhh ;и сразу число десятков часов тоже (это полночь)
rjmp END_TIM1 ;на выход
mhh:
cpi ehh,10 ;если число единиц часов не равно 10
brne END_TIM1 ;на выход
clr ehh ;иначе обнуляем единиц часов
inc dhh ;увеличиваем число десятков часов
END_TIM1:
reti ;выход из прерывания Timer1
;==== прерывание Timer0 управление разрядами ====
TIM0:
sbrc Flag,1 ;если бит1=1 напряжения нет
rjmp END_TIM0 ;тогда сразу на выход
clr temp ;все очищаем
out PortD,temp
out РогtB,temp
andi POS,3 ;счет разрядов от 0 до 3
sbis PinB,0 ;пока нажата кнопка Кн2
clr count ;разряд при установке не мигает
cpi P0s,0 ;если счетчик разрядов не 0
brne m0 ;то на метку m0 — следующий разряд
cpi set_up,1 ;если set_up=1, мигает этот разряд
brne sm_1 ;иначе на включение разряда
sbrs count,0 ;если бит 0 в count=0
sm_1: sbi PortD,em ;то уст. PDO в 1, разряд единиц мин. светится
;иначе он останется темным, т. е. мигает с частотой count
mov temp,emin ;в temp — число единиц минут
rcall SEG_SET ;устанавливаем сегменты
rjmp END_0 ;на выход
m0: cpi POS,1 ; если счетчик разрядов не 1
brne m1 ;то на сл. разряд
cpi set_up,2 ;если set_up=2, то мигает этот разряд
brne sm_2 ;иначе на включение разряда
sbrs count,0 ;если бит 0 в count=0
sm_2: sbi PortD,dm ;то уст. PD1 в 1, разряд десятков мин. светится
mov temp,dmin ;в temp — число десятков минут
rcall SEG_SET ;устанавливаем сегменты
rjmp END_0 ;на выход
m1: cpi POS,2 ;если счетчик разрядов не 2
brne m2 ;то на сл. разряд
cpi set_up,3 ;если set_up=3, то мигает этот разряд
brne sm_3 ;иначе на включение разряда
sbrs count,0 ;если бит 0 в count=0
sm_3: sbi PortD,eh ;то уст. PD2 в 1, разряд единиц часов светится
mov temp, ehh ;в temp — число единиц часов
rcall SEG_SET ;устанавливаем сегменты
rjmp END_0 ;на выход
m2: ;обработка 4 разряда десятков часов
cpi set_up,4 ;если set_up=4, то мигает этот разряд
brne sm_4 ;иначе на включение разряда
sbrs count,0 ;если бит 0 в count=0
sm_4: sbi PortD,dh ;то уст. PD4 в 1, разряд десятков часов светится
mov temp,dhh ;в temp — число десятков часов
rcall SEG_SET ;устанавливаем сегменты
END_0:
inc POS
END_TIM0:
reti ;выход из прерывания Timer0
;===== компаратор — батарейка =====
ACOMPI:
sbis ACSR,АСО ;если бит АСО =1, то продолжим
rjmp СОМР_1 ;иначе на установку мигания ldi temp,0b11000000
ut TCCR1A,temp ;двоеточие включено постоянно
rjmp END_comp ;на выход
СОМР_1:
ldi temp,0b01000000
out TCCR1A,temp ;двоеточие мигает
END_comp:
reti ;выход из процедуры компаратора
;===== процедура Reset ====
RESET:
cli ;запрещаем прерывания на время установки
ldi temp,low(RAMEND) ;загрузка указателя стека
out SPL,temp
ldi temp,0b01110111 ;порт D разряды 0,1,2,4,5,6 на выход
out DDRD,temp
ldi temp, 0b11111100 ;порт В все на выход, кроме 0,1 (компаратор)
out DDRB,temp
;- таймеры —
ldi temp,0Ь00000010 ;запуск Timer0 входная частота 1:8
out TCCR0,temp ;управление разрядами по переполнению,
;частота около 2 кГц (4/8=0,5 МГц/256)
ldi temp,high(62 500) ;старший байт
out OCR1AH,temp ;вых. частота 1 Гц при вх. частоте 1:64
ldi temp,low(62500) ;младший байт out
OCR1AL,temp
ldi temp,0b01000000
out TCCR1A,temp ;включаем переключающую моду для вывода ОС1 (15)
ldi temp,0b01001011 ;запуск 1/64 timer1 с обнулением при сравнении
out TCCR1B,temp ;
;- прерывания —
ldi temp,1<<INT1 ;разрешаем прерывание INT1
out GIMSK,temp
ldi temp,(1<<TOIE0)|(1<<0CIE1A) ;разр. прерываний Tim0 и Tim1
out TIMSK,temp
ldi temp,(1<<ACIE) ;разр. прерывания компаратора при переключении
out ACSR,temp
sei ;разрешаем прерывания
;======= основной цикл ========
G_cycle: ;все время будем отслеживать пропадание внешнего питания
sbrs Flag,0 ;если бит0=1 идет установка
rjmp G_cycle ;если так, то ничего не делаем
sbic PinB,0 ;если напряжение есть
rcall Restore ;вызываем процедуру восстановления выходов
sbis PinB,0 ;если напряжения нет
rcall Disable ;вызываем процедуру отключения выходов
rjmp G_cycle ;зацикливаем программу
;======= конец основного цикла ========
Disable: ;процедура отключения
sbrc Flag,2 ;если бит1=1, то уже все сделали
rjmp END_dis ;выход из процедуры
cli ;запрещаем прерывания на время установок
sbr Flag,2 ;устанавливаем бит1 Flag
;обрываем внешние соединения и обнуляем все порты:
clr temp
out PortD,temp
out PortB,temp
out DDRD,temp
out DDRD,temp
sei ;разрешаем прерывания
END_dis:
ret ;конец процедуры отключения выходов
Restore: ;процедура восстановления
sbrs Flag,2 ;если бит1=0, то уже все остальное сделали
rjmp end_res ;выход из процедуры
;восстановление
cli ;запрещаем прерывания на время установок
cbr Flag,2 ;сбрасываем бит1 Flag
;восстанавливаем внешние соединения:
clr temp
ldi temp,0b01110111 ;порт D разряды 0,1,2,4,5,6 на выход
out DDRD,temp
ldi temp, 0b11111100 ;порт В все на выход, кроме 0,1
out DDRB,temp
sei ;разрешаем прерывания
END_res:
ret ;конец процедуры восстановления выходов
SEG_SET: ;процедура установки сегментов
cpi temp,0 ;ищем число, равное temp
brne ss_0
rcall OUT_0 ;и посылаем на нужную процедуру вывода сегментов
rjmp END_seg
ss_0: cpi temp,1
brne ss_1
rcall OUT_1
rjmp END_seg
ss_1: cpi temp,2
brne ss_2
rcall OUT_2
rjmp END_seg
ss_2: cpi temp,3
brne ss_3
rcall OUT_3
rjmp END_seg
ss_3: cpi temp,4
brne ss_4
rcall OUT_4
rjmp END_seg
ss_4: cpi temp,5
brne ss_5
rcall OUT_5
rjmp END_seg
ss_5: cpi temp,6
brne ss 6
rcall OUT_6
rjmp END_seg
ss_6: cpi temp,7
brne ss_7
rcall OUT_7
rjmp END_seg
ss_7: cpi temp,8
brne ss_8
rcall OUT_8
rjmp END_seg
ss_8: cpi temp,9
rcall OUT_9
END_seg:
jret ;конец процедуры установки сегментов
;процедуры для отображения цифр на семисегментном индикаторе
;ABCDEF(0);ВС(1)/ABDEG(2)/ABCDG(3)/BCFG(4);ACDFG(5)
;ACDEFG(6);ABC(7);ABCDEFG(8);ABCDFG(9)
Out_0:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
sbi PortB,segD
sbi PortB,segE
sbi PortB,segF
ret
OUT_1:
sbi PortD,segB
sbi PortB,segC
ret
OUT_2:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segG
sbi PortB,segE
sbi PortB,segD
ret
OUT_3:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segG
sbi PortB,segC
sbi PortB,segD
ret
OUT_4:
sbi PortD,segB
sbi PortB,segC
sbi PortB,segF
sbi PortB,segG
ret
OUT_5:
sbi PortD,segA
sbi PortB,segF
sbi PortB,segG
sbi PortB,segC
sbi PortB,segD
ret
OUT_6:
sbi PortD,segA
sbi PortB,segF
sbi PortB,segG
sbi PortB,segC
sbi PortB,segE
sbi PortB,segD
ret
OUT_7:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
ret
OUT_8:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
sbi PortB,segD
sbi PortB,segE
sbi PortB,segF
sbi PortB,segG
ret
OUT_9:
sbi PortD,segA
sbi PortD,segB
sbi PortB,segC
sbi PortB,segD
sbi PortB,segF
sbi PortB,segG
ret
Программа измерителя температуры и давления
Программа измерителя температуры и давления, описанного в главе 15, приведена в листинге П5.2.
Листинг П5.2
;ATmega853 5 кварц 4000 кГц
.include "m8535def.inc"
;==== Определения и константы ====
;Управление индикацией
.equ segG = 6 ;port С pin 28
.equ segF = 5 ;pin 27
.equ segE = 4 ;pin 26
.equ segD = 3 ;pin 25
.equ segC = 2 ;pin 24
.equ segB = 1 ;pin 23
.equ segA = 0 ;pin 22
.equ RazrTdH = 0 ;PortB,0 pin 1 десятки градуса
.equ RazrTdM = 1 ;PortB,1 pin 2 ед. градусов
.equ RazrTdL = 2 ;PortB,2 pin 3 десятые градусов
. equ RazrPdH = 3 ;PortB,3 pin 4 сотни давления
.equ RazrPdM = 4 ;PortB,4 pin 5 дес. давления
.equ RazrPdL = 5 ;PortB,5 pin 6 ед. давления
;адреса SRAM старший байт адреса SRAM=0x01
.equ Tram =: 0x0 ;0x0,0x1 — старш. и младш. байты температуры АЦП
.equ Pram =: 0x2 ;0x2,0x3 — старш. и младший, байты давления АЦП
.equ TdH = 0x04 ;температура старший дес.
.equ TdM = 0x05 ;темп. средний дес.
.equ TdL = 0x06 ;темп. младший дес.
.equ PdH = 0x07 ;давление старший дес.
.equ PdM = 0x08 ;давление средний дес.
.equ PdL = 0x09 ;давление младший дес.
.equ tZH = 0x20 ;ст. разряд коэффициента Z температуры
.equ tZL = 0x21 ;мл. разряд коэффициента Z температуры
.equ tKH = 0x22 ;ст. разряд коэффициента К температуры
.equ tKL = 0x23 ;мл. разряд коэффициента К температуры
.equ pZH = 0x24 ;ст. разряд коэффициента Z давления
.equ pZL = 0x25 ;мл. разряд коэффициента Z давления
.equ pKH = 0x26 ;ст. разряд коэффициента К давления
.equ pKL = 0x27 ;мл. разряд коэффициента К давления
.equ AtBCDO = 5 ;адрес ResL для процедуры преобразования Bin-Dee
.equ AtBCD2 = 6 ;адрес ResH
;переменные
.def AregH = r2 ;результат измерения hex, старший байт
.def AregL = r3 ;результат измерения hex, младший байт
.def KoeffH = r4 ;коэффициент, старший байт
.def KoeffL = r5 ;коэффициент, младший байт
.def ResL = r6 ;результат упакованный BCD, младший байт
.def ResH = r7 ;результат упакованный BCD, старший байт
.def temp = r16 ;рабочий регистр
.def temp1 = r17 ;вспомогательная переменная
.def temp2 = r18 ;вспомогательная переменная
.def count = r19 ;счетчик преобразований — до 64
.def countCyk = r20 ;счетчик до 32,
.def Flag = r21 ;регистр флагов, биты:
;измерение: 0 — температуры, 1 — давления,
.def cRazr = г22 ;счетчик до 6 мультиплексирования разрядов
;====== прерывания ======
rjmp RESET ;Reset Handle
reti ;IRQ0 Handler
reti ;IRQ1 Handler
reti ;Timer2 Compare Handler
reti ;Timer2 Overflow Handler
reti ;Timer1 Capture Handler
reti ;Timer1 Compare A Handler
reti ;Timer1 Compare В Handler
reti ;TIM1_OVF ;Timer1 Overflow Handler
rjmp TIM0 ;Timer0 Overflow Handler
reti ;SPI Transfer Complete Handler
reti ;USART RX Complete Handler
reti ;UDR Empty Handler
reti ;USART TX Complete Handler
rjmp readADC ;reti;ADC ;ADC Conversion Complete Handler
reti ;EEPROM Ready Handler
reti ;Analog Comparator Handler
reti ;Two-wire Serial Interface Handler
reti ;IRQ2 Handler
reti ;Timer0 Compare Handler
reti ;Store Program Memory Ready Handler
;==================
OUT_N: ;маски цифр
.db
0b00111111,0b0000110,0b01011011,0b01001111,0b01100110,0b01101101, 0b01111101,0b00000111,0b01111111,0b01101111
;seg ABCDEF(0);seg BC(1);seg ABDEG(2);seg ABCDG(3);seg BCFG(4);seg ACDFG(5)
;seg ACDEFG(6);seg ABC(7);seg ABCDEFG(8);seg ABCDFG(9)
TIM0:
;сначала индикация
inc cRazr ;счетчик разрядов
cpi cRazr,6 ;всего б разрядов
brne Set_razr
clr cRazr ;если равен 6, очищаем
Set_razr:
cpi cRazr,0 ;десятки градусов
brne Р1 ;если нет — на другие разряды
ldi r28,TdH ;установка YL — старш. темп.
ld temp,Y ;в temp — значение десятков градусов
ldi ZH,HIGH(OUT_N*2) ;адрес констант в памяти — в Z
ldi ZL,LOW(OUT_N*2)
add ZL,temp ;адрес маски цифры, равной temp
lpm ;в r0 — маска
out PortC,r0 ;установили сегменты
ldi temp,1<<RazrTdH ;устанавливаем разряд
out PORTB,temp ;установили разряды
rjmp rADC
P1:
cpi cRazr,1 ;единицы град
brne P2
ldi r2 8,TdM ;установка адреса — ср. темп.
ld temp,Y
ldi ZH,HIGH()UT_N*2)
ldi ZL,LOW(OUT_N* 2)
add ZL,temp
lpm
out PortC,r0 ;установили сегменты
ldi temp,1<<RazrTdM ;устанавливаем разряд
out PORTB,temp ;установили разряды rjmp rADC
P2:
cpi cRazr,2 ;дробные град
brne P3
ldi r2 8,TdL ;установка Y — мл. темп.
ld temp,Y
ldi ZH,HIGH(OUT_N* 2)
ldi ZL,LOW(OUT_N*2)
add ZL,temp
lpm
out PortC,r0 ;установили сегменты
ldi temp,1<<RazrTdL ;устанавливаем разряд
out PORTB,temp ;установили разряды
rjmp rADC
Р3:
cpi cRazr,3 ;сотни давления
brne Р4
ldi r28,PdH ;установка Y — сотн. prs
ld temp,Y
ldi ZH,HIGH(OUT_N*2)
ldi ZL,LOW(OUT_N*2)
add ZL,temp
lpm
out PortC, r0 ;установили сегменты
ldi temp,1<<RazrPdH ;устанавливаем разряд
out PORTB,temp ;установили разряды
rjmp rADC
P4:
cpi cRazr,4 ;десятки давления
brne P5
ldi r2 8,PdM ;установка Y — дес. prs
ld temp,Y
ldi ZH,HIGH(OUT_N*2)
ldi ZL,LOW(OUT_N*2)
add ZL,temp
lpm
out PortC,r0 ;установили сегменты
ldi temp,1<<RazrPdM ;устанавливаем разряд
out PORTB,temp ;установили разряды
rjmp rADC
P5:
cpi cRazr,5 ;единицы давления
brne rADC
ldi r28,PdL ;установка Y — ед. prs
ld temp,Y
ldi ZH,HIGH(OUT_N*2)
ldi ZL,LOW(OUT_N*2)
add ZL,temp
lpm
out PortC,r0 ;установили сегменты
ldi temp,1<<RazrPdL ;устанавливаем разряд
out PORTB,temp ;установили разряды
rADC: inc countCyk ;обработка АЦП
sbrs countCyk,5 ;если бит 5 в countCyk равен 1, то прошло 32 такта таймера 0, будем запускать АЦП (см. readADC)
reti
clr countCyk
inc count
cpi count,65 ;если прошло 64 чтения, то сразу на обработку
breq endADC
sbrc Flag,0 ;если бит 0 флага — читаем температуру
ldi temp,0
sbrc Flag,1 ;если бит 1 флага — читаем давление
ldi temp,1
out ADMUX, temp ;установили АЦП канал
sbi ADCSRA, ADSC ;запуск новое преобразование
reti
endADC:
;расчет по 64 значениям
clr count
sbrc Flag,0
ldi r28,Tram ;установка адреса — T
sbrc Flag,1
ldi r28,Pram ;установка адреса — P
ld AregH,Y+ ;загрузка суммы из памяти
ld AregL,Y
div64L: ;деление на 64
lsr AregH ;сдвинули старший
ror AregL ;сдвинули младший
inc count
cpi count,6
brne div64L ;сдвинули-поделили на 64
subi r28,1 ;в Y опять адрес Tram или Pram
clr temp
st Y+,temp
st Y,temp ;очистили память для следующего цикла
sbrs Flag,0 ;расчет температуры
rjmp prs ;иначе давления
ldi r28,tZH ;установка адреса коэфф. Z
ld temp,Y+
mov KoeffH,temp
ld temp,Y
mov KoeffL,temp ;получили коэфф. Z температуры
;вычисление знака:
ср AregL,KoeffL
срс AregH,KoeffH
brsh b0
sub KoeffL,AregL
sbc KoeffH,AregH
mov AregL,KoeffL
mov AregH,KoeffH
sbi PortD,7 ;знак —
rjmp m0
Ь0: ;если больше
sub AregL,KoeffL
sbc AregH,KoeffH
cbi PortD,7 ;знак +
m0: ;умножение на коэфф. К
ldi r28,tKH ;установка адреса коэфф. К
ld temp,Y+
mov KoeffH,temp
ld temp,Y
mov KoeffL,temp ;получили К температуры
rcall Mp16 ;умножили
;деление на 1024
mov AregL,temp1
mov AregH,temp2 ;на 2 56
lsr AregH ;сдвинули старший
ror AregL ;сдвинули младший
lsr AregH ;сдвинули старший
ror AregL ;сдвинули младший; еще на 4
rjmp contPT
prs:
sbrs Flag,1 ;расчет давления
rjmp contPT
ldi r28,pZH ;установка адреса коэфф. Z
ld temp,Y+
mov KoeffH,temp
ld temp,Y
mov KoeffL,temp ;получили коэфф. Z давления
adc AregL,KoeffL
add AregH,KoeffH ;прибавили к величине
ldi r28,pKH ;установка адреса коэфф. К
ld temp,Y+ mov
KoeffH,temp
ld temp,Y
mov KoeffL,temp ;получили коэфф. К давления
rcall Мр16 ;умножили
;деление на 1024
mov AregL,temp1
mov AregH,temp2 ;на 256
lsr AregH ;сдвинули старший
ror AregL ;сдвинули младший
lsr AregH ;сдвинули старший
ror AregL ;сдвинули младший; еще на 4
contPT:
sbrc Flag,0
ldi r28,TdH ;установка адреса — T
sbrc Flag,1
ldi r28,PdH ;установка адреса — P
rcall bin2BCD16 ;преобраз в дв. дес.
st Y+,ResH ;запоминаем в памяти старший BCD
mov temp,ResL ;младший распаковываем
swap temp
andi temp,0b00001111
st Y+,temp
mov temp,ResL
andi temp,0b00001111
st Y,temp ;и тоже сохраняем в памяти
;установка флагов и переменных для следующего цикла
clr count
sbrc Flag,0
rjmp _F0
clr Flag
sbr Flag,0x1 ;был бит 1, устанавливаем бит 0
reti
_F0:
clr Flag ;был бит 0, устанавливаем бит 1
sbr Flag,0x2
reti ;TIME0
readADC: ;чтение АЦП по прерыванию
sbrc Flag,0
ldi r28,Tram ;установка адреса — T
sbrc Flag,1
ldi r28,Pram ;установка адреса — P
ld AregH,Y+
ld AregL,Y
in temp1,ADCL ;получаем младший
in temp,ADCH ;старший
add AregL,tempi ;суммируем
adc AregH,temp
dec r28
st Y+,AregH ;запоминаем сумму
st Y,AregL ;в памяти
reti ;ADC
Мр16: ;умножение двух 16-разрядных величин
;AregL multiplicand low byte
;AregH multiplicand high byte
;KoeffL multiplier low byte
;KoeffH multiplier high byte
;temp result byte 0 (LSB)
;tempi result byte 1
;temp2 result byte 2
clr temp2 ;очистить ставший
mul AregL,KoeffL ;умножаем младшие
mov temp,r0 ;в r0 младший результата операции mul
mov temp1,r1 ;в r01 старший результата операции mul
mul AregH,KoeffL ;умножаем старший на младший
add tempi,r0 ;в r младший результата операции mul
adc temp2,r1 ;в r01 старший результата операции mul
mul AregL,KoeffH ;умножаем младший на старший
add temp1,r0 ;в r0 младший результата операции mul
adc temp2,r1 ;в r01 старший результата операции mul
mul AregH,KoeffH ;умножаем старший на старший
add temp2,r0 ;4-й разряд нам тут не требуется, но он в r01
ret
bin2BCD16: ;преобразование 16-разрядного hex в упакованный BCD
;input: hex value low=AregL hex value high = AregH
;output: BCD value digits 1 and 0 ResL
;BCD value digits 2 and 3(=0) ResH
ldi tempi,16 ;Init loop counter
clr ResH
clr ResL
clr ZH ;clear ZH (not needed for AT90Sxx0x)
bBCDx_1: lsl AregL ;shift input value
rol AregH ;through all bytes
rol ResL;
rol ResH
dec temp1 ;decrement loop counter
brne bBCDx_2 ;if counter not zero
ret ;return
bBCDx_2:ldi r30,AtBCD2+1 ;Z points to result MSB + 1
bBCDx_3:
ld temp, — Z ;get (Z) with pre-decrement
subi temp, — $03 ;add 0x03
sbrc temp,3 ;if bit 3 not clear
st Z, temp ;store back
ld temp, Z ;get (Z)
subi temp, — $30 ;add 0x30
sbrc temp, 7 ;if bit 7 not clear
st Z,temp ;store back
cpi ZL,AtBCDO ;done all three?
brne bBCDx_3 ;loop again if not
rjmp bBCDx_1
bin2bcd8: ;преобразование 8-разрядного hex в неупакованный BCD
;вход hex= temp, выход BCD temp1 — старш.; temp — младш.
;эта процедура работает только для исходного меньше 100
clr tempi ;clear result MSD
bBCD8_1: subi temp,10 ;input = input — 10
brcs bBCD8_2 ;abort if carry set
inc temp1 ;inc MSD
rjmp bBCD8_1 ;loop again
bBCD8_2:subi temp, — 10 ;compensate extra subtraction
ret
RESET: ;точка запуска программы после включения
ldi temp,low(RAMEND) ;загрузка указателя стека
out SPL,temp
ldi temp,high(RAMEND) ;загрузка указателя стека
out SPH,temp
ldi temp,1<<ACD
out ACSR,temp ;выкл. аналог, компаратор на всякий
;установка портов вход-выход
ldi temp,0b00111111 ;разряды
out DDRB,temp
ldi temp,0b01111111 ;сегменты
out DDRC,temp
ldi temp,0b10000000 ;знак "минус"
out DDRD,temp
;установка АЦП
ldi temp, 1<<ADEN|1<<ADIE|1<<ADPS2 |1<<ADPS0
;start ADC 1/32 такт = 128 кГц ;interrupt enable
out ADCSRA,temp
;установка таймера
ldi temp,0b00000010
out TCCR0,temp
;Timer0 on div 1:8 управление разрядами 2000 Гц
;прерывания
ldi temp,(1<<TOIE0) ;разр. прер. Timer 0
out TIMSK,temp
ldi temp,255 ;сбросить все прерывательные флаги
out TIFR,temp
out GIFR,temp
;начальная установка переменных
ldi r29,1 ;YH=1, пишем в RAM, начиная с 01:00
clr count
clr countCyk
clr cRazr
clr Flag
sbr Flag,0x01 ; сначала измеряем температуру
;обнуление рабочих ячеек
clr temp
ldi r28,Tram ;Tempr
st Y+,temp
st Y,temp
ldi r2 8,Pram ;Prs
st Y+,temp
st Y,temp
;запись коэффициентов
ldi r28,tZH ;начальный адрес
;Z Tempr=471
ldi temp,High(471) ;ст.
st Y+,temp
ldi temp,Low(471) ;мл.
st Y+,temp
;К Tempr=1020
ldi temp,High(1020) ;ст.
st Y+,temp
ldi temp,Low(1020) ;мл.
st Y+,temp
;Z prs=12
ldi temp,High(12) ;ст. на самом деле = 0
st Y+,temp
ldi temp,Low(12) ;мл.
st Y+,temp
;К prs=916
ldi temp,High(916) ;ст.
st Y+,temp
ldi temp,Low(916) ;мл.
st Y,temp
sei ;разрешаем прерывания
G_cykle: ;основной цикл
rjmp G_cykle
Процедуры обмена по интерфейсу I 2 С
Протокол обмена I2С и пример его использования описан в главе 16. Процедуры составлены для передачи со скоростью около 100 кГц при тактовой частоте контроллера 4 МГц. При другой частоте контроллера или иной скорости передачи число циклов в процедуре delay, равное 6, следует пропорционально изменить. Например, для частоты кварца, равной 16 МГц и скорости передачи, пониженной до 30 кГц, команду ldi cnt,6 следует заменить на команду ldi cnt,75 (приблизительно). Ошибка в ±50 % в скорости передачи обычно роли не играет. При наличии сбоев увеличивайте число циклов до тех пор, пока связь не установится.
Программа содержит процедуры для двух конкретных устройств: энергонезависимой памяти с интерфейсом I2С (типа АТ24) и часов реального времени (RTC) с таким же интерфейсом (например, DS1307). Процедуры Write-Flash/ReadFlash предназначены для обмена с памятью, процедуры write_i2c/read_i2c для обмена с часами. Примеры их использования см. в главе 16. Для других устройств легко построить собственную процедуру по аналогии, если использовать универсальные процедуры формирования протокола (start, write, read и stop), находящиеся в данном тексте. Исключите ненужные процедуры перед компиляцией программы, чтобы не загромождать память МК.
Текст листинга П5.3 целесообразно скопировать в отдельный файл, и назвать его, например, i2c.prg. Готовый файл i2c.prg также доступен в архиве по адресу , где еще содержится программа для измерителя температуры и давления, обсуждаемая в главе 16. При необходимости использовать эти процедуры в другом устройстве следует отредактировать начальные строки, которые задают выводы МК, задействованные в процессе обмена. В данном случае это биты порта D номер 4 (SCL) и 6 (SDA). Кроме этого, конечно, следует изменить регистры для переменных, если это требуется (и при необходимости число циклов, если частота тактового генератора другая). Файл подключается к вашей программе с помощью директивы. include "i2c.prg" после таблицы векторов прерываний (см. главу 16).
Листинг П5.3
;файл I2С.рrg
;Процедуры чтения и записи по интерфейсу I2C
;+----------- порт D ---------+
.equ pSCL = 4
.equ pSDA = 6
;-------------------------------
.def DATA = r17
.def ClkA = r18
.def cnt = r23
.def AddrL = r24 ;адреса EEPROM
.def AddrH = r25
;---------------- запись EEPROM ------------
WriteFlash: ;в AddrL,AddrH — адрес, данные в DATA
;на выходе если бит с = 1 в регистре флагов, то ошибка
cbi PORTD,pSDA
cbi PORTD,pSCL
ldi cnt,120 ;120 попыток прописать
loop120f:
push DATA
rcall start
ldi DATA,0xA0 ;addr device=0,r/w=0
rcall write
brcs rt_writef ;C=1 ERROR
mov DATA,AddrH ;set HI address
rcall write
brcs rt_writef ;C=1 ERROR
mov DATA,AddrL ;set LO address
rcall write
brcs rt_writef ;C=1 ERROR
pop DATA ;set data to DATA
rcall write
brcs rt_f ;C=1 ERROR
rcall stop
brcs rt_f ;C=1 ERROR
ret
;--------------- чтение EEPROM -------------
ReadFlash: ;в AddrL,AddrH — адрес, данные в DATA
;если бит с = 1 в регистре флагов, то ошибка
cbi PORTD,pSDA
cbi PORTD,pSCL
ldi cnt,120
loop_read_f:
rcall start
ldi DATA,0xA0 ;addr device=0,r/w=0
rcall write
brcs rt__f ;C=1 ERROR
mov DATA,AddrH ;set HI address
rcall write
brcs rt__f ;C=1 ERROR
mov DATA,AddrL ;set LO address rcall write
brcs rt__f ;C=1 ERROR
rcall start
ldi DATA,0xA1 ;addr device=0,r/w=1
rcall write
brcs rt__f ;C=1 ERROR
clt; ;no put ACK
rcall read
rcall stop
brcs rt__f ;G=1 ERROR
ret
rt__f:
dec cnt
brne loop_read_f
ret
rt_writef:
pop DATA
rt_f:
brcc Ok_wr_f
dec cnt
brne loop120f
Ok_wr_f:
ret
;------------ запись RTC ------------
write_i2c: ;b ClkA — адрес, данные в DATA
;если бит с = 1 в регистре флагов, то ошибка
cbi PORTD,pSDA
cbi PORTD,pSCL
ldi cnt,120 ;120 попыток прописать
lоор120:
push DATA
rcall start
ldi DATA,0bi1010000 ;addr device,r/w=0
rcall write
brcs rt_write ;C=1 ERROR
mov DATA,ClkA ;set HI address
rcall write
brcs rt_write ;C=1 ERROR
pop DATA ;set data to DATA
rcall write
brcs rt_ ;C=1 ERROR
rcall stop
brcs rt_ ;C=1 ERROR
ret
;-----------чтение RTC-----------
read_i2c: ;ClkA — адрес, данные в DATA
;если бит с = 1 в регистре флагов, то ошибка
cbi PORTD,pSDA
cbi PORTD,pSCL
ldi cnt,120
loop_read_:
rcall start
ldi DATA 0b11010000 ;addr device,r/w=0
rcall write ;C=1 ERROR
mov DATA ClkA ;set HI address
rcall write
brcs rt ;C=1 ERROR
rcall stare
ldi DATA, 0b11010001 ;addr device, r/w=1
rcall write
brcs rt ;C=1 ERROR
clt ;no put ACK
rcall read
rcall stop
brcs rt ;C=1 ERROR
ret
rt__:
dec cnt
brne loop_read_
ret
rt_write:
pop DATA
rt_:
brcc Ok_wr_
dec cnt
brne loop120
Ok_wr_:
ret
;--------------------------------
write: ;запись байта из DATA
push DATA
push cnt
ldi cnt,8 ;счетчик бит
x42:
rol DATA
brcs sei
sbi DDRD,pSDA
rjmp del_wr
sel:
cbi DDRD,pSDA
del_wr:
cbi DDRD,pSCL
rcall delay
sbi DDRD,pSCL
rcall delay
dec cnt
brne x42 ;следующий бит
cbi DDRD,pSDA ;освободить pSDA для АСК
rcall delay
cbi DDRD,pSCL
rcall delay
clc
sbic PIND,pSDA ;читаем в бит С состояние АСК
sec ;АСК не пришел
sbi DDRD,pSCL
rcall delay
pop cnt
pop DATA
ret
read: ;чтение в DATA, бит t=1 —> ответить АСК, t=0 не отвечать АСК
ldi DATA,1
loop_read:
sbi DDRD,pSCL ;SCL=0
cbi DDRD,pSDA ;SDA=1
rcall delay
cbi DDRD,pSCL ;SCL=1
rcall delay
clc
sbic PIND,pSDA ;читать SDA в бит С
sec
rol DATA
brcc loop_read
;отсылаем ACK ()
sbi DDRD,pSCL ;SCL=0
rcall delay
brts se0
cbi DDRD,pSDA ;не отвечать ACK (t), SDA=1
rjmp rd_
se0:
sbi DDRD,pSDA ;отвечать ACK (t), SDA=0
rd_:
clc
rcall delay
cbi DDRD,pSCL ;SCL=1
rcall delay
ret
start:
cbi DDRD,pSDA
cbi DDRD,pSCL
rcall delay
sbis PINC,pSDA
rjmp start
sbis PINC,pSCL
rjmp start
sbi DDRD,pSDA ;0=SDA
rcall delay
sbi DDRD,pSCL ;0=SCL
rcall delay
ret
stop:
sbi DDRD,pSDA
sbi DDRD,pSCL
rcall delay
cbi DDRD,pSCL ;1=SCL
rcall delay
cbi DDRD.pSDA ;1=SDA
rcall delay
clc
sbic PIND,pSDA
ret
sbic PIND,pSCL
ret
sec
ret
delay: ;~5 мкс (кварц 4 МГц)
push cnt
ldi cnt,6
cyk_delay: dec cnt
brne cyk_delay
pop cnt
ret
Приложение 6
Словарь часто встречающихся терминов
В табл. П6.1 и П6.2 приведен перевод некоторых терминов, часто встречающихся в технической документации. Термины, вошедшие в русский язык в оригинальном звучании или близком к нему (transistor, resistor, logic, timer, emitter и т. п.) и потому понятные без перевода, за некоторыми исключениями в таблицах не приводятся. Не приводятся также термины и сокращения, подробно рассмотренные в тексте соответствующих глав (SRAM, DRAM, EEPROM и т. п.).
Таблица П6.1
Русско-английский
Блок (узел, устройство) — unit
центральный процессорный блок — central processor unit, CPU
Внешний — external
Внутренний — internal
Восьмеричный — octal
Вход — input
Вывод (компонента) — pin, lead
Выпрямитель — rectifier
Выход — output
Вычитание — subtraction
Генератор тактирующих — импульсов clock
Данные — data
Двоичный — binary
Действующий (значение напряжения) — effective
Деление — division
Делитель — divisor
Десятичный — decimal
Диапазон — range, scale
Доступ — access
Дрейф — drift
Емкость — capacity, capacitance
Задержка — delay
Заряд — charge
Затвор — gate
Земля — ground
Измерение — measuring
Индуктивность (катушка индуктивности) — coil
Исток, источник — source
Канал — channel
— передачи данных — data transfer channel
Кнопка — button, key
Конденсатор — capacitor
Корпус — case, package
Коэффициент усиления — gain
— по напряжению — voltage gain
Мост — bridge
— выпрямительный — rectifier bridge
Мощность — power
Набор — kit
Напряжение — voltage
высокий уровень ~high voltage
низкий уровень ~low voltage
— питания supply voltage
— смещения bias
Ноль — zero
Объединение (каналов) — multiplex
Отношение — ratio
Пайка — soldering
Память — memory
Панель (для микросхем) — socket
Параллельный — parallel
Переключатель — switch
Период (импульсов) — cycle
Питание — power
источник питания — power supply
Плата — board
Поддержка — support
Показатель — rate
Полоса (частот) — band
ширина полосы — bandwidth
Полупроводник — semiconductor
Поправка — correction
Последовательный — serial
Преобразователь — converter
аналого-цифровой ~analog-to-digital converter, ADC
Проверка, контроль — check
Провод — wire
гибкий~ (шнур) — cord
Проводник — conductor
Произвольный — random
Прямой — direct
Регулировать — adjuist, control
Регулировка — adjuistment
Режим (работы) — mode
Синхронизация — clock
Сложение — adding
Смещение — offset
Соединение — connect
Соединитель (разъем) — connector
Состояние — state
Стирание — erase
Сток — drain
Сторожевой — (таймер) watchdog
Схема — circuit
Счетчик — counter
Ток — current
— базы — base current
втекающий~ sink current
вытекающий~ source current
— насыщения — saturation current
переменный~ alternating current, AC
постоянный~ direct current, DC
— смещения — bias current
сила тока — amperage
Точность (погрешность) — accuracy
Умножение — multiplication
Умножитель — multiplier
Управление — control
центральное устройство управления — mean control unit, MCU
Усилитель — amplifier
Установка — set
начальная~ (переустановка) — reset
Устройство — device
Утечка — leakage
Хранение — storage
Частота — frequency
Шестнадцатеричный — hexadecimal
Шина — bus
Элемент (гальванический) — cell, battery
Таблица П6.2
Англо-русский
AC (alternating current) — переменный ток
Access — доступ
Accuracy — точность (погрешность)
ADC (analog-to-digital converter) — аналого-цифровой преобразоватепь
Adding — сложение
Adjuist — регулировать
Adjuistment — регулировка
Amperage — сила тока
Amplifier — усилитель
Band — полоса (частот)
Bandwidth — ширина полосы
Battery — элемент (гальванический)
Bias — смещение; напряжение смещения
Binary — двоичный
Board — плата
Bridge — мост
rectifier~ выпрямительный мост
Bus — шина
Button — кнопка, клавиша
Capacitor — конденсатор
Capacity, capacitance — емкость
Case — корпус
Cell — ячейка, элемент (гальванический)
Channel — канал
data transfer~ канал передачи данных
Charge — заряд
Check — проверка, контроль
Circuit — схема
Clock — синхронизация; генератор тактирующих импульсов
Coil — индуктивность (катушка индуктивности)
Conductor — проводник
Connect — соединение
Connector — соединитель (разъем)
Control — управлять, регулировать, управление
Converter — преобразователь
Cord — гибкий провод (шнур)
Correction — поправка
Counter — счетчик
CPU (central processor unit) — центральный процессорный блок
Current — ток
base~ ток базы
bias~ ток смещения
saturation~ ток насыщения
sink~ втекающий ток
source~ вытекающий ток
Cycle — период (импульсов)
Data — данные
DC (direct current) — постоянный ток
Decimal — десятичный
Delay — задержка
Device — устройство
Direct — прямой
Division — деление
Divisor — делитель
Drain — сток
Drift — дрейф
Effective — действующий (значение напряжения)
Erase — стирание
External — внешний
Frequency — частота
Gain — коэффициент усиления
Gate — затвор (полевого транзистора); логический элемент, вентиль (AND gate)
Ground — земля
Hexadecimal — шестнадцатеричный
Input — вход
Internal — внутренний
Key — кнопка
Kit — набор
Lead — вывод (компонента)
Leakage — утечка
Limit — предел
Loop — контур обратной связи; цикл (в программе)
MCU — (mean control unit) центральное устройство управления
Measuring — измерение
Memory — память
Mode — режим (работы)
Mount — монтировать
Multiplex — объединение (каналов)
Multiplication — умножение
Multiplier — умножитель
Octal — восьмеричный
Offset — смещение
Output — выход
Package — корпус
Parallel — параллельный
Pin — вывод (компонента)
Power supply — источник питания
Power — мощность
Power — питание
Random — произвольный, случайный
Range — диапазон
Rate — показатель
Ratio — отношение
Rectifier — выпрямитель
Reset — переустановка; начальная установка
Scale — диапазон
Semiconductor — полупроводник
Serial — последовательный
Set — установка
Socket — панель (для микросхем)
Soldering — пайка
Source — исток, источник
State — состояние
Storage — хранение
Subtraction — вычитание
Support — поддержка
Switch — переключатель
Unit — блок (узел, устройство)
Value — значение
Voltage — напряжение
high~ высокий уровень напряжения
low~ низкий уровень напряжения
supply~ напряжение питания
— gain — коэффициент усиления по напряжению
Watchdog — сторожевой (таймер)
Wire — провод
Zero — ноль