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

📄 i2cmem1.lst

📁 该应用软件可以实现大多数单片机的仿真实验
💻 LST
📖 第 1 页 / 共 4 页
字号:
MPASM 02.30 Released          I2CMEM1.ASM   12-19-2001  11:23:01         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00001                  LIST    p=16F877
                    00002                  #include "P16F877.INC"
                    00001         LIST
                    00002 ; P16F877.INC  Standard Header File, Version 1.00    Microchip Technology, Inc.
                    00373         LIST
                    00003 
  00000007          00004 SDO              EQU 7
  00000006          00005 CLK              EQU 6
                    00006 
0000                00007                  ORG   0
0000 291F           00008 entrypoint       goto  start
                    00009 
0004                00010                  ORG   4
0004 2804           00011 intvector        goto    intvector
                    00012 
                    00013                  CBLOCK 0x30
  00000030          00014                     address, value, byte, bit, ack
  00000035          00015                     lc1, lc2, lc3
                    00016                  ENDC
                    00017 
                    00018 
0005 1283           00019 set_sdo_high     bcf    STATUS,RP0
0006 1387           00020                  bcf    PORTC,SDO
0007 1683           00021                  bsf    STATUS,RP0
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0008 1787           00022                  bsf    TRISC,SDO
0009 1283           00023                  bcf    STATUS,RP0
000A 0008           00024                  return
                    00025 
000B 1283           00026 set_sdo_low      bcf    STATUS,RP0
000C 1387           00027                  bcf    PORTC,SDO
000D 1683           00028                  bsf    STATUS,RP0
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
000E 1387           00029                  bcf    TRISC,SDO
000F 1283           00030                  bcf    STATUS,RP0
0010 0008           00031                  return
                    00032 
                    00033 ;-----------------------------------------------------------
0011 1283           00034 set_clk_high     bcf    STATUS,RP0
0012 1707           00035                  bsf    PORTC,CLK
0013 1683           00036                  bsf    STATUS,RP0
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0014 1307           00037                  bcf    TRISC,CLK
0015 1283           00038                  bcf    STATUS,RP0
0016 0008           00039                  return
                    00040 
                    00041 ;-----------------------------------------------------------
0017 1283           00042 set_clk_low      bcf    STATUS,RP0
0018 1307           00043                  bcf    PORTC,CLK
0019 1683           00044                  bsf    STATUS,RP0
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
001A 1307           00045                  bcf    TRISC,CLK
001B 1283           00046                  bcf    STATUS,RP0
MPASM 02.30 Released          I2CMEM1.ASM   12-19-2001  11:23:01         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

001C 0008           00047                  return
                    00048 
                    00049 ;-----------------------------------------------------------
001D 3006           00050 wait_quarter_bit movlw  0x06
001E 00B5           00051                  movwf  lc1
001F 0BB5           00052 wqb0:            decfsz lc1,F
0020 281F           00053                  goto   wqb0
0021 0008           00054                  return
                    00055 
                    00056 ;-----------------------------------------------------------
0022 3010           00057 wait_half_bit    movlw  0x10
0023 00B5           00058                  movwf  lc1
0024 0BB5           00059 whb0:            decfsz lc1,F
0025 281F           00060                  goto   wqb0
0026 0008           00061                  return
                    00062 
                    00063 ;-----------------------------------------------------------
0027 30FF           00064 init             movlw 0xFF
0028 0087           00065                  movwf PORTC
0029 3000           00066                  movlw 0x00
002A 1683           00067                  bsf   STATUS,RP0
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
002B 0087           00068                  movwf TRISC
002C 1283           00069                  bcf   STATUS,RP0
002D 0008           00070                  return
                    00071 
                    00072 ;-----------------------------------------------------------
002E 2011           00073 wr_start         call  set_clk_high
002F 2022           00074                  call  wait_half_bit
0030 200B           00075                  call  set_sdo_low
0031 2022           00076                  call  wait_half_bit
0032 2017           00077                  call  set_clk_low
0033 2022           00078                  call  wait_half_bit
0034 2022           00079                  call  wait_half_bit
0035 2022           00080                  call  wait_half_bit
0036 0008           00081                  return
                    00082 ;-----------------------------------------------------------
0037 2022           00083 wr_stop          call  wait_half_bit
0038 2017           00084                  call  set_clk_low
0039 2022           00085                  call  wait_half_bit
003A 200B           00086                  call  set_sdo_low
003B 2022           00087                  call  wait_half_bit
003C 2011           00088                  call  set_clk_high
003D 2022           00089                  call  wait_half_bit
003E 2005           00090                  call  set_sdo_high
003F 2022           00091                  call  wait_half_bit
0040 0008           00092                  return
                    00093 
                    00094 ;-----------------------------------------------------------
0041 2017           00095 wr_restart       call   set_clk_low
0042 2022           00096                  call   wait_half_bit
0043 2005           00097                  call   set_sdo_high
0044 2022           00098                  call   wait_half_bit
MPASM 02.30 Released          I2CMEM1.ASM   12-19-2001  11:23:01         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0045 2011           00099                  call   set_clk_high
0046 2022           00100                  call   wait_half_bit
0047 200B           00101                  call   set_sdo_low
0048 2022           00102                  call   wait_half_bit
0049 2017           00103                  call   set_clk_low
004A 2022           00104                  call   wait_half_bit
004B 0008           00105                  return
                    00106 
                    00107 ;-----------------------------------------------------------
004C 2017           00108 wr_ack           call   set_clk_low
004D 2022           00109                  call   wait_half_bit
004E 200B           00110                  call   set_sdo_low
004F 2022           00111                  call   wait_half_bit
0050 2011           00112                  call   set_clk_high
0051 2022           00113                  call   wait_half_bit
0052 2017           00114                  call   set_clk_low
0053 2022           00115                  call   wait_half_bit
0054 2005           00116                  call   set_sdo_high
0055 2022           00117                  call   wait_half_bit
0056 0008           00118                  return
                    00119 
                    00120 ;-----------------------------------------------------------
0057 2017           00121 wr_no_ack        call   set_clk_low
0058 2022           00122                  call   wait_half_bit
0059 2005           00123                  call   set_sdo_high
005A 2022           00124                  call   wait_half_bit
005B 2011           00125                  call   set_clk_high
005C 2022           00126                  call   wait_half_bit
005D 2017           00127                  call   set_clk_low
005E 2022           00128                  call   wait_half_bit
005F 2022           00129                  call   wait_half_bit
0060 0008           00130                  return
                    00131 
                    00132 ;-----------------------------------------------------------
                    00133 ; Generate a reset by generating a stop followed by at least
                    00134 ; eight clock pulses.
0061 2022           00135 wr_reset         call   wait_half_bit
0062 2017           00136                  call   set_clk_low
0063 2022           00137                  call   wait_half_bit
0064 200B           00138                  call   set_sdo_low
0065 2022           00139                  call   wait_half_bit
0066 2011           00140                  call   set_clk_high
                    00141 
0067 3040           00142                  movlw  0x40
0068 00B5           00143                  movwf  lc1
0069 0BB5           00144 wrr0:            decfsz lc1,F
006A 2869           00145                  goto   wrr0
                    00146 
006B 2005           00147                  call   set_sdo_high
                    00148 
006C 3040           00149                  movlw  0x40
006D 00B5           00150                  movwf  lc1
006E 0BB5           00151 wrr1:            decfsz lc1,F
MPASM 02.30 Released          I2CMEM1.ASM   12-19-2001  11:23:01         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

006F 286E           00152                  goto   wrr1
                    00153 
0070 2017           00154                  call   set_clk_low             ; clk 0
0071 2022           00155                  call   wait_half_bit
0072 2011           00156                  call   set_clk_high
0073 2022           00157                  call   wait_half_bit
0074 2017           00158                  call   set_clk_low             ; clk 1
0075 2022           00159                  call   wait_half_bit
0076 2011           00160                  call   set_clk_high
0077 2022           00161                  call   wait_half_bit
0078 2017           00162                  call   set_clk_low             ; clk 2
0079 2022           00163                  call   wait_half_bit
007A 2011           00164                  call   set_clk_high
007B 2022           00165                  call   wait_half_bit
007C 2017           00166                  call   set_clk_low             ; clk 3
007D 2022           00167                  call   wait_half_bit
007E 2011           00168                  call   set_clk_high
007F 2022           00169                  call   wait_half_bit
0080 2017           00170                  call   set_clk_low             ; clk 4
0081 2022           00171                  call   wait_half_bit
0082 2011           00172                  call   set_clk_high
0083 2022           00173                  call   wait_half_bit
0084 2017           00174                  call   set_clk_low             ; clk 5
0085 2022           00175                  call   wait_half_bit
0086 2011           00176                  call   set_clk_high
0087 2022           00177                  call   wait_half_bit
0088 2017           00178                  call   set_clk_low             ; clk 6
0089 2022           00179                  call   wait_half_bit
008A 2011           00180                  call   set_clk_high
008B 2022           00181                  call   wait_half_bit
008C 2017           00182                  call   set_clk_low             ; clk 7
008D 2022           00183                  call   wait_half_bit
008E 2011           00184                  call   set_clk_high
008F 2022           00185                  call   wait_half_bit
0090 2017           00186                  call   set_clk_low             ; clk 8
0091 2022           00187                  call   wait_half_bit
0092 2011           00188                  call   set_clk_high
0093 2022           00189                  call   wait_half_bit
                    00190 
0094 0008           00191                  return
                    00192 
                    00193 
                    00194 ;-----------------------------------------------------------
0095 1283           00195 wr_bit           bcf   STATUS,RP0
0096 201D           00196                  call  wait_quarter_bit
0097 0833           00197                  movf  bit,w
0098 0532           00198                  andwf byte,w
0099 1903           00199                  btfsc STATUS,Z
009A 289D           00200                  goto  bit_is_0
                    00201 
009B 2005           00202 bit_is_1         call  set_sdo_high
009C 289F           00203                  goto  wbit0
                    00204 
MPASM 02.30 Released          I2CMEM1.ASM   12-19-2001  11:23:01         PAGE  5

⌨️ 快捷键说明

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