Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
;ler período do sinal <128ms ;fcpu = 4MHz absentry inicio ram equ $1000 rom equ $4000 nb equ 8 vreset equ $fffe stkf equ $3fff tstk equ nb*4 stki equ stkf-tstk+1 tios equ $40 tscr1 equ $46 tctl4 equ $4b tscr2 equ $4d tflg1 equ $4e tc0 equ $50 ;---área de stack org stki stack ds.b tstk ;variáveis, constantes, etc org ram t_in ds.b 2 t_fi ds.b 2 t_pe ds.b 2 vaux dc.b 0 ;---programa org rom inicio lds #stkf+1 bclr tscr2,$03 ;pr1:pr0 = 00 bset tscr2,$04 ;pr2 = 1 (fcpu/16) bclr tios,$01 ;ic0 = input capture bclr tctl4,$02 ;edg0b = 0 bset tctl4,$01 ;edg0a = 1 (captura:rising edge) bset tscr1,$80 ;ten = 1 (inicia contagem) ;---aguardar eventos ;pk1 brclr tflg1,$01,pk1 ;ic0f = 0? pk1 ldaa tflg1 ;dica p/ testar ic's oraa vaux beq pk1 ldd tc0 ;d = tc0 std t_in ;salvar instante inicial bsr zflag ;ir p/ sub-rotina zflag ;--- ;pk2 brclr tflg1,$01,pk2 ;ic0f = 0? pk2 ldaa tflg1 oraa vaux beq pk2 ldd tc0 std t_fi bsr zflag ;---calcular período ldd t_fi subd t_in std t_pe jmp pk1 ;---subrotina zflag zflag pshc psha ldaa #$01 staa tflg1 pula pulc rts ;---vetores org vreset reset_ dc.w inicio end ;uso RTI ;usar processo de recenseamento ;fxtal = 8MHz ;---atribuições absentry inicio ram equ $1000 rom equ $4000 nb equ 8 vreset equ $fffe portb equ $1 ddrb equ $3 crgflg equ $37 rtictl equ $3b ;variáveis, constantes, etc org ram vaux dc.b $0f ;---programa org rom inicio movb #$ff,ddrb ;cfg.ddrb = $ff, (portb(intei movb #0,portb ;ci. portb = 00 movb #$10,rtictl ;frti = 8MHz/1024;inicia con ;--- pk0 ldab #4 ;contador auxiliar pk1 brclr crgflg,$80,pk1 ;rtif = 0? ldaa #$80 ;a = $80 (zerar rtif!!) staa crgflg ;rtif = 0 (zerado) decb bne pk1 ldaa vaux staa portb eora #$ff ;alternar conteúdo de vaux staa vaux ;atualizar vaux lbra pk0 ;reciclar ;---vetores org vreset reset_ dc.w inicio end
Compartir