]> git.llucax.com Git - z.facultad/66.09/etherled.git/commitdiff
Agrego pruebas que tenía colgadas por ahí...
authorLeandro Lucarella <llucax@gmail.com>
Thu, 15 Dec 2005 04:47:40 +0000 (04:47 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 15 Dec 2005 04:47:40 +0000 (04:47 +0000)
pruebas/c/net/Makefile
pruebas/keil/led_anda/led.asm [new file with mode: 0644]

index 265804988d37ce975d24d8c8ba6bd1856fd79a92..a9fac437fefa9c2d59920aa6c452b7687f5b3a11 100644 (file)
@@ -3,3 +3,6 @@
 objs=main.o eth.o net.o ip.o udp.o
 
 main: $(objs)
+
+clean:
+       @rm -fv main $(objs)
diff --git a/pruebas/keil/led_anda/led.asm b/pruebas/keil/led_anda/led.asm
new file mode 100644 (file)
index 0000000..df0271c
--- /dev/null
@@ -0,0 +1,183 @@
+org    0x0000
+ljmp   main
+
+org    0x002b          ;vector de interrupcion del timer 2
+clr    tr2
+ljmp   leoTabla        ;mando a la rutina de leer tabla
+                       ;(por si ocupa más de 8 bytes y no
+                       ;entra en el vector 0x000b)
+
+; defino algunas variables
+
+comienzoTabla  equ     0x1000
+intervalo              equ     66; 0.1ms (por el clock de 24MHz)
+;intervalo             equ     0x0010
+largo                          equ     16
+retardoms              equ     28-(largo/2)
+latch1                 equ     0x0080
+latch2                 equ     0x00c0
+cero                           equ     0x00
+rcap2l                 equ     0xca
+rcap2h                 equ     0xcb
+t2con                          equ     0xc8
+tl2                            equ     0xcc
+th2                            equ     0xcd
+tr2                            equ     0xca
+tf2                            equ     0xcf
+
+; para futuras pruebas y cambios en los delays, recordar que funcionó con intervalo en 0xf0 e intervalob en 0x07
+; en cristal de 12 MHz
+
+; variables
+dseg   at 0x30
+milisegs:
+       ds      1
+currcol:
+       ds      1
+
+cseg at 0x0030
+;org   0x0030
+
+using 0
+main:
+       mov     a, #0x00
+       mov     dptr, #latch1
+       movx    @dptr, a
+       mov     a, #0x55
+       mov     dptr, #latch2
+       movx    @dptr, a
+
+       ; Cargo milisegundos
+       mov     milisegs, #retardoms
+       ; cargo los capture registers
+       mov     rcap2l, #low(0x10000-intervalo) ; low byte del intervalo
+       mov     rcap2h, #high(0x10000-intervalo) ; high byte del intervalo
+
+       ;cargo los timers
+       mov     tl2, #low(0x10000-intervalo)    ; low byte del intervalo
+       mov     th2, #high(0x10000-intervalo)   ; high byte del intervalo
+
+       mov     ie, #10100000b                  ; habilito interrupcion timer 2
+                                               ; bits de IE (interrupt enable) en 1:
+                                               ;       IE.7 (Global enable/disable)
+                                               ;       IE.5 (Enable timer 2 interrupt)
+       mov     t2con, #00000100b               ; setup timer 2 (auto-reload y start)
+
+       mov     currcol,#(largo)                        ; inicializo el contador (uso r0) para leer de atrás para adelante      
+
+       sjmp    $                               ; aca me quedo
+                                               ; (aca quedaria leyendo de la red)
+
+
+
+
+
+
+       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+       ;;;                                                                     ;;;
+       ;;;                     Rutinas de interrupciones                       ;;;
+       ;;;                                                                     ;;;
+       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+       
+       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+       ;;;                                                                     ;;;
+       ;;;             Rutina para leer la tabla (matriz)                      ;;;
+       ;;;                                                                     ;;;
+       ;;;     Toma como parametros:   -r0                                     ;;;     
+       ;;;     Se afectan:             - dptr                                  ;;;
+       ;;;                             - acc                                   ;;;
+       ;;;                                                                     ;;;
+       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+leoTabla:
+       djnz    milisegs, fin
+       mov     milisegs, #retardoms
+       push    acc                     ; *always* protect estos
+       push    psw
+       push    ar0
+       push    dpl
+       push    dph
+
+       mov     r0, currcol
+       cjne    r0,#cero,sigoLeyendo    ; si no se terminaron de leer todas las columnas (r0 = 0), sigo
+                                       ; leyendo
+       mov     r0,#(largo)             ; vuelvo a empezar la lectura
+sigoLeyendo:
+       mov     dptr,#comienzoTabla     ; ubico el dptr en el comienzo de la tabla
+       dec     r0      
+       mov     a,r0
+       add     a,r0                    ; a = 2*R0 -> tomo 2*R0 porque son 2 bytes cada columna a leer
+       push    acc                     ; guardo el puntero de la tabla
+       movc    a,@a+dptr               ; leo la tabla
+
+       ;imprimo en latch2
+       mov     dptr,#latch2
+       cpl     a                       ; complemento para ver encendidos los "1"
+       movx    @dptr,a
+       
+       pop     acc                     ; recupero el puntero de la tabla
+               add     a,#0x01                 ; busco el 2do byte
+
+       mov     dptr,#comienzoTabla     ; vuelvo a apuntar al comienzo de la tabla
+               movc    a,@a+dptr               ; ya que el que me indica por donde voy en la tabla
+                                       ; es el offset del acumulador
+
+       ;imprimo en latch1
+       mov     dptr,#latch1
+       cpl     a
+       movx    @dptr,a
+
+       mov     currcol, r0
+
+       pop     dph
+       pop     dpl
+       pop     ar0
+       pop     psw
+       pop     acc
+
+fin:
+       clr     tf2                     ; limpio el bit de interrupcion (el reti no lo hace...)
+       setb    tr2                     ; arranco nuevamente el timer
+
+       reti                            ; volvemos al programa...
+
+
+
+
+
+
+       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+       ;;;                                                                     ;;;
+       ;;;                             Matriz a leer                           ;;;
+       ;;;                                                                     ;;;
+       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+org    0x1000
+
+;MAT_D:                db      0xff,0xff,0xff,0xff,0xe3,0xc7,0xe3,0xc7,0xe3,0xc7,0x00,0x00,0xe0,0x00,0x00,0x00
+;              db      0x00,0x00,0xff,0xfc,0xff,0xfc,0xf0,0x00,0xf0,0x00,0x05,0xaa,0x03,0x04,0x01,0x02
+
+
+
+
+MAT_D:
+       db      00001111b, 11110000b    ; columna 0 (0x40,0x00)
+       db      00111111b, 11111100b    ; columna 1
+       db      01110000b, 00000110b    ; columna 2
+       db      01100000b, 00000110b    ; columna 3
+       db      11100000b, 00000111b    ; columna 4
+       db      11100000b, 00000111b    ; columna 5
+       db      11100000b, 00000111b    ; columna 6
+       db      11100000b, 00000111b    ; columna 7
+
+       db      11100000b, 00000111b    ; columna 8
+       db      11100000b, 00000111b    ; columna 9
+       db      11100000b, 00000111b    ; columna 10
+       db      11100000b, 00000111b    ; columna 11
+       db      01110000b, 00001110b    ; columna 12
+       db      01111111b, 11111110b    ; columna 13
+       db      00111111b, 11111100b ; columna 14
+       db      00001111b, 11110000b    ; columna 15
+
+end