Cogigo assembly

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (288 palavras )
  • Download(s) : 0
  • Publicado : 16 de outubro de 2012
Ler documento completo
Amostra do texto
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
mov30h,#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:
clr tr1 ;para o timer1
mov p1,#0ffh ;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 R0para 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:
mova,@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 th1,#high(15536);inicializa o timer 1 com byte - signif. de 15536 (65535-50000)
mov tl1,#low(15536) ;inicializa o timer 1 com byte + signif. de 15536 (65535-50000)
setb tr1 ;inicia timer 1reti ;retorna da interrupção

ledcodes:
DB 11000000B,11111001B,10100100B
DB 10110000B,10011001B,10010010B
DB 10000010B,11111000B,10000000B
DB 10010000B
END
tracking img