⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.lst

📁 pic 单片机的应用子程序库
💻 LST
📖 第 1 页 / 共 2 页
字号:
009B:  GOTO   09E
009C:  BSF    03.5
009D:  GOTO   099
009E:  NOP
009F:  NOP
00A0:  NOP
00A1:  NOP
00A2:  BSF    03.5
00A3:  BSF    06.5
00A4:  NOP
.................... }//end eeprom_24c02_write()
00A5:  BCF    03.5
00A6:  RETLW  00
....................
.................... ///////////////////////////////////////////////////////////////////////////////
.................... //
.................... int8 eeprom_24c02_read(int8 addr)
.................... {
....................         int8 data;
....................
....................         while(0 == eeprom_24c02_ready());       // wait 24c02 ready
*
00E0:  CALL   045
00E1:  MOVF   78,F
00E2:  BTFSC  03.2
00E3:  GOTO   0E0
....................         i2c_start();
00E4:  BSF    03.5
00E5:  BSF    06.5
00E6:  NOP
00E7:  BSF    06.4
00E8:  NOP
00E9:  BCF    03.5
00EA:  BCF    06.5
00EB:  BSF    03.5
00EC:  BCF    06.5
00ED:  NOP
00EE:  BCF    03.5
00EF:  BCF    06.4
00F0:  BSF    03.5
00F1:  BCF    06.4
....................         i2c_write(0xa0);
00F2:  MOVLW  A0
00F3:  BCF    03.5
00F4:  MOVWF  26
00F5:  CALL   00C
....................         i2c_write(addr);
00F6:  MOVF   23,W
00F7:  MOVWF  26
00F8:  CALL   00C
....................         i2c_start();
00F9:  BSF    03.5
00FA:  BSF    06.5
00FB:  NOP
00FC:  BSF    06.4
00FD:  NOP
00FE:  BCF    03.5
00FF:  BCF    06.5
0100:  BSF    03.5
0101:  BCF    06.5
0102:  NOP
0103:  BCF    03.5
0104:  BCF    06.4
0105:  BSF    03.5
0106:  BCF    06.4
....................         i2c_write(0xa1);
0107:  MOVLW  A1
0108:  BCF    03.5
0109:  MOVWF  26
010A:  CALL   00C
....................         data = i2c_read(0);
010B:  CLRF   77
010C:  GOTO   0A7
010D:  MOVF   78,W
010E:  MOVWF  24
....................         i2c_stop();
010F:  BSF    03.5
0110:  BCF    06.5
0111:  NOP
0112:  BSF    06.4
0113:  BCF    03.5
0114:  BTFSC  06.4
0115:  GOTO   118
0116:  BSF    03.5
0117:  GOTO   113
0118:  NOP
0119:  NOP
011A:  NOP
011B:  NOP
011C:  BSF    03.5
011D:  BSF    06.5
011E:  NOP
....................
....................         return(data);
011F:  BCF    03.5
0120:  MOVF   24,W
0121:  MOVWF  78
.................... }//end eeprom_24c02_read()
0122:  RETLW  00
....................
.................... ///////////////////////////////////////////////////////////////////////////////
.................... //
.................... int8 eeprom_24c02_test(void)
.................... {
....................         int16 i;
....................
....................         // write 0x55 test
....................         for(i=0; i<EEPROM_24C02_SIZE; ++i)
0123:  CLRF   22
0124:  CLRF   21
0125:  MOVF   22,W
0126:  SUBLW  00
0127:  BTFSS  03.0
0128:  GOTO   132
....................                 {
....................                 eeprom_24c02_write(i, 0x55);
0129:  MOVF   21,W
012A:  MOVWF  23
012B:  MOVLW  55
012C:  MOVWF  24
012D:  CALL   079
....................                 }
012E:  INCF   21,F
012F:  BTFSC  03.2
0130:  INCF   22,F
0131:  GOTO   125
....................         for(i=0; i<EEPROM_24C02_SIZE; ++i)
0132:  CLRF   22
0133:  CLRF   21
0134:  MOVF   22,W
0135:  SUBLW  00
0136:  BTFSS  03.0
0137:  GOTO   146
....................                 {
....................                 if(0x55 != eeprom_24c02_read(i)) return 0;
0138:  MOVF   21,W
0139:  MOVWF  23
013A:  CALL   0E0
013B:  MOVF   78,W
013C:  SUBLW  55
013D:  BTFSC  03.2
013E:  GOTO   142
013F:  MOVLW  00
0140:  MOVWF  78
0141:  GOTO   179
....................                 }
0142:  INCF   21,F
0143:  BTFSC  03.2
0144:  INCF   22,F
0145:  GOTO   134
....................
....................         // write 0xaa test
....................         for(i=0; i<EEPROM_24C02_SIZE; ++i)
0146:  CLRF   22
0147:  CLRF   21
0148:  MOVF   22,W
0149:  SUBLW  00
014A:  BTFSS  03.0
014B:  GOTO   155
....................                 {
....................                 eeprom_24c02_write(i, 0xaa);
014C:  MOVF   21,W
014D:  MOVWF  23
014E:  MOVLW  AA
014F:  MOVWF  24
0150:  CALL   079
....................                 }
0151:  INCF   21,F
0152:  BTFSC  03.2
0153:  INCF   22,F
0154:  GOTO   148
....................         for(i=0; i<EEPROM_24C02_SIZE; ++i)
0155:  CLRF   22
0156:  CLRF   21
0157:  MOVF   22,W
0158:  SUBLW  00
0159:  BTFSS  03.0
015A:  GOTO   169
....................                 {
....................                 if(0xaa != eeprom_24c02_read(i)) return 0;
015B:  MOVF   21,W
015C:  MOVWF  23
015D:  CALL   0E0
015E:  MOVF   78,W
015F:  SUBLW  AA
0160:  BTFSC  03.2
0161:  GOTO   165
0162:  MOVLW  00
0163:  MOVWF  78
0164:  GOTO   179
....................                 }
0165:  INCF   21,F
0166:  BTFSC  03.2
0167:  INCF   22,F
0168:  GOTO   157
....................
....................         // write eeprom 0
....................         for(i=0; i<EEPROM_24C02_SIZE; ++i)
0169:  CLRF   22
016A:  CLRF   21
016B:  MOVF   22,W
016C:  SUBLW  00
016D:  BTFSS  03.0
016E:  GOTO   177
....................                 {
....................                 eeprom_24c02_write(i, 0x00);
016F:  MOVF   21,W
0170:  MOVWF  23
0171:  CLRF   24
0172:  CALL   079
....................                 }
0173:  INCF   21,F
0174:  BTFSC  03.2
0175:  INCF   22,F
0176:  GOTO   16B
....................         return 0xff;
0177:  MOVLW  FF
0178:  MOVWF  78
.................... }//end eeprom_24c02_test()
0179:  BCF    0A.3
017A:  BCF    0A.4
017B:  GOTO   1AA (RETURN)
....................
....................
.................... /*===========================================================================*/
.................... void main(void)
.................... {
*
0193:  CLRF   04
0194:  MOVLW  1F
0195:  ANDWF  03,F
0196:  MOVLW  06
0197:  BSF    03.5
0198:  MOVWF  1F
0199:  MOVLW  07
019A:  BCF    03.5
019B:  MOVWF  1F
....................         init_eeprom_24c02();
*
019E:  GOTO   004
....................
....................         // 24c02 is ready
....................         if(0 != eeprom_24c02_ready())
....................                 {
019F:  CALL   045
01A0:  MOVF   78,F
01A1:  BTFSC  03.2
01A2:  GOTO   1A9
....................                 output_high(PIN_C0);
*
019C:  MOVLW  FF
019D:  MOVWF  20
*
01A3:  BCF    20.0
01A4:  MOVF   20,W
01A5:  BSF    03.5
01A6:  MOVWF  07
01A7:  BCF    03.5
01A8:  BSF    07.0
....................                 }
....................
....................         // test 24c02
....................         if(0 != eeprom_24c02_test())
....................                 {
01A9:  GOTO   123
01AA:  MOVF   78,F
01AB:  BTFSC  03.2
01AC:  GOTO   1BA
....................                 output_high(PIN_C7);
01AD:  BCF    20.7
01AE:  MOVF   20,W
01AF:  BSF    03.5
01B0:  MOVWF  07
01B1:  BCF    03.5
01B2:  BSF    07.7
....................                 delay_ms(1000);
01B3:  MOVLW  04
01B4:  MOVWF  21
01B5:  MOVLW  FA
01B6:  MOVWF  22
01B7:  GOTO   17C
01B8:  DECFSZ 21,F
01B9:  GOTO   1B5
....................                 }
....................
....................         // write 24c02
....................         eeprom_24c02_write(0, 0xaa);
01BA:  CLRF   23
01BB:  MOVLW  AA
01BC:  MOVWF  24
01BD:  CALL   079
....................
....................         // read 24c02
....................         output_c(eeprom_24c02_read(0));
01BE:  CLRF   23
01BF:  CALL   0E0
01C0:  MOVLW  00
01C1:  MOVWF  20
01C2:  BSF    03.5
01C3:  MOVWF  07
01C4:  BCF    03.5
01C5:  MOVF   78,W
01C6:  MOVWF  07
....................
.................... }//end main()
....................
01C7:  SLEEP

Configuration Fuses:
   Word  1: 3F79   XT NOWDT NOPUT NODEBUG NOPROTECT BROWNOUT NOLVP NOCPD NOWRT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -