请大家帮我看看读写24C01的程序错在哪里?

[复制链接]
4203|5
 楼主| 帮助 发表于 2007-2-7 11:40 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;现在的现象是:第1次按RB0能正常写,按RB1也能正常读,但是按复位键后就再也不能正常读跟写了,必须重新上电才可以。<br />&nbsp;&nbsp;&nbsp;&nbsp;源程序如下,烦请大家给我指点下<br />;实验目的:熟悉MSSP通信协议。<br />;当按键RB0按下时,把6个连续的数据写入到6个连续的单元内<br />;写完成后数码管显示单个0,做为标志位<br />;当按键RB1按下后读取EEPROM连续六个单元<br />;读取结果送6位数码管显示<br />;硬件要求:拨码开关S2、S5、S6全部置ON,<br />#include&ltp16f877a.inc&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;包含头文件<br />&nbsp;ERRORLEVEL&nbsp;-302<br />SDA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;数据I/O<br />SCL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;时钟I/O<br />DATA_W&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;75H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;发送数据寄存器<br />DATA_R&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;76H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;接受数据寄存器<br />DL1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;77H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;延时用<br />DL2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;78H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;延时用<br />ADDRESS&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;0AH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;待写入数据的EEPROM地址<br />VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;待写入EEPROM中的数据<br />COUNT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;20H<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;复位入口地址<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;MAIN<br /><br />TABLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDWF&nbsp;&nbsp;&nbsp;PCL,1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;PC值加上偏移地址<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0C0H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;0的编码(公阳极数码管)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0F9H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;1的编码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0A4H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;2的编码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0B0H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;3的编码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;99H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;4的编码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;92H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;5的编码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;082H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;6<br />MAIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;ICD所需要的空指令<br />&nbsp;&nbsp;&nbsp;&nbsp;CLRF&nbsp;&nbsp;&nbsp;PCLATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;保证程序在页面0内<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;INIT_I2C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用IIC初始化程序<br />&nbsp;&nbsp;&nbsp;&nbsp;CLRF&nbsp;&nbsp;&nbsp;DATA_R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清0接受数据寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;VALUE<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;DATA_W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;待写入数据送寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;BTFSC&nbsp;&nbsp;PORTB,0<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;$+7<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;WRITE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用写EEPROM子程序<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;0C0H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;0FEH<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;PORTA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;显示0<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;$<br />&nbsp;&nbsp;&nbsp;;&nbsp;CALL&nbsp;&nbsp;&nbsp;DELAY10MS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;延时一定时间,保证写EEPROM能完成<br />&nbsp;&nbsp;&nbsp;&nbsp;BTFSC&nbsp;&nbsp;PORTB,1<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;MAIN<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;READ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用读EEPROM程序<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;DISPLAY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用显示程序<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;$-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />;***********************写EEPROM程序****************************<br />;入口参数:DATA_W<br />;出口参数:无<br />WRITE<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;I2C_IDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;判断是否空闲<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;SSPCON2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,SEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;建立起动信号<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待起动完成<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;$-1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;0A0H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;发送控制字节<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;WRTACKTEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待应答信号<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;SSPSTAT<br />&nbsp;&nbsp;&nbsp;&nbsp;BTFSC&nbsp;&nbsp;&nbsp;SSPSTAT,BF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;检测寄存器满标志<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;$-1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;ADDRESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;待写入数据的EEPROM地址<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;WRTACKTEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待应答信号<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CLRF&nbsp;&nbsp;&nbsp;&nbsp;STATUS<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;6H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;COUNT<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;SSPSTAT<br />&nbsp;&nbsp;&nbsp;&nbsp;BTFSC&nbsp;&nbsp;&nbsp;SSPSTAT,BF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;检测寄存器满标志<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;$-1<br />WRITE_1<br />&nbsp;&nbsp;&nbsp;&nbsp;INCF&nbsp;&nbsp;&nbsp;&nbsp;DATA_W,1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;DATA_W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;待写入的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;WRTACKTEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待应答信号<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />&nbsp;&nbsp;&nbsp;&nbsp;DECFSZ&nbsp;&nbsp;COUNT,1<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;WRITE_1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;SSPCON2<br />&nbsp;&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,PEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;建立停止信号<br />&nbsp;&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待信号完成<br />&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;程序返回<br />&nbsp;<br />;***********************读EEPROM程序****************************<br />;入口参数:无<br />;出口参数:DATA_R<br />READ<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;60H<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;FSR<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;6<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;COUNT<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C_IDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用总线空闲检测程序<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPCON2<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,SEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;建立起动信号<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待信号完成<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-1<br /><br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0A0H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;发送控制信号<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRTACKTEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用应答检测程序<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;ADDRESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;待读取数据的EEPROM地址<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRTACKTEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用应答信号检测程序<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用延时程序<br /><br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C_IDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;调用总线空闲检测程序<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPCON2<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,RSEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;建立重起信号<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待信号完成<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-1<br /><br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0A1H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;发送控制字节<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRTACKTEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待应答信号<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />READ_1&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPCON2<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,RCEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;启动接收数据<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1&nbsp;<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待数据接收完成<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-1<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPBUF<br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;&nbsp;SSPBUF<br />&nbsp;;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;DATA_R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;保存数据到指定接收寄存器<br />&nbsp;&nbsp;&nbsp;CLRF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STATUS<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;INDF<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPCON2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,ACKDT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;应答信号置1<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,ACKEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;建立一个应答信号<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待信号完成<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-1<br />&nbsp;&nbsp;&nbsp;INCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FSR,1<br />&nbsp;&nbsp;&nbsp;DECFSZ&nbsp;&nbsp;&nbsp;COUNT,1<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READ_1<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPCON2<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2,PEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;建立一个停止信号<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待信号完成<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-1<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />&nbsp;&nbsp;&nbsp;RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;程序返回<br /><br />;********************总线初始化程序***************************<br />INIT_I2C<br />&nbsp;&nbsp;&nbsp;CLRF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STATUS<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0FFH<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;ADCON1<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;07H<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;ADCON1<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;TRISC<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0FFH<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;TRISB<br />&nbsp;&nbsp;&nbsp;CLRF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISA<br />&nbsp;&nbsp;&nbsp;CLRF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISD<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISC,SDA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISC,SCL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设置SDA跟SCL为输入,将由IIC自动控制<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPADD<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;9<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;SSPADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;波特率设置为100kbd<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPSTAT,6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;选定输入电平遵循IIC规范<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSPSTAT,7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;关闭转换率控制<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPCON<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;38H<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;SSPCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设定控制寄存器<br />&nbsp;&nbsp;&nbsp;RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;程序返回<br />;*********************应答信号检测程序************************<br />WRTACKTEST<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;PIR1<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志位<br />&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;&nbsp;&nbsp;PIR1,SSPIF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;判断中断标志位是否为1<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待中断标志位为1<br />&nbsp;&nbsp;&nbsp;RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;程序返回&nbsp;&nbsp;&nbsp;<br /><br />;*********************总线空闲判断程序*************************<br />I2C_IDLE<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPSTAT<br />&nbsp;&nbsp;&nbsp;BTFSC&nbsp;&nbsp;&nbsp;&nbsp;SSPSTAT,R_W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;检测是否在发送过程中<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;等待发送完成<br />&nbsp;&nbsp;&nbsp;BANKSEL&nbsp;&nbsp;SSPCON2<br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;&nbsp;SSPCON2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;读取SSPCON2的值&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;ANDLW&nbsp;&nbsp;&nbsp;&nbsp;1FH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;去掉高3位<br />&nbsp;&nbsp;&nbsp;BTFSS&nbsp;&nbsp;&nbsp;&nbsp;STATUS,Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;5个状态位是否全为0<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;否,总线忙,循环检测<br />&nbsp;&nbsp;&nbsp;RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;程序返回<br /><br />;**********************延时程序******************************<br />DELAY10MS<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;0CH<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;DL1<br />DELAY2<br />&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;0FFH<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;DL2<br />DELAY1<br />&nbsp;&nbsp;&nbsp;DECFSZ&nbsp;&nbsp;DL2,1<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;DELAY1<br />&nbsp;&nbsp;&nbsp;DECFSZ&nbsp;&nbsp;DL1,1<br />&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;DELAY2<br />&nbsp;&nbsp;&nbsp;RETURN<br /><br />DISPLAY<br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;60H<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;TABLE<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,0<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,0<br /><br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;61H<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;TABLE<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,1<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,1<br /><br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;62H<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;TABLE<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,2<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,2<br /><br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;63H<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;TABLE<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,3<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,3<br /><br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;64H<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;TABLE<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,4<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,4<br /><br />&nbsp;&nbsp;&nbsp;MOVFW&nbsp;&nbsp;&nbsp;65H<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;TABLE<br />&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;PORTD<br />&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,5<br />&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS<br />&nbsp;&nbsp;&nbsp;BSF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA,5<br />&nbsp;&nbsp;&nbsp;RETURN<br /><br />;************************************************************<br />&nbsp;&nbsp;&nbsp;END&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;程序结束<br />&nbsp;&nbsp;&nbsp;<br />
 楼主| 帮助 发表于 2007-2-7 11:48 | 显示全部楼层

错误的现象

调试时发现程序死在“建立启动信号”处
yewuyi 发表于 2007-2-7 13:35 | 显示全部楼层

请告诉我你的24C01全部的编号

请把型号全部列出来。<br /><br /><br /><br />PS:要注意SDA、SCL被挂死的时候的处理
 楼主| 帮助 发表于 2007-2-7 15:12 | 显示全部楼层

24C01B

型号是:24C01B,microchip公司的<br />我怀疑也是SDA跟SCL被挂死了,但是不知道为什么会出现这种情况,我只是按了复位键,想让程序重新工作。
 楼主| 帮助 发表于 2007-2-7 16:23 | 显示全部楼层

可以了!谢谢各位!

原来是读程序结束没送非应答信号
牛皮詹秀波 发表于 2007-2-8 20:38 | 显示全部楼层

--

汇编,看到头晕
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部