網上找的,PIC16F873A單片機eeprom 24C02-24C64數據抄寫程序,用MPLAB IDE編譯,報告一大堆錯誤,求助大蝦幫忙看看這個匯編程序到底錯在哪里?程序如下:
- ;****************I2C總線EPROM數據抄寫程序*******************
- TRISB EQU 86H ;
- PORTB EQU 06H ;
- #DEFINE SDA1 PORTB,2 ;
- #DEFINE SDA2 PORTB,3 ;
- #DEFINE SCL PORTB,1 ;
- #DEFINE SDAIO1 TRISB,2 ;
- #DEFINE SDAIO2 TRISB,3 ;
- #DEFINE SCLIO TRISB,1 ;
- TXBUF EQU 20H ;
- RXBUF EQU 21H ;
- BCOUNT EQU 22H ;
- LDZJCQ EQU 23H ;
- HGZJCQ EQU 24H ;
- TRISD EQU 88H ;
- PORTD EQU 08H ;
- TRISE EQU 89H ;
- PORTE EQU 09H ;
- ADCON1 EQU 9FH ;
- STATUS EQU 03H ;
- Z EQU 2 ;
- RP0 EQU 5 ;
- RP1 EQU 6 ;
- W EQU 0 ;
- F EQU 1 ;
- C EQU 0 ;
- ;*******************************************
- BCF STATUS,RP1 ;
- BSF STATUS,RP0 ;
- MOVLW 0x3F ;
- MOVWF TRISD ;
- MOVLW 0x06 ;
- MOVWF ADCON1 ;
- CLRF TRISE ;
- BCF STATUS,RP0 ;
- MOVLW 0x00 ;
- MOVWF PORTD ;
- MOVLW 0x00 ;
- MOVWF PORTE ;
- MOVLW 0x00 ;
- MOVWF PORTB ;
- CLRF LDZJCQ ;
- CLRF HGZJCQ ;
- ROMSJ CLRF RXBUF ;
- CLRF TXBUF ;
- CALL DCZZCX ;
- CALL XCZZCX ;
- BSF PORTE,0 ;
- JCEEP2ROM BTFSC PORTD,0 ;
- GOTO C02JCOK ;
- BTFSC PORTD,1 ;
- GOTO C04JCOK ;
- BTFSC PORTD,2 ;
- GOTO C08JCOK ;
- BTFSC PORTD,3 ;
- GOTO C16JCOK ;
- BTFSC PORTD,4 ;
- GOTO C32JCOK ;
- BTFSC PORTD,5 ;
- GOTO C64JCOK ;
- BSF PORTE,2 ;
- GOTO JCEEP2ROM ;
- C02JCOK BCF PORTE,2 ;
- MOVLW 11111111B ;
- XORWF LDZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO CXEEP2ROMOK ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C04JCOK BCF PORTE,2 ;
- XORWF HGZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO CXEEP2ROMOK ;
- INCF HGZJCQ,10000000B ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C08JCOK BCF PORTE,2 ;
- MOVLW 11111111B ;
- XORWF LDZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO C08HJCOK ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C08HJCOK MOVLW 11000000B ;
- XORWF HGZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO CXEEP2ROMOK ;
- INCF HGZJCQ,1000000B ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C16JCOK BCF PORTE,2 ;
- MOVLW 11111111B ;
- XORWF LDZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO C16HJCOK ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C16HJCOK MOVLW 11100000B ;
- XORWF HGZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO CXEEP2ROMOK ;
- INCF HGZJCQ,100000B ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C32JCOK BCF PORTE,2 ;
- MOVLW 11111111B ;
- XORWF LDZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO C32HJCOK ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C32HJCOK MOVLW 11110000B ;
- XORWF HGZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO CXEEP2ROMOK ;
- INCF HGZJCQ,10000B ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C64JCOK BCF PORTE,2 ;
- MOVLW 11111111B ;
- XORWF LDZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO C64HJCOK ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- C64HJCOK MOVLW 11111000B ;
- XORWF HGZJCQ,0 ;
- BTFSC STATUS,Z ;
- GOTO CXEEP2ROMOK ;
- INCF HGZJCQ,1000B ;
- INCF LDZJCQ,1 ;
- GOTO ROMSJ ;
- ;*******************************************************
- CXEEP2ROMOK BCF PORTE,0 ;
- BSF PORTE,1 ;
- GOTO CXEEP2ROMOK ;
- ;*************************************
- DCZZCX CALL DI2CSTAR ;
- DXFQD MOVLW 0xA0 ;
- MOVWF TXBUF ;
- CALL DCZFSQJDZ ;
- CALL DMPYDJC ;
- BTFSS STATUS,C ;
- GOTO MPYYD ;
- BSF PORTD,6 ;
- GOTO DXFQD ;
- MPYYD BCF PORTD,6 ;
- MPYYD2 BCF PORTD,6 ;
- MPYYD3 BCF PORTD,6 ;
- DMP1ZJ CALL DRDBYT ;
- CALL DMNACK ;
- DMPJS CALL DI2CSTOP ;
- RETURN ;
- ;***********************************
- DI2CSTAR BSF STATUS,RP0
- BCF SDAIO1
- BCF SCLIO
- BCF STATUS,RP0
- BSF SDA1
- BSF SCL
- BCF SDA1 ;
- BCF SCL
- RETURN ;
- ;*******************************************
- DCZFSQJDZ MOVLW 8
- MOVWF BCOUNT
- BSF STATUS,RP0
- BCF SDAIO1
- BCF STATUS,RP0
- DFQDWLP RLF TXBUF,F
- BTFSC STATUS,C
- GOTO DFQDWR1
- BCF SDA1 ;
- BCF TXBUF,0
- BSF SCL
- BCF SCL
- GOTO DFQDDONE32
- DFQDWR1 BSF SDA1 ;
- BSF TXBUF,0
- BSF SCL
- BCF SCL
- BCF SDA1
- DFQDDONE32 DECFSZ BCOUNT,F ;
- GOTO DFQDWLP
- RETURN ;
- ;******************************************************
- DMNACK BSF SDA1
- BSF STATUS,RP0
- BCF SDAIO1
- BCF STATUS,RP0
- BSF SCL
- NOP
- NOP
- BCF SCL
- BCF SDA1
- RETURN ;
- ;*******************************************
- DI2CSTOP BCF SDA1
- BSF STATUS,RP0
- BCF SDAIO1
- BCF STATUS,RP0
- BSF SCL
- NOP
- NOP
- BSF SDA1 ;
- NOP
- NOP
- RETURN ;
- ;***********************************************************
- XCZZCX CALL XI2CSTAR ;
- XXFQD MOVLW 0xA0 ;
- MOVWF TXBUF ;
- CALL XCZFSQJDZ ;
- CALL XMPYDJC ;
- BTFSS STATUS,C ;
- GOTO XMPYYD ;
- BSF PORTD,7 ;
- GOTO XXFQD ;
- XMPYYD BCF PORTD,7 ;
- XFEEPOROMDYDZ CALL XEEP2ROMDZJC ;
- MOVLW LDZJCQ ;
- MOVWF TXBUF ;
- CALL XCZFSQJDZ ;
- CALL XMPYDJC ;
- BTFSS STATUS,C ;
- GOTO XMPYYD2 ;
- BSF PORTD,7 ;
- GOTO XFEEPOROMDYDZ ;
- XMPYYD2 BCF PORTD,7 ;
- CXSJFS MOVWF RXBUF ;
- MOVWF TXBUF ;
- CALL XCZFSQJDZ ;
- CALL XMPYDJC ;
- BTFSS STATUS,C ;
- GOTO XMPYYD3 ;
- BSF PORTD,7 ;
- GOTO CXSJFS ;
- XMPYYD3 BCF PORTD,7 ;
- CALL XI2CSTOP ;
- RETURN ;
- ;*************************************************
- XI2CSTAR BSF STATUS,RP0
- BCF SDAIO2
- BCF SCLIO
- BCF STATUS,RP0
- BSF SDA2
- BSF SCL
- NOP
- NOP
- BCF SDA2 ;
- NOP
- NOP
- BCF SCL
- RETURN ;
- ;*******************************************
- XCZFSQJDZ MOVLW 8
- MOVWF BCOUNT
- BSF STATUS,RP0
- BCF SDAIO2
- BCF STATUS,RP0
- XFQDWLP RLF TXBUF,F
- BTFSC STATUS,C
- GOTO XFQDWR1
- BCF SDA2 ;
- BCF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- GOTO XFQDDONE32
- XFQDWR1 BSF SDA2 ;
- BSF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- BCF SDA2
- XFQDDONE32 DECFSZ BCOUNT,F ;
- GOTO XFQDWLP
- RETURN ;
- ;*************************************************
- XEEP2ROMDZJC BTFSC PORTD,0 ;
- GOTO XC02JC ;
- BTFSC PORTD,1 ;
- GOTO XC04JC ;
- BTFSC PORTD,2 ;
- GOTO XC08JC ;
- BTFSC PORTD,3 ;
- GOTO XC16JC ;
- BTFSC PORTD,4 ;
- GOTO XC32JC ;
- BTFSC PORTD,5 ;
- GOTO XC64JC ;
- BSF PORTE,2 ;
- GOTO XEEP2ROMDZJC ;
- XC02JC BCF PORTE,2 ;
- RETURN
- XC04JC BCF PORTE,2 ;
- MOVLW HGZJCQ ;
- MOVWF TXBUF ;
- MOVLW 1
- MOVWF BCOUNT
- BSF STATUS,RP0
- BCF SDAIO2
- BCF STATUS,RP0
- XHG04WLP RLF TXBUF,F
- BTFSC STATUS,C
- GOTO XHG04WR1
- BCF SDA2 ;
- BCF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- GOTO XHG04DONE32
- XHG04WR1 BSF SDA2 ;
- BSF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- BCF SDA2
- XHG04DONE32 DECFSZ BCOUNT,F ;
- GOTO XHG04WLP
- RETURN
- XC08JC BCF PORTE,2 ;
- MOVLW HGZJCQ ;
- MOVWF TXBUF ;
- MOVLW 2
- MOVWF BCOUNT
- BSF STATUS,RP0
- BCF SDAIO2
- BCF STATUS,RP0
- XHG08WLP RLF TXBUF,F
- BTFSC STATUS,C
- GOTO XHG08WR1
- BCF SDA2 ;
- BCF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- GOTO XHG08DONE32
- XHG08WR1 BSF SDA2 ;
- BSF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- BCF SDA2
- XHG08DONE32 DECFSZ BCOUNT,F ;
- GOTO XHG08WLP
- RETURN
- XC16JC BCF PORTE,2 ;
- MOVLW HGZJCQ ;
- MOVWF TXBUF ;
- MOVLW 3
- MOVWF BCOUNT
- BSF STATUS,RP0
- BCF SDAIO2
- BCF STATUS,RP0
- XC32JC BCF PORTE,2 ;
- MOVLW HGZJCQ ;
- MOVWF TXBUF ;
- MOVLW 4
- MOVWF BCOUNT
- BSF STATUS,RP0
- BCF SDAIO2
- BCF STATUS,RP0
- XHG32WLP RLF TXBUF,F
- BTFSC STATUS,C
- GOTO XHG32WR1
- BCF SDA2 ;
- BCF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- GOTO XHG32DONE32
- XHG32WR1 BSF SDA2 ;
- BSF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- BCF SDA2
- XHG32DONE32 DECFSZ BCOUNT,F ;
- GOTO XHG32WLP
- RETURN
- XHG64WLP RLF TXBUF,F
- BTFSC STATUS,C
- GOTO XHG64WR1
- BCF SDA2 ;
- BCF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- GOTO XHG64DONE32
- XHG64WR1 BSF SDA2 ;
- BSF TXBUF,0
- BSF SCL
- NOP
- NOP
- BCF SCL
- BCF SDA2
- XHG64DONE32 DECFSZ BCOUNT,F ;
- GOTO XHG64WLP
- RETURN ;
- ;*******************************************
- XI2CSTOP BCF SDA2
- BSF STATUS,RP0
- BCF SDAIO2
- BCF STATUS,RP0
- BSF SCL
- NOP
- NOP
- BSF SDA2 ;
- NOP
- NOP
- RETURN ;
- END
- ;***************程序結束***********************
復制代碼
|