|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
我都快疯了,帮我看看吧,24C02读程序! |
作者:chqy326 栏目:单片机 |
list p=16C57 INCLUDE "d:\pic\lib\p16c5x.inc" ;************************************************** VAR0 EQU 08H VAR1 EQU 09H ;************************************************** TRISC_RD EQU 0BFH ;read rom data TRISC_WR EQU 03FH ;write rom data COMM_WR EQU 0A0H COMM_RD EQU 0A1H #DEFINE PC_SDA PORTC,7 #DEFINE PC_SCL PORTC,6 ;************************************************** ORG 0000H GOTO RESET ROM_START: MOVLW TRISC_RD TRIS 7 CALL NOP_4 BTFSS PC_SDA GOTO START_ERR MOVLW TRISC_WR TRIS 7 CALL NOP_4 BSF PC_SDA CALL NOP_4 BSF PC_SCL CALL NOP_4 BCF PC_SDA CALL NOP_4 BCF PC_SCL CALL NOP_4 BTFSC PC_SDA GOTO ROM_START RETLW 00H RESET: CALL ROM_START WR_COM: MOVLW 08H MOVWF VAR0 MOVLW COMM_WR MOVWF VAR1 CALL WR_LOOP MOVLW 00H MOVWF VAR1 MOVLW 08H MOVWF VAR0 CALL WR_LOOP CALL ROM_START MOVLW 08H MOVWF VAR0 MOVLW COMM_RD MOVWF VAR1 CALL WR_LOOP MOVLW 08H MOVWF VAR1 READ1: MOVLW TRISC_RD TRIS 7 READ2: BSF PC_SCL RLF  |
2楼: | >>参与讨论 |
作者: xieyuanbin 于 2007/3/20 12:31:00 发布:
IIC读写24XX汇编例程 IIC 24XX EEPROM系列写程序 使用连续字节读,EEPROM起始地址IIC_ADD,数据首地址FSR,数据字节个数DATACT IIC 24系列EEPROM读顺序:START;地址/控制位(写);应答;写入地址;应答;地址/控制位(读);应答;数据,应答,...数据,STOP READ_24EE CALL START_C MOVLW WRITE_C CALL IIC_M_TB MOVF IIC_ADD,W CALL IIC_M_TB MOVLW READ_C CALL IIC_M_TB LOOP_READ_IIC CALL IIC_M_RB MOVF TX_BUFF,W MOVWF INDF INCF FSR DECFSZ DATACT GOTO ACK_C CALL STOP_C ACK_C CALL T_LOW GOTO LOOP_READ_IIC ;**************************************************************************************** IIC 主发送字节程序 IIC_M_TB MOVWF TX_BUFF MOVLW D'8' MOVWF TX_BCNT LOOP_MTB BTFSS TX_BUFF,7 GOTO TX_B0 TX_B1 CALL T_HIGH GOTO END_T_BIT TX_B0 CALL T_LOW END_T_BIT RLF TX_BUFF DECFSZ TX_BCNT GOTO LOOP_MTB END_T_BYTE CALL GET_ACK RETURN ;--------------------------------------- ;IIC 主接收字节程序 IIC_M_RB MOVLW D'8' MOVWF TX_BCNT CLRF TX_BUFF LOOP_MRB RLF TX_BUFF CALL RX_BIT BCF TX_BUFF,0 BTFSC DATA_L BSF TX_BUFF,0 DECFSZ TX_BCNT GOTO LOOP_MRB MOVF TX_BUFF,W RETURN ;---------------------------------------------------------------------------------------- T_LOW CALL CLR_CLK CALL IIC_TIME CALL CLR_DATA CALL IIC_TIME CALL SET_CLK CALL IIC_TIME RETURN ;------------------------------------ T_HIGH CALL CLR_CLK CALL IIC_TIME CALL SET_DATA CALL IIC_TIME CALL SET_CLK CALL IIC_TIME RETURN ;------------------------------------ GET_ACK CALL CLR_CLK CALL SET_DATA CALL IIC_TIME CALL SET_CLK CALL IIC_TIME BCF IIC_FLAG,ACKI BTFSC DATA_L BSF IIC_FLAG,ACKI CALL IIC_TIME RETURN ;------------------------------------ RX_BIT CALL CLR_CLK CALL SET_DATA CALL IIC_TIME CALL SET_CLK CALL IIC_TIME RETURN ;------------------------------------ START_C CALL CLR_CLK CALL SET_DATA CALL IIC_TIME CALL SET_CLK CALL IIC_TIME CALL IIC_TIME CALL CLR_DATA CALL IIC_TIME RETURN ;------------------------------------ STOP_C CALL CLR_CLK CALL CLR_DATA CALL IIC_TIME CALL SET_CLK CALL IIC_TIME CALL SET_DATA CALL IIC_TIME RETURN ;------------------------------------ SET_DATA BSF STATUS,RP0 BSF DATA_L BCF STATUS,RP0 RETURN CLR_DATA BCF DATA_L BSF STATUS,RP0 BCF DATA_L BCF STATUS,RP0 RETURN ;------------------------------------ SET_CLK BSF CLK_L MOVF PH_TEMP1,W MOVWF PORTC RETURN CLR_CLK BCF CLK_L MOVF PH_TEMP1,W MOVWF PORTC RETURN |
3楼: | >>参与讨论 |
作者: 梦幻空花 于 2007/3/22 15:03:00 发布:
为什么总是有人做重复劳动呢? 买本张明峰教主的书不就有现成的了。 至少可以参考比较哪里ERROR了 |
4楼: | >>参与讨论 |
作者: heciang 于 2007/3/25 19:05:00 发布:
搞不定给我写,我给你搞定。没有问题。我做IIC是大拿。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |