HC08 - Generacion de onda cuadrada

Ejemplo de como generar una onda cuadrada de 1s de periodo con ciclo de trabajo de 50% (tON=500ms, tOFF=500ms).
Programación en Assembler para el microcontrolador MC68HC908JL3

 
 

;******************************************************************
;* Programa que prende y apaga un led con un periodo de 1Hz
;* con ciclo de trabajo del 50%. (tON=500ms, tOFF=500ms)
;* LED en salida PTD0.
;* Delay 500ms ((12+185)*(10*255))+13=499813us=+/-500ms
;******************************************************************
$Include 'jl3regs.inc'          ;Libreria para el MC68HC908JL3
;
RamSt   equ     $0080           ;Direccion de origen de memoria RAM
RomSt   equ     $EC00           ;Direccion de origen de memoria ROM
ResetV  equ     $FFFE           ;Vector de Reset
;                      
        org     RamSt           ;Se apunta al origen de memoria RAM
;
Var1    rmb     1               ;Variable de 1 byte
Var2    rmb     1               ;Variable de 1 byte
;
        org     RomSt           ;Se apunta al origen de memoria ROM
;
MAIN    mov     #$11,CONFIG1    ;Deshabilita el COP y LVI
        mov     #$FF,DDRD       ;Configura puerto D como salidas
        clr     PORTD           ;Inicializa el puerto D
;
INICIO  bset    0,PORTD         ;Setea a 1 la salida 0 del puerto D
        bsr     DELAY           ;[4]Llama al delay de 499.8ms
        bclr    0,PORTD         ;Setea a 0 la salida 0 del puerto D
        bsr     DELAY           ;[4]Llama al delay de 499.8ms
        bra     INICIO          ;Repite el ciclo
;               
DELAY   mov     #$B9,Var2       ;[5]Se carga el valor 185 a Var2
LOOP2   mov     #$FF,Var1       ;[5]Se carga el valor 255 a Var1
        dec     Var2            ;[4]Se decrementa Var2
        beq     FIN             ;[3]Si Var2=0 salta a FIN
LOOP1   dec     Var1            ;[4]Se decrementa Var1
        beq     LOOP2           ;[3]Si Var1=0 salta a LOOP2 (Externo)
        bra     LOOP1           ;[3]Salta a LOOP1 (Interno)
FIN     rts                     ;[4]Retorno de subrutina
;
        org     ResetV          ;Se apunta al Vector de Reset
        dw      MAIN            ;Salta a MAIN
        end                     ;Fin del programa


No hay comentarios.:

Publicar un comentario