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

📄 i2c.lst

📁 pic 单片机的应用子程序库
💻 LST
📖 第 1 页 / 共 2 页
字号:
CCS PCM C Compiler, Version 3.187, 16465


               Filename: D:\myPIC\ccsc_I2c.LST

               ROM used: 456 (6%)
                         Largest free fragment is 2048
               RAM used: 7 (4%) at main() level
                         13 (7%) worst case
               Stack:    4 locations

*
0000:  MOVLW  00
0001:  MOVWF  0A
0002:  GOTO   193
0003:  NOP
....................  /*=============================================================================
.................... I2C总线访问24C02,运行程序:
....................         24C02 ready   -> LED0亮,
....................         Test  OK      -> LED7亮,
....................         Write&Read OK -> LED1/3/5/7亮。
.................... =============================================================================*/
.................... ///////////////////////////////////////////////////////////////////////////////
.................... // MPLAB IDE V7.11 + CCS C3.18
.................... // i2c access 24C02 for MCD2-demo
.................... //
.................... // by LW7807@163.com
.................... // 2005/06/21
.................... ///////////////////////////////////////////////////////////////////////////////
.................... #include <16F877A.h>                            // PIC16F877 header file
....................  //////// Standard Header file for the PIC16F877A device ////////////////
.................... #device PIC16F877A
.................... #list
....................
.................... #use delay(clock=4000000)                       // for 4Mhz crystal
*
017C:  MOVLW  22
017D:  MOVWF  04
017E:  MOVF   00,W
017F:  BTFSC  03.2
0180:  GOTO   190
0181:  MOVLW  01
0182:  MOVWF  78
0183:  CLRF   77
0184:  DECFSZ 77,F
0185:  GOTO   184
0186:  DECFSZ 78,F
0187:  GOTO   183
0188:  MOVLW  4A
0189:  MOVWF  77
018A:  DECFSZ 77,F
018B:  GOTO   18A
018C:  NOP
018D:  NOP
018E:  DECFSZ 00,F
018F:  GOTO   181
0190:  BCF    0A.3
0191:  BCF    0A.4
0192:  GOTO   1B8 (RETURN)
.................... #fuses XT, NOWDT, NOPROTECT, NOLVP              // for debug mode
....................
.................... #define EEPROM_24C02_SDA        PIN_B5
.................... #define EEPROM_24C02_SCL        PIN_B4
.................... #define EEPROM_24C02_SIZE       256
.................... #use i2c(master, sda=EEPROM_24C02_SDA, scl=EEPROM_24C02_SCL)
*
000C:  MOVLW  08
000D:  MOVWF  78
000E:  NOP
000F:  NOP
0010:  BCF    06.4
0011:  BSF    03.5
0012:  BCF    06.4
0013:  NOP
0014:  BCF    03.5
0015:  RLF    26,F
0016:  BCF    06.5
0017:  BTFSS  03.0
0018:  GOTO   01C
0019:  BSF    03.5
001A:  BSF    06.5
001B:  BCF    03.5
001C:  BTFSC  03.0
001D:  GOTO   021
001E:  BSF    03.5
001F:  BCF    06.5
0020:  BCF    03.5
0021:  BSF    03.5
0022:  BSF    06.4
0023:  BCF    03.5
0024:  BTFSC  06.4
0025:  GOTO   028
0026:  BSF    03.5
0027:  GOTO   023
0028:  DECFSZ 78,F
0029:  GOTO   00E
002A:  NOP
002B:  BCF    06.4
002C:  BSF    03.5
002D:  BCF    06.4
002E:  NOP
002F:  BSF    06.5
0030:  NOP
0031:  NOP
0032:  BSF    06.4
0033:  BCF    03.5
0034:  BTFSC  06.4
0035:  GOTO   038
0036:  BSF    03.5
0037:  GOTO   033
0038:  CLRF   78
0039:  NOP
003A:  BTFSC  06.5
003B:  BSF    78.0
003C:  BCF    06.4
003D:  BSF    03.5
003E:  BCF    06.4
003F:  BCF    03.5
0040:  BCF    06.5
0041:  BSF    03.5
0042:  BCF    06.5
0043:  BCF    03.5
0044:  RETLW  00
*
00A7:  MOVLW  08
00A8:  MOVWF  26
00A9:  MOVF   77,W
00AA:  MOVWF  27
00AB:  BSF    03.5
00AC:  BSF    06.5
00AD:  NOP
00AE:  BSF    06.4
00AF:  BCF    03.5
00B0:  BTFSC  06.4
00B1:  GOTO   0B4
00B2:  BSF    03.5
00B3:  GOTO   0AF
00B4:  BTFSC  06.5
00B5:  BSF    03.0
00B6:  BTFSS  06.5
00B7:  BCF    03.0
00B8:  RLF    78,F
00B9:  NOP
00BA:  BSF    03.5
00BB:  BCF    06.4
00BC:  BCF    03.5
00BD:  BCF    06.4
00BE:  DECFSZ 26,F
00BF:  GOTO   0AB
00C0:  BSF    03.5
00C1:  BSF    06.5
00C2:  NOP
00C3:  BCF    03.5
00C4:  BCF    06.5
00C5:  MOVF   27,W
00C6:  BTFSC  03.2
00C7:  GOTO   0CB
00C8:  BSF    03.5
00C9:  BCF    06.5
00CA:  BCF    03.5
00CB:  NOP
00CC:  BSF    03.5
00CD:  BSF    06.4
00CE:  BCF    03.5
00CF:  BTFSC  06.4
00D0:  GOTO   0D3
00D1:  BSF    03.5
00D2:  GOTO   0CE
00D3:  NOP
00D4:  BCF    06.4
00D5:  BSF    03.5
00D6:  BCF    06.4
00D7:  NOP
00D8:  BCF    03.5
00D9:  BCF    06.5
00DA:  BSF    03.5
00DB:  BCF    06.5
00DC:  BCF    03.5
00DD:  BCF    0A.3
00DE:  BCF    0A.4
00DF:  GOTO   10D (RETURN)
....................
....................
.................... ///////////////////////////////////////////////////////////////////////////////
.................... //
.................... void init_eeprom_24c02(void)
.................... {
....................         port_b_pullups(true);                   // !!!internal pullup resister
*
0004:  BSF    03.5
0005:  BCF    01.7
....................
....................         output_float(EEPROM_24C02_SCL);
0006:  BSF    06.4
....................         output_float(EEPROM_24C02_SDA);
0007:  BSF    06.5
.................... }//end init_24c02()
0008:  BCF    03.5
0009:  BCF    0A.3
000A:  BCF    0A.4
000B:  GOTO   19F (RETURN)
....................
.................... ///////////////////////////////////////////////////////////////////////////////
.................... //
.................... int8 eeprom_24c02_ready(void)
.................... {
....................         int1 ack;
....................
....................         i2c_start();                            // If write cmd is acknowledged,
*
0045:  BSF    03.5
0046:  BSF    06.5
0047:  NOP
0048:  BSF    06.4
0049:  NOP
004A:  BCF    03.5
004B:  BCF    06.5
004C:  BSF    03.5
004D:  BCF    06.5
004E:  NOP
004F:  BCF    03.5
0050:  BCF    06.4
0051:  BSF    03.5
0052:  BCF    06.4
....................         ack = i2c_write(0xa0);                  // then the device is ready.
0053:  MOVLW  A0
0054:  BCF    03.5
0055:  MOVWF  26
0056:  CALL   00C
0057:  MOVF   78,W
0058:  BTFSS  03.2
0059:  GOTO   05C
005A:  BCF    25.0
005B:  GOTO   05D
005C:  BSF    25.0
....................         i2c_stop();
005D:  BSF    03.5
005E:  BCF    06.5
005F:  NOP
0060:  BSF    06.4
0061:  BCF    03.5
0062:  BTFSC  06.4
0063:  GOTO   066
0064:  BSF    03.5
0065:  GOTO   061
0066:  NOP
0067:  NOP
0068:  NOP
0069:  NOP
006A:  BSF    03.5
006B:  BSF    06.5
006C:  NOP
....................
....................         return (0==ack) ??0xff : 0;
006D:  MOVLW  00
006E:  BCF    03.5
006F:  BTFSC  25.0
0070:  MOVLW  01
0071:  XORLW  00
0072:  BTFSS  03.2
0073:  GOTO   076
0074:  MOVLW  FF
0075:  GOTO   077
0076:  MOVLW  00
0077:  MOVWF  78
.................... }//end eeprom_24c02_ready()
0078:  RETLW  00
....................
.................... ///////////////////////////////////////////////////////////////////////////////
.................... //
.................... void eeprom_24c02_write(int8 addr, int8 data)
.................... {
....................         while(0 == eeprom_24c02_ready());       // wait 24c02 ready
0079:  CALL   045
007A:  MOVF   78,F
007B:  BTFSC  03.2
007C:  GOTO   079
....................         i2c_start();
007D:  BSF    03.5
007E:  BSF    06.5
007F:  NOP
0080:  BSF    06.4
0081:  NOP
0082:  BCF    03.5
0083:  BCF    06.5
0084:  BSF    03.5
0085:  BCF    06.5
0086:  NOP
0087:  BCF    03.5
0088:  BCF    06.4
0089:  BSF    03.5
008A:  BCF    06.4
....................         i2c_write(0xa0);
008B:  MOVLW  A0
008C:  BCF    03.5
008D:  MOVWF  26
008E:  CALL   00C
....................         i2c_write(addr);
008F:  MOVF   23,W
0090:  MOVWF  26
0091:  CALL   00C
....................         i2c_write(data);
0092:  MOVF   24,W
0093:  MOVWF  26
0094:  CALL   00C
....................         i2c_stop();
0095:  BSF    03.5
0096:  BCF    06.5
0097:  NOP
0098:  BSF    06.4
0099:  BCF    03.5
009A:  BTFSC  06.4

⌨️ 快捷键说明

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