Exercício resolvido edsim 8051

333 palavras 2 páginas
Exemplo do uso do conversor Digital/Analógico

clr p0.7 ;habilita o conversor D/A e desabilita os displays mov a,#00h loop: mov p1,a Inc A jmp loop

Exemplo de uso do Timer Temporizador

ORG 0000 jmp main ORG 001BH ;vetor de interrupção 1 jmp timer1isr

ORG 0030H main: mov r0,#2fh ; inicializa R0 com uma posição a menos que 30h mov 30h,#5 ; posição de armazenamento da unidade. mov 31h,#2 ; posição de armazenamento da dezena. mov 32h,#7 ; posição de armazenamento da centena. mov 33h,#4 ; posição de armazenamento do milhar. mov dpl,#low(ledcodes) ;DPTR(low) = byte - signif. do endereço incial da da sequencia de digitos mov dph,#high(ledcodes) ;DPTR(low) = byte + signif. do endereço incial da da sequencia de digitos mov tmod,#10h ; coloca o timer 1 no modo de 16 bits setb tf1 ;força timer 1 a gerar interrupt setb et1 ;habilita timer 1 a gerar interrupt setb ea ;habilita as interrupções jmp $ ; não faz nada e espera pela interrupção

timer1isr: mov p0,#07Fh clr tr1 ;para o timer 1 mov p0,#07fh ;apaga todos os segmentos do display cpl p3.3 ;inverte o bit zero da seleção do display jb p3.3,skip1 cpl p3.4 skip1: inc r0 ; aponta R0 para a proxima locação de dados cjne r0,#34h,skip2 ;se R0 não é 34, pula aproxima instrução mov r0,#30h ; retorna R0 para a primeira locação de dados skip2: mov a,@r0 ; move o digito a ser mostrado para o Acc movc a,@a+dptr ; move o código do digito para o Acc
;
mov p1,a ; move o digito para P1 mov p0,#0ffh mov th1,#high(12048) ;inicializa o timer 1 com byte - signif. de 12048 (65535-53487) mov tl1,#low(12048) ;inicializa o timer 1 com byte + signif. de 12048 (65535-53487) setb tr1 ;inicia timer 1 mov p0,#0ffh reti ;retorna da interrupção

ledcodes: DB 11000000B,11111001B,10100100B DB 10110000B,10011001B,10010010B DB 10000010B,11111000B,10000000B DB

Relacionados