Autor Tema: DOPPLER DF PAR JACQUES BRODEUR  (Leído 2204 veces)

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

Desconectado evamdopico

  • PIC10
  • *
  • Mensajes: 13
DOPPLER DF PAR JACQUES BRODEUR
« en: 17 de Junio de 2009, 18:42:43 »
Buenas tardes. Me pidieron algo relativamente sencillo. Grabar un PIC con el siguiente codigo.

He intentado compilarlo con el MPLAB y me da unos errores  que no tengo muy claro como solucionar. Supongo que por esta linea vendran los demas errores

__CONFIG _HS_OSC&_PWRTE_ON&_CP_OFF&_WDT ON& BODEN_ON

No se si alguien lo ha intentado grabar y me puede ayudar.


Código: C
  1. ;== DOPPLER DF PAR JACQUES BRODEUR == VE2EMM ========================   REV. 1
  2. ;Free use granted to HAM RADIO OPERATORS only for HAM RADIO purpose.
  3. ;Please mention VE2EMM when using it. It is my only reward.
  4. ;No resale permitted.
  5. ;
  6. ;               DOPPLER DF, CONTROLE PAR PIC 16C72
  7. ;
  8. ;               Liste des entrees/sorties du microcontrolleur
  9. ;
  10. ;               8 sorties lampes affichage              I B0-B7
  11. ;               4communs lampes affichage               I C4-C7
  12. ;               4 sorties antennes                      I C0-C3
  13. ;               1 Entree analogue CAL           I A0 ;Direction des lampes
  14. ;               1 Entree analogue SIGLVL                I A1 ;Niveau du signal
  15. ;               3 Sorties filtre digital ROANOKE        I A2-A4
  16. ;               1 entree signal de phase PHASE/ I A5
  17. ;
  18. ;--------------------------------------------------------------------------------
  19. ;
  20.                 LIST    P=16C72
  21.                 RADIX   HEX
  22.                 INCLUDE P16C72.INC
  23.                 __CONFIG _HS_OSC&_PWRTE_ON&_CP_OFF&_WDT ON& BODEN_ON
  24. ;
  25. ;--------------------------------------------------------------------------------
  26. ;               ALLOCATION DES MEMOIRES, VALEURS ET BITS
  27. ;
  28.                 CBLOCK          0X20
  29.                 STA_W                           ;STACK POUR LE W
  30.                 STA_STATU                       ;STACK POUR LE STATUS
  31.                 ROSE                            ;COMPTEUR DE DEGRES
  32.                 DIR_1                           ;DIRECTION MOYENNE DE LA PHASE
  33.                 DIR_2                           ;DIRECTION DE LA PHASE
  34.                 ECAR
  35.                 DIRECTION                       ;POUR AFFICHER
  36.                 MEMTMP1                 ;Memoire temporaire tout usage
  37.                 MEMTMP2
  38.                 DRAPEAU                 ;Flags
  39.                                                 ;b0=lecture de la direction deja faite
  40.                                                 ;b1=SIGLVL overload
  41.                                                 ;b2=Demander une conversion de SIGLVL
  42.                                                 ;b3=SIGLVL recepteur silentieux
  43.                 PHASAGE                 ;Deplacement de la direction (CAL)
  44.                 SIGLVL                          ;Niveau du signal au filtre
  45.                 TIMR1                           ;pour le clignoteur 180 degree
  46.                 TIMR2                           ;Pour le clignoteur squelch
  47.                 BIT                             ;Memoire pour la bit a clignoter
  48.                 ENDC
  49. ;
  50. ;---DEBUT DU PROGRAMME----------------------------------------------------------------
  51. ;
  52.                 ORG     0X000
  53.                 GOTO    INIT
  54. ;
  55. ;-------------------------------------------------------------------------------------
  56. ;===INTERRUPTION        =========================================================
  57. ;
  58.                 ORG             0X004
  59.                 MOVWF           STA_W           ;PUSH le reg W
  60.                 SWAPF           STATUS,W        ;PUSH le reg STATUS
  61.                 MOVWF           STA_STATU
  62.                 MOVLW           D'178'          ;178 pour 20 mHz pour 500Hz
  63.                 MOVWF           TMR0            ;RESET TMR0
  64. ;
  65. ;---CHANGER D'ANTENNE-------------------------------
  66. ;
  67.                 MOVF            ROSE,W          ;CHANGER LES CONDENSATEURS DU FILTRE DIGITAL
  68.                 MOVWF           PORTA           ;bits 2,3,4
  69.  
  70. ANT1            MOVLW           D'0'            ;ANTENNE 1
  71.                 XORWF           ROSE,W          ;TESTER POUR 0 degree
  72.                 BNZ             ANT2
  73.                 BCF             PORTC,0         ;Activer L'antenne 1
  74.                 NOP
  75.                 BSF             PORTC,3         ;Deconnecter l'antenne 4
  76.  
  77. ANT2            MOVLW           D'8'            ;ANTENNE 2
  78.                 XORWF           ROSE,W          ;TESTER POUR 90 degrees
  79.                 BNZ             ANT3
  80.                 BCF             PORTC,1         ;Activer L'antenne 2
  81.                 NOP    
  82.                 BSF             PORTC,0         ;Deconnecter l'antenne 1
  83.  
  84. ANT3            MOVLW           D'16'           ;ANTENNE 3
  85.                 XORWF           ROSE,W          ;TESTER POUR 180 degrees
  86.                 BNZ             ANT4
  87.                 BCF             PORTC,2         ;Activer L'antenne 3
  88.                 NOP
  89.                 BSF             PORTC,1         ;Deconnecter l'antenne 2
  90.  
  91. ANT4            MOVLW           D'24'           ;ANTENNE 4
  92.                 XORWF           ROSE,W          ;TESTER POUR 270 degrees
  93.                 BNZ             TESTER
  94.                 BCF             PORTC,3         ;Activer L'antenne 4
  95.                 NOP
  96.                 BSF             PORTC,2         ;Deconnecter l'antenne 3
  97.  
  98. ;
  99. ;---TESTER LE SIGNAL------------------------------------
  100. ;
  101. TESTER          BTFSS           DRAPEAU,3       ;Si SIGLVL < SQUELCH clignoter lentement
  102.                                                 ;l'affichage
  103.                 GOTO            AFF_OVERL       ;SIGLVL au dessus du SQUELCH
  104.                 BTFSS           TIMR2,0         ;SIGLVL sous le SQUELCH *******
  105.                 GOTO            AFFICHER        ;Allumer la lampe
  106.                 MOVLW           0XFF            ;Eteindre la lampe *
  107.                 MOVWF           PORTB
  108.                 GOTO            AVANCER ; * * * * *
  109.  
  110. AFF_OVERL       BTFSS           DRAPEAU,1       ;Tester pour OVERLOAD du niveau de signal      
  111.                 GOTO            PHASE           ;Afficher la direction * * * *
  112.                 BTFSS           TIMR1,6         ;Clignote rapidement la lampe OVERLOAD, 180 deg.
  113.                 GOTO            CLI_ON
  114.                 MOVLW           D'32'           ;Lampe eteinte
  115.                 MOVWF           DIRECTION
  116.                 GOTO            AFFICHER        ;Afficher la direction
  117. CLI_ON          MOVLW           D'16'           ;Lampe allumee
  118.                 MOVWF           DIRECTION
  119.                 GOTO            AFFICHER        ;Continuer * * * * * * *
  120. ;
  121. ;--LIRE LA PHASE        ------------------------------------------
  122. ;
  123. PHASE                                           ;Tester pour 1 changement par revolution
  124.                 BTFSS           PORTA,5         ;Lire la PHASE
  125.                 GOTO            LIREPHASE       ;0=lire
  126.                 BCF             DRAPEAU,0       ;1=ne pas lire
  127.                 GOTO            AVANCER
  128. LIREPHASE       BTFSC           DRAPEAU,0       ;Deja lu si 1, Lire si 0
  129.                 GOTO            AVANCER ;Terminer direction est deja lu
  130.                 MOVF            ROSE,W          ;Ramasser la direction de ce cycle
  131.                 MOVWF           DIR_2           ;DIR_2=Direction presente -- DIR_1=Direction precedente
  132.                 BSF             DRAPEAU,0       ;Indique que la lecture est faite, bit a 1
  133. ;
  134. :---CALCULER LA MOOYENNE DE 2 RETOURS-
  135.                 MOVF            DIR_2,W         ;Dir_2 doit etre plus grand que DIR_1
  136.                 SUBWF           DIR_1,W
  137.                 BTFSS           STATUS,C
  138.                 GOTO            CALCUL          ;Si DIR_1 plus petit que DIR_2
  139.  
  140.                 MOVF            DIR_l, W                ;Echanger DIR 1 et DIR 2
  141.                 MOVWF           MEMTMP1
  142.                 MOVF            DIR_2,W
  143.                 MOVWF           DIR_1
  144.                 MOVF            MEMTMP 1,W
  145.                 MOVWF           DIR_2          
  146.  
  147. CALCUL          MOVF            DIR 1,W         ;ECAR = DIR_2 - DIR_1
  148.                 SUBWF           DIR_2,W
  149.                 MOVWF           ECAR
  150.                 CLRC                            ;DIR_1 = (ECAR / 2) + DIR_1
  151.                 RRF             ECAR,W
  152.                 ADDWF           DIR 1,F
  153.  
  154.                 MOVLW           D'16'           ;IF ECAR <16 THEN LECT_FAITE ELSE
  155.                 SUBWF           ECAR,W
  156.                 BNC             CAL
  157.  
  158. SUITE           MOVLW           D'16'           ;Si DIR_1 < 16
  159.                 SUBWF           DIR_1, W
  160.                 BNC             ADD 16
  161.  
  162.                 MOVLW           D'16'           ;IF NOT DIR_1 = DIR_1 - 16
  163.                 SUBWF           DIR_1,F
  164.                 GOTO            CAL
  165.  
  166. ADD16           MOVLW           D'16'           ;IF DIR_1 < 16 THEN DIR_1 = DIR_1 + 16
  167.                 ADDWF           DIR_1,F
  168. ;
  169. ;---CALIBRER----------------------------------------------------------------
  170. ;
  171. CAL             MOVF            PHASAGE,W       ;Ajouter la calibration
  172.                 ADDWF           DIR 1,W
  173.                 MOVWF           DIRECTION
  174.                 MOVLW           D'32'
  175.                 SUBWF           DIRECTION,W
  176.                 BC              SOUSTRAIRE      ;Si 32 et plus soustraire
  177.                 GOTO            AFFICHER
  178. SOUSTRAIRE                      MOVLW   D'224'  ;Soustraire 32
  179.                 ADDWF           DIRECTION,F
  180. ;
  181. ;---AFFICHAGE--------------------------------------------------------------
  182. ;
  183. AFFICHER        MOVLW           0X02            ;Aller a la page 0x200
  184.                 MOVWF           PCLATH
  185.                 CLRC                            ;Afficher les lampes de direction
  186.                 RLF             DIRECTION,W
  187.                 CALL            LAMPES
  188.                 MOVWF           PORTB           ;*****Cathode des lampes
  189.                 RLF             DIRECTION,W     ;Chercher les anodes
  190.                 ADDLW           0X01
  191.                 CALL            LAMPES
  192.                 MOVWF           MEMTMP1 ;*****Sauver les anodes des lampes
  193.                 CLRF            PCLATH
  194.                 MOVF            PORTC,W
  195.                 ANDLW           B'00001111'     ;Charger les antennes
  196.                 IORWF           MEMTMP1,W       ;Ajouter les lampes
  197.                 MOVWF           PORTC           ;*****Mise a jour du port C
  198. ;
  199. ;---AVANCER LE COMPTEUR----------------------------------------
  200. ;
  201. AVANCER INCF            ROSE,F          ;AVANCER LE COMPTEUR
  202.                 MOVLW           D'32'
  203.                 SUBWF           ROSE,W          ;TESTER Si COMPTE MAXIMUM
  204.                 BNC             POP             ;ARRETER LE COMPTEUR A 31
  205.                 CLRF            ROSE            ;Commencer a 0
  206.                 BSF             DRAPEAU,2       ;Commander une conversion du SIGLVL
  207.                 INCF            TIMR1,F
  208.                 SKPNZ
  209.                 INCF            TIMR2,F
  210. ;
  211. ;---TERMINER----------------------------------------------------------------
  212. ;
  213. POP             BCF             1NTCON,T0IF     ;Rappeler lE FLAG TOIF de L'OVERFLOW
  214.                                                 ;DE TMRO
  215.                 SWAPF           STA_STATU,W     ;Restorer le reg STATUS
  216.                 MOVWF           STATUS
  217.                 SWAPF           STA_W,F ;Restorer le reg W
  218.                 SWAPF           STA_W,W
  219.                 RETFIE
  220. ;
  221. ;===================================================================================
  222. ;--- INITIALISATION ET LECTURE DE LA CALIBRATION------------------------------------
  223. ;
  224. INIT            CLRF            PORTA
  225.                 CLRF            PORTB
  226.                 CLRF            PORTC
  227.                                                 ;Charger la calibration de l'affichage
  228.                 BSF             STATUS,RP0      ;Page 1
  229.                 MOVLW           B'00000100'
  230.                 MOVWF           ADCON1          ;Analogue AN0 AN1 AN3
  231.                 BCF             STATUS,RP0      ;Page 0
  232.                 MOVLW           B'11000001'     ;Clock RC, convertir AN0
  233.                 MOVWF           ADCON0  ;
  234.                 MOVLW           D'60'
  235.                 MOVWF           MEMTMP1
  236. WAIT            DECFSZ          MEMTMP 1,F
  237.                 GOTO            WAIT            ;Stabiliser l'entree
  238.                 BSF             ADCON0,GO       ;Demarrer le convertisseur A/N
  239. ANCONVER        BTFSC           ADCON0,GO       ;Si 0, terminee
  240.                 GOTO            ANCONVER        ;Attendre la fin de conversion
  241.                 MOVF            ADRES,W
  242.                 MOVWF           PHASAGE ;Sauver la calibration
  243.                 CLRC
  244.                 RRF             PHASAGE,F       ;127 max
  245.                 CLRC
  246.                 RRF             PHASAGE,F       ;67 max
  247.                 CLRC
  248.                 RRF             PHASAGE,F       ;31 compte max
  249. ;
  250. ;---Operation normale------------------------------------------------------
  251. ;
  252.                 CLRF            ADCON0
  253.                 BSF             STATUS,RP0      ;Page 1
  254. ;               MOVLW           B'00000110'     ;RA TOUT DIGITAL
  255. ;               MOVWF           ADCON1
  256.                 MOVLW           B'00100011'     ;0-1,5 entrees 2-4 sorties PORTA
  257.                 MOVWF           TRISA
  258.                 MOVLW           B'00000000'     ;Tout en sortie PORTB
  259.                 MOVWF           TRISB
  260.                 MOVLW           B'00000000'     ;Tout en sortie PORTC
  261.                 MOVWF           TRISC
  262.                 MOVLW           B'11010001'     ;OPTION TOCS=internal CLK, PRE=/2, PSA=TMR0
  263.                 MOVWF           OPTION_REG
  264.                 MOVLW           B'10100000'     ;1NTCON GIE T0IE
  265.                 MOVWF           1NTCON
  266.                 BCF             STATUS,RP0      ;Page 0
  267.  
  268.                 MOVLW           D'00'           ;Conditions de depart des memoires
  269.                 MOVWF           ROSE
  270.                 MOVWF           DIR_1
  271.                 MOVWF           DIR_2
  272.                 MOVWF           DIRECTION
  273.                 MOVLW           0X0F            ;Deconnecter les antennes
  274.                 MOVWF           PORTC
  275.                 MOVLW           B'00000001'
  276.                 MOVWF           DRAPEAU
  277.                 MOVLW           D'178'
  278.                 MOVWF           TMR0
  279. ;
  280. ;---BOUCLE PRINCIPALE-----------------------------------------------
  281. ;
  282. PRINC           CLRWDT
  283.                 BTFSS           DRAPEAU,2       ;Temps de faire une conversion?
  284.                 GOTO            PRINC           ;Non
  285.                 BCF             DRAPEAU,2       ;Oui
  286.                 MOVLW           B'11001001'     ;Clock RC, convertir AN1
  287.                 MOVWF           ADCON0  ;
  288.                 MOVLW           D'60'
  289.                 MOVWF           MEMTMP2
  290. WAIT1           DECFSZ          MEMTMP2,F
  291.                 GOTO            WAIT1           ;Stabiliser l'entree
  292.                 BSF             ADCON0,GO       ;Demarrer le convertisseur A/N
  293. ANCONVER1       BTFSC           ADCON0,GO       ;Si 0, terminee
  294.                 GOTO            ANCONVER1       ;Attendre la fin de conversion
  295.                 MOVF            ADRES,W ;
  296.                 MOVWF           SIGLVL          ;0 a 256 = 0 a 5 volts
  297.                 MOVLW           D'115'          ;Test de bas niveau 2.2 VOLTS
  298.                 SUBWF           SIGLVL,W
  299.                 BNC             SQUELCH ;Signal faible
  300.                 BCF             DRAPEAU,3       ;Signal plus grand que le minimum
  301.                 GOTO            TESTOVERL
  302. SQUELCH BSF             DRAPEAU,3       ;Pour eteindre l'affichage
  303. TESTOVERL       MOVLW           D'170'          ;(256/5V)*3.4V=174 (Niveau de crete)
  304.                 SUBWF           SIGLVL,W
  305.                 BNC             SIGBON          ;Enlever le flag
  306.                 BSF             DRAPEAU,1       ;Indication de OVERLOAD
  307.                 GOTO            PRINC           ;Attendre
  308. SIGBON          BCF             DRAPEAU,1       ;Pas de OVERLOAD SIGLVL bon
  309.                 GOTO            PRINC
  310. ;
  311. ;---LAMPES-------------------------------------------------------------------
  312. ;
  313.                 ORG             0X200
  314. LAMPES          ADDWF           PCL,F
  315.                 RETLW   B'11111110'             ;D1 0
  316.                 RETLW   B'00010000'             ;L1
  317.                 RETLW   B'11111101'             ;D2 1
  318.                 RETLW   B'00010000'             ;L1
  319.                 RETLW   B'11111011'             ;D3 2
  320.                 RETLW   B'00010000'             ;L1
  321.                 RETLW   B'11110111'             ;D4 3
  322.                 RETLW   B'00010000'             ;L1
  323.                 RETLW   B'11101111'             ;D5 4
  324.                 RETLW   B'00010000'             ;L1
  325.                 RETLW   B'11011111'             ;D6 5
  326.                 RETLW   B'00010000'             ;L1
  327.                 RETLW   B'10111111'             ;D7 6
  328.                 RETLW   B'00010000'             ;L1
  329.                 RETLW   B'01111111'             ;D8 7
  330.                 RETLW   B'00010000'             ;L1
  331.                 RETLW   B'11111110'             ;D1 8
  332.                 RETLW   B'00100000'             ;L2
  333.                 RETLW   B'11111101'             ;D2 9
  334.                 RETLW   B'00100000'             ;L2
  335.                 RETLW   B'11111011'             ;D3 10
  336.                 RETLW   B'00100000'             ;L2
  337.                 RETLW   B'11110111'             ;D4 11
  338.                 RETLW   B'00100000'             ;L2
  339.                 RETLW   B'11101111'             ;D5 12
  340.                 RETLW   B'00100000'             ;L2
  341.                 RETLW   B'11011111'             ;D6 13
  342.                 RETLW   B'00100000'             ;L2
  343.                 RETLW   B'10111111'             ;D7 14
  344.                 RETLW   B'00100000'             ;L2
  345.                 RETLW   B'01111111'             ;D8 15
  346.                 RETLW   B'00100000'             ;L2
  347.                 RETLW   B'11111110'             ;D1 16
  348.                 RETLW   B'01000000'             ;L3
  349.                 RETLW   B'11111101'             ;D2 17
  350.                 RETLW   B'01000000'             ;L3
  351.                 RETLW   B'11111011'             ;D3 18
  352.                 RETLW   B'01000000'             ;L3
  353.                 RETLW   B'11110111'             ;D4 19
  354.                 RETLW   B'01000000'             ;L3
  355.                 RETLW   B'11101111'             ;D5 20
  356.                 RETLW   B'01000000'             ;L3
  357.                 RETLW   B'11011111'             ;D6 21
  358.                 RETLW   B'01000000'             ;L3
  359.                 RETLW   B'10111111'             ;D7 22
  360.                 RETLW   B'01000000'             ;L3
  361.                 RETLW   B'01111111'             ;D8 23
  362.                 RETLW   B'01000000'             ;L3
  363.                 RETLW   B'11111110'             ;D1 24
  364.                 RETLW   B'10000000'             ;L4
  365.                 RETLW   B'11111101'             ;D2 25
  366.                 RETLW   B'10000000'             ;L4
  367.                 RETLW   B'11111011'             ;D3 26
  368.                 RETLW   B'10000000'             ;L4
  369.                 RETLW   B'11110111'             ;D4 27
  370.                 RETLW   B'10000000'             ;L4
  371.                 RETLW   B'11101111'             ;D5 28
  372.                 RETLW   B'10000000'             ;L4
  373.                 RETLW   B'11011111'             ;D6 29
  374.                 RETLW   B'10000000'             ;L4
  375.                 RETLW   B'10111111'             ;D7 30
  376.                 RETLW   B'10000000'             ;L4
  377.                 RETLW   B'01111111'             ;D8 31
  378.                 RETLW   B'10000000'             ;L4
  379.                 RETLW   B'11111111'             ;   32 Toutes les lampes eteintes
  380.                 RETLW   B'00000000'             ;
  381. ;
  382. ;===========================================================================
  383. ;
  384.                 END


Gracias por todo

Desconectado crencho

  • PIC10
  • *
  • Mensajes: 1
Re: DOPPLER DF PAR JACQUES BRODEUR
« Respuesta #1 en: 18 de Junio de 2009, 03:32:57 »
Hola evamdopico

Revisé el código y si, tenia varios errores tipográficos. Los corregí y ahora compila, por lo menos a mi.
Usé la versión 8 de MPLAB
Prueba con el sigiente código:


Código: ASM
  1. ;== DOPPLER DF PAR JACQUES BRODEUR == VE2EMM ========================   REV. 1
  2. ;Free use granted to HAM RADIO OPERATORS only for HAM RADIO purpose.
  3. ;Please mention VE2EMM when using it. It is my only reward.
  4. ;No resale permitted.
  5. ;
  6. ;               DOPPLER DF, CONTROLE PAR PIC 16C72
  7. ;
  8. ;               Liste des entrees/sorties du microcontrolleur
  9. ;
  10. ;               8 sorties lampes affichage              I B0-B7
  11. ;               4communs lampes affichage               I C4-C7
  12. ;               4 sorties antennes                      I C0-C3
  13. ;               1 Entree analogue CAL           I A0 ;Direction des lampes
  14. ;               1 Entree analogue SIGLVL                I A1 ;Niveau du signal
  15. ;               3 Sorties filtre digital ROANOKE        I A2-A4
  16. ;               1 entree signal de phase PHASE/ I A5
  17. ;
  18. ;--------------------------------------------------------------------------------
  19. ;
  20.                 LIST    P=16C72
  21. #include <P16C72.inc>
  22.         processor 16C72
  23.                 __CONFIG _HS_OSC&_PWRTE_ON &_CP_OFF & _WDT_ON & _BODEN_ON
  24. ;
  25. ;--------------------------------------------------------------------------------
  26. ;               ALLOCATION DES MEMOIRES, VALEURS ET BITS
  27. ;
  28.                 CBLOCK          0X20
  29.                 STA_W                           ;STACK POUR LE W
  30.                 STA_STATU                       ;STACK POUR LE STATUS
  31.                 ROSE                            ;COMPTEUR DE DEGRES
  32.                 DIR_1                           ;DIRECTION MOYENNE DE LA PHASE
  33.                 DIR_2                           ;DIRECTION DE LA PHASE
  34.                 ECAR
  35.                 DIRECTION               ;POUR AFFICHER
  36.                 MEMTMP1                 ;Memoire temporaire tout usage
  37.                 MEMTMP2
  38.                 DRAPEAU                 ;Flags
  39.                                                 ;b0=lecture de la direction deja faite
  40.                                                 ;b1=SIGLVL overload
  41.                                                 ;b2=Demander une conversion de SIGLVL
  42.                                                 ;b3=SIGLVL recepteur silentieux
  43.                 PHASAGE                 ;Deplacement de la direction (CAL)
  44.                 SIGLVL                  ;Niveau du signal au filtre
  45.                 TIMR1                   ;pour le clignoteur 180 degree
  46.                 TIMR2                   ;Pour le clignoteur squelch
  47.                 BIT                             ;Memoire pour la bit a clignoter
  48.                 ENDC
  49. ;
  50. ;---DEBUT DU PROGRAMME----------------------------------------------------------------
  51. ;
  52.                 ORG     0X000
  53.                 GOTO            INIT
  54. ;
  55. ;-------------------------------------------------------------------------------------
  56. ;===INTERRUPTION        =========================================================
  57. ;
  58.                 ORG                 0X004
  59.                 MOVWF           STA_W           ;PUSH le reg W
  60.                 SWAPF           STATUS,W        ;PUSH le reg STATUS
  61.                 MOVWF           STA_STATU
  62.                 MOVLW           D'178'          ;178 pour 20 mHz pour 500Hz
  63.                 MOVWF           TMR0            ;RESET TMR0
  64. ;
  65. ;---CHANGER D'ANTENNE-------------------------------
  66. ;
  67.                 MOVF            ROSE,W          ;CHANGER LES CONDENSATEURS DU FILTRE DIGITAL
  68.                 MOVWF           PORTA           ;bits 2,3,4
  69.  
  70. ANT1    MOVLW           D'0'            ;ANTENNE 1
  71.                 XORWF           ROSE,W          ;TESTER POUR 0 degree
  72.                 BNZ             ANT2
  73.                 BCF             PORTC,0         ;Activer L'antenne 1
  74.                 NOP
  75.                 BSF                 PORTC,3             ;Deconnecter l'antenne 4
  76.  
  77. ANT2    MOVLW           D'8'            ;ANTENNE 2
  78.                 XORWF           ROSE,W          ;TESTER POUR 90 degrees
  79.                 BNZ             ANT3
  80.                 BCF                 PORTC,1             ;Activer L'antenne 2
  81.                 NOP    
  82.                 BSF                 PORTC,0             ;Deconnecter l'antenne 1
  83.  
  84. ANT3    MOVLW           D'16'           ;ANTENNE 3
  85.                 XORWF           ROSE,W          ;TESTER POUR 180 degrees
  86.                 BNZ             ANT4
  87.                 BCF             PORTC,2         ;Activer L'antenne 3
  88.                 NOP
  89.                 BSF                 PORTC,1             ;Deconnecter l'antenne 2
  90.  
  91. ANT4    MOVLW           D'24'           ;ANTENNE 4
  92.                 XORWF           ROSE,W          ;TESTER POUR 270 degrees
  93.                 BNZ                 TESTER
  94.                 BCF                 PORTC,3             ;Activer L'antenne 4
  95.                 NOP
  96.                 BSF                 PORTC,2             ;Deconnecter l'antenne 3
  97.  
  98. ;
  99. ;---TESTER LE SIGNAL------------------------------------
  100. ;
  101. TESTER  BTFSS           DRAPEAU,3       ;Si SIGLVL < SQUELCH clignoter lentement
  102.                                                         ;l'affichage
  103.                 GOTO            AFF_OVERL       ;SIGLVL au dessus du SQUELCH
  104.                 BTFSS           TIMR2,0         ;SIGLVL sous le SQUELCH *******
  105.                 GOTO            AFFICHER        ;Allumer la lampe
  106.                 MOVLW           0XFF            ;Eteindre la lampe *
  107.                 MOVWF           PORTB
  108.                 GOTO            AVANCER ; * * * * *
  109.  
  110. AFF_OVERL      
  111.         BTFSS           DRAPEAU,1       ;Tester pour OVERLOAD du niveau de signal      
  112.                 GOTO            PHASE           ;Afficher la direction * * * *
  113.                 BTFSS           TIMR1,6         ;Clignote rapidement la lampe OVERLOAD, 180 deg.
  114.                 GOTO            CLI_ON
  115.                 MOVLW           D'32'           ;Lampe eteinte
  116.                 MOVWF           DIRECTION
  117.                 GOTO            AFFICHER        ;Afficher la direction
  118. CLI_ON  MOVLW           D'16'           ;Lampe allumee
  119.                 MOVWF           DIRECTION
  120.                 GOTO            AFFICHER        ;Continuer * * * * * * *
  121. ;
  122. ;--LIRE LA PHASE        ------------------------------------------
  123. ;
  124. PHASE                                           ;Tester pour 1 changement par revolution
  125.                 BTFSS           PORTA,5         ;Lire la PHASE
  126.                 GOTO            LIREPHASE       ;0=lire
  127.                 BCF         DRAPEAU,0   ;1=ne pas lire
  128.                 GOTO            AVANCER
  129. LIREPHASE      
  130.         BTFSC           DRAPEAU,0       ;Deja lu si 1, Lire si 0
  131.                 GOTO            AVANCER ;Terminer direction est deja lu
  132.                 MOVF            ROSE,W          ;Ramasser la direction de ce cycle
  133.                 MOVWF           DIR_2           ;DIR_2=Direction presente -- DIR_1=Direction precedente
  134.                 BSF         DRAPEAU,0   ;Indique que la lecture est faite, bit a 1
  135. ;
  136. ;---CALCULER LA MOOYENNE DE 2 RETOURS-
  137.                 MOVF            DIR_2,W         ;Dir_2 doit etre plus grand que DIR_1
  138.                 SUBWF           DIR_1,W
  139.                 BTFSS           STATUS,C
  140.                 GOTO            CALCUL          ;Si DIR_1 plus petit que DIR_2
  141.  
  142.                 MOVF            DIR_1, W                ;Echanger DIR 1 et DIR 2
  143.                 MOVWF           MEMTMP1
  144.                 MOVF            DIR_2,W
  145.                 MOVWF           DIR_1
  146.                 MOVF            MEMTMP1,W
  147.                 MOVWF           DIR_2          
  148.  
  149. CALCUL  MOVF            DIR_1,W         ;ECAR = DIR_2 - DIR_1
  150.                 SUBWF           DIR_2,W
  151.                 MOVWF           ECAR
  152.                 CLRC                            ;DIR_1 = (ECAR / 2) + DIR_1
  153.                 RRF                 ECAR,W
  154.                 ADDWF           DIR_1,F
  155.  
  156.                 MOVLW           D'16'           ;IF ECAR <16 THEN LECT_FAITE ELSE
  157.                 SUBWF           ECAR,W
  158.                 BNC                 CAL
  159.  
  160. SUITE   MOVLW           D'16'           ;Si DIR_1 < 16
  161.                 SUBWF           DIR_1, W
  162.                 BNC                 ADD16
  163.  
  164.                 MOVLW           D'16'           ;IF NOT DIR_1 = DIR_1 - 16
  165.                 SUBWF           DIR_1,F
  166.                 GOTO            CAL
  167.  
  168. ADD16   MOVLW           D'16'           ;IF DIR_1 < 16 THEN DIR_1 = DIR_1 + 16
  169.                 ADDWF           DIR_1,F
  170. ;
  171. ;---CALIBRER----------------------------------------------------------------
  172. ;
  173. CAL             MOVF            PHASAGE,W       ;Ajouter la calibration
  174.                 ADDWF           DIR_1,W
  175.                 MOVWF           DIRECTION
  176.                 MOVLW           D'32'
  177.                 SUBWF           DIRECTION,W
  178.                 BC                  SOUSTRAIRE  ;Si 32 et plus soustraire
  179.                 GOTO            AFFICHER
  180. SOUSTRAIRE                     
  181.         MOVLW       D'224'          ;Soustraire 32
  182.                 ADDWF           DIRECTION,F
  183. ;
  184. ;---AFFICHAGE--------------------------------------------------------------
  185. ;
  186. AFFICHER       
  187.         MOVLW           0X02            ;Aller a la page 0x200
  188.                 MOVWF           PCLATH
  189.                 CLRC                            ;Afficher les lampes de direction
  190.                 RLF             DIRECTION,W
  191.                 CALL            LAMPES
  192.                 MOVWF           PORTB           ;*****Cathode des lampes
  193.                 RLF                 DIRECTION,W ;Chercher les anodes
  194.                 ADDLW           0X01
  195.                 CALL            LAMPES
  196.                 MOVWF           MEMTMP1 ;*****Sauver les anodes des lampes
  197.                 CLRF            PCLATH
  198.                 MOVF            PORTC,W
  199.                 ANDLW           B'00001111'     ;Charger les antennes
  200.                 IORWF           MEMTMP1,W       ;Ajouter les lampes
  201.                 MOVWF           PORTC           ;*****Mise a jour du port C
  202. ;
  203. ;---AVANCER LE COMPTEUR----------------------------------------
  204. ;
  205. AVANCER INCF            ROSE,F          ;AVANCER LE COMPTEUR
  206.                 MOVLW           D'32'
  207.                 SUBWF           ROSE,W          ;TESTER Si COMPTE MAXIMUM
  208.                 BNC             POP             ;ARRETER LE COMPTEUR A 31
  209.                 CLRF            ROSE            ;Commencer a 0
  210.                 BSF             DRAPEAU,2       ;Commander une conversion du SIGLVL
  211.                 INCF            TIMR1,F
  212.                 SKPNZ
  213.                 INCF            TIMR2,F
  214. ;
  215. ;---TERMINER----------------------------------------------------------------
  216. ;
  217. POP             BCF                 INTCON,T0IF ;Rappeler lE FLAG TOIF de L'OVERFLOW DE TMRO
  218.                 SWAPF           STA_STATU,W     ;Restorer le reg STATUS
  219.                 MOVWF           STATUS
  220.                 SWAPF           STA_W,F ;Restorer le reg W
  221.                 SWAPF           STA_W,W
  222.                 RETFIE
  223. ;
  224. ;===================================================================================
  225. ;--- INITIALISATION ET LECTURE DE LA CALIBRATION------------------------------------
  226. ;
  227. INIT    CLRF            PORTA
  228.                 CLRF            PORTB
  229.                 CLRF            PORTC
  230.                                                         ;Charger la calibration de l'affichage
  231.                 BSF                 STATUS,RP0  ;Page 1
  232.                 MOVLW           B'00000100'
  233.                 MOVWF           ADCON1          ;Analogue AN0 AN1 AN3
  234.                 BCF                 STATUS,RP0  ;Page 0
  235.                 MOVLW           B'11000001'     ;Clock RC, convertir AN0
  236.                 MOVWF           ADCON0  ;
  237.                 MOVLW           D'60'
  238.                 MOVWF           MEMTMP1
  239. WAIT    DECFSZ          MEMTMP1,F
  240.                 GOTO            WAIT            ;Stabiliser l'entree
  241.                 BSF                 ADCON0,GO   ;Demarrer le convertisseur A/N
  242. ANCONVER
  243.         BTFSC           ADCON0,GO       ;Si 0, terminee
  244.                 GOTO            ANCONVER        ;Attendre la fin de conversion
  245.                 MOVF            ADRES,W
  246.                 MOVWF           PHASAGE     ;Sauver la calibration
  247.                 CLRC
  248.                 RRF             PHASAGE,F       ;127 max
  249.                 CLRC
  250.                 RRF             PHASAGE,F       ;67 max
  251.                 CLRC
  252.                 RRF             PHASAGE,F       ;31 compte max
  253. ;
  254. ;---Operation normale------------------------------------------------------
  255. ;
  256.                 CLRF            ADCON0
  257.                 BSF                 STATUS,RP0  ;Page 1
  258. ;               MOVLW           B'00000110'     ;RA TOUT DIGITAL
  259. ;               MOVWF           ADCON1
  260.                 MOVLW           B'00100011'     ;0-1,5 entrees 2-4 sorties PORTA
  261.                 MOVWF           TRISA
  262.                 MOVLW           B'00000000'     ;Tout en sortie PORTB
  263.                 MOVWF           TRISB
  264.                 MOVLW           B'00000000'     ;Tout en sortie PORTC
  265.                 MOVWF           TRISC
  266.                 MOVLW           B'11010001'     ;OPTION TOCS=internal CLK, PRE=/2, PSA=TMR0
  267.                 MOVWF           OPTION_REG
  268.                 MOVLW           B'10100000'     ;1NTCON GIE T0IE
  269.                 MOVWF           INTCON
  270.                 BCF                 STATUS,RP0  ;Page 0
  271.  
  272.                 MOVLW           D'00'           ;Conditions de depart des memoires
  273.                 MOVWF           ROSE
  274.                 MOVWF           DIR_1
  275.                 MOVWF           DIR_2
  276.                 MOVWF           DIRECTION
  277.                 MOVLW           0X0F            ;Deconnecter les antennes
  278.                 MOVWF           PORTC
  279.                 MOVLW           B'00000001'
  280.                 MOVWF           DRAPEAU
  281.                 MOVLW           D'178'
  282.                 MOVWF           TMR0
  283. ;
  284. ;---BOUCLE PRINCIPALE-----------------------------------------------
  285. ;
  286. PRINC   CLRWDT
  287.                 BTFSS           DRAPEAU,2       ;Temps de faire une conversion?
  288.                 GOTO            PRINC           ;Non
  289.                 BCF                 DRAPEAU,2   ;Oui
  290.                 MOVLW           B'11001001'     ;Clock RC, convertir AN1
  291.                 MOVWF           ADCON0  ;
  292.                 MOVLW           D'60'
  293.                 MOVWF           MEMTMP2
  294. WAIT1   DECFSZ          MEMTMP2,F
  295.                 GOTO            WAIT1           ;Stabiliser l'entree
  296.                 BSF             ADCON0,GO       ;Demarrer le convertisseur A/N
  297. ANCONVER1
  298.         BTFSC           ADCON0,GO       ;Si 0, terminee
  299.                 GOTO            ANCONVER1       ;Attendre la fin de conversion
  300.                 MOVF            ADRES,W ;
  301.                 MOVWF           SIGLVL          ;0 a 256 = 0 a 5 volts
  302.                 MOVLW           D'115'          ;Test de bas niveau 2.2 VOLTS
  303.                 SUBWF           SIGLVL,W
  304.                 BNC             SQUELCH ;Signal faible
  305.                 BCF             DRAPEAU,3       ;Signal plus grand que le minimum
  306.                 GOTO            TESTOVERL
  307. SQUELCH BSF             DRAPEAU,3       ;Pour eteindre l'affichage
  308. TESTOVERL      
  309.         MOVLW           D'170'          ;(256/5V)*3.4V=174 (Niveau de crete)
  310.                 SUBWF           SIGLVL,W
  311.                 BNC             SIGBON          ;Enlever le flag
  312.                 BSF             DRAPEAU,1       ;Indication de OVERLOAD
  313.                 GOTO            PRINC           ;Attendre
  314. SIGBON  BCF             DRAPEAU,1       ;Pas de OVERLOAD SIGLVL bon
  315.                 GOTO            PRINC
  316. ;
  317. ;---LAMPES-------------------------------------------------------------------
  318. ;
  319.                 ORG             0X200
  320. LAMPES  ADDWF           PCL,F
  321.                 RETLW   B'11111110'             ;D1 0
  322.                 RETLW   B'00010000'             ;L1
  323.                 RETLW   B'11111101'             ;D2 1
  324.                 RETLW   B'00010000'             ;L1
  325.                 RETLW   B'11111011'             ;D3 2
  326.                 RETLW   B'00010000'             ;L1
  327.                 RETLW   B'11110111'             ;D4 3
  328.                 RETLW   B'00010000'             ;L1
  329.                 RETLW   B'11101111'             ;D5 4
  330.                 RETLW   B'00010000'             ;L1
  331.                 RETLW   B'11011111'             ;D6 5
  332.                 RETLW   B'00010000'             ;L1
  333.                 RETLW   B'10111111'             ;D7 6
  334.                 RETLW   B'00010000'             ;L1
  335.                 RETLW   B'01111111'             ;D8 7
  336.                 RETLW   B'00010000'             ;L1
  337.                 RETLW   B'11111110'             ;D1 8
  338.                 RETLW   B'00100000'             ;L2
  339.                 RETLW   B'11111101'             ;D2 9
  340.                 RETLW   B'00100000'             ;L2
  341.                 RETLW   B'11111011'             ;D3 10
  342.                 RETLW   B'00100000'             ;L2
  343.                 RETLW   B'11110111'             ;D4 11
  344.                 RETLW   B'00100000'             ;L2
  345.                 RETLW   B'11101111'             ;D5 12
  346.                 RETLW   B'00100000'             ;L2
  347.                 RETLW   B'11011111'             ;D6 13
  348.                 RETLW   B'00100000'             ;L2
  349.                 RETLW   B'10111111'             ;D7 14
  350.                 RETLW   B'00100000'             ;L2
  351.                 RETLW   B'01111111'             ;D8 15
  352.                 RETLW   B'00100000'             ;L2
  353.                 RETLW   B'11111110'             ;D1 16
  354.                 RETLW   B'01000000'             ;L3
  355.                 RETLW   B'11111101'             ;D2 17
  356.                 RETLW   B'01000000'             ;L3
  357.                 RETLW   B'11111011'             ;D3 18
  358.                 RETLW   B'01000000'             ;L3
  359.                 RETLW   B'11110111'             ;D4 19
  360.                 RETLW   B'01000000'             ;L3
  361.                 RETLW   B'11101111'             ;D5 20
  362.                 RETLW   B'01000000'             ;L3
  363.                 RETLW   B'11011111'             ;D6 21
  364.                 RETLW   B'01000000'             ;L3
  365.                 RETLW   B'10111111'             ;D7 22
  366.                 RETLW   B'01000000'             ;L3
  367.                 RETLW   B'01111111'             ;D8 23
  368.                 RETLW   B'01000000'             ;L3
  369.                 RETLW   B'11111110'             ;D1 24
  370.                 RETLW   B'10000000'             ;L4
  371.                 RETLW   B'11111101'             ;D2 25
  372.                 RETLW   B'10000000'             ;L4
  373.                 RETLW   B'11111011'             ;D3 26
  374.                 RETLW   B'10000000'             ;L4
  375.                 RETLW   B'11110111'             ;D4 27
  376.                 RETLW   B'10000000'             ;L4
  377.                 RETLW   B'11101111'             ;D5 28
  378.                 RETLW   B'10000000'             ;L4
  379.                 RETLW   B'11011111'             ;D6 29
  380.                 RETLW   B'10000000'             ;L4
  381.                 RETLW   B'10111111'             ;D7 30
  382.                 RETLW   B'10000000'             ;L4
  383.                 RETLW   B'01111111'             ;D8 31
  384.                 RETLW   B'10000000'             ;L4
  385.                 RETLW   B'11111111'             ;   32 Toutes les lampes eteintes
  386.                 RETLW   B'00000000'             ;
  387. ;
  388. ;===========================================================================
  389. ;
  390.                 END


Saludos y suerte con el proyecto!  :D





Desconectado evamdopico

  • PIC10
  • *
  • Mensajes: 13
Re: DOPPLER DF PAR JACQUES BRODEUR
« Respuesta #2 en: 20 de Junio de 2009, 06:33:09 »
Gracias por la ayuda, no tenia muy claro como corregir los errores.



 

anything