electronics forum

Rules | Recent posts | topic RSS | Search | Register  | Log in

This code [for PIC16F84] doesn't work with PIC16F628(A) ??!!


Post new topic  Reply to topic    EDAboard.com Forum Index -> Microcontrollers -> This code [for PIC16F84] doesn't work with PIC16F628(A) ??!!
Author Message
aehandasa



Joined: 12 Apr 2005
Posts: 17


Post26 Dec 2008 3:26   

pic 16f84 long delay


Hi,

I'm a microcontroller newbie, i found this code but it's for PIC16F48. I tested it in the circuit with 16F84 and worked fine, but when i tested it with 16F628 or 16F628A, i wondered for this because what i know that the two PICs can be replaced with each other with no problems.

please, tell me what the reason of non workin for 16F628(A).

Thnx


here's the code:



Code:

   LIST    P = 16F84,  F = INHX8M, n = 66

        PIC84   equ     H'03FF'


;==========================================================================
;
;       Register Definitions
;
;==========================================================================

W                            EQU     H'0000'
F                            EQU     H'0001'

;----- Register Files------------------------------------------------------

INDF                         EQU     H'0000'
TMR0                         EQU     H'0001'
PCL                          EQU     H'0002'
STATUS                       EQU     H'0003'
FSR                          EQU     H'0004'
PORTA                        EQU     H'0005'
PORTB                        EQU     H'0006'
EEDATA                       EQU     H'0008'
EEADR                        EQU     H'0009'
PCLATH                       EQU     H'000A'
INTCON                       EQU     H'000B'


OPTION_REG                   EQU     H'0081'
TRISA                        EQU     H'0085'
TRISB                        EQU     H'0086'
EECON1                       EQU     H'0088'
EECON2                       EQU     H'0089'

;----- STATUS Bits --------------------------------------------------------


IRP                          EQU     H'0007'
RP1                          EQU     H'0006'
RP0                          EQU     H'0005'
NOT_TO                       EQU     H'0004'
NOT_PD                       EQU     H'0003'
Z                            EQU     H'0002'
DC                           EQU     H'0001'
C                            EQU     H'0000'

;----- INTCON Bits --------------------------------------------------------

GIE                          EQU     H'0007'
EEIE                         EQU     H'0006'
T0IE                         EQU     H'0005'
INTE                         EQU     H'0004'
RBIE                         EQU     H'0003'
T0IF                         EQU     H'0002'
INTF                         EQU     H'0001'
RBIF                         EQU     H'0000'

;----- OPTION Bits --------------------------------------------------------

NOT_RBPU                     EQU     H'0007'
INTEDG                       EQU     H'0006'
T0CS                         EQU     H'0005'
T0SE                         EQU     H'0004'
PSA                          EQU     H'0003'
PS2                          EQU     H'0002'
PS1                          EQU     H'0001'
PS0                          EQU     H'0000'

;----- EECON1 Bits --------------------------------------------------------

EEIF                         EQU     H'0004'
WRERR                        EQU     H'0003'
WREN                         EQU     H'0002'
WR                           EQU     H'0001'
RD                           EQU     H'0000'

;==========================================================================
;
;       RAM Definition
;
;==========================================================================

        __MAXRAM H'AF'
        __BADRAM H'07', H'30'-H'7F', H'87'

;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_CP_ON                       EQU     H'3FEF'
_CP_OFF                      EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FFF'
_PWRTE_OFF                   EQU     H'3FF7'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LP_OSC                      EQU     H'3FFC'
_XT_OSC                      EQU     H'3FFD'
_HS_OSC                      EQU     H'3FFE'
_RC_OSC                      EQU     H'3FFF'




;----------- USER REGISTERS ----------------------------------------------
POINTER                      EQU     H'000C'
HCOUNT                       equ     H'000D'
LCOUNT              equ     H'000E'               
TEMP1                        EQU     H'002B'
TEMP2                        EQU     H'002C'
TEMP3                        EQU     H'002D'
ZAMAN                        equ     H'002E'
DISP                         EQU     H'002F'

msb             equ     0x29            ;general delay register
lsb             equ     0x2A            ;general delay register
FLCOUNT         equ     H'0027'         ;flas counter
WAITC           equ     H'0026'         ;wait and run
SPECIAL         equ     H'0025'          ;special function register
COUNT1          equ     H'0022'         ;system timer counter
COUNT2          equ     H'0021'         ;system flas timer counter
SYSFUNC         equ     H'0020'         ;system control register

LINE1           EQU     H'0010'
LINE2           EQU     H'0011'
LINE3           EQU     H'0012'
LINE4           EQU     H'0013'
LINE5           EQU     H'0014'
LINE6           EQU     H'0015'
LINE7           EQU     H'0016'
LINE8           EQU     H'0017'
LINE9           EQU     H'0018'
LINE10          EQU     H'0019'
LINE11          EQU     H'001A'
LINE12          EQU     H'001B'
LINE13          EQU     H'001C'
LINE14          EQU     H'001D'
LINE15          EQU     H'001E'
LINE16          EQU     H'001F'
SATIRLAR        EQU     H'0023'


; Display organization
;
;
ZERO    EQU     B'00111111'
ONE     EQU     B'00000110'
TWO     EQU     B'01011011'
THREE   EQU     B'01001111'
FOUR    EQU     B'01100110'
FIVE    EQU     B'01101101'
SIX     EQU     B'01111101'
SEVEN   EQU     B'00000111'
EIGHT   EQU     B'01111111'
NINE    EQU     B'01101111'
BLANK   EQU     B'00000000'
;
DISP1   equ   B'11111110'
DISP2   equ   B'11111101'   ; Mapping of Active Display Selection (PORT_A)
;DISP3   equ     B'11111011'
;DISP4   equ     B'11110111'
DISPOFF   equ   H'FF'
SWITCH   equ   B'00001110'   ; Activate RB1-3 for switch inputs     


;
;
;

START
        call    SETCPUPORTSTATUS
        call    STEP_CLEAR

KAYANYAZI_1

         MOVLW  H'0000'
         MOVWF  SATIRLAR

KAYANYAZI_2
        INCFSZ  SATIRLAR
        GOTO    KAYANYAZI_3
        GOTO    KAYANYAZI_4

KAYANYAZI_3
        goto    KAYANYAZI_5

KAYANYAZI_4
        goto    KAYANYAZI_1

KAYANYAZI_5

        MOVLW   H'00'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE1

        MOVLW   H'01'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE2

        MOVLW   H'02'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE3

        MOVLW   H'03'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE4

        MOVLW   H'04'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE5

        MOVLW   H'05'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE6

        MOVLW   H'06'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE7

        MOVLW   H'07'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE8

        MOVLW   H'08'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE9

        MOVLW   H'09'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE10

        MOVLW   H'0A'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE11

        MOVLW   H'0B'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE12

        MOVLW   H'0C'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE13

        MOVLW   H'0D'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE14

        MOVLW   H'0E'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE15

        MOVLW   H'0F'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE16

        MOVLW   D'15'
        MOVWF   ZAMAN
        CALL    STEP_DELAY

        goto    KAYANYAZI_2
;****************************************************************************



;        org     h'0100'
FINDSHOW
;KIRIKKALE ENDUSTRI MESLEK LISESI ELEKTRONIK BOLUMU
showdata
        addwf   PCL,1
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
                                 
        retlw   B'00000001'     ;
        retlw   B'00000001'     ;
        retlw   B'01111111'     ;
        retlw   B'00000001'     ;
        retlw   B'00000001'     ;       
        retlw   B'00000000'
        retlw   B'00111111'     ;
        retlw   B'01000000'     ;
        retlw   B'01000000'     ;
        retlw   B'01000000'     ;
        retlw   B'00111111'     ;       
        retlw   B'00000000'
        retlw   B'01111111'     ;
        retlw   B'00001001'     ;
        retlw   B'00011001'     ;
        retlw   B'00101001'     ;
        retlw   B'01000110'     ;       
        retlw   B'00000000'
        retlw   B'01111111'     ;
        retlw   B'01001001'     ;
        retlw   B'01001001'     ;
        retlw   B'01001101'     ;
        retlw   B'00110110'     ;       
        retlw   B'00000000'
        retlw   B'00111110'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;       
        retlw   B'00111110'     ;       
        retlw   B'00000000'
        retlw   B'00000000'
        retlw   B'00000000'
        retlw   B'00000000'
        retlw   B'00000000'
        retlw   B'00000000'
        retlw   B'00000000'


        retlw   B'01111111'     ;
        retlw   B'01001001'     ;
        retlw   B'01001001'     ;
        retlw   B'01001001'     ;
        retlw   B'01000001'     ;       
        retlw   B'00000000'
        retlw   B'01111111'     ;
        retlw   B'01000000'     ;
        retlw   B'01000000'     ;
        retlw   B'01000000'     ;
        retlw   B'01000000'     ;       
        retlw   B'00000000'
        retlw   B'01111111'     ;
        retlw   B'01001001'     ;
        retlw   B'01001001'     ;
        retlw   B'01001001'     ;       
        retlw   B'01000001'     ;
        retlw   B'00000000'
        retlw   B'00111110'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;
        retlw   B'00100010'     ;       
        retlw   B'00000000'
        retlw   B'00000001'     ;
        retlw   B'00000001'     ;
        retlw   B'01111111'     ;   
        retlw   B'00000001'     ;
        retlw   B'00000001'     ;
       
        retlw   B'00000000'
        retlw   B'01111111'     ;
        retlw   B'00001001'     ;
        retlw   B'00011001'     ;
        retlw   B'00101001'     ;
        retlw   B'01000110'     ;       
        retlw   B'00000000'
        retlw   B'00111110'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;
        retlw   B'00111110'     ;       
        retlw   B'00000000'
        retlw   B'01111111'     ;
        retlw   B'00000100'     ;
        retlw   B'00001000'     ;
        retlw   B'00010000'     ;
        retlw   B'01111111'     ;       
        retlw   B'00000000'
        retlw   B'01000001'     ;
        retlw   B'01111111'     ;       
        retlw   B'01000001'     ;
        retlw   B'00000000'
        retlw   B'00111110'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;
        retlw   B'01000001'     ;
        retlw   B'00100010'     ;       
        retlw   B'00000000'
        retlw   B'00100110'     ;
        retlw   B'01001001'     ;
        retlw   B'01001001'     ;   
        retlw   B'01001001'     ;
        retlw   B'00110010'     ;





        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;
        retlw   B'00000000'     ;

return

;****************************************************************************
STEP_CLEAR
        movlw   B'00000000'
        movwf   LINE1
        movwf   LINE2
        movwf   LINE3
        movwf   LINE4
        movwf   LINE5
        movwf   LINE6
        movwf   LINE7
        movwf   LINE8
        movwf   LINE9
        movwf   LINE10
        movwf   LINE11
        movwf   LINE12
        movwf   LINE13
        movwf   LINE14
        movwf   LINE15
        movwf   LINE16

        MOVLW   D'50'
        MOVWF   ZAMAN
        CALL    STEP_DELAY
RETURN
;****************************************************************************


;****************************************************************************
STEP_DELAY
        clrwdt
       ;call    DELAYSYS                        ;20 msec delay
        CALL    RUNTIME
        decfsz  ZAMAN
        goto    STEP_DELAY
return
;****************************************************************************



;****************************************************************************
RUNTIME
;***************************************************************************

;***************************************************************************
WRITEDISP
        ;test
        ;call    delay20
        ;test

        clrwdt
        movlw   D'0'
        movwf   PORTA
        movf    LINE1,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'1'
        movwf   PORTA
        movf    LINE2,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'2'
        movwf   PORTA
        movf    LINE3,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'3'
        movwf   PORTA
        movf    LINE4,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'4'
        movwf   PORTA
        movf    LINE5,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'5'
        movwf   PORTA
        movf    LINE6,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'6'
        movwf   PORTA
        movf    LINE7,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'7'
        movwf   PORTA
        movf    LINE8,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'8'
        movwf   PORTA
        movf    LINE9,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'9'
        movwf   PORTA
        movf    LINE10,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'10'
        movwf   PORTA
        movf    LINE11,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'11'
        movwf   PORTA
        movf    LINE12,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'12'
        movwf   PORTA
        movf    LINE13,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'13'
        movwf   PORTA
        movf    LINE14,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'14'
        movwf   PORTA
        movf    LINE15,0
        movwf   PORTB
        call    delay1

        clrwdt
        movlw   D'15'
        movwf   PORTA
        movf    LINE16,0
        movwf   PORTB
        call    delay1

        movlw   H'00'
        movwf   PORTB
        RETURN
;***************************************************************************

;***************************************************************************
SETCPUPORTSTATUS
        bsf     STATUS,RP0
        movlw   H'00'
        movwf   TRISB           ;PORTB pins : O-O-O-O-O-O-O-O
        movlw   B'00000000'
        movwf   TRISA           ;PORTA pins : X-X-X-O-O-O-O-O
        bcf     STATUS,RP0
        movlw   H'00'   
        movwf   PORTA
        movwf   PORTB
RETURN
;***************************************************************************


;****************************************************************************
;*-     Delay Routines                                                     -*
;****************************************************************************
vlong   
   movlw   0xff            ;very long delay, approx 200msec
        movwf   msb
        goto    d1
DELAYSYS                        ;20 msec delay
        movlw   .26
        movwf   msb
        CLRWDT
        CALL    RUNTIME
        goto    d1
delay20                         ;20 msec delay
        movlw   .26
        movwf   msb
        goto    d1
delay16                         ;16 msec delay
        movlw   .21
        movwf   msb
        goto    d1
delay1                          ;approx 750nsec delay
        movlw   .1     
        movwf   msb
d1      movlw   0xff
        movwf   lsb
d2      decfsz  lsb,F
        goto    d2
        decfsz  msb,F
        goto    d1
        return
;****************************************************************************



FINISH
        goto    START

end
 
 
Back to top
aehandasa



Joined: 12 Apr 2005
Posts: 17


Post26 Dec 2008 19:10   

+pic16f84 +pic16f628 +porta +problems


Please, experts give me just a starting point.
Back to top
coolyu



Joined: 09 Nov 2008
Posts: 1


Post26 Dec 2008 20:24   

This code [for PIC16F84] doesn't work with PIC16F628(A) ??!!


What error message did u got?
Back to top
aehandasa



Joined: 12 Apr 2005
Posts: 17


Post27 Dec 2008 3:12   

This code [for PIC16F84] doesn't work with PIC16F628(A) ??!!


There is no error msgs, but this circuit is for displaying running text on led matrix.

The problem is when using (628), the required messege not displayed correctly and no messege could be understod.
Back to top
Google
AdSense
Google Adsense




Post27 Dec 2008 3:12   

Ads




Back to top
erio



Joined: 26 Feb 2008
Posts: 40
Location: Indonesia


Post27 Dec 2008 6:19   

Re: This code [for PIC16F84] doesn't work with PIC16F628(A)


change to 16F628A in assembler program when assembling the code also change the LIST to P = 16F628(A)..

hope this can sove ur problem.. CMIIW
Back to top
Arabic versionBulgarian versionCatalan versionCzech versionDanish versionGerman versionGreek versionEnglish versionSpanish versionFinnish versionFrench versionHindi versionCroatian versionIndonesian versionItalian versionHebrew versionJapanese versionKorean versionLithuanian versionLatvian versionDutch versionNorwegian versionPolish versionPortuguese versionRomanian versionRussian versionSlovak versionSlovenian versionSerbian versionSwedish versionTagalog versionUkrainian versionVietnamese versionChinese version
Post new topic  Reply to topic    EDAboard.com Forum Index -> Microcontrollers -> This code [for PIC16F84] doesn't work with PIC16F628(A) ??!!
Page 1 of 1 All times are GMT + 1 Hour
Similar topics:
Frequency Counter for PIC16F84 or PIC16F628 (8)
PIC16F84 Hex reverse engineering for PIC16F628 (11)
Code doesn't work because of a new variable (16)
what compiler work with this c code? (4)
Opamp layout doesn't work with parasitic R included (7)
Scollmouse doesn't work with Orcad and Win XP (2)
Doesn't work with mm only mills in Capture CIS (1)
reason why ds1307 doesn't work with crystal 32768? (5)
the gui for hspice doesn't work (6)
I want a model for this touch screen to work with proteus (3)


Abuse || Administrator || Moderators || Support us || sitemap
topic RSS