por pomboeletronic » 12 Mar 2007 09:32
;--------------------------------------INICIO DO PROGRAMA--------------------------------------------------
ORG 0
ljmp principal ; este é o inicio do programa
org 0bh ;Vetor da int do timer0
ljmp clock_AD
principal:
mov p2,#11111111b ;colaca a p2 em 1 pra proteger o AD
clr AD_ALE ;desliga o ALE e o Start
clr AD_CLK ;limpa o clock do AD
SETB AD_OE ;desabilita as saida do AD
mov ie,#10000010B ;TIMER0 (ET0) pode pedir interrupcao.
mov ip,#2 ;TIMER0 max prioridade
mov TMOD,#01h ;programoTMOD,TIMER0,para modo 1
;Isto e',TMOD=0000 0001,ou M1=0,M0=1
;e ainda contagem interna,pois C/T=0
mov TH0,#high(65535-20) ;Ao inves de fazer as contas na
;mao,deixo o compilador fazer
;para mim.
mov TL0,#low(65535-20) ;Nestas duas instrucoes eu carreguei
;a parte alta do numero 45535 em THigh
;e a parte baixa em TLow,criando um
;contador de 16 bits que contara' de
;45535 ate' 65535,dando o total de
;20000 contagens
setb TR0 ;Ligo o timer 0
setb AD_ALE ; start converter (SET both SC and ALE)
lcall delay1ms
lcall delay1ms
lcall delay1ms
clr AD_ALE
START_CLK:
jnb AD_EOC,START_CLK;espera fin de conversao
mov a,conv_port;move o valor da convrsao para o Acc,deve ser convertido para asci para ser enviado para o display...
;utiluzei o tiner para gerar o clock
clock_ad:
clr tr0 ;Desliga timer 0
cpl AD_CLK
mov th0,#high(65535);Inicializa TH0 com parte alta
mov tl0,#low(65535);Inicializa TL0 com parte baixa
setb tr0 ;Liga timer 0
reti
"Nós nos transformamos naquilo que praticamos com frequência.
A perfeição,portanto, não é um ato isolado. É um hábito".
Aristóteles