Period counter MPASM Eror

Başlatan murats123, 15 Haziran 2008, 23:25:26

murats123

http://www.mcmanis.com/chuck/robotics/projects/lab-x3/pulse_measure.html

Arkadaşlar  linkteki devreyi yapmaya çalışıyorum , sayfanın altında asm kodları var , fakat mpasm da derlerken hata veriyor  Sanırım LCD_E tanımlı değil diyor fakat ben sebebini bulamadım.





Error[113]   C:\PERIOD COUNTER\UTIL.INC 133 : Symbol not previously defined (MSG1)
Error[113]   C:\PERIOD COUNTER\UTIL.INC 137 : Symbol not previously defined (MSG1)
Error[113]   C:\PERIOD COUNTER\UTIL.INC 133 : Symbol not previously defined (MSG2)
Error[113]   C:\PERIOD COUNTER\UTIL.INC 137 : Symbol not previously defined (MSG2)









MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00001 ; M-PULSE.ASM   Pulse Measurement Program
                     00002 ; Written by    Chuck McManis (http://www.mcmanis.com/chuck)
                     00003 ; This Version  30-Dec-01
                     00004 ; Copyright (c) 2001 Charles McManis, All Rights Reserved
                     00005 ;
                     00006 ; Change Log:
                     00007 ;       30-DEC-01       Added pulse measurement w/CCP1 input
                     00008 ;       29-DEC-01       Initial Creation from LCD2
                     00009 ;
                     00010 ; NOTICE: THIS CODE COMES WITHOUT WARRANTY OF ANY KIND EITHER
                     00011 ;         EXPRESSED OR IMPLIED. USE THIS CODE AT YOUR OWN RISK!
                     00012 ;         I WILL NOT BE HELD RESPONSIBLE FOR ANY DAMAGES, DIRECT
                     00013 ;         OR CONSEQUENTIAL THAT YOU MAY EXPERIENCE BY USING IT.
                     00014 ;
                     00015 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                     00016 ;
                     00017         TITLE "LCD2 - Measuring a Pulse"
                     00018         LIST P=PIC16F628, C=120, N=50, R=HEX
                     00019         include "P16F628.inc"
                     00001         LIST
                     00002 ; P16F628.INC  Standard Header File, Version 1.01    Microchip Technology, Inc.
                     00261         LIST
                     00020         include "math.inc"
                     00001 ; MATH16.INC      16 bit Math Routines
                     00002 ; This Version    30-Dec-01
                     00084         list                      
2007   3F68           00021         __FUSES _CP_OFF&_LP_OSC&_WDT_OFF&_LVP_OFF
                     00022        
                     00023         CBLOCK H'70'
 00000070            00024             TMP_W    
 00000071            00025             TMP_STATUS
                     00026         ENDC
                     00027        
                     00028         CBLOCK H'20'
 00000020            00029             LEADING:0, LEADING_LO, LEADING_HI
 00000022            00030             CAPTURE:0, CAPTURE_LO, CAPTURE_HI
 00000024            00031             COUNTER:0, COUNTER_LO, COUNTER_HI
 00000026            00032             MSG_NDX
 00000027            00033             TMP_CHAR
 00000028            00034             GOT_ONE
 00000029            00035             T0_COUNT
                     00036         ENDC
                     00037        
 0000004E            00038 I_CNT   EQU     H'4E'
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  2
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00039
0000                  00040         ORG H'0000'
0000   28F8           00041         GOTO    MAIN            ; Let's get this puppy rolling
                     00042 ;
                     00043 ; Code Section
                     00044 ;
                     00045 ; The code section of the ISR lives at 0x0004. Its possible to put a
                     00046 ; jump here however doing so adds two clocks of latency to servicing
                     00047 ; any interrupt.
                     00048 ;
                     00049        
0004                  00050         ORG     H'0004'          ; Interrupt service routine    
0004   2825           00051         GOTO    INTR_SVC
                     00052        
                     00053 ; Message Space        
0005   0826           00054 msg1:   MOVF    MSG_NDX,W
0006   0782           00055         ADDWF   PCL,F    
0007   3480 3450 3475 00056         DT      H'80', "Pulse Width:", 0
      346C 3473 3465
      3420 3457 3469
      3464 3474 3468
      343A 3400
                     00057
0015   0826           00058 msg2:   MOVF    MSG_NDX,W
0016   0782           00059         ADDWF   PCL,F
0017   34C0 3453 3461 00060         DT      H'C0', "Sample Num :", 0
      346D 3470 346C
      3465 3420 344E
      3475 346D 3420
      343A 3400
                     00061        
0025                  00062 INTR_SVC:        
0025   00F0           00063         MOVWF   TMP_W           ; Copy W to a temporary register
0026   0E03           00064         SWAPF   STATUS,W        ; Swap Status Nibbles and move to W
0027   00F1           00065         MOVWF   TMP_STATUS      ; Copy STATUS to a temporary register
0028   1283           00066         BCF     STATUS, RP0     ; Force Bank 0
0029   1303           00067         BCF     STATUS, RP1     ;
                     00068 ;
                     00069 ; State is saved, and we've expended 3 Tcy plus the 3 Tcy (4 worst
                     00070 ; case) of interrupt latency for a total of 6(7) Tcy.
                     00071 ;
                     00072 ; Now loop through until we've satisfied all the pending interrupts.
                     00073 ;
002A                  00074 INTR_POLL:
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  3
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00075         ; ... test bit to see if it is set
002A   1D0B           00076         BTFSS   INTCON,T0IF     ; Did Timeer0 Overflow?
002B   2836           00077         GOTO    ISR_1           ; No it didn't, so check next thing.
                     00078         ;
                     00079         ; Process Timer 0 Overflow Interrupt
                     00080         ;
002C   110B           00081         BCF     INTCON, T0IF    ; Clear Timer 0 interrupt
002D   03A9           00082         DECF    T0_COUNT,F      ; Decrement interrupt counter
002E   0F29           00083         INCFSZ  T0_COUNT,W      ; Read it back to check for overflow
002F   2836           00084         GOTO    ISR_1           ; Nope, keep counting
                     00085         ;
                     00086         ; Count underflows when we've hit this interrupt "n" times,
                     00087         ; where n is the number in COUNT.
                     00088         ;
0030   304E           00089         MOVLW   I_CNT           ; Restore counter value
0031   00A9           00090         MOVWF   T0_COUNT
0032   0103           00091         CLRW
0033   00A2           00092         MOVWF   CAPTURE
0034   00A3           00093         MOVWF   CAPTURE+1
0035   1428           00094         BSF     GOT_ONE,0
                     00095         ;
                     00096         ; Process interrupts from the Input Capture/Compare pin
                     00097         ; (CCP1 on the 16F628)
                     00098         ;
0036                  00099 ISR_1:  
0036   1D0C           00100         BTFSS   PIR1, CCP1IF    ; Check to see that CCP1 interrupted
0037   2852           00101         GOTO    ISR_2           ; If not continue
0038   110C           00102         BCF     PIR1, CCP1IF    ; Re-enable it
0039   1C17           00103         BTFSS   CCP1CON, CCP1M0 ; Check for falling edge watch
003A   2841           00104         GOTO    FALL_EDGE       ; Go pick up the falling edge
003B   0815           00105         MOVF    CCPR1L,W        ; else store leading edge value
003C   00A0           00106         MOVWF   LEADING         ; into 16 bit work LEADING
003D   0816           00107         MOVF    CCPR1H,W
003E   00A1           00108         MOVWF   LEADING+1
003F   1017           00109         BCF     CCP1CON, CCP1M0 ; Now capture the trailing edge
0040   2852           00110         GOTO    ISR_2           ; Exit the interrupt service routine
                     00111        
0041                  00112 FALL_EDGE:
0041   1417           00113         BSF     CCP1CON, CCP1M0 ; Re-set for trailing edge capture
0042   0815           00114         MOVF    CCPR1L,W        ; Store the captured value into
0043   00A2           00115         MOVWF   CAPTURE         ; CAPT_LO and ...
0044   0816           00116         MOVF    CCPR1H,W
0045   00A3           00117         MOVWF   CAPTURE+1       ;             ... CAPT_HI
                     00118         ;
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  4
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00119         ; 16 bit subtract
                     00120         ;     CAPTURE = CAPTURE - LEAD
                     00121         ;
                     00122         SUB16   CAPTURE, LEADING
0046   0820               M         MOVF    (LEADING),W
0047   02A2               M         SUBWF   (CAPTURE),F
0048   0821               M         MOVF    (LEADING)+1,W
0049   1C03               M         BTFSS   STATUS,C
004A   0A21               M         INCF    (LEADING)+1,W
004B   02A3               M         SUBWF   (CAPTURE)+1,F
                     00123        
004C   1428           00124         BSF     GOT_ONE,0       ; Indicate we have a new sample.
004D   304E           00125         MOVLW   I_CNT
004E   00A9           00126         MOVWF   T0_COUNT
004F   0AA4           00127         INCF    COUNTER,F
0050   1903           00128         BTFSC   STATUS,Z
0051   0AA5           00129         INCF    COUNTER+1,F
0052                  00130 ISR_2:                          ; Process the next interrupt
                     00131 ;
                     00132 ; Exit the interrupt service routine.
                     00133 ; This involves recovering W and STATUS and then
                     00134 ; returning. Note that putting STATUS back automatically pops the bank
                     00135 ; back as well.
                     00136 ;               This takes 6 Tcy for a total overhead of 12 Tcy for sync
                     00137 ;               interrupts and 13 Tcy for async interrupts.
                     00138 ;
0052                  00139 INTR_EXIT:
0052   0E71           00140         SWAPF   TMP_STATUS,W    ; Pull Status back into W
0053   0083           00141         MOVWF   STATUS          ; Store it in status
0054   0EF0           00142         SWAPF   TMP_W,F         ; Prepare W to be restored
0055   0E70           00143         SWAPF   TMP_W,W         ; Return it, preserving Z bit in STATUS
0056   0009           00144         RETFIE
                     00145 ;
                     00146 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                     00147         #include util.asm
                     00001 ; UTIL.ASM      - Utility Routines
                     00002 ; Written by      Chuck McManis (http://www.mcmanis.com/chuck)
                     00003 ; This Version    28-Dec-01
                     00004 ; Copyright (c) 2001 Charles McManis, All Rights Reserved
                     00005 ;
                     00006 ; Change Log:
                     00007 ;       28-DEC-01       Initially created file as the useful
                     00008 ;                       functions out of my LCD test programs.
                     00009 ;
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  5
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00010 ; NOTICE: THIS CODE COMES WITHOUT WARRANTY OF ANY KIND EITHER
                     00011 ;         EXPRESSED OR IMPLIED. USE THIS CODE AT YOUR OWN RISK!
                     00012 ;         I WILL NOT BE HELD RESPONSIBLE FOR ANY DAMAGES, DIRECT
                     00013 ;         OR CONSEQUENTIAL THAT YOU MAY EXPERIENCE BY USING IT.
                     00014 ;
                     00015 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                     00016 ;
                     00017 ;
                     00018 ; Declare variables that we will use internally.
                     00019 ;
                     00020         CBLOCK
 0000002A            00021             DLY_CNT
 0000002B            00022             CMD_DELAY
 0000002C            00023             LCD_TMP
 0000002D            00024             NUM:2     ; Number to convert low byte ...
 0000002F            00025             NUM_STR:5  ;         ... high byte
                     00026         ENDC
                     00027
                     00028         #include "util.inc"                
                     00001 ; UTIL.INC      - Utility Routines
                     00002 ; This Version    28-Dec-01
                     00147         LIST
                     00029        
 00000004            00030 LED1            EQU     4
 00000005            00031 LED2            EQU     5        
 00000006            00032 LCD_E           EQU     6        
                     00033
0057                  00034 CVT_NUM:
                     00035         BIN2ASCII   NUM, NUM_STR
                         M         list
009F   0008           00036         RETURN
                     00037        
                     00038 ;
                     00039 ; The LCD on the LAB-X3 (modified) is connected thusly:
                     00040 ;       RA0 - DB4       RA4 - RS
                     00041 ;       RA1 - DB5      
                     00042 ;       RA2 - DB6       RB6 - E (this was my modification)
                     00043 ;       RA3 - DB7
                     00044 ;
                     00045 ; The LCD needs to be initialized into 4 bit mode and then
                     00046 ; we should be able to write letters to it. Note that on the
                     00047 ; LAB-X3 the LCD is ALWAYS in write mode, no reading allowed so
                     00048 ; you just have to hope it isn't busy.
                     00049 ;
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  6
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00050 ; According to the Hitachi data sheet, you first have to
                     00051 ; wait 15 mS to insure the display is "stable" after Vcc is
                     00052 ; applied. Then the following sequence puts it into "4 bit"
                     00053 ; mode (reset by instruction)
                     00054 ;               0x03            ' wait > 4.1 mS
                     00055 ;               0x03            ' wait > .1 mS
                     00056 ;               0x03            ' wait > .1 mS
                     00057 ;               0x02            ' wait > .1 mS
                     00058 ; Display is now in 4-bit mode so initialize it with:
                     00059 ;               0x02 0x08  ' Set 4-bit mode, 2 line display
                     00060 ;               0x00 0x08  ' Display "ON"
                     00061 ;               0x00 0x01  ' Clear Display
                     00062 ;               0x00 0x06  ' Entry mode, auto increment cursor
                     00063 ;
00A0                  00064 LCD_INIT:
00A0   30C8           00065         MOVLW   D'200'          ; Wait for LCD to settle
00A1   20E7           00066         CALL    DELAY
00A2   3003           00067         MOVLW   H'03'           ; Set LCD for 4 bits        
00A3   0085           00068         MOVWF   PORTA           ; Data Lines
00A4   1706           00069         BSF     PORTB,LCD_E     ; Toggle E
00A5   1306           00070         BCF     PORTB,LCD_E     ;
00A6   3050           00071         MOVLW   H'50'           ; Wait 5 mS
00A7   20E7           00072         CALL    DELAY
                     00073        
00A8   1706           00074         BSF     PORTB, LCD_E    ; Send command again
00A9   1306           00075         BCF     PORTB, LCD_E
00AA   3002           00076         MOVLW   H'2'      
00AB   20E7           00077         CALL    DELAY
                     00078        
                     00079                    
00AC   1706           00080         BSF     PORTB, LCD_E    ; Third time's the charm
00AD   1306           00081         BCF     PORTB, LCD_E
00AE   3002           00082         MOVLW   H'2'      
00AF   20E7           00083         CALL    DELAY
                     00084        
00B0   3002           00085         MOVLW   H'02'           ; Set for 4 bits
00B1   0085           00086         MOVWF   PORTA           ; like so                          
00B2   1706           00087         BSF     PORTB, LCD_E    ;
00B3   1306           00088         BCF     PORTB, LCD_E
00B4   3002           00089         MOVLW   H'2'            ; Wait .2 mS
00B5   20E7           00090         CALL    DELAY
                     00091         ;
                     00092         ; Now at this point its in 4-bit mode so send setup
                     00093         ; commands through the 4-bit interface.
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  7
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00094         ;        
00B6   3028           00095         MOVLW   H'28'           ; Set 2 line display, 4 bit I/O
00B7   20C1           00096         CALL    LCD_CMD         ;
00B8   3008           00097         MOVLW   H'08'           ; Turn off the Display
00B9   20C1           00098         CALL    LCD_CMD
00BA   3001           00099         MOVLW   H'01'           ; Clear the contents of the display
00BB   20C1           00100         CALL    LCD_CMD
00BC   3006           00101         MOVLW   H'06'           ; Set the Entry mode
00BD   20C1           00102         CALL    LCD_CMD
00BE   300C           00103         MOVLW   H'0C'           ; Turn it on again
00BF   20C1           00104         CALL    LCD_CMD
00C0   0008           00105         RETURN                  ; Ready to rock and roll
                     00106        
                     00107 ;
                     00108 ; LCD_CMD
                     00109 ;
                     00110 ; Generic routine to send a command to the LCD. Since some
                     00111 ; commands take longer to run this routine waits 1mS after it
                     00112 ; sending the command to insure the LCD is done with it.
                     00113 ;
00C1                  00114 LCD_CMD:
00C1   00AC           00115         MOVWF   LCD_TMP         ; Store command
00C2   3001           00116         MOVLW   H'1'            ; This is the generic delay
00C3   00AB           00117         MOVWF   CMD_DELAY       ; Used by default
00C4   30FC           00118         MOVLW   H'FC'           ; This is how we check for clear/home
00C5   052C           00119         ANDWF   LCD_TMP,W       ; If any bit other than 0 or 1 is set
00C6   1D03           00120         BTFSS   STATUS,Z        ;
00C7   28CA           00121         GOTO    OK_DELAY        ; If non-zero leave delay alone
00C8   3014           00122         MOVLW   D'20'           ; Else store 2mS delay value.
00C9   00AB           00123         MOVWF   CMD_DELAY
00CA                  00124 OK_DELAY:
00CA   0E2C           00125         SWAPF   LCD_TMP,W       ; Read it, put upper nibble down
00CB   390F           00126         ANDLW   H'0f'           ; Turn OFF the R/S bit
00CC   0085           00127         MOVWF   PORTA           ; Out it goes
00CD   1706           00128         BSF     PORTB,LCD_E     ; Clock it out
00CE   1306           00129         BCF     PORTB,LCD_E     ; Like so
00CF   082C           00130         MOVF    LCD_TMP,W       ; Get lower nybble
00D0   390F           00131         ANDLW   H'0F'           ; Turn off R/S
00D1   0085           00132         MOVWF   PORTA           ; Put it on PortA
00D2   1706           00133         BSF     PORTB,LCD_E     ; Clock it out
00D3   1306           00134         BCF     PORTB,LCD_E     ;
00D4   082B           00135         MOVF    CMD_DELAY,W     ; Wait for it to complete
00D5   20E7           00136         CALL    DELAY
00D6   0008           00137         RETURN                  ;
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  8
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00138
                     00139 ;
                     00140 ; LCD_CHAR
                     00141 ;
                     00142 ; Generic routine to send a command to the LCD. In this
                     00143 ; version it just sends it, a "smarter" version would watch
                     00144 ; for <CR> or <LF> and do something appropriate to the display.
                     00145 ;
00D7                  00146 LCD_CHAR:
00D7   00AC           00147         MOVWF   LCD_TMP         ; Store it in LCD_TMP
00D8   0E2C           00148         SWAPF   LCD_TMP,W       ; Upper Nybble
00D9   390F           00149         ANDLW   H'0F'           ; Clear upper bits
00DA   3810           00150         IORLW   H'10'           ; Turn On R/S bit
00DB   0085           00151         MOVWF   PORTA           ; Put it out to PortA
00DC   1706           00152         BSF     PORTB,LCD_E     ; Clock it out
00DD   1306           00153         BCF     PORTB,LCD_E     ;
00DE   082C           00154         MOVF    LCD_TMP,W       ; Get the lower nybble
00DF   390F           00155         ANDLW   H'0F'           ; Clear upper bits
00E0   3810           00156         IORLW   H'10'           ; Turn on R/S Bit
00E1   0085           00157         MOVWF   PORTA           ; Out to PORTA
00E2   1706           00158         BSF     PORTB, LCD_E    ; Clock it out
00E3   1306           00159         BCF     PORTB, LCD_E    ;
00E4   3002           00160         MOVLW   H'2'            ; Wait a bit
00E5   20E7           00161         CALL    DELAY
00E6   0008           00162         RETURN
                     00163        
                     00164 ;
                     00165 ; Delay Loop
                     00166 ;
                     00167 ; This function is designed to delay for 100uS times the number
                     00168 ; of times through the loop
                     00169 ; Once through :
                     00170 ;               1+91+2+1+2+1+2 = 100
                     00171 ;                  
                     00172 ; Twice through
                     00173 ;               1+91+2+1+1+2+96+1+2+1+2 = 200
                     00174 ;                            ******
                     00175 ; Thrice through
                     00176 ;               1+91+2+1+1+2+96+1+1+2+96+1+2+1+2 = 300
                     00177 ;                            ******** ******
                     00178 ; "N" times through (n * 100) cycles.
                     00179 ;
                     00180 ; NOTE: This will have to be changed when you change the
                     00181 ; frequency from 4Mhz, but for the LAB-X3 it works great!
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE  9
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

                     00182 ;
00E7                  00183 DELAY:
00E7   00AA           00184         MOVWF   DLY_CNT         ; Store delay count        (1)
                     00185         WAIT    91              ; Delay 95
                         M         list
00ED   28F3           00186         GOTO    D2_LOOP         ; Check to see if it was 1 (2)
00EE                  00187 D1_LOOP:
                     00188         WAIT    96              ;       (20)
                         M         list
00F3                  00189 D2_LOOP:        
00F3   03AA           00190         DECF    DLY_CNT,F       ; Subtract 1            (1)
00F4   0F2A           00191         INCFSZ  DLY_CNT,W       ; Check for underflow   (2)
00F5   28EE           00192         GOTO    D1_LOOP          ; Not zero so loop      (2)
00F6   0000           00193         NOP
00F7   0008           00194         RETURN        
                     00195
                     00196
                     00148 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                     00149 ;
                     00150                
00F8                  00151 MAIN:
00F8   0183           00152         CLRF    STATUS          ; Set Bank 0
00F9   0185           00153         CLRF    PORTA           ; Clear PortA
00FA   0186           00154         CLRF    PORTB           ; and clear PortB
00FB   3007           00155         MOVLW   H'07'           ; Make PortA Digital I/O
00FC   009F           00156         MOVWF   CMCON           ; By setting CMCON<0:3>
00FD   1683           00157         BSF     STATUS,RP0      ; Set Bank 1
00FE   0185           00158         CLRF    TRISA           ; Now A is all outputs
00FF   0186           00159         CLRF    TRISB           ; B all outputs
0100   1786           00160         BSF     TRISB,7         ; Button S1
0101   1586           00161         BSF     TRISB,3         ; CCP1 is also an input.
                     00162        
0102   3003           00163         MOVLW   B'0000011'      ; Set TMR0 prescaler to 256
0103   0081           00164         MOVWF   OPTION_REG      ; Store it in the OPTION register
0104   150C           00165         BSF     PIE1, CCP1IE    ; Enable interrupts from CCP1        
0105   0183           00166         CLRF    STATUS          ; Back to BANK 0
0106   3001           00167         MOVLW   B'00000001'     ; Enable Timer 1 1:1 Prescale
0107   0090           00168         MOVWF   T1CON
0108   3005           00169         MOVLW   B'00000101'     ; Capture mode rising edge
0109   0097           00170         MOVWF   CCP1CON
                     00171        
010A   168B           00172         BSF     INTCON, T0IE    ; Enable Timer 0 to interrupt
010B   170B           00173         BSF     INTCON, PEIE
010C   110B           00174         BCF     INTCON,T0IF     ; Reset flag that indicates interrupt
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 10
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

010D   178B           00175         BSF     INTCON, GIE     ; Enable interrupts
                     00176        
010E   1606           00177         BSF     PORTB,LED1      ; Turn On LED1
                     00178        
010F   30C8           00179         MOVLW   D'200'
0110   20E7           00180         CALL    DELAY
0111   20A0           00181         CALL    LCD_INIT
0112   1606           00182         BSF     PORTB,LED1
0113   0103           00183         CLRW
0114   00A4           00184         MOVWF   COUNTER
0115   00A5           00185         MOVWF   COUNTER+1
0116   00A2           00186         MOVWF   CAPTURE
0117   00A3           00187         MOVWF   CAPTURE+1
                     00188
                     00189        
                     00190                        
                     00191 ;
                     00192 ; Print out a simple message
                     00193 ;
0118                  00194 msg_loop:
                     00195        
                     00196         SENDMSG MSG1, MSG_NDX
 0000                    M         LOCAL   LOOP,MSG_EXIT
0118   0103               M         CLRW
0119   00A6               M         MOVWF   MSG_NDX
Error[113]  : Symbol not previously defined (MSG1)
011A   2000               M         CALL    MSG1
011B   20C1               M         CALL    LCD_CMD
011C                      M LOOP:
011C   0AA6               M         INCF    MSG_NDX,F
Error[113]  : Symbol not previously defined (MSG1)
011D   2000               M         CALL    MSG1
011E   39FF               M         ANDLW   H'FF'
011F   1903               M         SKPNZ
0120   2923               M         GOTO    MSG_EXIT
0121   20D7               M         CALL    LCD_CHAR
0122   291C               M         GOTO    LOOP
0123                      M MSG_EXIT:
                     00197        
0123   0822           00198         MOVF    CAPTURE,W
0124   00AD           00199         MOVWF   NUM
0125   0823           00200         MOVF    CAPTURE+1,W
0126   00AE           00201         MOVWF   NUM+1
                     00202        
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 11
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

0127   2057           00203         CALL    CVT_NUM
0128   308D           00204         MOVLW   H'8D'           ; Column 15  for 99999
0129   20C1           00205         CALL    LCD_CMD
012A   082F           00206         MOVF    NUM_STR,W
012B   20D7           00207         CALL    LCD_CHAR
012C   0830           00208         MOVF    NUM_STR+1,W
012D   20D7           00209         CALL    LCD_CHAR
012E   0831           00210         MOVF    NUM_STR+2,W
012F   20D7           00211         CALL    LCD_CHAR
0130   0832           00212         MOVF    NUM_STR+3,W
0131   20D7           00213         CALL    LCD_CHAR
0132   0833           00214         MOVF    NUM_STR+4,W
0133   20D7           00215         CALL    LCD_CHAR
0134   3075           00216         MOVLW   "u"
0135   20D7           00217         CALL    LCD_CHAR
0136   3053           00218         MOVLW   "S"
0137   20D7           00219         CALL    LCD_CHAR
                     00220        
                     00221         SENDMSG MSG2, MSG_NDX
 0000                    M         LOCAL   LOOP,MSG_EXIT
0138   0103               M         CLRW
0139   00A6               M         MOVWF   MSG_NDX
Error[113]  : Symbol not previously defined (MSG2)
013A   2000               M         CALL    MSG2
013B   20C1               M         CALL    LCD_CMD
013C                      M LOOP:
013C   0AA6               M         INCF    MSG_NDX,F
Error[113]  : Symbol not previously defined (MSG2)
013D   2000               M         CALL    MSG2
013E   39FF               M         ANDLW   H'FF'
013F   1903               M         SKPNZ
0140   2943               M         GOTO    MSG_EXIT
0141   20D7               M         CALL    LCD_CHAR
0142   293C               M         GOTO    LOOP
0143                      M MSG_EXIT:
0143   0824           00222         MOVF    COUNTER,W
0144   00AD           00223         MOVWF   NUM
0145   0825           00224         MOVF    COUNTER+1,W
0146   00AE           00225         MOVWF   NUM+1
                     00226        
0147   2057           00227         CALL    CVT_NUM
0148   30CD           00228         MOVLW   H'CD'           ; Column 15  for 99999
0149   20C1           00229         CALL    LCD_CMD
014A   082F           00230         MOVF    NUM_STR,W
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 12
LCD2 - Measuring a Pulse

LOC  OBJECT CODE     LINE SOURCE TEXT
 VALUE

014B   20D7           00231         CALL    LCD_CHAR
014C   0830           00232         MOVF    NUM_STR+1,W
014D   20D7           00233         CALL    LCD_CHAR
014E   0831           00234         MOVF    NUM_STR+2,W
014F   20D7           00235         CALL    LCD_CHAR
0150   0832           00236         MOVF    NUM_STR+3,W
0151   20D7           00237         CALL    LCD_CHAR
0152   0833           00238         MOVF    NUM_STR+4,W
0153   20D7           00239         CALL    LCD_CHAR
                     00240        
0154                  00241 wait_loop:        
0154   1C28           00242         BTFSS   GOT_ONE,0
0155   2954           00243         GOTO    $-1
0156   1028           00244         BCF     GOT_ONE,0
0157   30C8           00245         MOVLW   D'200'
0158   20E7           00246         CALL    DELAY
0159   30C8           00247         MOVLW   D'200'
015A   20E7           00248         CALL    DELAY
015B   0806           00249         MOVF    PORTB,W         ; Get port B
015C   3AFF           00250         XORLW   H'FF'           ; Toggle It
015D   3ACF           00251         XORLW   H'CF'           ; Revert it back
015E   0086           00252         MOVWF   PORTB           ; Now LED1 and LED2 are alternates
015F   2918           00253         GOTO    msg_loop
                     00254
                     00255         END        
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 13
LCD2 - Measuring a Pulse

SYMBOL TABLE
 LABEL                             VALUE

ADD16                            
ADEN                              00000003
BIN2ASCII                        
BRGH                              00000002
C                                 00000000
C1INV                             00000004
C1OUT                             00000006
C2INV                             00000005
C2OUT                             00000007
CAPTURE                           00000022
CAPTURE_HI                        00000023
CAPTURE_LO                        00000022
CCP1CON                           00000017
CCP1IE                            00000002
CCP1IF                            00000002
CCP1M0                            00000000
CCP1M1                            00000001
CCP1M2                            00000002
CCP1M3                            00000003
CCP1X                             00000005
CCP1Y                             00000004
CCPR1H                            00000016
CCPR1L                            00000015
CIS                               00000003
CM0                               00000000
CM1                               00000001
CM2                               00000002
CMCON                             0000001F
CMD_DELAY                         0000002B
CMIE                              00000006
CMIF                              00000006
COUNTER                           00000024
COUNTER_HI                        00000025
COUNTER_LO                        00000024
CREN                              00000004
CSRC                              00000007
CVT_NUM                           00000057
D1_LOOP                           000000EE
D2_LOOP                           000000F3
DC                                00000001
DEC16                            
DELAY                             000000E7
DLY_CNT                           0000002A
DM                                
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 14
LCD2 - Measuring a Pulse

SYMBOL TABLE
 LABEL                             VALUE

EEADR                             0000009B
EECON1                            0000009C
EECON2                            0000009D
EEDATA                            0000009A
EEIE                              00000007
EEIF                              00000007
F                                 00000001
FALL_EDGE                         00000041
FERR                              00000002
FSR                               00000004
GIE                               00000007
GOT_ONE                           00000028
INC16                            
INDF                              00000000
INTCON                            0000000B
INTE                              00000004
INTEDG                            00000006
INTF                              00000001
INTR_EXIT                         00000052
INTR_POLL                         0000002A
INTR_SVC                          00000025
IRP                               00000007
ISR_1                             00000036
ISR_2                             00000052
I_CNT                             0000004E
LCD_CHAR                          000000D7
LCD_CMD                           000000C1
LCD_E                             00000006
LCD_INIT                          000000A0
LCD_TMP                           0000002C
LEADING                           00000020
LEADING_HI                        00000021
LEADING_LO                        00000020
LED1                              00000004
LED2                              00000005
MAIN                              000000F8
MSG_NDX                           00000026
NOT_BO                            00000000
NOT_BOD                           00000000
NOT_BOR                           00000000
NOT_PD                            00000003
NOT_POR                           00000001
NOT_RBPU                          00000007
NOT_T1SYNC                        00000002
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 15
LCD2 - Measuring a Pulse

SYMBOL TABLE
 LABEL                             VALUE

NOT_TO                            00000004
NUM                               0000002D
NUM_STR                           0000002F
OERR                              00000001
OK_DELAY                          000000CA
OPTION_REG                        00000081
OSCF                              00000003
PCL                               00000002
PCLATH                            0000000A
PCON                              0000008E
PEIE                              00000006
PIE1                              0000008C
PIR1                              0000000C
PORTA                             00000005
PORTB                             00000006
PR2                               00000092
PS0                               00000000
PS1                               00000001
PS2                               00000002
PSA                               00000003
RBIE                              00000003
RBIF                              00000000
RCIE                              00000005
RCIF                              00000005
RCREG                             0000001A
RCSTA                             00000018
RD                                00000000
RP0                               00000005
RP1                               00000006
RX9                               00000006
RX9D                              00000000
SENDMSG                          
SPBRG                             00000099
SPEN                              00000007
SREN                              00000005
STATUS                            00000003
SUB16                            
SYNC                              00000004
T0CS                              00000005
T0IE                              00000005
T0IF                              00000002
T0SE                              00000004
T0_COUNT                          00000029
T1CKPS0                           00000004
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 16
LCD2 - Measuring a Pulse

SYMBOL TABLE
 LABEL                             VALUE

T1CKPS1                           00000005
T1CON                             00000010
T1OSCEN                           00000003
T2CKPS0                           00000000
T2CKPS1                           00000001
T2CON                             00000012
TMP_CHAR                          00000027
TMP_STATUS                        00000071
TMP_W                             00000070
TMR0                              00000001
TMR1CS                            00000001
TMR1H                             0000000F
TMR1IE                            00000000
TMR1IF                            00000000
TMR1L                             0000000E
TMR1ON                            00000000
TMR2                              00000011
TMR2IE                            00000001
TMR2IF                            00000001
TMR2ON                            00000002
TOUTPS0                           00000003
TOUTPS1                           00000004
TOUTPS2                           00000005
TOUTPS3                           00000006
TRISA                             00000085
TRISB                             00000086
TRMT                              00000001
TX9                               00000006
TX9D                              00000000
TXEN                              00000005
TXIE                              00000004
TXIF                              00000004
TXREG                             00000019
TXSTA                             00000098
VR0                               00000000
VR1                               00000001
VR2                               00000002
VR3                               00000003
VRCON                             0000009F
VREN                              00000007
VROE                              00000006
VRR                               00000005
W                                 00000000
WAIT                              
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 17
LCD2 - Measuring a Pulse

SYMBOL TABLE
 LABEL                             VALUE

WR                                00000001
WREN                              00000002
WRERR                             00000003
X                                 00000025
Z                                 00000002
_BODEN_OFF                        00003FBF
_BODEN_ON                         00003FFF
_CP_50                            00002BFF
_CP_75                            000017FF
_CP_ALL                           000003FF
_CP_OFF                           00003FFF
_DATA_CP_OFF                      00003FFF
_DATA_CP_ON                       00003EFF
_ER_OSC_CLKOUT                    00003FFF
_ER_OSC_NOCLKOUT                  00003FFE
_EXTCLK_OSC                       00003FEF
_HS_OSC                           00003FEE
_INTRC_OSC_CLKOUT                 00003FFD
_INTRC_OSC_NOCLKOUT               00003FFC
_LP_OSC                           00003FEC
_LVP_OFF                          00003F7F
_LVP_ON                           00003FFF
_MCLRE_OFF                        00003FDF
_MCLRE_ON                         00003FFF
_ONE_DIGIT                        
_PWRTE_OFF                        00003FFF
_PWRTE_ON                         00003FF7
_WDT_OFF                          00003FFB
_WDT_ON                           00003FFF
_XT_OSC                           00003FED
__16F628                          00000001
msg1                              00000005
msg2                              00000015
msg_loop                          00000118
util_inc                          00000000
wait_loop                         00000154
MPASM  5.03                       M-PULSE.ASM   6-15-2008  22:57:23         PAGE 18
LCD2 - Measuring a Pulse

MEMORY USAGE MAP ('X' = Used,  '-' = Unused)


0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ---------------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:   349
Program Memory Words Free:  1699


Errors   :     4
Warnings :     0 reported,     0 suppressed
Messages :     0 reported,     6 suppressed


ilker_32

Kodlar gayet normal hata falan almadan derleyebiliyorum. Eğer .hex lazım dersen atayım.

ipek

ilker hocam merak ettim derledim aynı hata mesajlarını aldım util.inc dosyasına gıcık kapmış orada msg etiketi yazar tarafından etkisiz hale
getirilmiş hex'ten çok lst dosyasını yollar iseniz hata nerden kaynaklanıyor onu görebiliriz...

murats123

Mpasm da case sensitive  sekmesini kaldırınca program hatasız derleniyor
fakat fakat devreyi yaptım sadece  üst satırdaki karekterler gözüküyor alt satırda bir şey  yok  yazı  da çıkmıyor isiste çalıştırdım aynı zamanda pic simulator ide programında da çalışıyor problem ne oabilir. Dosyalar linkte. Teşekkürler.


http://rapidshare.com/files/124228247/Period_Counter.rar.html