Advertisement
sombruxo

Untitled

May 16th, 2025
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MIX Assembler 2.56 KB | Source Code | 0 0
  1. ;
  2. ; stepper.asm
  3. ;
  4. ; Created: 12/05/2025 13:14:09
  5. ; Author : Bemposta
  6. ;
  7.  
  8. .DSEG
  9.     i: .byte 1
  10.     pasos: .byte 4
  11.  
  12.  
  13. .CSEG
  14. ser r16
  15. out ddrb, r16
  16. call init_array
  17.  
  18.  
  19. start:
  20.  
  21.     ;Griga 20*4 pasos derecha
  22.     ldi r16, 200
  23.     mov r3, r16
  24.     bucleexternoD:
  25.         clr r20 ;indice del bucle for. 
  26.         bucleforiternoD:
  27.             push r20
  28.             call get_paso       ;Llamada a funcion con parametro
  29.             pop r21
  30.             out portb, r21
  31.             call delay1
  32.         inc r20
  33.         cpi r20, 4
  34.         brne bucleforiternoD
  35.     dec r3
  36.     brne bucleexternoD
  37.  
  38.     call delay2
  39.  
  40.     ;Griga 20*4 pasos derecha
  41.     ldi r16, 200
  42.     mov r3, r16
  43.     bucleexternoI:
  44.         clr r20 ;indice del bucle for. 
  45.         ldi r30, 3
  46.         bucleforiternoI:
  47.             push r30
  48.             call get_paso       ;Llamada a funcion con parametro
  49.             pop r21
  50.             out portb, r21
  51.             call delay1
  52.             dec r30
  53.         inc r20
  54.         cpi r20, 4
  55.         brne bucleforiternoI
  56.     dec r3
  57.     brne bucleexternoI
  58.  
  59.     call delay2
  60.  
  61.     rjmp start
  62.  
  63. ;============================================================================
  64. ; Funciones
  65. ;============================================================================
  66. get_paso:
  67.     PUSH YH     ;backup del reg. Y,
  68.     PUSH YL     ;  parte alta y baja.
  69.     IN YL, SPL  ;Iniciamos el reg.
  70.     IN YH, SPH  ;  a la cima de la pila
  71.     PUSH R0     ;backup R0
  72.     PUSH xl     ;backup R26
  73.     PUSH xh     ;backup R27
  74.  
  75.     LDD R0, Y+5 ;sacamos var2 de la pila
  76.     ldi xl, low(pasos)
  77.     ldi xh, high(pasos)
  78.     add xl, r0
  79.     clr r0
  80.     adc xh, R0
  81.     ld r0, x
  82.     STD Y+5, R0  
  83.  
  84. terminar:
  85.     pop xh      ;es el r27
  86.     pop xl      ;es el r26
  87.     POP R0      ;Restauramos R0 antes de terminar.
  88.     POP YL      ;Restauramos YL antes de terminar.
  89.     POP YH      ;Restauramos YH antes de terminar.
  90.     ret
  91.  
  92. ;============================================================================
  93. init_array:
  94.     push yl     ;es el r28
  95.     push yh     ;es el r29
  96.     push r16
  97.     ldi yl, low(pasos)
  98.     ldi yh, high(pasos)
  99.     ldi r16, 0b00000001
  100.     st y, r16
  101.     ldi r16, 0b00000010
  102.     std y+1, r16
  103.     ldi r16, 0b00000100
  104.     std y+2, r16
  105.     ldi r16, 0b00001000
  106.     std y+3, r16
  107.     pop r16
  108.     pop yh
  109.     pop yl
  110.     ret
  111.  
  112. ;============================================================================
  113. ; 50ms at 16.0 MHz
  114. delay1:
  115.     PUSH r18
  116.     PUSH r19
  117.     PUSH r20
  118.     ldi  r18, 84
  119.     ldi  r19, 29
  120. L1_1:
  121.     dec  r19
  122.     brne L1_1
  123.     dec  r18
  124.     brne L1_1
  125.     nop
  126.     pop r20
  127.     pop r19
  128.     pop r18
  129.     ret
  130.  
  131. ;============================================================================
  132. ; 50ms at 16.0 MHz
  133. delay2:
  134.     PUSH r18
  135.     PUSH r19
  136.     PUSH r20
  137.     ldi  r18, 82
  138.     ldi  r19, 43
  139.     ldi  r20, 0
  140. L1_2:
  141.     dec  r20
  142.     brne L1_2
  143.     dec  r19
  144.     brne L1_2
  145.     dec  r18
  146.     brne L1_2
  147.     lpm
  148.     nop
  149.     pop r20
  150.     pop r19
  151.     pop r18
  152.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement