程序如下:<br /><br /> LIST P=18F248<br /> INCLUDE "P18F248.INC"<br /> CAN_FLAG EQU 0x20<br /> ORG 0x0000<br /> GOTO MAIN<br /> ORG 0x0008<br /> GOTO CAN_INTSERVE<br /> ORG 0x30<br />INITIAL<br /> MOVLW 0x08<br /> MOVWF TRISB<br /> MOVLW 0x80<br /> MOVWF CANCON<br />WAIT <br /> BTFSS CANSTAT,OPMODE2<br /> GOTO WAIT<br /> MOVLW 0x01<br /> MOVWF BRGCON1<br /> MOVLW 0x90<br /> MOVWF BRGCON2<br /> MOVLW 0x42<br /> MOVWF BRGCON3<br /> MOVLW 0x03<br /> MOVWF TXB0CON ;???????为什么写不进去???<br /> MOVLW 0xFF <br /> MOVWF TXB0SIDH ;?????<br /> MOVLW 0xE0<br /> MOVWF TXB0SIDL ;?????<br /><br /> MOVLW 0x08<br /> MOVWF TXB0DLC ;???<br /> MOVLW 0x0F<br /> MOVWF BSR<br /><br /> MOVLW 0x00<br /> MOVWF TXB0D0<br /> MOVLW 0x01<br /> MOVWF TXB0D1<br /> MOVLW 0x02<br /> MOVWF TXB0D2<br /> MOVLW 0x03<br /> MOVWF TXB0D3<br /> MOVLW 0x04<br /> MOVWF TXB0D4<br /> MOVLW 0x05<br /> MOVWF TXB0D5<br /> MOVLW 0x06<br /> MOVWF TXB0D6<br /> MOVLW 0x07<br /> MOVWF TXB0D7<br /> <br /> MOVLW 0xFF<br /> MOVWF RXB0SIDH<br /> MOVLW 0xE0<br /> MOVWF RXB0SIDL<br /> MOVLW 0x20<br /> MOVWF RXB0CON<br /> <br /> MOVLW 0x08<br /> MOVWF RXB0DLC<br /> MOVLW 0x00<br /> MOVWF RXB0D0<br /> MOVLW 0x00<br /> MOVWF RXB0D1<br /> MOVLW 0x00<br /> MOVWF RXB0D2<br /> MOVLW 0x00<br /> MOVWF RXB0D3<br /> MOVLW 0x00<br /> MOVWF RXB0D4<br /> MOVLW 0x00<br /> MOVWF RXB0D5<br /> MOVLW 0x00<br /> MOVWF RXB0D6<br /> MOVLW 0x00<br /> MOVWF RXB0D7<br /><br /> MOVLW 0xFF<br /> MOVWF RXF0SIDH<br /> MOVLW 0xE0<br /> MOVWF RXF0SIDL<br /> MOVLW 0x00<br /> MOVWF RXM0SIDH<br /> MOVLW 0x00<br /> MOVWF RXM0SIDL<br /><br /> MOVLW 0x00<br /> MOVWF CIOCON<br /> <br /> MOVLW 0x40<br /> MOVWF CANCON<br /><br /><br />WAIT2<br /> MOVF CANSTAT<br /> ANDLW 0xE0<br /> SUBLW 0x40<br /> BTFSS STATUS,Z<br /> GOTO WAIT2<br /><br /> MOVLW 0x00<br /> MOVWF PIR3<br /> MOVLW 0x01<br /> MOVWF PIE3<br /> MOVLW 0x01<br /> MOVWF IPR3<br /> RETURN<br /><br />CAN_INTSERVE<br />WAIT3<br /> BTFSS PIR3,RXB0IF<br /> GOTO ERR_EXIT<br /> BSF CAN_FLAG,0<br /> BCF PIR3,RXB0IF<br /> BCF RXB0CON,RXFUL<br />ERR_EXIT<br /> RETFIE<br /><br />MAIN NOP <br /> CLRF INTCON<br /> CALL INITIAL<br /> MOVLW 0xC0<br /> MOVWF INTCON<br />LOOP<br /> BSF TXB0CON,TXREQ<br /><br />WAITE4 <br /> BTFSS PIR3,TXB0IF<br /> GOTO WAITE4<br />WAITE5<br /> BTFSS CAN_FLAG,0<br /> GOTO WAITE5<br /> BCF CAN_FLAG,0<br /> BCF TXB0CON,TXREQ<br /> INCF RXB0D0,0<br /> MOVWF TXB0D0<br /> INCF RXB0D1,0<br /> MOVWF TXB0D1<br /> INCF RXB0D2,0<br /> MOVWF TXB0D2<br /> INCF RXB0D3,0<br /> MOVWF TXB0D3<br /> INCF RXB0D4,0<br /> MOVWF TXB0D4<br /> INCF RXB0D5,0<br /> MOVWF TXB0D5<br /> INCF RXB0D6,0<br /> MOVWF TXB0D6<br /> INCF RXB0D7,0<br /> MOVWF TXB0D7<br /> GOTO LOOP<br /> RETURN<br /> END<br /><br /><br /><br />出现的问题如下:<br />TXB0CON<br />TXB0SIDH<br />TXB0SIDL<br />TXB0DLC<br />这四个寄存器一直是初始值,写不进新值,很困惑,不知各位遇到过这样的问题没有.. |
|