📄 i2c.lst
字号:
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 + -