Documente Academic
Documente Profesional
Documente Cultură
Disciplina de Microcontroladores
Prof. Valdir Noll
Adaptado da Apostila
“Microcontroladores - O 80C51BH da Família MCS51”
por, John Oersted Wisbeck, UFRGS, 2001.
REGISTRADORES ESPECIAIS DO 80C51BH
2
Registro de Controle do TMOD Timer/Counter Mode – Sem acesso a bits
MSB LSB
TIMER 1 TIMER 0
GATE - Quando TRx é setado e Gate=1, Timer/Counter funcionará somente o pino INTx é alto.
M1 M0
0 0 13 bit Timer/Counter.
0 1 16 bit Timer/Counter.
1 0 8 bit Auto Reload Timer/Counter.
1 1 Timer 0 é um Timer/Counter de 8 bits controlado pelo Timer 0.
Timer/Counter 1 não funciona
MSB LSB
TRx – Bit de ativação do Timer. 1/0 por softwatr para ON/OFF o Timer/Counter x
IEx – Interrupção Externa e flag de borda. 1 po hardware quando Interrupção Externa é detectada.
0 por hardware quando a interrupção é processada.
ITx – Bi tde contorle da Interrupção x tipo de interrupção. 1 / 0 por software para definir se a
interrupção será atendida por borba/nível
3
Registrador IP - Interrupt Priority – Endereçável por Bit
7 6 5 4 3 2 1 0
Prioridade INT0
Prioridade Timer0
Prioridade INT1
P0 date INSTR
P1
74HC373 EPROM
80C51BH Latch
ALE LE
ADDR
P2
P3
PSEN OE
EA
4
Fonte Endereço da rotina de atendimento
IE0 0003h
TF0 000Bh
IE1 0013h
TF1 001Bh
RI + TI 0023h
5
CONJUNTO DE INSTRUÇÕES DA FAMÍLIA MCS51
6
memória RAM interna e para facilitar as operações com bytes em pequenas estruturas
de dados. Adicionalmente existem instruções que permitem tratar bits como um tipo
separado de dado, isso implica na manipulação direta de bits em uma parte da RAM
interna.
Os modos de endereçamento no conjunto de intruções da família MCS51 são:
Endereçamento Direto: no endereçamento direto o operando é o conteúdo de
uma posição de memória cujo endereço é de 8 bits e faz parte do corpo da instrução.
Somente dados na memória RAM interna e SFR podem ser diretamente endereçados.
Endereçamento Indireto: no endereçamento indireto a instrução especifica um
registrador cujo conteúdo é o endereço do operando. Tanto a memória interna ou
externa podem ser endereçadas indiretamente. Se o endereço do operando for de 8 bits
os registradores que podem ser especificados no corpo da instrução são R0, R1 ou o
Stack Pointer. Caso o endereço seja de 16 bits o registrador a ser utilizado é DPTR.
Instruções para Registradores R0 a R7: o banco de registradores R0 a R7
podem ser acessados por certas instruções as quais especificam o registrador com base
em 3 bits que fazem parte do opcode (código da instrução). Essas instruções são mais
eficientes visto que eliminam um byte de endereço. Quando a instrução é executada um
dos 8 registradores do banco ativo é endereçado. A seleção do banco pode ser feita
através dos bits de seleção de banco em PSW.
Instruções para Registradores Específicos: Algumas instruções trabalham
especificamente com certos registradores. Por exemplo algumas instruções operam
sempre com o Acumulador A, ou com o DPTR, etc, portanto nenhum byte é necessário
para endereçar o operando.
Endereçamento Imediato: O operando faz parte do corpo da instrução. O valor
do operando segue o opcode na memória de programa por exemplo.
Endereçamento Indexado: apenas a memória de programa pode ser acessada
com endereçamento indexado e portanto pode somente ser lida. Nesse tipo de acesso a
memória o endereço do operando é dado pela soma do conteúdo ou de DPTR ou PC
com o conteúdo do Acumulador. Dessa forma DPTR ou PC apontam para a base de
uma tabela de dados enquanto o Acumulador (8 bits) aponta para o elemento dentro da
tabela.
7
addr11 endereço com tamanho de 11 bits. A faixa de endereçamento é 1024
bytes para trás ou 1023 bytes para frente da posição atual do PC.
rel deslocamento de 128 bytes para trás ou 127 bytes para frente da posição
atual de PC. Usado por SJMP e todos os demais JMPs condicionais.
MOV R6,#40h
8
MOV direct,#data Uma posição de memória RAM (direct)←#30h
interna, cujo endereço é direct,
recebe data. MOV 45h,40h
POP 40h
9
XCH A,@Ri Troca o conteúdo do acumulador (A) ((Ri))
com o conteúdo de uma posição
de memória cujo endereço é o XCH A, @R1
conteúdo de Ri.
10
0.6. Instruções para Operações Aritméticas
11
SUBB A,#data Do conteúdo de A são subtraídos o (A)←(A)-data-(C) C, OV,
valor data e o carry flag. AC
SUBB A, #30h
12
0.7. Instruções para Operações Lógicas
Exemplo
ANL A, Rn Lógica E entre o conteúdo do (A)←(A)^(Rn)
acumulador e o conteúdo do
registrador. ANL A, R7
13
XRL A, direct Lógica OU Exclusivo entre o (A)←(A)⊕(direct)
conteúdo do acumulador e o XRL A, 40h
conteúdo de uma posição de
memória RAM interna cujo
endereço é direct
XRL A,@Ri Lógica OU Exclusivo entre o (A)←(A)⊕((Ri))
conteúdo do acumulador e uma XRL A, @R1
posição de memória RAM interna
cujo endereço é o conteúdo de Ri
XRL direct,A Lógica OU Exclusivo entre o (direct)←(direct)⊕(A)
conteúdo de uma posição de XRL 90h, A
memória RAM interna cujo
endereço é direct e o conteúdo do
acumulador
XRL direct,#data Lógica OU Exclusivo entre o (direct)←(direct)⊕data
conteúdo de uma posição de XRL 73h, #20h
memória RAM interna cujo
endereço é direct e data
CLR A Zera o conteúdo do acumulador (A)←0
CLR A
RL A
RR A
14
0.8. Instruções para Manipulação de Bits
Exemplo
CLR P3.2
SETB P3.2
15
MOV bit,C Acerta o bit de uma posição de (bit)←(C)
memória RAM interna com bits
endereçáveis com o flag carry MOV 29.5,C
MOV P3.5,C
(PC)←(PC)+rel
(PC)←(PC)+rel
JNB bit,rel Desvia se o bit estiver em 0 If (bit)=0 then
(PC)←(PC)+rel
(bit)←0
Exemplo
(SP)←(SP)-1
(PC10-0)←((SP))
(SP)←(Sp)-1
16
RETI Retorna de uma subrotina de (PC15-8)←((SP))
atendimento de interrupção.
(SP)←(SP)-1
(PC10-0)←((SP))
(SP)←(Sp)-1
17
DJNZ direct,rel Decrementa o conteúdo da posição (direct)←(direct)-1
de memória dada por direct. Se o if (direct)<>0 then
resultado não for nulo ocorre um (PC)←(PC)+rel
desvio caso contrário a instrução
seguinte é executada.
NOP Não executa nada.
18