Sunteți pe pagina 1din 9

1 – Escreva um programa para gerenciar uma interface com conversor AD ADC-

0808

Início INT0

Configura Int’s Leitura da


(INT0) conversão

R0  End. inicial @R0  Conversão

Seleciona o canal Inc R0

Aciona SC
(Start) N
Fim das leituras?
(10)

Aguarda INT Novo Start


S

Desabilita Int’s

Ret

; Programa de controle para interface com conversor ADC-0808

A0 EQU P3.3
A1 EQU P3.4
A2 EQU P3.5
START EQU P3.6
OE EQU P3.7

ORG 00H
SJMP INICIO

ORG 03H
SJMP INT_AD

; PROGRAMA PRINCIPAL

INICIO: MOV IE, #81H


MOV R0, #50H
CLR A0 ; SELECIONA CANAL 0
CLR A1
CLR A2
SETB START ; START
NOP
NOP
NOP
NOP
CLR START
SJMP $ ; AGUARDA INT

; SUBROTINA INT0

INT_AD: SETB OE ; HABILITA LEITURA CONVERSOR


MOV A1, P2
MOV @R0, A ; GUARDA CONVERSÃO
INC R0
CJNE R0, #5AH, NOVO_START
CLR EX0 ; DESABILITA INT0
SJMP FIM

NOVO_START: SETB START


NOP
NOP
NOP
NOP
CLR START
FIM: RETI

2- Escrever um programa para geração de formas de onda quadrada triangular e


dente de serra com 1Khz de freqüência a partir da seleção dos bits P0.1 e P0.0.

Início

Leitura dos bits

S Subrotina
Estado 0?
Dente de serra

S Subrotina
Estado 1?
Triangular

S Subrotina
Estado 2?
Quadrada

N
; PROGRAMA PRINCIPAL

ORG 00H

INICIO: MOV A, P0
ANL A, 03H
CJNE A, #0, TESTE1
SJMP DENTE_SERRA
TESTE1: CJNE A, #1, TESTE2
SJMP TRIANGULAR
TESTE2: CJNE A, #2, INICIO
SJMP QUADRADA

DENTE_SERRA: MOV A, #0
SAIDA1: MOV P1, A ; SAIDA PARA DAC
LCALL DELAY16 ; DELAY DO STEP
INC A
SJMP SAIDA1

TRIANGULAR: MOV A, #0
SAIDA2: MOV P1, A
LCALL DELAY8 ; DELAY DO STEP
INC A
CJNE A, #0, SAIDA2
MOV A, #0FEH

SAIDA3: MOV P1, A


LCALL DELAY8
DEC A
CJNE A, #0FFH, SAIDA3
MOV A, #1
SJMP SAIDA2

QUADRADA: MOV P1, #0FFH


LCALL DELAY2
MOV P1, #0
LCALL DELAY2
SJMP QUADRADA
3 – Considere um Step motor ligado ao port1 de um 8051. Codifique um programa
que controle o sentido de rotação e o número de voltas de acordo com o código
apresentado nos bits P0.0 a P0.3

Início

Leitura Port0

S Rotação completa
Código 0?
esquerda

S Rotação completa
Código 1?
direita

S
Código 2? ½ rotação esquerda

S
Código 3? ½ rotação direita

; PROGRAMA CONTROLE STEP MOTOR


; SUPOR PASSO COMPLETO COM STEP=1,8º

ORG 00H

INICIO: MOV A, P0
ANL A, 03H
CJNE A, #0, TESTE1
SJMP COMP_ESQ
TESTE1: CJNE A, #1, TESTE2
SJMP COMP_DIR
TESTE2: CJNE A, #2, TESTE3
SJMP 1/2_ESQ
TESTE3: CJNE A, #3, INICIO
SJMP 1/2_DIR
COMP_ESQ: MOV R0, #50D
ESQUERDA: LCALL SEQ_ESQ ; SEQ. ESQ. DE 7,2º (4 ACIONAMENTOS)
DEC R0
CJNE R0, #0, ESQUERDA
SJMP INICIO

COMP_DIR: MOV R0, #50D


DIREITA: LCALL SEQ_DIR ; SEQ. DIR. DE 7,2º (4 ACIONAMENTOS)
DEC R0
CJNE R0, #0, DIREITA
SJMP INICIO

1/2_ESQ: MOV R0, #25D


MEIA_ESQ: LCALL SEQ_ESQ
DEC R0
CJNE R0, #0, MEIA_ESQ
SJMP INICIO

1/2_DIR: MOV R0, #25D


MEIA_DIR: LCALL SEQ_DIR
DEC R0
CJNE R0, #0, MEIA_DIR
SJMP INICIO

SEQ_ESQ: MOV P1, #0AH


LCALL DELAY25
MOV P1, #06H
LCALL DELAY25
MOV P1, #05H
LCALL DELAY25
MOV PI, #09H
LCALL DELAY25
RET

SEQ_DIR: MOV P1, #09H


LCALL DELAY25
MOV P1, #05H
LCALL DELAY25
MOV P1, #06H
LCALL DELAY25
MOV PI, #0AH
LCALL DELAY25
RET
4 – Considere uma interface de 8051 com 4 displays de leds (7 segmentos).
Escreva o código de controle para uma mensagem neste display.

Inicio 1 2 3
4

Desliga Displays Escreve msg2 Escreve msg3 Escreve msg4

Escreve msg1 Liga Display 2 Liga Display 3 Liga Display 4

Liga Display 1
Delay Delay Delay

Delay
Desliga Display 2 Desliga Display 3 Desliga Display 4

Desliga Display 1 2 3 4

; Programa para controle de 4 displays 7 seg, catodo comum


; Mostra 1 2 3 4 nos displays

; Descrição do Hardware:

; PD --> P1.7
; g --> P1.6
; f --> P1.5
; e --> P1.4
; d --> P1.3
; c --> P1.2
; b --> P1.1
; a --> P1.0

;P3,3 --> Liga display 1


;P3,2 --> Liga display 2
;P3,1 --> Liga display 3
;P3,0 --> Liga display 4

CHAR_1 EQU 06H


CHAR_2 EQU 5BH
CHAR_2 EQU 4FH
CHAR_2 EQU 0E6H

ORG 0

INICIO: MOV P3, #0FFH ; desliga displays


DISP1: MOV P1,#CHAR_1 ; mostra “1” em display1
CLR P3.3 ; liga display1
CALL DELAY_25 ; delay para 25 ms
SETB P3.3 ; desliga display1
DISP2: MOV P1,#CHAR_2 ; mostra “2” em display2
CLR P3.2 ; liga display2
CALL DELAY_25 ; delay para 25 ms
SETB P3.2 ; desliga display2

DISP3: MOV P1,#CHAR_3 ; mostra “3” em display3


CLR P3.1 ; liga display3
CALL DELAY_25 ; delay para 25 ms
SETB P3.1 ; desliga display5

DISP1: MOV P1,#CHAR_4 ; mostra “4” em display4


CLR P3.0 ; liga display4
CALL DELAY_25 ; delay para 25 ms
SETB P3.0 ; desliga display4
SJMP INICIO

DELAY25:

; Calcular conforme rotina de delay para 16 bits. Valores de R0 e R1 decididos pelo


; programador

; END
5 – Escreva um código para cada 10ms fazer a leitura de um conversor AD 0801.
Depois de 10 leituras, identificar o maior e menor valor adquirido

INÍCIO
; Programa para Leitura converão AD

ORG 00 Configura Timer


Para 10 ms
INICIO: MOV TMOD,#01H ;T/C0 MODO1
MOV R0,#50H ;END INICIAL
MOV R1,#10D ;Nº DE REPETIÇÕES R0  End Inicial

DENOVO: MOV TH0,HIGH(55536) ;CONTAGEM PARA 10 ms


MOV TL0,LOW(55536) R1  Número de
Leituras (10)
START: SETB START_CONV
NOP
NOP
NOP Start da Conversão
NOP
CLR B START_CONV
JNB TF0,$ ;ESPERA 10 ms
MOV A, P1 ;LÊ A CONVERSÃO
MOV @R0,A ;GUARDA NA MEMÓRIA N 10 ms
DCR R0
?
CJNE R0,#0,DENOVO
LCALL ORDENA
MOV B,59H ;B  RECEBE MENOR S
MOV A,50H ;B  RECEBE MAIOR
Leitura de Conversão
SJMP $ ;FIM DO PROGRAMA

ORDENA: ; ORDENA DADOS A PARTIR


; DO END 50H Guarda na Memória

N 10
Leituras?

FIM
6 – Utilizando uma planilha Excel, construir uma tabela de senos de modo a ser
utilizado para a geração de uma função seno através da interface com um
conversor DA.

S-ar putea să vă placă și