* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
Южно-Уральский государственный университет
Заочный инженерно - экономический факультет
Контрольная (курсовая) работа № 3
По Информатике
Выполнил студент- заочник 2 го курса
Шифр – ЭПА-04-588
Группа – 2 47
«____»_______ ____2009 г. « ____»___________2009 г.
Срок предоставления работы по графику Дата отправки работы
№_____________ по журналу «____»_____ ______200 9 г.
___________________ Хусаинов Р.З.
отметка о зачете работы
Преподаватель
____________________
Подпись преподавателя
«____»_____________200 9 г .
1.
Построить два график а в одной координатной сетке: функция f ( x )= Sin ( x )+ Sin (3 x )/3 и F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7. Диапазон изменения переменной х Є[0;6.28]. На графике вывести обозначение масштабов переменных, вывести название графика.
Программа:
/* Программа построения графиков функции*/
/* F(x )= Sin(x )+Sin( 3x)/3+ Sin( 5x)/5+ Sin( 7x)/7*/
/* и f(x )= Sin(x )+ Sin(3x)/3*/
#include
#include
#include
void main()
/* Инициализация графического режима и переменных*/
int i,a,bf=220,bF=220;
float x,db;
double dx;
int dr=VGA, mode=VGAHI;
initgraph(&dr,&mode,"c:\\TC\\BGI");
/*initgraph (&dr,&mode,"G:\\lang\\tc\\bgi");*/
/* Прорисовка осей */
setbkcolor(BLACK); setlinestyle(0,0,2);
line (20,220,640,220); /*X*/
moveto (630,218);lineto(640,220);lineto(630,222);lineto(630,218);
line (20,0,20,440); /*Y*/
moveto (20,0);lineto(18,10);lineto(22,10);lineto(20,0);
/* Разметка осей */
setcolor (WHITE);
for(i=20;i<440;i=i+20)
outtextxy (20,i-3,"-");
outtextxy (30,420,"-1");
outtextxy (30,20,"1");
outtextxy (32,2,"Y");
outtextxy (630,205,"X");
/* Название графика */
setfillstyle (1,GREEN);
bar (50,435,68,445);
settextstyle (6,0,1);
outtextxy (80,429,"- Функция f(x)=Sin(x)+Sin(3x)/3");
setfillstyle (1,RED);
bar (50,455,68,465);
outtextxy (80,450,"- Функция F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7");
/*Определение приращения (x) и координат по осям*/
dx=6.28/580; /*dx с шагом в 1 пиксель по х*/
db=(460-20)/2;
/*Построение графика Sin(x)+(Sin(3x))/3*/
moveto (20,220);
for (i=0;i<=580;i++)
setlinestyle(0,0,4);
setcolor(GREEN);
x=dx*i;
a=20+i;
bf=220-db*(sin(x)+(sin(3*x))/3);
lineto(a,bf); /* Рисуем f( х )*/
moveto(a,bF); /*Переходим к F(x)*/
/*Построение графика Sin(x)+(Sin(3x))/3+(Sin(5x))/5+(Sin(7x))/7*/
setcolor(RED);
bF=220-db*(sin(x)+(sin(3*x))/3+(sin(5*x))/5+(sin(7*x))/7);
lineto(a,bF); /* Рисуем F( х )*/
moveto(a,bf); /*Переходим к f(x)*/
/*Ставим метку по оси Х*/
if(i%(580/10)==0)
setcolor(WHITE);
outtextxy(a,217,"|");
moveto(a,bf);
gotoxy(a/8+2,15);
printf ("%3.2f",x );
getch();
closegraph();
Пример исполнения:
2. Выполнить расчет определенного интеграла функции f (x)=Sin(x)+(Sin(3x))/3 методом трапеции. Диапазон изменения переменной х=[0;6.28]. Построить график зависимости погрешности расчета интеграла от количества точек расчета N =20…150. Истинное значение рассчитывается с помощью формулы Нью то на-Л ейбниц а .
Программа:
/*Программа построения графика зависимости погрешности расчета интеграла*/
/* функции f(x)=Sin(x)+(Sin(3x))/3 при х=[0;6.28], методом трапеции, */
/* от количества точек расчета 'n'=20...150 */
#include
#include
#include
void main()
/* Инициализация графического режима и переменных*/
int i,n,nn,nx=150-20,a,a1,b,b1;
float w,da,db,k,ny=4.45;
double st,sl,y,x,dx;
int dr=VGA, mode=VGAHI;
initgraph(&dr,&mode,"c:\\TC\\BGI");
/*initgraph (&dr,&mode,"G:\\lang\\tc\\bgi");*/
/* Прорисовка осей */
textcolor(7); setcolor(7); setbkcolor(BLACK); setlinestyle(0,0,2);
line (50,380,640,380); /*X*/
moveto (630,382);lineto(640,380);lineto(630,378);lineto(630,382);
line (50,0,50,380); /*Y*/
moveto (50,0);lineto(48,10);lineto(52,10);lineto(50,0);
/*Разметка осей*/
/*По оси 'Y'*/
for(i=380,k=0;i>=60;i=i-(380-60)/10,k+=ny/10)
outtextxy (45,i-3,"-");
gotoxy (1,i/16+1);
printf ("%3.2f",k);
/* По оси 'X'*/
for(i=50,k=20;i<=570;i=i+(570-50)/13,k+=10)
outtextxy (i-3,380,"|");
gotoxy(i/8+1,25);
printf ("%3.0f",k);
outtextxy (62,8,"%");
outtextxy (630,360,"n");
/* Название графика */
settextstyle(6,0,2); setcolor(7);
outtextxy(10,420,"График зависимости погрешности расчета интеграла, методом");
outtextxy(10,438,"трапеции, функции f(x)=Sin(x)+(Sin(3x))/3 при х=[0;6.28]");
outtextxy(10,456,"от количества точек расчета.");
outtextxy(160,8,"Количество точек расчета?(20...150)-");
gotoxy(70,2); scanf("%d",&nn);
/*Определение приращения по осям*/
da=(570-50)/nx;
db=(380-60)/ny;
/*Расчет итеграла f(x)=Sin(x)+(Sin(3x))/3*/
for(n=20;n<=150;n++)
dx=6.28/n;
st=0;sl=0;
for(i=0;i def . inc
Например, программа для микроконтроллера ATtinyl 5 L должна со держать следующую директиву ассемблера:
. include " tnl 5 def . inc "
а для микроконтроллера ATmega 8535 :
. include " m 8535 def . inc "
Необходимо только помнить, что если для обращения к регистру ввода/вывода используются команды обмена с ОЗУ, то к символическому имени требуется прибавить число $20.
Как уже было упомянуто, в микроконтроллерах память программ является 16-разрядной. Соответственно большинство команд описываются 16-разрядным словом, которое называется также кодом операции (КОП). Код операции — это число, расположенное в памяти программ и определяющее действие, которое необходимо произвести между источником и приемником. Некоторые команды, у которых один из операндов является 16-разрядным адресом, занимают две ячейки памяти программ. Соответственно, код операции таких команд является 4-байтным числом.
В ряде случаев значение операнда-источника может содержаться непосредственно в коде операции, а не в регистре. Это происходит в том случае, когда операндом-источником является константа.
Тип ы команд
Все множество команд микроконтроллеров можно разбить на несколько групп:
• команды логических операций;
• команды арифметических операций и команды сдвига;
• команды операций с битами;
• команды пересылки данных;
• команды передачи управления;
• команды управления системой.
Далее подробно описана каждая группа команд.
Команды логических операций
Команды логических операций позволяют выполнять стандартные логические операции над байтами, такие, как логическое умножение (И), логическое сложение (ИЛИ), операцию «исключающее ИЛИ», а также вычисление обратного (дополнение до единицы) и дополнительного (дополнение до двух) кодов числа. К этой группе можно отнести также команды очистки/установки регистров и команду перестановки тетрад. Операции производятся между регистрами общего назначения либо между регистром и константой; результат сохраняется в РОН. Все команды из этой группы выполняются за один машинный цикл.
Команды арифметических операций и команды сдвига
К данной группе относятся команды, позволяющие выполнять такие базовые операции, как сложение, вычитание, сдвиг (вправо и влево), инкремент и декремент. В микроконтроллерах семейства Mega также имеются команды, позволяющие осуществлять умножение 8-разрядных значений. Все операции производятся только над регистрами общего назначения. При этом микроконтроллеры AVR позволяют легко оперировать как знаковыми, так и без знаковыми числами, а также работать с числами, представленными в дополнительном коде.
Почти все команды рассматриваемой группы выполняются за один машинный цикл. Команды умножения и команды, оперирующие двухбайтовыми значениями, выполняются за два цикла.
Команды операций с битами
К данной группе относятся команды, выполняющие установку или сброс заданного разряда РОН или РВВ. Причем для изменения разрядов регистра состояния SREG имеются также дополнительные команды (точнее говоря, эквивалентные мнемонические обозначения общих команд), т. к. проверка состояния разрядов именно этого регистра производится чаще всего. Условно к этой группе можно отнести также две команды передачи управления типа «проверка/пропуск», которые пропускают следующую команду в зависимости от состояния разряда РОН или РВВ.
Все задействованные разряды РВВ имеют свои символические имена. Определения этих имен описаны в том же включаемом файле, что и определения символических имен адресов регистров. Таким образом, после включения в программу указанного файла в командах вместо числовых значений номеров разрядов можно будет указывать их символические имена.
Всем командам данной группы требуется один машинный цикл для выполнения, за исключением случаев, когда в результате проверки происходит пропуск команды. В этом случае команда выполняет ся за 2 или 3 машинных цикла в зависимости от пропускаемой команды.
Команды пересылки данных
Команды этой группы предназначены для пересылки содержимого ячеек, находящихся в адресном пространстве памяти данных. Разделение адресного пространства на три части (РОН, РВВ, ОЗУ ) предопре делило разнообразие команд данной группы. Пересылка данных, выполняемая командами группы, может производиться в следующих направлениях:
• РОН <=> РОН;
• РОН <=> РВВ;
• РОН <=> память данных.
Также к данной группе можно отнести стековые команды PUSH и POP , позволяющие сохранять в стеке и восстанавливать из стека содержимое РОН.
На выполнение команд данной группы , требуется в зависимости от команды от одного до трех машинных циклов.
Команды передачи управления
В эту группу входят команды перехода, вызова подпрограмм и воз врата из них и команды типа «проверка/пропуск», пропускающие сле дующую за ними команду при выполнении некоторого условия. Также к этой группе относятся команды сравнения, формирующие флаги регистра SREG и предназначенны е, как правило, для работы совместно с командами условного перехода.
В системе команд микроконтроллеров семейства имеются команды как безусловного, так и условного переходов. Команды относительного перехода ( RJMP ), а в микроконтроллерах семейства Mega также косвенного ( IJMP ) и абсолютного ( JMP ) безусловного перехода являются самыми простыми в этой группе. Их функция заключается только в записи нового адреса в счетчик команд. Команды условного перехода также изменяют содержимое счетчика команд, однако это изменение происходит только при выполнении некоторого условия или, точнее, при определенном состоянии различных флагов регистра SREG .
Все команды условного перехода можно разбить на две подгруппы. Первая подгруппа — команды условного перехода общего назначения. В эту подгруппу входят две команды BRBS s , k HBRBC s , k , в которых явно задается номер тестируемого флага регистра SREG . Соответственно, переход осуществляется при SREG . s = 0 ( brbc ) или SREG . S = I ( brbs ). Другую подгруппу составляют 18 специализированных команд, каждая из которых выполняет переход по какому-либо конкретному условию («равно», «больше или равно», «был перенос» и т. п.). Причем одни команды используются после сравнения без знаковых чисел, другие — после сравнения чисел со знаком. Возможные проверяемые условия, а также соответствующие им команды условного перехода приведены в таблице.
Сводная таблица команд условного перехода
Проверка Логическое условие Команда Обратная проверка Логическое условие Команда Тип данных Rd>Rr Z»(N©V) = 0 BRLT* RdRr (NeV) = 0 BRGE RdRr Z»(N©V) = 0 BRLT* Co знаком RdRr (N®V) = 0 BRGE Co знаком Rd>Rr C + Z = 0 BRLO * RdRr C = 0 BRHS/ BRCC RdRr c = z = o BRLO* Без знака RdRr c=o BRSH/ BRCC Без знака «Перенос» C = l BRCS «Нет пере носа» c = o BRCC «Меньше нуля» N = 1 BRMI «Больше ну ля» N = 0 BRPL «Перепол нение» V=l BRVS «Нет пере полнения» V=0 BRVC «Ноль» Z=l BREQ «Не ноль» z=o BRNE * Для перехода по этому условию операнды предшествующей команды сравнения должны быть записаны в обратном порядке, т. е. вместо СР Rd . Rr — > CP Rr . Rd .
Вообще говоря, команды, указанные в таблице , являются всего лишь эквивалентными мнемоническими обозначениями команд BRBS s , к и BRBC s , к с определенными значениями операнда « s ». Команда BREQ имеет, например, такой же код операции, что и команда BRBS 1,к, а команда BRGE k - BRBC 4,к.
Команды вызова подпрограммы ( icall , rcall , call ) работают практически так же, как и команды безусловного перехода. Отличие зак лючается в том, что, перед тем как выполнить переход, значение счетчика команд сохраняется в стеке. Кроме того, подпрограмма должна заканчиваться командой возврата RET .
Очевидно, что команды передачи управления нарушают нормаль ное (линейное) выполнение основной программы. Каждый раз, когда выполняется команда из этой группы (кроме команд сравнения), нормальное функционирование конвейера нарушается. Перед загрузкой в конвейер нового адреса производится остановка и очистка выполняемой последовательности коман д. Соответственно, реинициализа ция конвейера приводит к необходимости использования нескольких машинных циклов для выполнения таких команд.
Команды управления системой
В эту группу входят всего 3 команды:
• NOP — пустая команда;
• SLEEP — перевод микроконтроллера в режим пониженного энер гопотребления;
• wdr — сброс сторожевого таймера.
Все команды этой группы выполняются за один машинный цикл.
Сводные таблицы команд
В Табл ице указаны все ко манды, которыми располагают мик роконтроллеры. В каждой таблице команды сгруппированы по функциональному признаку. В таблицах приведены такие основные сведения о командах, как мнемоническое обозначение команды, ее описание, число машинных циклов, необходимых для ее выполнения, а также флаги регистра SREG , на которые воздействует эта команда.
Группа команд логических операций
Мнемоника Описание Операция Циклы Флаги AND Rd, Rr «Логическое И» двух РОН Rd = Rd • Rr 1 Z,N,V ANDI Rd, K «Логическое И» РОН и константы Rd = Rd • К 1 Z,N,V EOR Rd , Rr «Исключающее ИЛИ» двух РОН Rd = Rd ® Rr 1 Z,N,V OR Rd, Rr «Логическое ИЛИ» двух РОН Rd = Rd v Rr 1 Z,N,V ORI Rd, K «Логическое ИЛИ» РОН и константы Rd = Rd v К 1 Z,N,V COM Rd Перевод в обратный код Rd = $FF-Rd 1 Z,C,N,V NEG Rd Перевод в дополнительный код Rd = $00-Rd 1 Z,C,N,V,H CLR Rd Сброс всех разрядов РОН Rd = Rd ® Rd 1 Z,N,V SER Rd Установка всех разрядов РОН Rd = $FF 1 TST Rd Проверка РОН на отрицательное или нулевое значение Rd • Rd 1 Z,N,V SWAP Rd Обмен местами тетрад в РОН Rd(3...O) = Rd(7...4),
Rd(7...4) = Rd(3...O) 1
Группа команд арифметических операций
Мнемоника Описание Операция Циклы Флаги ADD Rd. Rr Сложение двух РОН Rd = Rd + Rr 1 Z,C,N,V,H ADC Rd. Rr Сложение двух РОН с переносом Rd = Rd + Rr + C 1 Z,C,N,V,H ADIW Rd, K Сложение регистровой пары с константой Rdh:RdI = Rdh:Rdl + К 2 Z,C,N,V,S SUB Rd, Rr Вычитание двух РОН Rd = Rd-Rr 1 Z,C,N,V,H SUBI Rd, K Вычитание константы из РОН Rd = Rd-K 1 Z,C,N,V,H SBC Rd, Rr Вычитание двух РОН с заемом Rd=Rd-Rr-C 1 Z,C,N,V,H SBCI Rd, K Вычитание константы из РОН с заемом Rd = Rd-K-C 1 Z,C,N,V,H SBIW Rd, K Вычитание константы из регистровой пары Rdh:Rdl = Rdh:Rdt-K 2 Z,C,N,V,S DEC Rd Декремент РОН Rd = Rd-l 1 Z,N,V INC Rd Инкремент РОН Rd = Rd + 1 1 Z,N,V ASR Rd Арифметический сдвиг вправо Rd(n) = Rd(n+ 1), n = 0...6 1 Z,C,N,V LSL Rd Логический сдвиг влево Rd(n+l) = Rd(n), Rd(0) = 0 1 Z,C,N,V LSR Rd Логический сдвиг вправо Rd(n) = Rd(n+l),Rd(7) = 0 1 Z,C,N,V Мнемоника Описание Операция Циклы Флаги ROL Rd Сдвиг влево через перенос Rd(0) = C, Rd(n+l) = Rd(n), С = Rd(7) 1 Z,C,N,V ROR Rd Сдвиг вправо через перенос Rd(7) = C, Rd(n) = Rd(n+l), С = Rd(0) 1 Z,C,N,V MUL Rd, Rr Умножение беззнаковых чисел Rl:RO = RdXRr 2 Z,C MULS Rd, Rr Умножение чисел со знаком Rl:RO = RdXRr 2 Z,C MULSU
Rd, Rr Умножение беззнакового чис ла на число со знаком Rl:RO = RdXRr 2 Z,C FMDL Rd, Rr Умножение дробных беззнаковых чисел Rl:RO = (RdXRr)«l 2 Z,C FMULS
Rd, Rr Умножение дробных чисел со знаком Rl:RO = (RdXRr)«l 2 Z,C FMULSU
Rd, Rr Умножение дробного беззнакового числа и дробного числа со знаком Rl:RO = (RdXRr)« 1 2 Z,C Группа команд операций с битами Мнемоника Описание Операция Циклы Флаги CBR Rd, K Сброс разряда(ов) РОН Rd = Rd»($FF-K) 1 Z,N,V SBR Rd, K Установка разрада(ов) РОН Rd=RdvK 1 Z, N,V CBI A, b Сброс разряда РВВ A.b = 0 2 SBI A, b Установка разряда РВВ A.b=l 2 BCLR s Зброс флага SREG.S - 0 1 SREG.S BSET s Установка флага SREG. S =l 1 SREG. S BLD Rd, b Загрузка разряда РОН из флага Т ( SREG ) Rd.b = T 1 BST Rr, b Запись разряда РОН в флаг Т ( SREG ) T = Rr.b 1 T CLC Сброс флага переноса С = 0 1 С SEC Установка флага переноса C = l 1 С CLN Сброс флага отр. числа N = 0 1 N SEN Установка флага отр. числа N = 1 1 N CLZ Сброс флага нуля Z = 0 1 Z SEZ Установка флага нуля Z = l 1 Z CLI Общее запрещение прерываний 1 = 0 1 I SEI Общее разрешение прерываний 1 = 1 1 I CLS Сброс флага знака S = 0 1 S SES Установка флага знака S = l 1 S CLV Сброс флага переполнения доп. кода V = 0 1 V SEV Установка флага переполнения доп. кода V = l 1 V CLT Сброс флага Т T = 0 1 T SET Установка флага Т T = l 1 T CLH Сброс флага половинного переноса H = 0 1 H SEH Установка флага половинного переноса H = l 1 H Группа команд пересылки данных Мнемоника Описание Операция Циклы Флаги MOV Rd, Rr Пересылка между РОН Rd = Rr 1 MOVW
Rd, Rr Пересылка двухбайтовых значений Rd + l:Rd = Rr+l:Rr 1 LDI Rd, K Загрузка константы в РОН Rd = K 1 Мнемоника Описание Операция Циклы Флаги LD Rd, X Косвенное чтение Rd=[X] 2 LD Rd, X+ Косвенное чтение с постинкрементом Rd = [X],X = X+I 2 LD Rd,-X Косвенное чтение
с преддекрементом X = X-l,Rd = [X] 2 LD Rd, Y Косвенное чтение Rd=[Y] 2 LD Rd, Y+ Косвенное чтение с постинкрементом Rd = [Y],Y = Y+l 2 LD Rd,-Y Косвенное чтение с преддекрементом Y=Y-l,Rd=[Y] 2 LDD Rd, Y+q Косвенное относительное чтение Rd = [Y+q] 2 LD Rd,Z Косвенное чтение Rd = [Z] 2 LD Rd, Z+ Косвенное чтение с постинкрементом Rd = [Z],Z = Z+l 2 LD Rd,-Z Косвенное чтение с преддекрементом Z = Z - 1, Rd = [Z] 2 LDD Rd, Z+q Косвенное относительное чтение Rd = [Z + q] 2 LDS Rd, k Непосредственное чтение из ОЗУ Rd = [k] 2 ST X, Rr Косвенная запись [X] = Rr 2 ST X+, Rr Косвенная запись с постинкрементом [X] = Rr, X=X+1 2 ST -X, Rr Косвенная запись с преддекрементом X = X-l,[X] = Rr 2 ST Y, Rr Косвенная запись [Y] = Rr 2 ST Y+, Rr Косвенная запись с постинкрементом [Y] = Rr, Y=Y+1 2 ST – Y , Rr Косвенная запись с преддекрементом Y=Y-l,[X] = Rr 2 STD Y+ q, Rr Косвенная относительная запись [Y+q] = Rr 2 ST Z, Rr Косвенная запись [Z] = Rr 2 ST Z+, Rr Косвенная запись с постинкрементом [Z] = Rr,Z = Z+l 2 ST – Z ,Rr Косвенная запись с преддекрементом Z = Z-l,[Z] = Rr 2 STD Z+ q, Rr Косвенная относительная запись [Z + q] = Rr 2 STS k, Rr Непосредственная запись в ОЗУ [k] = Rr 2 LPM Загрузка данных из памяти программ R0 = Z 3 LPM Rd, Z Загрузка данных из памяти программ Rb= Z 3 LPM Rd, Z+ Загрузка данных из памяти программ с постинкрементом Rb = Z ,Z = Z+1 3 ELPM Расширенная загрузка данных из памяти программ RO = RAMPZ:Z 3 ELPM Rd, Z Расширенная загрузка данных из памяти программ Rb= RAMPZ:Z 3 ELPM Rd, Z + Расширенная загрузка данных из памяти программ с постинкрементом Rb = RAMPZ : Z , RAMPZ : Z = RAMPZ : Z +1 3 SPM Запись в память программ Z = RI:R0 IN Rd, A Пересьика из РВВ в РОН Rd = A 1 OUT A, Rr Пересылка из РОН в РВВ A=Rr 1 PUSH Rr Сохранение байта в стеке STACK - Rr 2 POP Rd Извлечение байта из стека Rd = STACK 2 Группа команд передачи управления Мнемоника Описание Операция Ц иклы Флаги RJMP k Относительный безусловный переход РС =РС + к+1 2 IJMP К освенный безусловный переход РС = Z 2 Мнемоника Описание Операция Циклы Флаги JMP к Абсолютный переход РС = к 3 RCALL к Этносительный вызов подпрограммы PC = PC + к + 1 3 ICALL Сосвенный вызов подпрограммы PC = Z 3 CALL к Абсолютный вызов подпрограммы РС = к 4 RET Возврат из подпрограммы PC = STACK 4 RETI Возврат из подпрограммы обработки прерывания PC = STACK 4 СР Rd, Rr Сравнение РОН Rd-Rr 1 Z,N,V,C,H СРС Rd , Rr Сравнение РОН с учетом переноса Rd-Rr-C 1 Z,N,V,C,H CPI Rd, K Сравнение РОН с константой Rd-K 1 Z,N,V,C,H CPSE
Rd, Rr Сравнение и пропуск следующей команды при равенстве Если Rd = Rr , то PC = PC + 2 (3) 1/2/3 SBRC Rr, b Пропуск след. команды, если разряд РОН сброшен Если Rr . b = 0, то PC = PC + 2 (3) 1/2/3 SBRS Rr, b Пропуск след. команды, если разряд РОН установлен Если Rr . b = l , то PC = PC + 2 (3) 1/2/3 SBIC A, b Пропуск след. команды, если разряд РВВ сброшен Если A . b = 0, то PC = PC + 2 (3) 1/2/3 SBIS A ,b Пропуск след. команды, если разряд РВВ установлен Если А.Ь= 1, то PC = PC + 2 (3) 1/2/3 BRBC s, k Переход, если флаг s регистра SREG сброшен Если SREG . s = 0, то РС = РС + к+1 1/2 BRBS s, k Переход, если флаг s регистра SREG установлен Если SREG . s =1, то РС = РС + к+1 1/2 BRCS к Переход по переносу Если С =1, то РС = РС + к+1 1/2 BRCC к Переход, если нет переноса Если С = 0, то РС = РС + к+1 1/2 BREQ к Переход по «равно» Если Z = l , то РС = РС + к+1 1/2 BRNE к Переход по «не равно» Если Z = 0, то РС = РС + к+1 1/2 BRSH к Переход по «выше или равно» Если С = 0, то РС = РС + к+1 1/2 BRLO к Переход по «меньше» Если С =1, то РС = РС + к+1 1/2 BRMI . Переход по «отрицательное значение» Если N = 1, то РС = РС + к + 1/2 BRPL Переход по «положительное значение» Если N = 0, то РС = РС + к+1 1/2 BRGE Переход по «больше или равно» (числа со знаком) Если ( N ® V ) = 0, то PC = PC + к + 1 1/2 BRLT Переход по «меньше нуля» (числа со знаком) Если ( N ® V )= l , то PC = PC + к + 1 1/2 BRHS Переход по половинному переносу Если Н = 1, то PC = PC + к + 1 1/2 BRHC Переход, если нет половинного переноса Если Н = 0, то PC = PC + к + 1 1/2 BRTS Переход, если флаг Т установлен Если Т= 1, то РС = РС + к+1 1/2 BRTC Переход, если флаг Т сброшен ЕслиТ = 0, тоРС = РС + к+1 1/2 BRVS Переход по переполнению доп. кода ЕслиУ=1, тоРС = РС + к+1 1/2 BRVC Переход, если нет переполнения доп. кода ЕслиУ = 0, тоРС = РС + к+1 1/2 BRID Переход, если прерывания запрещены Если I = 0, тоРС = РС + к+1 1/2 BRIE Переход, если прерывания разрешены Если1 = 1, тоРС = РС + к+1 1/2
Группа команд управления системой
Мнемоника Описание Операция Циклы Флаги NOP Нет операции пустая команда 1 SLEEP Переход в «спящий» режим перевод микроконтроллера в режим пониженного энер гопотребления 3 WDR Сброс сторожевого таймера сброс сторожевого таймера 1
Обозначение Описание Регистр состояния SREG Регистр состояния микроконтроллера C Флаг переноса Z Флаг нуля N Флаг отрицательного значения V Флаг переполнения доп. кода S Флаг знака ( S = N ® V ) H Флаг половинного переноса T Флаг пользователя I Флаг общего разрешения прерываний Регистры и операнды R d Регистр приемник Rr Регистр источник K Константа k Адрес-коннстанта b Номер разряда РОН s Номер разряда регистра состояния X , Y , Z Регистры указатели I\O Регистр ввода-вывода A Адрес в пространства ввода-вывода q Смещение при относительной косвенной адресации [ ХХ ] Содержимое ячейки памяти данных по адресу ХХ ХХ Содержимое ячейки памяти программ по адресу ХХ Операция • Логическое И v Логическое ИЛИ ® Исключающее ИЛИ Система РС Счетчик команд STACK Текущий уровень стека SP Указатель стека Флаги < > Команда воздействует на флаг 0 Флаг сбрасывается командой в «0» 1 Флаг устанавливается командой в «1» Команда не влияет
Обозначение, используемые при описании команд