From 219a10127e5cf868e78d59592fc7fade4987a0ee Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Thu, 15 Dec 2005 04:47:40 +0000 Subject: [PATCH] =?utf8?q?Agrego=20pruebas=20que=20ten=C3=ADa=20colgadas?= =?utf8?q?=20por=20ah=C3=AD...?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- pruebas/c/net/Makefile | 3 + pruebas/keil/led_anda/led.asm | 183 ++++++++++++++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 pruebas/keil/led_anda/led.asm diff --git a/pruebas/c/net/Makefile b/pruebas/c/net/Makefile index 2658049..a9fac43 100644 --- a/pruebas/c/net/Makefile +++ b/pruebas/c/net/Makefile @@ -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 index 0000000..df0271c --- /dev/null +++ b/pruebas/keil/led_anda/led.asm @@ -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 -- 2.43.0