- •Лекция 9. Команды операций над битами микроконтроллера 8051.
- •Simp_rel, где rel – смещение (команда короткого перехода).
- •Команды условного перехода
- •Пример 1: c использованием команды (jc, jnc)
- •Пример 2: c использованием команд условного перехода)
- •Пример: Программная модель выдержки времени
- •Команды передачи управления
Пример 1: c использованием команды (jc, jnc)
Задание: В регистре R1 находится число X1, в регистре R2 – число X2. Если , то необходимо выполнить действие , результат поместить в регистр R4. Если , то выполнить действие , результат операции поместить в регистр R5.
Блок-схема: |
Программа |
Команда JC |
|
|
MOV A,R1; AR1. CJNE A,02H,M1; X1X2M1. M1: JC M2; CLP C; SUBB A,R2 A(A)-(R2); A(X1)-(X2). MOV R5, A; R5(A). SJMP M3; M3 – метка конца программы. M2: ADD A,R2; A(A)+(R2); A(X1+X2). MOV R4, A R5(A). M3: END.
|
Команда JNC |
|
|
MOV A,R1; AR1. CJNE A,02H,M1; X1X2M1. M1: JNC M2; ADD A,R2; A(A)+(R2); A(X1+X2). MOV R4, A R5(A). SJMP M3; M3 – метка конца программы. M2: SUBB A,R2 A(A)-(R2); A(X1)-(X2 MOV R5, A; R5(A).
M3: END.
|
Пример 2: c использованием команд условного перехода)
Задание: В ЯП области DSEG с адресом 21H находится число X, в ЯП области DSEG с адресом 22H находится число X2. Если , то результат поместить в ЯП области DSEG с адресом 23Н; если , результат операции (X1)AND(X2) поместить в ЯП области DSEG по адресу 24Н.
Блок-схема: |
Программа |
|
MOV A,21H; AR1. CJNE A,22H,M1; X1X2M1. INC A; AX1+1. MOV 23H, A; (23H)(A). SJMP M2; M2 – метка конца программы. M1: ANL A,22H; A(A)AND(22H); A(X1)AND(X2). MOV 24H, A (24H)(A). M2: END.
|
Команда DJNZ
Эта команда «декремент и переход, если не равно нулю», выполняет вычитание «1» из указанной ЯП и осуществляет ветвление по rel, если результат не равен нулю.
Действия, выполняемые этой командой:
а) минус «1» из указанного регистра или ЯП;
б) переход по rel, если результат не равен нулю.
Имеется два варианта команды:
1. DJNZ Rп, rel; Rп Rп-1, если Rп0, то переход по rel, если Rп=1, то переход к следующей команде.
2. DJNZ dir, rel; (dir)(dir)-1, если (dir) 0, то переход по rel, если dir=1, то переход к следующей команде. (dir – адрес (прямой) ЯП.)
Эти команды используются для организации циклов.
MOV Rп,#data; data-количество циклов) M1: ---- ---- DJNZ Rп, M1 ---- ----
|
1- (Rп-1)0 2 - (Rп-1)=0
|