Você está na página 1de 4

+Vcc B TH1

10K F 7 F7 F6 F5 F4 F3 F2 F1 F0 F0 8D
D0
10K E 6 ACC TL1
D1 E7 E6 E5 E4 E3 E2 E1 E0 E0 8C
10K enter D 5 D2 CY AC F0 RS1 RS0 OV - P PSW TH0
10K gravar C 4 D3 D7 D6 D5 D4 D3 D2 D1 D0 D0 8B
10K ler B 3 D4 PS PT1 PX1 PT0 PX0 IP TL0
10K esc A 2 BF BE BD BC BB BA B9 B8 B8 8A
D5
10K 9 1 P3.7 P3.6 P3.5 P3.4 P3.3 P3.1 P3.0 P3 TMOD
D6 B7 B6 B5 B4 B3 B2 B1 B0 B0 89
10K 8 0
D7 EA ES ET1 ET0 EX0 IE TF1 TR1 TF0 TR0 IE1 IE0 IT0 TCON
74138 AF AE AD AC AB AA A9 A8 A8 8F 8E 8D 8C 8B 8A 89 88 88

A2 C Y7 P2.7 P2.6 P2.5 P2.4 P2.3 P2.1 P2.0 P2 SMOD GF1 PD IDL PCON
A1 B Y6 A7 A6 A5 A4 A3 A2 A1 A0 A0 87
A0 A Y5
Y4 SBUF DPH
Y3 99 83
Vcc G1 Y2 SM0 SM1 SM2 REN TB8 TI RI SCON DPL
G2A Y1 9F 9E 9D 9C 9B 9A 99 98 98 82
Io2
G2B Y0
P1.7 P1.6 P1.5 P1.4 P1.3 P1.1 P1.0 P1 SP
97 96 95 94 93 92 91 90 90 81
ENDEREÇO DE BIT ENDEREÇO DE BYTE P0.7 P0.6 P0.5 P0.4 P0.3 P0.1 P0.0 P0
MNEUMÔNICO DE BIT MNEUMÔNICO DE REGISTRO 87 86 85 84 83 82 81 80 80
E800 0 1 2 3 4 5 6 7
E801 8 9 A B C D E F
AFH AEH ADH ACH ABH AAH A9H A8H A8H
E802 ESC LER GRAVAR ENTER
EA X X ES ET1 EX1 ET0 EX0 IE
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

- EA ( Enable All ) - em “0” desabilita todas as interrupções;


em “1” permite que cada interrupção seja habilitada individualmente.
DESCRIÇÃO Código tempo - ES ( Enable Serial ) - “1” habilita interrupção pedida pelo canal serial se EA = 1;
Display Liga (sem cursor) 0C 1.6 ms - ET1 ( Enable Timer 1 ) - “1” habilita interrupção pedida pelo temporizador 1 se EA = 1;
Desliga 0A / 08 40 ms - EX1 ( Enable External 1 ) - “1” habilita interrupção externa 1 se EA = 1;
Limpa Display com Home cursor 01 1.6 ms - ET0 ( Enable Timer 0 ) - “1” habilita interrupção pedida pelo temporizador 0 se EA = 1;
Controle do Cursor Liga 0E 40 ms - EX0 ( Enable External 0 ) - “1” habilita interrupção externa 0 se EA = 1;
Desliga 0C 40 ms
Desloca para Esquerda 10 40 ms
Desloca para Direita 14 40 ms
Cursor Home 02 40 ms
Cursor Piscante 0D 40 ms BFH BEH BDH BCH BBH BAH B9H B8H B8H
Cursor com Alternância 0F 40 ms
Sentido de deslocamento do Para a esquerda 04 40 ms
X X X PS PT1 PX1 PT0 PXO IP
cursor ao entrar com caracter Para a direita 06 40 ms bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Deslocamento da mensagem Para a esquerda 07 40 ms
“0” Prioridade BAIXA / “1” Prioridade ALTA
ao entrar com caracter Para a direita 05 40 ms - PS ( Priority Serial ) - Nível de prioridade para o canal serial;
Deslocamento da mensagem Para a esquerda 18 40 ms - PT1 ( Priority Timer 1 ) - Nível de prioridade para o temporizador 1;
sem entrada de caracter Para a direita 1C 40 ms - PX1 ( Priority External 1 ) - Nível de prioridade para a interrupção externa 1;
End. da primeira posição primeira linha 80 40 ms - PT0 ( Priority Timer 0 ) - Nível de prioridade para o temporizador 0;
End. da primeira posição segunda linha C0 40 ms - PX0 ( Priority External 0 ) - Nível de prioridade para a interrupção externa 0;
(instruções de 12 pulsos) ORL A,#data JBC bit,rel
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 Bit 0 89H ADD A, @Ri ORL A,@Ri JC rel
ADD A,#data
GATE.1 𝐶/𝑇1 M1.1 M0.1 GATE.0 𝐶/𝑇0 M1.0 M0.0 TMOD ADD A,direct
ORL A,direct
ORL A,Rn
JMP @A + DPTR
JNB bit,rel
Controle do C/T 1 Controle do C/T 0 ADD A,Rn ORL direct,A JNC rel
ADDC A, #data RL A JNZ rel
𝐶/𝑇𝑥 - Seleciona a função, TEMPORIZADOR (timer) ou CONTADOR. ADDC A, @Ri RLC A JZ rel
Será selecionado como TEMPORIZADOR se este bit estiver em “0”. Se em “1” a operação será como CONTADOR. ADDC A,direct RR A LCALL addr16
GATE.x - Quando GATE.x = 1 e TRx = 1, o temporizador irá operar somente enquanto o pino INTx (pinos P3.2 e ADDC A,Rn RRC A LJMP addr16
P3.3) = 1 (controle por circuito). ANL A,#data SETB bit MOV @Ri,direct
Quando GATE.x = 0, o temporizador irá operar somente quando TRx = 1 (controle por software). ANL A,@Ri SETB C MOV bit,C
Obs.: TRx é um bit de TCON (palavra de controle do Contador/Temporizador) que será vista a seguir. ANL A,direct SUBB A,#data MOV direct,#data
M1.x e M0.x – Bits de seleção de modo de operação. ANL A,Rn SUBB A,@Ri MOV direct,@Ri
ANL direct,A SUBB A,direct MOV direct,direct
M 1.x M 0.x Modo de operação Característica CLR A SUBB A,Rn MOV direct,Rn
0 0 Modo 0 C/T de 13 bits CLR bit SWAP A MOV DPTR, #data16
0 1 Modo 1 C/T de 16 bits CLR C XCH A,@Ri MOV Rn, direct
1 0 Modo 2 C/T de 8 bits com recarga automática CPL A XCH A,direct MOVC A,@A + DPTR
1 1 Modo 3 1 C/T de 8 bits e 1 Temporizador CPL bit XCH A,Rn MOVC A,@A + PC
CPL C XCHD A,@Ri MOVX @DPTR,A
DA A XRL A direct MOVX @Ri,A
DEC @Ri XRL A,#data MOVX A,@DPTR
8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 88H DEC A XRL A,@Ri MOVX A,@Ri
DEC direct XRL A,Rn ORL C,/bit
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON DEC Rn XRL direct,A ORL C,bit
TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0 INC @Ri ORL direct,#data
INC A (instruções de 24 pulsos) POP direct
- IT 0 = “0” - ativa a interrupção com nível lógico baixo no pino 𝐼𝑁𝑇0 (pino P3.2);
INC direct AJMP addr11 PUSH direct
= “1” - ativa a interrupção com borda de descida no pino 𝐼𝑁𝑇0;
INC Rn ANL C,/bit RET
- IT 1 = “0” - ativa a interrupção com nível lógico baixo no pino 𝐼𝑁𝑇1(pino P3.3);
MOV @Ri, #data ANL C,bit RETI
= “1” - ativa a interrupção com borda de descida no pino 𝐼𝑁𝑇1;
MOV @Ri,A ANL direct,#data SJMP rel
- IE x - fica em “1”quando for detectado uma borda de descida (pedido de interrupção).
MOV A,#data CALL addr11 XRL direct,#data
É resetado após o atendimento da rotina de tratamento da interrupção.
MOV A,@Ri CJNE @Ri,#data,rel
- TFx = Bit de overflow do temporizador. É ativado (“setado”) pelo circuito quando ocorrer um overflow no
MOV A,direct CJNE A,#data,rel (instruções de 48 pulsos)
temporizador, gerando um pedido de interrupção. É “ressetado” pelo hardware após terminada a rotina de
MOV A,Rn CJNE A,direct,rel DIV AB
interrupção.
MOV C,bit CJNE Rn,#data rel MUL AB
- TRx = Bit de controle de operação do temporizador. 1 liga o C/T; 0 desliga o C/T.
MOV direct,A DJNZ direct,rel
MOV Rn,#data DJNZ Rn,rel
MOV Rn,A INC DPTR
NOP JB bit,rel

INTERRUPÇÃO Endereço no 8051 Endereço no kit


𝐼𝑁𝑇0 0003H 4230H
𝐶/𝑇0 000BH 4240H
𝐼𝑁𝑇1 0013H 4250H
𝐶/𝑇1 001BH 4260H
SERIAL 0023H 4270H
9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 98H
2 SMOD FreqClok 1
SM0 SM1 SM2 REN TB8 RB8 TI RI SCON Taxa 
SCON.7 SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCON.0 32 12 ncontagensT1
SM0 SM1 Modo de operação Taxa de Transmissão
0 0 Modo 0 FreqClock/12
SMOD é o bit 7 do registro especial PCON (o
0 1 Modo 1 Variável
qual tem 87H como endereço de byte e não é
1 0 Modo 2 FreqClock/32 ou FreqClock/64
bit endereçável)
1 1 Modo 3 Variável

Modo 0 Modo 1 Modo 2 e Modo 3


SM2 sem função. não permitirá a geração do pedido de habilita ou não a comunicação entre vários 8051s (de modo geral é
Deve ficar em interrupção se estiver em 1 e se o stop bit “setado” para comunicação multiprocessador). Não permitirá a geração do
0. recebido for ilegal. pedido de interrupção se estiver em 1 e se o nono bit de dados for zero.

REN em 1 habilita a recepção. Em 0 desabilita a recepção e o pino RXD (P3.0) pode ser utilizado como I/O

TB8 sem função sem função indica o estado do nono bit de dados a ser transmitido. Pode ser “setado”
ou zerado por software.

RB8 sem função indica o estado do stop bit recebido, se indica o estado do nono bit de dados recebido.
SM2 estiver em 0.

TI flag de requisição de interrupção de transmissão. É “setado” pelo hardware ao início do stop bit (ou após a transmissão do oitavo bit de
dados). Deve ser zerado pelo software da rotina de transmissão para permitir novas interrupções.

RI flag de requisição de interrupção de recepção. É “setado” pelo hardware durante a recepção do stop bit (ou após a recepção do oitavo bit de
dados). Deve ser zerado pelo software da rotina de recepção para permitir novas interrupções.
var0 EQU 0H start: MOV SCON, #40H tempo EQU 2000 dado EQU ‘X’
var1 EQU 1H MOV TMOD, #20H
MOV TH1, #0F4H delay: MOV TMOD, #10H printf: LCALL limpa_display
delay: PUSH var0 MOV TL1, TH1 MOV TH1, #HIGH(65535-tempo) LCALL posiciona
PUSH var1 MOV IE, #90H MOV TL1, #LOW(65535-tempo) MOV A, #dado
MOV var0, #n0 MOV TCON, #40H CLR TF1 LCALL dado_LCD
delay0: MOV var1, #n1 SETB TR1 RET
MOV R7, #6 delay0: JNB TF1, delay0
delay1: DJNZ var1, delay1
MOV DPTR, #texto CLR TF1 limpa_display: MOV A, #1
DJNZ var0, delay0
CLR TR1 LCALL controle_LCD
dado: MOVX A, @DPTR
POP var1 RET RET
MOV SBUF, A
POP var0
wait: JNB TI, wait
RET posiciona : MOV A, #80H
CLR TI tdelay EQU 200
n_timer EQU 30H LCALL controle_LCD
𝑡 = 12𝑇 11 + 𝑛0 3 + 2𝑛1 INC DPTR
valor EQU 50 RET
DJNZ R7, dado
ORG 4260H
fim: SJMP fim CLR TF1 dado_LCD: PUSH DPL
CLR TR1 PUSH DPH
valor EQU 30H MOV DPTR, #0EC01H
texto: DB “Escola” MOV TH1, #(255+1- tdelay)
msb EQU 31H MOVX @DPTR, A
lsb EQU 32H MOV TL1, TH1
cont EQU 30H DJNZ n_timer, naopisca LCALL delay
cod_saida EQU 31H MOV n_timer, # valor POP DPH
converte: MOV A, valor POP DPL
MOV B, #10 tecla EQU 32H CPL P1.0
naopisca:SETB TR1 RET
DIV AB
ADD A, #30H converte: MOV cont, #0FFH RETI
MOV DPTR, #tabela1 controle_LCD: PUSH DPH
MOV msb, A PUSH DPL
MOV A, B prox: INC cont get: MOV DPTR, #0E800H
MOV A, cont MOV DPTR, #0EC00H
ADD A, #30H cont_anel: INC DPL MOVX @DPTR, A
MOV lsb, A MOVC A, @A+DPTR MOV A, DPL
CJNE A, tecla, prox LCALL delay
RET CJNE A, #3, naotres
MOV DPTR, #tabela2 POP DPL
MOV DPL,#0
MOV A, cont POP DPH
naotres: MOVX A, @DPTR
MOVC A, @A+DPTR RET
CJNE A, #0FFH, armazena
MOV cod_saida, A SJMP cont_anel
RET armazena: ___________
tabela1: DB ___,___,___ ___________
tabela2: DB ___,___,___ RET

Você também pode gostar