Disciplina: Microcontroladores
Prof. Remy Eskinazi, MSc
Imediato (Direto) - (Label ou Nmero) MOV PSW,05 ; M(PSW) R5 MOV A,04510 ; Acc M(4510) Constante Imediata (# Label ou Nmero) MOV R6,#14 ; R6 1410 MOV A,#0CAh ; Acc CA16 MOV DPTR,#loc ; DPTR Valor associado a loc Registrador (Rn) MOV R1,A MOV B,R3
; R1 ;B
Acc R3
Indexado (Registrador Indireto) - @A+DPTR, @A+PC MOVC A,@A+DPTR ; A MOVC A,@A+PC ;A JMP @A+DPTR ; PC ROM(A+DPTR) ROM(A+PC) (A+DPTR)
Bit Nmero do bit, label.bit ou bit label MOV C,IE.0 MOV C,EX0 SETB 07Fh SETB 2F.7 ; cy bit 0 do IE reg. (EX0) ; identico ; Bit 7F 1 ; identico
3 Microcontroladores - Prof. Remy Eskinazi
; ;
**** Programa Exemplo *** **** Objetivo: Explicar campos de um programa assembly 8051 **** equ 02h org 0h ;Reset sjmp inicio org 03 ; Int. Externa 0 sjmp ext0
Valor:
Inicio:
mov A, #0FFh mov R1, #valor DB 02h DB A ; ASCII do caractere A End ; Fim de programa p/ compilao 5 Microcontroladores - Prof. Remy Eskinazi
Instrues 8051
Tipos de instrues
Movimentao de Dados Aritmticas Lgicas Manipulao de Bit Controle de programa (Saltos e Desvios)
MOVE
MOV
A,
#n Direct R @Ri
A A A A
MOV
Rn,
#
Direct A
Rn Immediate
Direct Immediate
MOV
Direct,
# Direct R @R A #
MOV @Ri,
M(Ri)
Immediate
Move From Program Memory MOVC A, @A+DPTR A, @A+PC Move External Data RAM MOVX A, @R A, @DPTR MOVX @R, A @DPTR, A Others PUSH D POP D XCH A, R D @R
Add/Subtract ADD
A, # D R @R A, # D R @R A, # D R @R
Acc A+Immediate
ADDC
Acc A+Immediate+Carry
SUBB
Acc Acc-Immediate-Carry
Inc/Dec INC
A D R @R DPTR A D R @R
Acc Acc+1
DEC
Acc Acc-1
AB AB
B:A A B
A, # D R @R D, A D, #
A A A
Acc(3-0)
0 Acc
A
7
0 Acc
RLC
C 7
0 Acc
RR
A
7
0 Acc C
RRC
Clear/Set/Complement CLR C bit SETB C bit CPL C bit And, Or, Move ANL C, bit C, /bit ORL C, bit C, /bit MOV C, bit bit, C
Carry 0 bit 0
Saltos JC JNC JB JNB JBC label label bit, label bit, label bit, label Jump if Carry set Jump if Carry clear Jump if bit set Jump if bit clear Jump if bit set, then clear bit
Saltos AJMP LJMP SJMP JMP JZ JNZ label-A label-L label @A+DPTR label label Absolute Jump- 11 bits(2K) Long Jump - 16 bits (64K) Short Jump Jump Indirect PC (A+DPTR) Jump if zero Jump if not zero
R, label D, label
Absolute Call - 11 bits (2K) Long Call - 16 bits (64K) Return from Subroutine Return from ISR: PC m(SP), SP SP-2
INCIO
A M(DPTR)
A=0 ?
F0 1
N DPTR DPTR+1
FIM?
S RET
INICIO:
MOV DPTR, #0h CLR F0 REPETE: MOVX A, @DPTR CJNE A, #0h, CONTINUA ACHOU: SETB F0 SJMP FIM ; CONTINUA: INC DPTR MOV A, DPH CJNE A, #02h, REPETE FIM: RET END
; Inicia Ponteiro ; Limpa Flag F0 ; Poe o dado da posio indicada pelo DPTR no ; Acumulador ; Pula para CONTINUA se A=! 0 ; Sinaliza o encontro do valor zero com F0=1 ; Se no encontrou byte zero, aponta para proxima posicao ; ; Se DPTR<0200h pula para REPETE ; FIM ; Fim de Arquivo p/ compilao 18
INICIO
B <-- 0
Subrotina AchaMaior
Acc > B ?
Sada.: Acc = Maior valor DPTR = End. Maior dado Preserva dado e end. ( B <-- Acc ) ( R1R0 <-- DPTR )
DPh = 01H ?
19
RET