Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

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

Status
Not open for further replies.

aehandasa

Newbie level 6
Joined
Apr 12, 2005
Messages
11
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,346
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
 

+pic16f84 +pic16f628 +porta +problems

Please, experts give me just a starting point.
 

What error message did u got?
 

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.
 

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
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top