[chronojump] Firmware-50ms to english (variables & comments)
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Firmware-50ms to english (variables & comments)
- Date: Fri, 4 Jun 2010 13:46:56 +0000 (UTC)
commit 208a2837136d10ed7275d9a1f29fa0b7b02055b8
Author: Xavier de Blas <xaviblas master gnome org>
Date: Fri Jun 4 21:46:02 2010 +0800
Firmware-50ms to english (variables & comments)
.../chronopic-firmware-50ms.asm | 610 ++++++++++----------
1 files changed, 301 insertions(+), 309 deletions(-)
---
diff --git a/chronopic-firmware/chronopic-1.0-firmware/chronopic-firmware-50ms.asm b/chronopic-firmware/chronopic-1.0-firmware/chronopic-firmware-50ms.asm
index 548fe44..ed6f014 100755
--- a/chronopic-firmware/chronopic-1.0-firmware/chronopic-firmware-50ms.asm
+++ b/chronopic-firmware/chronopic-1.0-firmware/chronopic-firmware-50ms.asm
@@ -1,132 +1,128 @@
;****************************************************************************
;* chronopic.asm Febrero 2005 *
;---------------------------------------------------------------------------*
-; Software para el microcontrolador PIC16F876A utilizado para el *
-; cronometro del proyecto chronojump *
+; Software for the microcontroller PIC16F876A used by the Chronopic *
+; chronometer on Chronojump project *
; *
-; Para las pruebas se esta utilizando la tarjeta SKYPIC *
;---------------------------------------------------------------------------*
; Juan Gonzalez <juan iearobotics com> *
-; LICENCIA GPL *
+; 2010 English translation: Xavier de Blas <xaviblas gmail com> *
+; LICENSE: GPL *
;****************************************************************************
-;-- Establecer el PIC a emplear
+;-- this PIC is going to be used:
LIST p=16f873
INCLUDE "p16f873.inc"
;*****************************************
-;* CONSTANTES *
+;* CONSTANTS *
;*****************************************
-;-- Estado logico de la entrada (no el estado fisico)
-;-- Es la informacion que se envia en la trama de cambio
-ENTRADA_OFF EQU 0 ;-- Pulsador no apreado
-ENTRADA_ON EQU 1 ;-- Pulsador apretado
+;-- Logical status of the input (not physical status)
+;-- It's the information sent to the frame of changing
+INPUT_OFF EQU 0 ;-- Push button not pushed
+INPUT_ON EQU 1 ;-- Push button pushed
-;-- Cabecera de la trama asincrona de "cambio"
-TCHANGE EQU 'X'
+;-- Header of the asyncronous frame of "changing"
+FCHANGE EQU 'X'
-;-- Cabecera de la trama de "ESTADO"
-TESTADO EQU 'E' ; Solicitud de Estado de la plataforma
-RESTADO EQU 'E' ; Respuesta de la trama de estado
+;-- Header of the "status" frame
+FSTATUS EQU 'E' ; Petition of status of the platform
+RSTATUS EQU 'E' ; Response of the status frame
-;-- Valor de inicializacion del TIMER0 para conseguir TICKS de 10ms de
-;-- duracion. Se utiliza para el antirrebotes
+;-- Initialization value of the TIMER0 to have TICKS with a duration of 10ms
+;-- It's used for the debouncing time
TICK EQU 0xD9
-;-- Valor del tiempo antirrebotes (en unidades de 10 milisegundos)
-;-- Este valor se puede modificar, para establecerse el mas adecuado
-;-- Las senales con una duracion inferior a este valor se consideran
-;-- pulsos espureos
-;-- Este valor se puede modificar, segun los criterios de exclusion
-;-- de senales espureas
-TIEMPO_ANTIRREBOTES EQU 0x05
+;-- Value of the debouncing time (in units of 10 milliseconds)
+;-- This value can be changed, in order to select the most suitable
+;-- Signals with a duration lower than this value are considered spurious
+DEBOUNCE_TIME EQU 0x05
-;-- Estado del automata principal
-EST_ESPERANDO_EVENTO EQU 0x00
-EST_ANTIRREBOTES EQU 0x01
-EST_TRAMAX EQU 0x02
+;-- Status of main automaton
+STAT_WAITING_EVENT EQU 0x00
+STAT_DEBOUNCE EQU 0x01
+STAT_FRAMEX EQU 0x02
;*******************************************
;* VARIABLES *
;*******************************************
CBLOCK 0x20
- ;-- Guardar el contexto cuando llegan interrupciones
- savew ; Almacenamiento temporal del registro W
- saves ; Almacenamiento temporial del registro STATUS
+ ;-- Save the context when interruptions arrive
+ savew ; Temporal storage of W register
+ saves ; temporal storage of the STATUS register
- ;-- Extension del temporizador 1
+ ;-- Extension of timer 1
TMR1HH
- ;-- Contador del antirrebotes
- CONTANTI
+ ;-- Counter of the debouncer
+ COUNTDEBOUNCE
- ;-- Marca de tiempo de un evento
- TIMESTAMP_HH ;-- Parte alta-alta
- TIMESTAMP_H ;-- Parte alta
- TIMESTAMP_L ;-- Parte baja
+ ;-- Timestamp of an event
+ TIMESTAMP_HH ;-- high-high part
+ TIMESTAMP_H ;-- high part
+ TIMESTAMP_L ;-- low part
- ;-- Estado del pulsador
- entrada ;-- Entrada estable actual Valor: (0-1)
- entrada_nueva ;-- Nueva entrada (estable) Valor: (0-1)
+ ;-- Pushbutton status
+ input ;-- Current stable input Value: (0-1)
+ input_new ;-- New stable input Value: (0-1)
- ;-- Estado del automata
- estado
+ ;-- Automaton status
+ status
- ;-- Reset: Indica si se habia hecho un reset de los eventos
- ;-- Reset=1, significa que el siguiente evento que llegue se
- ;-- considerara el primero, por lo que su marca de tiempo no
- ;-- tiene sentido, y se debe devolver un 0.
- ;-- Reset=0, es el estado normal.
+ ;-- Reset: Shows if has been done a reset of events
+ ;-- Reset=1, means that next incoming event will be considered the first
+ ;-- that means that it's timestamp has no sense, and a 0 must be returned
+ ;-- Reset=0, it's normal status.
reset
- ;-- Variable de 16 bits para hacer una pausa
- ;-- (usado por rutina pausa)
- pausa_h
- pausa_l
+ ;-- 16 bits variable to do a pause
+ ;-- (used by the pause routine)
+ pause_h
+ pause_l
- ;-- Almacenar un caracter de la trama recibida
- car
+ ;-- Store a character of the received frame
+ char
ENDC
;****************************
-;* Comienzo del programa
+;* Starting of the program
;****************************
ORG 0
- GOTO inicio
+ GOTO start
ORG 4
;**************************************************
-;* Rutina de atencion a las interrupciones *
+;* Interruptions routine *
;**************************************************
int
;-----------------------------
- ;-- Guardar el contexto
+ ;-- Store the context
;-----------------------------
- MOVWF savew ;-- Guardar valor del registro W
- SWAPF STATUS,W ;-- Guardar valor registro STATUS
+ MOVWF savew ;-- Store value of W register
+ SWAPF STATUS,W ;-- Store value of STATUS register
MOVWF saves
- ;-- Determinar la causa de la interrupcion
+ ;-- Find the interruption cause
BTFSC INTCON,T0IF
- GOTO isr_timer0 ;-- Es debida al timer0
+ GOTO isr_timer0 ;-- Caused by timer0
BTFSC INTCON,RBIF
- GOTO isr_portb ;-- Es debida a un cambio en el puerto B
+ GOTO isr_portb ;-- Caused by a change on B port
- BTFSC PIR1,TMR1IF ;-- Es debida al timer 1
+ BTFSC PIR1,TMR1IF ;-- Caused by timer 1
GOTO isr_timer1
- ;-- WARNING! WARNIG! WARNING! Aqui no deberia llegar!!!!
+ ;-- WARNING! WARNIG! WARNING! Here we should never be!!!!
GOTO int
;-------------------------
- ;- Fin de interrupcion
+ ;- End of interruption
;-------------------------
-fin_int
+end_int
- ;-- Recuperar contexto
+ ;-- Recuperate context
SWAPF saves,W
MOVWF STATUS
SWAPF savew, F
@@ -135,73 +131,71 @@ fin_int
RETFIE
;********************************************************
-;* Rutina de atencion a la interrupcion del timer1
-;* El timer 1 es el que lleva el cronometraje. Esta rutina
-;* se invoca cuando hay un overflow. Se extiende el Timer 1
-;* con un Byte mas: TMR1HH
+;* Routine of interruption of timer1
+;* timer 1 controls the cronometring
+;* This routine is invoked when there's an overflow
+;* Timer 1 gets extended with 1 more byte: TMR1HH
;********************************************************
isr_timer1
- BCF PIR1,TMR1IF ; Quitar flag de overflow
+ BCF PIR1,TMR1IF ; Remove overflow flag
- ;-- Control del desbordamiento
- ;-- Comprobar si contador de ha llegado a su
- ;-- maximo valor. Si es asi no se incrementa
+ ;-- Overflow control
+ ;-- Check if counter has arrived to it's maximum value
+ ;-- If it's maximum, then not increment
MOVLW 0xFF ; TMR1HH = 0xFF?
SUBWF TMR1HH,W
- BTFSC STATUS,Z ; No--> Continuar
- GOTO fin_int ; Si--> No incrementar crono. FIN
+ BTFSC STATUS,Z ; No--> Continue
+ GOTO end_int ; Yes--> Don't increment chrono. END
- ;-- Incrementar
+ ;-- Increment
INCF TMR1HH,F
- goto fin_int
+ goto end_int
;******************************************************
-;* Rutina de atencion a la interrupcion del timer0
-;* El timer0 se utiliza para temporizar el tiempo
-;* antirrebotes. Para considerar que un cambio de la
-;* senal de entrada es estable, debe transcurrir al menos
-;* un tiempo igual al ANTIRREBOTES.
-;* Este timer esta todo el rato funcionando. Es el automata
-;* principal es que sabe cuando hay informacion valida
+;* Routine of interruption of timer0
+;* timer0 is used to control debouncing time
+;* A change on input signal is stable if time it's at minimum equal to debouncing time
+;* This timer is working all the time.
+;* Main automaton know when there's valid information
;******************************************************
isr_timer0
- BCF INTCON,T0IF ; Quitar flag overflow
+ BCF INTCON,T0IF ; Remove overflow flag
- ;-- Volver a lanzar temporizador dentro de un tick
+ ;-- Execute timer again inside a click
MOVLW TICK
MOVWF TMR0
- ;-- Decrementar contador antirrebotes
- DECF CONTANTI,F
+ ;-- Decrese debouncing counter
+ DECF COUNTDEBOUNCE,F
- goto fin_int
+ goto end_int
;****************************************************
-; Rutina de atencion a la interrupcion del puerto B
-; Se llama cada vez que haya un cambio en el bit RB4
-; Esta es la parte principal. Cada vez que hay un
-; cambio en la senal de entrada, se registra su
-; marca de tiempo en la variable (TIMESTAMP, de 3 bytes)
-; y se entra en la fase de ANTIRREBOTES
+; Routine of port B interruption
+; Called everytime that's a change on bit RB4
+; This is the main part.
+; Everytime that's a change on input signal,
+; it's timestamp is recorded on variable (TIMESTAMP, 3 bytes)
+; and we start debouncing time phase
;****************************************************
isr_portb
MOVF reset,F ; Reset=1?
BTFSC STATUS,Z
- GOTO no_reset ; No--> estado normal
+ GOTO no_reset ; No--> normal status
- ;-- Es el primer evento despues del reset
- ;-- Poner contador a cero y pasar al estado reset=0
+ ;-- It's the first event after reset
+ ;-- Put counter on zero and go to status reset=0
CLRF TMR1HH
CLRF TMR1H
CLRF TMR1L
CLRF reset
no_reset
- ;-- Almacenar el valor del cronometro en TIMESTAMP
- ;-- Esta es la marca de tiempo de este evento
+ ;-- Store the value of chronometer on TIMESTAMP
+ ;-- This is the timestamp of this event
MOVFW TMR1HH
MOVWF TIMESTAMP_HH
MOVFW TMR1H
@@ -209,419 +203,417 @@ no_reset
MOVFW TMR1L
MOVWF TIMESTAMP_L
- ;-- Inicializar temporizador 1
+ ;-- Initialize timer 1
CLRF TMR1HH
CLRF TMR1H
CLRF TMR1L
- ;-- Inicializar el contador ANTIRREBOTES
- MOVLW TIEMPO_ANTIRREBOTES
- MOVWF CONTANTI
+ ;-- Initialize debouncing counter
+ MOVLW DEBOUNCE_TIME
+ MOVWF COUNTDEBOUNCE
- ;-- Pasar al estado antirrebotes
- MOVLW EST_ANTIRREBOTES
- MOVWF estado
+ ;-- start debouncing status
+ MOVLW STAT_DEBOUNCE
+ MOVWF status
- ;-- lanzar temporizador antirrebotes dentro de un tick
+ ;-- start debouncing timer on a tick
MOVLW TICK
MOVWF TMR0
- ;-- Quitar flag de interrupcion
+ ;-- Remove interruption flag
MOVFW PORTB
BCF INTCON,RBIF
- ;-- Deshabilitar la interrupicion del puerto B
+ ;-- Inhabilite B port interruption
BCF INTCON,RBIE
- ;-- Salir de la interrupcion
- goto fin_int
+ ;-- Exit interruption
+ goto end_int
;---------------------------------------
-;-- CONFIGURACION DEL PUERTO SERIE
-;-- 9600 BAUDIOS, N81
+;-- CONFIGURATION OF SERIAL PORT
+;-- 9600 BAUD, N81
;---------------------------------------
sci_configuration
- BSF STATUS,RP0 ; Acceso al banco 1
- MOVLW 0x19 ; Velocidad: 9600 baudios
+ BSF STATUS,RP0 ; Access to bank 1
+ MOVLW 0x19 ; Speed: 9600 baud
MOVWF SPBRG
MOVLW 0x24
- MOVWF TXSTA ; Configurar transmisor
+ MOVWF TXSTA ; Configure transmitter
- BCF STATUS,RP0 ; Acceso al banco 0
- MOVLW 0x90 ; Configurar receptor
+ BCF STATUS,RP0 ; Access to bank 0
+ MOVLW 0x90 ; Configure receiver
MOVWF RCSTA
RETURN
;**************************************************
-;* Recibir un caracter por el SCI
+;* Receive a character by the SCI
;-------------------------------------------------
-; SALIDAS:
-; Registro W contiene el dato recibido
+; OUTPUTS:
+; Register W contains received data
;**************************************************
-sci_readcar
+sci_readchar
BTFSS PIR1,RCIF ; RCIF=1?
- GOTO sci_readcar ; no--> Esperar
+ GOTO sci_readchar ; no--> Wait
- ;-- Leer el caracter
- MOVFW RCREG ; W = dato recibido
+ ;-- Read the character
+ MOVFW RCREG ; W = recived data
RETURN
;*****************************************************
-;* Transmitir un caracter por el SCI
+;* Transmit a character by the SCI
;*---------------------------------------------------
-;* ENTRADAS:
-;* Registro W: caracter a enviar
+;* INPUTS:
+;* Register W: character to send
;*****************************************************
-;-- Esperar a que Flag de listo para transmitir este a 1
-sci_sendcar
+;-- Wait to Flag allows to send it to 1 (this comment may be bad translated)
+sci_sendchar
wait
BTFSS PIR1,TXIF ; TXIF=1?
goto wait ; No--> wait
- ;; -- Ya se puede hacer la transmision
+ ;; -- Transmission can be done
MOVWF TXREG
RETURN
;*******************************************
-;* Rutina de pausa, por espera activa
+;* Routine of pause, by active waiting
;*******************************************
-pausa
- MOVLW 0xFF ; Inicializar parte alta contador
- MOVWF pausa_h
+pause
+ MOVLW 0xFF ; Initialize counter (high part)
+ MOVWF pause_h
-buclel
- MOVLW 0xFF ; Inicializar parte baja contador
- MOVWF pausa_l
+loopl
+ MOVLW 0xFF ; Initialize counter (low part)
+ MOVWF pause_l
CLRWDT
-repite
- DECFSZ pausa_l,F ; Decrementa pausa_l, pausa_l=0?
- goto repite ; NO--> Repite
+repeat
+ DECFSZ pause_l,F ; Decrease pause_l, pause_l=0?
+ goto repeat ; NO--> Repeat
- DECFSZ pausa_h,F ; Decrementa pausa_h, pausa_h=0?
- goto buclel ; No--> Ve a buclel
+ DECFSZ pause_h,F ; Decrease pause_h, pause_h=0?
+ goto loopl ; No--> Goto loopl
- ;-- Si se ha llegado aqui es porque el contador ha llegado a 0000
- ;-- (pausa_h=0 y pausa_l=0)
+ ;-- If we arrived here means counter has arrived to 0000
+ ;-- (pause_h=0 and pause_l=0)
RETURN
;***************************************************************************
-;* Leer la entrada RB4 (estado del pulsador)
-;* ENTRADAS: Ninguna
-;* SALIDA: Ninguna
-;* DEVUELVE: W contiene el estado de la entrada (ENTRADA_ON, ENTRADA_OFF)
+;* Read input on RB4 (push button status)
+;* INPUTS: None
+;* OUTPUTS: None
+;* RETURNS: W contains input status (INPUT_ON, INPUT_OFF)
;***************************************************************************
-leer_entrada
- ;-- Comprobar estado del bit RB4
+read_input
+ ;-- Check status of bit RB4
BTFSC PORTB,4 ; RB4==0 ?
- RETLW ENTRADA_OFF ; No --> Pulsador no apretado
- RETLW ENTRADA_ON ; Si --> Pulsador apretado
+ RETLW INPUT_OFF ; No --> Push button not pushed
+ RETLW INPUT_ON ; Yes --> Push button pushed
;*************************************************************
-;* Actualizar el led con el estado estable de la entrada
-;* El estado estable se encuentra en la variable entrada
-;* ENTRADAS: Ninguna
-;* SALIDAS: Ninguna
-;* Devuelve: Nada
+;* Update led with stable status of input
+;* Stable status is on variable: input
+;* INPUTS: None
+;* OUTPUTS: None
+;* RETURNS: Nothing
;*************************************************************
-actualizar_led
- ;-- El led esta en el bit RB1. La variable entrada contiene
- ;-- solo un bit de informacion (1,0) en el bit menos significativo
- RLF entrada,W ; W= entrada<<1
- XORLW 0x02 ; Logica negativa (Comentar esta linea para log. positiva)
- MOVWF PORTB ; Actualizar puerto B
+update_led
+ ;-- Led is on bit RB1. Input variable contains
+ ;-- only an information bit (1,0) on less signficant bit
+ RLF input,W ; W= input<<1
+ XORLW 0x02 ; negative logic (Comment this line if you want positive logic)
+ MOVWF PORTB ; Update port B
RETURN
;*****************************************************
-;* Activar la interrupcion de cambio del puerto B
-;* ENTRADA: Ninguna
-;* SALIDA: Ninguna
-;* DEVUELVE: Nada
+;* Activate interruption of changing of port B
+;* INPUT: None
+;* OUTPUT: None
+;* RETURN: Nothing
;*****************************************************
portb_int_enable
- ;-- Quitar flag de interrupcion, por si estuviese activado
+ ;-- Remove interruption flag, just in case it's activated
MOVFW PORTB
BCF INTCON,RBIF
- ;-- Activar la interrupcion de cambio
+ ;-- Activate interruption of change
BSF INTCON,RBIE
RETURN
;****************************************************************
-;* Servicio de estado. Se devuelve el estado de la plataforma *
+;* Status service. Returns the status of the platform *
;****************************************************************
-serv_estado
+status_serv
- ;--Desactivar la interrupcion de cambio mientras
- ;--se envia la trama
+ ;--Deactivate interruption of change while frame is sent
BCF INTCON,RBIE
- ;-- Enviar codido de respuesta
- MOVLW RESTADO
- CALL sci_sendcar
+ ;-- Send response code
+ MOVLW RSTATUS
+ CALL sci_sendchar
- ;-- Enviar el estado del pulsador
- MOVFW entrada
- CALL sci_sendcar
+ ;-- Send status of the push button
+ MOVFW input
+ CALL sci_sendchar
- ;-- Activar la interrupcion de cambio
+ ;-- Activate interruption of change
BSF INTCON,RBIE
RETURN
;*************************************************************************
-;* PROGRAMA PRINCIPAL
+;* MAIN PROGRAM
;*************************************************************************
-inicio
+start
;-----------------------------
-;- CONFIGURAR EL PUERTO B
+;- CONFIGURE PORT B
;-----------------------------
-;-- Pines E/S: RB0,RB4 entradas, resto salidas
- BSF STATUS,RP0 ; Cambiar al banco 1
+;-- Pins I/O: RB0,RB4 inputs, all the other are outputs
+ BSF STATUS,RP0 ; Change to bank 1
MOVLW 0x11
MOVWF TRISB
-;-- Pull-ups del puerto B habilitados
-;-- Prescaler del timer0 a 256
+;-- Pull-ups of port B enabled
+;-- Prescaler of timer0 at 256
;-- RBPU = 0, INTEDG=0, T0CS=0, T0SE=0, PSA=0, [PS2,PS1,PS0]=111
MOVLW 0x07
MOVWF OPTION_REG
;----------------------------------------------
-; CONFIGURACION DE LAS COMUNICACIONES SERIE
+; CONFIGURATION OF SERIAL COMMUNICATIONS
;----------------------------------------------
CALL sci_configuration
;----------------------------------------------
-;- CONFIGURACION DEL TEMPORIZADOR 0
+;- CONFIGURATION OF TIMER 0
;----------------------------------------------
- ;-- Quitar flag de interrupcion, por si estuviese activado
- BCF INTCON,T0IF ; Quitar flag overflow
+ ;-- Remove interruption flag, just in case it's activated
+ BCF INTCON,T0IF ; Remove overflow flag
- ;-- Activar temporizador. Dentro de un tick interrupcion
- BCF STATUS,RP0 ; Cambiar al banco 0
+ ;-- Activate timer. Inside an interruption tick
+ BCF STATUS,RP0 ; Change to bank 0
MOVLW TICK
MOVWF TMR0
;----------------------------------------------
-;- CONFIGURACION DEL TEMPORIZADOR 1
+;- CONFIGURATION OF TIMER 1
;----------------------------------------------
- ;-- Activar temporizador
- BCF STATUS,RP0 ; Acceso al banco 0
+ ;-- Activate timer
+ BCF STATUS,RP0 ; Access to bank 0
MOVLW 0x31
MOVWF T1CON
- ;-- Ponerlo a cero
+ ;-- Zero value
CLRF TMR1HH
CLRF TMR1H
CLRF TMR1L
- ;-- Habilitar interrupcion
- BSF STATUS,RP0 ; Cambiar al banco 1
+ ;-- Enable interruption
+ BSF STATUS,RP0 ; Change to bank 1
BSF PIE1,TMR1IE
- BCF STATUS,RP0 ; Acceso al banco 0
+ BCF STATUS,RP0 ; Access to bank 0
;----------------------------
-;- Interrupciones puerto B
+;- Interruptions port B
;----------------------------
- ;-- Esperar a que se estabilice puerto B
- CALL pausa
+ ;-- Wait to port B get's stable
+ CALL pause
- ;-- Habilitar la interrupcion de cambio en puerto B
+ ;-- Enable interruption of change on port B
CALL portb_int_enable
;------------------------------
-;- INICIALIZAR LAS VARIABLES
+;- INITIALIZE VARIABLES
;------------------------------
- ;-- Inicializar contador extendido
+ ;-- Initialize extended counter
CLRF TMR1HH
- ;-- Inicializar el contador ANTIRREBOTES
- MOVLW TIEMPO_ANTIRREBOTES
- MOVWF CONTANTI
+ ;-- Initialize debounce counter
+ MOVLW DEBOUNCE_TIME
+ MOVWF COUNTDEBOUNCE
- ;-- Inicializar automata
- MOVLW EST_ESPERANDO_EVENTO
- MOVWF estado
+ ;-- Initialize automaton
+ MOVLW STAT_WAITING_EVENT
+ MOVWF status
- ;-- Inicialmente el sistema esta en Reset
+ ;-- At start, system is on Reset
MOVLW 1
MOVWF reset
- ;-- Leer estado de la entrada y actualizar la variable entrada
- CALL leer_entrada
- MOVWF entrada
+ ;-- Read input status and update input variable
+ CALL read_input
+ MOVWF input
;----------------------
-;- ESTADO INICIAL LED
+;- INITIAL LED STATUS
;----------------------
- ;-- Actualizar led con el estado estable de la entrada
- CALL actualizar_led
+ ;-- Update led with the stable status of input variable
+ CALL update_led
;--------------------------
-;- Interrupcion TIMER 0
+;- Interruption TIMER 0
;--------------------------
- BSF INTCON,T0IE ; Activar interrupcion overflow TMR0
+ BSF INTCON,T0IE ; Activate interruption overflow TMR0
;------------------------------------------
-;- ACTIVAR LAS INTERRUPCIONES GLOBALES
-;- Que comience la fiesta!!!
+;- ACTIVATE GLOBAL INTERRUPTIONS
+;- The party starts, now!!!
;------------------------------------------
- ;-- Activar las interrupciones de los perifericos
+ ;-- Activate peripheral interruptions
BSF INTCON,PEIE
- ;-- Activar interrupciones globales
+ ;-- Activate global interruptions
BSF INTCON,GIE
;****************************
-;* BUCLE PRINCIPAL.
+;* MAIN LOOP
;****************************
main
- CLRWDT ;-- usado en la simulacion
+ CLRWDT ;-- used on the simulation
- ;-- Analizar puerto serie por si viene alguna trama
+ ;-- Analize serial port waiting to a frame
BTFSS PIR1,RCIF ; RCIF=1?
- GOTO automata ; no--> Ir al automata
+ GOTO automaton ; no--> Go to automaton
- ;-- Ha llegado un caracter: leerlo
- call sci_readcar
- MOVWF car
+ ;-- A character has arrived: read it
+ call sci_readchar
+ MOVWF char
- MOVLW TESTADO ; Trama de estado?
- SUBWF car,W
+ MOVLW FSTATUS ; status frame?
+ SUBWF char,W
BTFSC STATUS,Z
- CALL serv_estado ; Si--> Servicio de estado de la plataforma
+ CALL status_serv ; Yes--> Service of platform status
-automata
+automaton
;-----------------------------------------------------
- ;- SEGUN EL ESTADO DEL AUTOMATA SALTAR A LA RUTINA
- ;- QUE LO TRATA
+ ;- DEPENDING AUTOMATON STATUS, GO TO DIFFERENT ROUTINES
;------------------------------------------------------
- MOVLW EST_ESPERANDO_EVENTO ; estado = ESPERANDO_EVENTO?
- SUBWF estado,W
+ MOVLW STAT_WAITING_EVENT ; status = STAT_WAITING_EVENT?
+ SUBWF status,W
BTFSC STATUS,Z
- GOTO est_esperando_evento
+ GOTO stat_waiting_event
- MOVLW EST_ANTIRREBOTES ; estado = ANTIRREBOTES?
- SUBWF estado,W
+ MOVLW STAT_DEBOUNCE ; status = DEBOUNCE?
+ SUBWF status,W
BTFSC STATUS,Z
- GOTO est_antirrebotes
+ GOTO stat_debounce
- MOVLW EST_TRAMAX ; estado = TRAMAX?
- SUBWF estado,W
+ MOVLW STAT_FRAMEX ; status = FRAMEX?
+ SUBWF status,W
BTFSC STATUS,Z
- GOTO est_tramax
+ GOTO stat_framex
- ;-- WARNING WARNING WARNING!!! Aqui no deberia llegar
+ ;-- WARNING WARNING WARNING!!! We shouldn't be here
GOTO main
;----------------------------
-;- ESTADO ESPERANDO EVENTO
+;- STATUS WAITING EVENT
;----------------------------
-est_esperando_evento
+stat_waiting_event
GOTO main
;----------------------------
-;- ESTADO ANTIRREBOTES
+;- STATUS DEBOUNCING
;----------------------------
-est_antirrebotes
- MOVF CONTANTI,F ; cont_antirrebotes=0?
+stat_debounce
+ MOVF COUNTDEBOUNCE,F ; count_debounce=0?
BTFSS STATUS,Z
- goto main ; No--> Todavia no ha terminado
+ goto main ; No--> It hasn't ended yet
- ;-- Fin del antirrebotes
- ;-- Quitar flag de interrupcion del puerto B: para limpiar. No nos
- ;-- interesa lo que haya venido durante ese tiempo
+ ;-- End of debounce
+ ;-- Remove interruption flag of port B: to clean. We do not want or need
+ ;-- what came during that time
MOVFW PORTB
BCF INTCON,RBIF
- ;-- entrada_nueva = estado de la entrada
- CALL leer_entrada
- MOVWF entrada_nueva
+ ;-- input_new = input status
+ CALL read_input
+ MOVWF input_new
- ;-- Comparar la nueva entrada con la estable
- MOVFW entrada_nueva ; entrada_nueva==entrada?
- SUBWF entrada,W
+ ;-- Compare new input with stable input
+ MOVFW input_new ; input_new==input?
+ SUBWF input,W
BTFSC STATUS,Z
- GOTO pulso_espureo ; Si--> Es un pulso espureo
+ GOTO spurious ; Yes--> It's an spurious pulse
- ;-- entrada!=entrada_nueva: Ha ocurrido un cambio estable
+ ;-- input!=input_new: Happened an stable change
- ;-- Almacenar la nueva entrada estable
- MOVFW entrada_nueva
- MOVWF entrada
+ ;-- Store new stable input
+ MOVFW input_new
+ MOVWF input
- ;-- Pasar al estado TRAMAX para enviar la trama con el evento
- MOVLW EST_TRAMAX
- MOVWF estado
+ ;-- Change to status FRAMEX to send frame with the event
+ MOVLW STAT_FRAMEX
+ MOVWF status
GOTO main
-pulso_espureo
- ;-- Ha venido un pulso espureo (cambio con duracion
- ;-- menor que el tiempo de antirrebotes). Se ignora.
- ;-- Se continua como si nada hubiese ocurrido
- ;-- El valor de contador debe ser el actual + TIMESTAMP
+spurious
+ ;-- It came an spurious pulse (change with a duration
+ ;-- lower than debounce time). It's ignored.
+ ;-- We continue like if nothing happened
+ ;-- The value of the counter should be: actual + TIMESTAMP
;-- TMR1 = TIMR1 + TIMESTAMP
MOVFW TIMESTAMP_L
ADDWF TMR1L,F
- ;-- Sumar acarreo si lo hay
+ ;-- Add carry, if any
BTFSC STATUS,C ;-- Carry = 1?
- INCF TMR1H,F ;-- Si--> Sumarselo a la parte alta
- ;-- No--> Continuar
+ INCF TMR1H,F ;-- Yes--> Add it to high part
+ ;-- No--> Continue
MOVFW TIMESTAMP_H
ADDWF TMR1H,F
- ;-- Sumar acarreo si lo hay
+ ;-- Add carry, if any
BTFSC STATUS,C ;-- Carry = 1?
- INCF TMR1HH,F ;-- Si--> Sumarselo a la parte de mayor peso ;-- No--> Continuar
+ INCF TMR1HH,F ;-- Yes--> Add it to "higher weight" part ;-- No--> Continue
MOVFW TIMESTAMP_HH
ADDWF TMR1HH,F
- ;-- Pasar al estado esperando evento
- MOVLW EST_ESPERANDO_EVENTO
- MOVWF estado
+ ;-- Change status to waiting event
+ MOVLW STAT_WAITING_EVENT
+ MOVWF status
- ;-- Activar interrupcion puerto B
+ ;-- Activate interruption port B
CALL portb_int_enable
GOTO main
;----------------------------
-;- ESTADO TRAMAX
+;- STATUS FRAMEX
;----------------------------
-est_tramax
- ;-- Enviar trama de cambio en entrada
- ;-- Primero el identificador de trama
- MOVLW TCHANGE
- CALL sci_sendcar
+stat_framex
+ ;-- Send frame of changing input
+ ;-- First the frame identifier
+ MOVLW FCHANGE
+ CALL sci_sendchar
- ;-- Enviar el estado del pulsador
- MOVFW entrada
- CALL sci_sendcar
+ ;-- Send push button status
+ MOVFW input
+ CALL sci_sendchar
- ;-- Enviar la marca de tiempo
+ ;-- Send timestamp
MOVFW TIMESTAMP_HH
- CALL sci_sendcar
+ CALL sci_sendchar
MOVFW TIMESTAMP_H
- CALL sci_sendcar
+ CALL sci_sendchar
MOVFW TIMESTAMP_L
- CALL sci_sendcar
+ CALL sci_sendchar
- ;-- Pasar al siguiente estado
- MOVLW EST_ESPERANDO_EVENTO
- MOVWF estado
+ ;-- Change to next status
+ MOVLW STAT_WAITING_EVENT
+ MOVWF status
- ;-- Actualizar estado del led, segun el estado de la entrada estable
- CALL actualizar_led
+ ;-- Update led status, depending on stable input status
+ CALL update_led
- ;-- Activar interrupcion del puerto B
+ ;-- Activate port B interruption
CALL portb_int_enable
GOTO main
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]