Autor Tema: Que lenguaje es este??  (Leído 3446 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado marcelo2112

  • PIC12
  • **
  • Mensajes: 64
Que lenguaje es este??
« en: 05 de Noviembre de 2007, 08:41:20 »
Hola, como no se nada de programacion, no se que programa usar para modificar(intentar) y compilar este programa:
*****************************************************************************************************
INCLUDE "C:\ATLPIC\PIC16F84.h"
REM Vitesse de rotation en tr/mn
char VU,VD,VC,VM,VDM REM VU Unités, VD Dizaines, VC Centaines, VM Milliers, VDM dizaines de Milliers
char I,J,K REM Comptage temporisations
char P0,P1,P2 REM Mesure de la période par tranche de 250 µs
char N REM Nombre de tours comptés lors de la mesure
char F REM Flag de passage par l'interruption ( 250 µs )
char NP0,NP1,NP2 REM Nombre de périodes dans 1 seconde
char V3,V2,V1,V0 REM Nombre représentant une seconde en additionnant les périodes
char w_temp,STATUS_temp REM Pour interruption
*****************************************************************************************************
BIT E=porta,3 REM Écriture sur front descendant Afficheur
BIT RS=porta,2 REM 0-instruction / 1-donnée Afficheur
BIT CLOCK=porta,1 REM Impulsions en provenance du capteur du moteur
*****************************************************************************************************
ORG 0x0000 REM Vecteur Reset
GOTO main
ORG 0x0004 REM Vecteur Timer
GOTO inter
ORG 0x0005
main:
trisb=0x00 REM portb en sortie ( 8 bits de donnée de l’afficheur )
trisa=0x02 REM porta en sortie ( e, RS )sauf pa1 ( CLOCK )entrée d’horloge
Option_reg=11010000b REM Interruption affectée au timer - 250µs avec quartz 8.192 MHz
intcon.7=1 REM Valide le régime général des interruptions
intcon.5=0 REM Interdit l'interruption Timer
*****************************************************************************************************
* INITIALISATION DE L’AFFICHEUR
*****************************************************************************************************
FOR I=1 TO 25 REM Attente stabilisation alim.
GOSUB Attente
NEXT I
RS=0 REM Mode instruction
portb=0x30 REM SET Afficheur, 8 bits, 1 ligne
GOSUB ImpulsE REM Impulsion de validation
FOR I=1 TO 5 REM Temporisation ( Durée d’exécution de l’instruction )
GOSUB Attente
NEXT I
portb=0x30 REM 1 ligne, 7x5
GOSUB ImpulsE
GOSUB Attente
portb=0x08 REM Display OFF
GOSUB ImpulsE
GOSUB Attente
portb=0x0C REM Display ON
GOSUB ImpulsE
GOSUB Attente
portb=0x06 REM Entry mode set
GOSUB ImpulsE
GOSUB Attente
VU=0 REM Initialisation des variables vitesse
VD=0
VC=0
VM=0
VDM=0
GOSUB Affich
*****************************************************************************************************
intcon.2=0 REM Flag Timer effacé
*****************************************************************************************************
Début:
P0=0:P1=0:P2=0 REM Nombre de tours pendant une durée minimale de 250 ms
C0:
IF CLOCK=1 THEN GOTO C0 REM Attente d'un état 0 en provenance du capteur
N=1 REM N nombre de périodes mesurées ( période = durée d’un tour )
C1:
IF CLOCK=0 THEN GOTO C1 REM Attente d'un état 1 en provenance du capteur
intcon.5=1 REM Autorise l'interruption Timer sur le front montant
TMR0=00 REM RAZ contenu du Timer
*****************************************************************************************************
* Mesure de la durée d’un tour, si cette durée dépasse 250ms ( durant un tour, CLOCK=1 puis CLOCK=0 )
* Sinon mesure de la durée de N tours
*****************************************************************************************************
C5:
IF F=1 THEN REM Si F=1 on sort d'une interruption. Il faut ajouter 250 µs à la période
F=0 REM Remettre le Flag à 0
P0=P0+1 REM Ajout de 250 µs
IF P0=100 THEN REM ( P0 évolue de 0 à 100 )
P0=0
P1=P1+1 REM Une centaine de moins pour PO, une unité de plus pour P1
END IF
IF P1=100 THEN REM ( P1 évolue de 0 à 100 )
P1=0
P2=P2+1 REM Une centaine de moins pour P1, une unité de plus pour P2
END IF
END IF
IF CLOCK=1 THEN GOTO C5 REM On recommence tant que le capteur communique un état 1
C6:
IF F=1 THEN REM Si F=1 on sort d'une interruption. Il faut ajouter 250 µs à la période
F=0 REM Remettre le Flag à 0
P0=P0+1 REM Ajout de 250 µs
IF P0=100 THEN
P0=0
P1=P1+1 REM Une centaine de moins pour PO, une unité de plus pour P1
END IF
IF P1=100 THEN
P1=0
P2=P2+1 REM Une centaine de moins pour P1, une unité de plus pour P2
END IF
END IF
IF CLOCK=0 THEN GOTO C6 REM On recommence tant que le capteur communique un état 0
IF P1>10 THEN GOTO C7 REM On arrête la mesure lorsque que la durée > 250ms ( 1000 points de 250µs )
N=N+1 REM Nbre de tours pris en compte dans la mesure
IF N=116 THEN GOTO C7 REM On arrête la mesure lorsque la vitesse est supérieure à 25 000 trs/mn
GOTO C5
*****************************************************************************************************
* Affichage en cas de dépassement
*****************************************************************************************************
C7:
intcon.5=0 REM Fin de la mesure d'une période, interruption interdite
IF P1>23 OR P2<>0 THEN REM Si vitesse < 100 trs/mn affichage <<<<<
VU=12:VD=12:VC=12:VM=12:VDM=12 REM 12 + 30 = 42 = ‘<’
gosub Conv3
goto Début
END IF
IF N=116 THEN REM Si vitesse > 24 000 trs/mn affichage >>>>>
VU=14:VD=14:VC=14:VM=14:VDM=14 REM 14 + 30 = 44 = ‘<’
gosub Conv3
goto Début
END IF
GOSUB Conv4 REM Vers la conversion du résultat
GOTO Début REM On recommence une mesure
*****************************************************************************************************
*****************************************************************************************************
* CONVERSION PERIODE FREQUENCE
*****************************************************************************************************
********** Combien de fois P est contenu dans V, le résultat est NP
Conv4:
NP0=0:NP1=0:NP2=0 REM RAZ Nombre de périodes
V3=0:V2=0:V1=0:V0=0 REM RAZ Nombre représentant la seconde
Conv9: REM Calcul du nombre de périodes contenues dans une seconde.
V0=V0+P0 REM On additionne autant de fois que nécessaire P0 et P1
V1=V1+P1 REM afin d'obtenir 1 seconde dans V3 à V0
IF V0>99 THEN
V0=V0-100
V1=V1+1
END IF
IF V1>99 THEN
V1=V1-100
V2=V2+1
END IF
IF V2>99 THEN
V2=V2-100
V3=V3+1
END IF
NP0=NP0+1 REM NP0 et NP1 nombre de périodes durant une seconde
IF NP0=100 THEN REM Chaque fois, que l’on a ajouté P à V, on incrémente NP
NP0=0
NP1=NP1+1
END IF
IF NP1=100 THEN
NP1=0
NP2=NP2+1
END IF
IF V3=N THEN GOTO Conv10 REM N nombre de tours dont on a mesuré la période
GOTO Conv9 REM La conversion n’est pas terminée
*****************************************************************************************************
* MULTIPLICATION PAR 24 DE LA VITESSE ( 4 pour 4 x 250 µs = 1 ms et 6 pour 60 s dans 1 mn )
*****************************************************************************************************
Conv10:
P0=0:P1=0:P2=0 REM Résultat de l’opération dans P
Mult0:
IF NP0=0 THEN GOTO Mult1 REM On additionne NP fois 24
P0=P0+24
IF P0>99 THEN
P0=P0-100
P1=P1+1
END IF
IF P1>99 THEN
P1=0
P2=P2+1
END IF
NP0=NP0-1
GOTO Mult0
Mult1:
IF NP1=0 THEN GOTO Mult2
P1=P1+24
IF P1>99 THEN
P1=P1-100
P2=P2+1
END IF
NP1=NP1-1
GOTO Mult1
Mult2:
IF NP2=0 THEN GOTO DIVF
P2=P2+24
NP2=NP2-1
GOTO Mult2
*****************************************************************************************************
* CONVERSION DE P EN CODE DCB, LE RESULTAT EST DANS V ( VDM à VU )
*****************************************************************************************************
DivF:
VU=0:VD=0:VC=0:VM=0:VDM=0
Conv1:
IF P1=0 THEN GOTO Conv2 REM Conversion en DCB de P1 et P2
P1=P1-1
VU=VU+1
IF VU=10 THEN
VU=0
VD=VD+1
END IF
IF VD=10 THEN
VD=0
VC=VC+1
END IF
IF VC=10 THEN
VC=0
VM=VM+1
END IF
GOTO Conv1
Conv2:
IF P2=0 THEN GOTO Conv3
P2=P2-1
VC=VC+1
IF VC=10 THEN
VC=0
VM=VM+1
END IF
IF VM=10 THEN
VM=0
VDM=VDM+1
END IF
GOTO Conv2
Conv3:
GOSUB Affich REM Affichage de la vitesse de rotation
TMR0=0 REM Initialisation du contenu du Timer
intcon.2=0 REM Prochaine interruption Timer prise en compte
intcon.5=1 REM Les interruptions Timer sont autorisées
RETURN
*****************************************************************************************************
* AFFICHAGE DU RESULTAT – Les 0 non significatifs ne sont pas affichés
*****************************************************************************************************
Affich:
RS=0 REM Mode Instruction
portb=0X02 REM Home
GOSUB ImpulsE
FOR J=1 TO 50 REM Durée de l'attente d’exécution de l’instruction Home
GOSUB Attente
NEXT J
RS=1 REM Mode Donnée
portb='V' REM Affichage de V
GOSUB ImpulsE
GOSUB Attente
portb=' ' REM Affichage d'un espace
GOSUB ImpulsE
GOSUB Attente
portb='=' REM Affichage de =
GOSUB ImpulsE
GOSUB Attente
portb=' ' REM Affichage d'un espace
GOSUB ImpulsE
GOSUB Attente
portb=VDM+0x30 REM Affichage des Dizaines de Milliers
IF VDM=0 THEN REM Le chiffre + 30 donne le code du caractère ASCII à afficher
portb=' ' REM Si le chiffre des dizaines milliers est nul, affichage d'un espace
END IF
GOSUB ImpulsE
GOSUB Attente
portb=VM+0x30 REM Affichage des Milliers
IF VM=0 AND VDM=0 THEN
portb=' ' REM Si les milliers et dizaines de milliers sont nuls, affichage d'un espace
END IF
GOSUB ImpulsE
GOSUB Attente
portb=VC+0x30 REM Affichage des Centaines
GOSUB ImpulsE
GOSUB Attente
portb=VD+0x30 REM Affichage des Dizaines
GOSUB ImpulsE
GOSUB Attente
portb=VU+0x30 REM Affichage des Unités
GOSUB ImpulsE
GOSUB Attente
portb=' ' REM Affichage d'un espace
GOSUB ImpulsE
GOSUB Attente
portb='t' REM Affichage de tr/mn
GOSUB ImpulsE
GOSUB Attente
portb='r' REM
GOSUB ImpulsE
GOSUB Attente
portb='/' REM
GOSUB ImpulsE
GOSUB Attente
portb='m' REM
GOSUB ImpulsE
GOSUB Attente
portb='n' REM
GOSUB ImpulsE
GOSUB Attente
portb=' ' REM Affichage d'un espace
GOSUB ImpulsE
GOSUB Attente
RETURN
*****************************************************************************************************
* IMPULSION POSITIVE SUR LA BROCHE E
*****************************************************************************************************
ImpulsE:
E=1
FOR I=1 TO 30
NOP REM Durée de l'impulsion
NEXT I
E=0
RETURN
********* SOUS-PROGRAMME DE TEMPORISATION **********
Attente:
FOR K=1 TO 30
NOP
NEXT K
RETURN
*****************************************************************************************************
* INTERRUPTION
*****************************************************************************************************
inter:
asm movwf w_temp ; Sauvegarde des registres W et STATUS
asm swapf STATUS,0
asm movwf status_temp
intcon.2=0 REM Prochaine interruption du Timer prise en compte
F=1 REM Forçage F = 1, indique au programme principal que l'on vient de passer une inter.
asm swapf status_temp,0 ; Restitution des registres W et STATUS
asm movwf STATUS
asm swapf w_temp,1
asm swapf w_temp,0
asm retfie
END


Lo unico que quiero modificar son las letras del display. Saludos y gracias.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Que lenguaje es este??
« Respuesta #1 en: 05 de Noviembre de 2007, 08:50:27 »
Tiene toda la pinta de ser un BASIC, ahora queda por saber cuál de ellos es. ¿De donde lo has sacado?
« Última modificación: 05 de Noviembre de 2007, 08:58:38 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Que lenguaje es este??
« Respuesta #2 en: 05 de Noviembre de 2007, 08:51:06 »
Pues esta claro es Frances  :D :D :D

Bueno fuera de bromas parece Basic o alguno de sus derivados.

Un saludo

Edito: Se me ha adelantado don Diego.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Que lenguaje es este??
« Respuesta #3 en: 05 de Noviembre de 2007, 08:59:40 »
Quien postea primero, postea dos veces. ja, ja, ja,  :D :D :D
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Que lenguaje es este??
« Respuesta #4 en: 05 de Noviembre de 2007, 09:05:38 »
Raros los comentarios con REM.... :shock: :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Que lenguaje es este??
« Respuesta #5 en: 05 de Noviembre de 2007, 09:15:52 »
Se parece mucho a un BASIC11 que utilicé hace años para el 68HC11 de Amotorola. (Los ORG, la declaración de variables y el modo de insertar ASM es idéntico)

Parece que ya he encontrado el origen: Es posible que sea éste ... TACHYMETRE LCD - Mesure de la vitesse de 100 à 25000 trs/mn

Asi que me doy un tour pour le pagé au, voilá, un comentario en la pagé "e programme est conçu à partir d'un vieux Basic Digimok qui ne possède pas de librairie mathématique." y además el enlace del programa fuente dice " Listing du programme en Basic Digimok" así que otro doble salto mortal carpado hacia delante y ... parece que digimok no existe ya en la web .... o yo no he sabido encontrarlos.

Ja, ja, ja Ahora es una Agencia de Seguros ...

"About digimok.com

Digimok.com is under new ownership. The site used in integrated controllers (IC), specifically IC which were programmable in the Basic , C, and ASM programming language. The site was operated by Première société française spécialiste du BASIC®.

Digimok.com is now focusing on all aspects of life insurance, including quotes, terms life and whole life insurance.
"
« Última modificación: 05 de Noviembre de 2007, 10:03:35 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado marcelo2112

  • PIC12
  • **
  • Mensajes: 64
Re: Que lenguaje es este??
« Respuesta #6 en: 05 de Noviembre de 2007, 10:14:07 »
Si es ese, con que lo puedo modificar???

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Que lenguaje es este??
« Respuesta #7 en: 05 de Noviembre de 2007, 10:53:33 »
No creo que sea muy difícil compilarlo con un Pic Basic Pro ... Pero Doctores tiene la Iglesia y es mejor que los amigos del sub-foro Pic Basic Pro y Protón te aconsejen. Si quieres puedo mover este hilo a ese subforo.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado marcelo2112

  • PIC12
  • **
  • Mensajes: 64
Re: Que lenguaje es este??
« Respuesta #8 en: 05 de Noviembre de 2007, 11:35:40 »
OK. Si es ahi donde corresponde....dale nomas.