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

📄 8733_i2c-master.lst

📁 Elan eKTP8733N单片机开发程序
💻 LST
字号:
     1                     ;****************************************************************;
     2                     ; TILTE:       eKTP8733 I2C TRANSMISSION DEMO CODE               ;
     3                     ; FUNCTION:    eKTP8733 I2C FUNCTION                             ;
     4                     ; COMPANY:     ELAN MICROELECTRONICS (SZ) LTD.                   ;
     5                     ;****************************************************************;
     6                     ; 该范例用eKTP8733读写24C01,可读写单字节或多字节数据. Fc: IRC 4MHz
     7                     ;-----------------------------------------------------------------
     8                     ; bank 0
     9       0000          R0          ==      0x00    ; Indirect Address Register
    10       0002          PC          ==      0x02    ; Program Counter & Stack
    11       0003          STATUS      ==      0x03    ;
    12       0000              C       ==      0       ; Carry flag
    13       0002              Z       ==      2       ; Zero flag
    14       0004          R4          ==      0x04    ; RAM Select Register
    15       0005          PORT5       ==      0x05    ; PORT5 I/O register
    16       0006          PORT6       ==      0x06    ; PORT6 I/O register
    17       0007          PORT7       ==      0x07    ; PORT7 I/O register
    18       0008          PORT8       ==      0x08    ; PORT8 I/O register
    19       000E          B0RE        ==      0x0E
    20       000E          ISR1        ==      0x0E    ; Interrupt status register 1
    21       0004              TCIF    ==      4       ; TCC interrupt flag
    22       000F          B0RF        ==      0x0F
    23       000F          ISR2        ==      0x0F    ; Interrupt status register 2
    24       0007              I2CRIF  ==      7
    25       0006              I2CTIF  ==      6
    26                     ; bank 1
    27       0005          IOC5        ==      0x05    ; PORT5 I/O control register
    28       0006          IOC6        ==      0x06    ; PORT6 I/O control register
    29       0007          IOC7        ==      0x07    ; PORT7 I/O control register
    30       0008          IOC8        ==      0x08    ; PORT8 I/O control register
    31       000C          WDTCR       ==      0x0C    ; WDT timer control register
    32       000E          B1RE        ==      0x0E
    33       000E          IMR1        ==      0x0E    ; Interrupt mask register 1
    34       000F          B1RF        ==      0x0F
    35       000F          IMR2        ==      0x0F    ; Interrupt mask register 2
    36                     ; bank 2
    37       0005          TCCCR       ==      0x05    ; Time Clock/Counter control register
    38                     ; bank 3
    39       0005          TCC         ==      0x05    ; Time Clock/Counter
    40       0006          COBS1       ==      0x06    ; Code option: Type&IRC calibration register
    41       0007          COBS2       ==      0x07    ; Code option: LVR, Noise, IRC, RCOUT regist
    42       000B          I2CCR2      ==      0x0B    ; I2C status and control register 2
    43       000C          I2CCR1      ==      0x0C    ; I2C status and control register 1
    44       0007              Strobe  ==      7
    45       0007              Pend    ==      7
    46       0006              IMR     ==      6       ; I2C master/slave mode select bit
    47       0005              ISS     ==      5       ; I2C Fast/Standard mode select bit
    48       0004              STOP    ==      4       ;
    49       0003              SAR_EMPTY   ==  3
    50       0002              ACK     ==      2
    51       0001              FULL    ==      1
    52       0000              EMPTY   ==      0
    53       000D          I2CSA       ==      0x0D    ; I2C slave address register
    54       000E          I2CDA       ==      0x0E    ; I2C Device address register
    55       000F          I2CDB       ==      0x0F    ; I2C data buffer
    56                     ;
    57       001F          BUFFER      ==      0x1F    ; Data buffer
    58                     ;-----------------------------------------------------------------
    59                             ORG     0x00
    60 00000 1458                  JMP     Main
    61                             ORG     0X12            ; I2C interrupt vector
    62 00012 1EB0                  LJMP    I2C_INT         ; To I2C interrupt program
    62 00013 0050                  LJMP    I2C_INT         ; To I2C interrupt program
    63                             ORG     0x50
    64                     ;-----------------------------------------------------------------
    65 00050               I2C_INT:
    66 00050 1E90                  BANK    0
    67 00051 0FCF                  JBS     ISR2, I2CRIF
    68 00052 1454                  JMP     NOT_RINT
    69 00053 09CF                  BC      ISR2, I2CRIF
    70                             ; User code
    71                             ; ...
    72 00054               NOT_RINT:
    73 00054 0F8F                  JBS     ISR2, I2CTIF
    74 00055 1457                  JMP     I2C_INT_RET
    75 00056 098F                  BC      ISR2, I2CTIF
    76                             ; User code
    77                             ; ...
    78 00057               I2C_INT_RET:
    79 00057 0013                  RETI
    80                     ;-----------------------------------------------------------------
    81 00058               Main:
    82 00058 0000                  NOP
    83 00059 1E90                  BANK    0
    84 0005A 00C5                  CLR     PORT5           ; PORT5 output logic "0"
    85 0005B 00C6                  CLR     PORT6           ; PORT6 output logic "0"
    86 0005C 00C7                  CLR     PORT7           ; PORT7 output logic "0"
    87 0005D 00C8                  CLR     PORT8           ; PORT8 output logic "0"
    88 0005E 1E91                  BANK    1
    89 0005F 00C5                  CLR     IOC5            ; Set port5 as output pin
    90 00060 00C6                  CLR     IOC6            ; Set port6 as output pin
    91 00061 00C7                  CLR     IOC7            ; Set port7 as output pin
    92 00062 00C8                  CLR     IOC8            ; Set port8 as output pin
    93 00063 1800                  MOV     A, @0x00
    94 00064 004C                  MOV     WDTCR, A        ; Disable WDT
    95 00065 1810                  MOV     A, @0x10
    96 00066 004E                  MOV     IMR1, A         ; Enable TCC interrupt
    97 00067 1800                  MOV     A, @0x00
    98 00068 004F                  MOV     IMR2, A         ; Disable I2C interrupt
    99 00069 1E92                  BANK    2
   100 0006A 180D                  MOV     A, @0x0D
   101 0006B 0045                  MOV     TCCCR, A        ; TCC rate --> 1:256
   102 0006C 1E93                  BANK    3
   103 0006D 183F                  MOV     A, @0x3F        ; Select ekt8733, irc: 1*F
   104 0006E 0046                  MOV     COBS1, A
   105 0006F 1830                  MOV     A, @0x30        ; Select IRC 4MHz
   106 00070 0047                  MOV     COBS2, A
   107 00071 00C5                  CLR     TCC
   108 00072 1E93                  BANK    3
   109 00073 1831                  MOV     A, @00110001b   ; I2C clock source select Fm and Enable I2C
   110 00074 004B                  MOV     I2CCR2, A
   111 00075 0B8C                  BS      I2CCR1, IMR     ; Select master mode
   112 00076 094C                  Bc      I2CCR1, ISS     ; Select standard mode
   113                     ;-----------------------------------------------------------------
   114 00077               MainStart:
   115                             ;---------------------------------------------------------
   116                             ; Write 8bytes data to 0x00~0x0F address of 24C01
   117                             ;---------------------------------------------------------
   118 00077 1808                  MOV     A, @0x08
   119 00078 005F                  MOV     BUFFER, A
   120                     ;
   121 00079 1E93                  BANK    3
   122 0007A 18A0                  MOV     A, @10100000b       ; Write command word (Write data)
   123 0007B 004D                  MOV     I2CSA, A
   124 0007C 0BCC                  BS      I2CCR1, Strobe
   125 0007D 0ECC                  JBS     I2CCR1, SAR_EMPTY
   126 0007E 147D                  JMP     $-1
   127                     ;
   128 0007F 1800                  MOV     A, @0x00            ; Write first address of 24C01
   129 00080 004F                  MOV     I2CDB, A
   130 00081 0BCC                  BS      I2CCR1, Strobe
   131 00082 0E0C                  JBS     I2CCR1, EMPTY
   132 00083 1482                  JMP     $-1
   133                     ;
   134 00084               WriteDataLp:
   135 00084 041F                  MOV     A, BUFFER           ; Write data
   136 00085 10BB                  CALL    Data_Tbl
   137 00086 004F                  MOV     I2CDB, A
   138 00087 0BCC                  BS      I2CCR1, Strobe
   139 00088 041F                  MOV     A, BUFFER
   140 00089 1B01                  XOR     A, @0x01
   141 0008A 0C83                  JBC     status, Z
   142 0008B 0B0C                  BS      I2CCR1, STOP
   143 0008C 0E0C                  JBS     I2CCR1, EMPTY
   144 0008D 148C                  JMP     $-1
   145 0008E 05DF                  DJZ     BUFFER
   146 0008F 1484                  JMP     WriteDataLp
   147                             ;
   148 00090 1E90                  BANK    0
   149 00091 00C5                  CLR     TCC
   150 00092 0F0E                  JBS     ISR1, TCIF          ; Wait for about 4.096ms to write data
   151 00093 1492                  JMP     $-1
   152 00094 00CE                  CLR     ISR1                ; Clear TCC flag
   153                             ;---------------------------------------------------------
   154                             ; Read 8 byte data from 24C01
   155                             ;---------------------------------------------------------
   156 00095 1E93                  BANK    3
   157 00096 18A0                  MOV     A, @10100000b       ; Write command word (Write data)
   158 00097 004D                  MOV     I2CSA, A
   159 00098 0BCC                  BS      I2CCR1, Strobe
   160 00099 0ECC                  JBS     I2CCR1, SAR_EMPTY
   161 0009A 1499                  JMP     $-1
   162                     ;
   163 0009B 1800                  MOV     A, @0x00            ; Write first address of 24C01
   164 0009C 004F                  MOV     I2CDB, A
   165 0009D 0BCC                  BS      I2CCR1, Strobe
   166 0009E 0E0C                  JBS     I2CCR1, EMPTY
   167 0009F 149E                  JMP     $-1
   168                     ;
   169 000A0 1808                  MOV     A, @8
   170 000A1 005F                  MOV     BUFFER, A
   171 000A2 1810                  MOV     A, @0x10
   172 000A3 0044                  MOV     R4, A
   173                             ;
   174 000A4 18A1                  MOV     A, @10100001b       ; Write command word (Read data)
   175 000A5 004D                  MOV     I2CSA, A
   176 000A6 0BCC                  BS      I2CCR1, Strobe
   177 000A7 0ECC                  JBS     I2CCR1, SAR_EMPTY
   178 000A8 14A7                  JMP     $-1
   179                     ;
   180 000A9               ReadDataLp:
   181 000A9 0BCC                  BS      I2CCR1, Strobe
   182 000AA 041F                  MOV     A, BUFFER
   183 000AB 1B01                  XOR     A, @0x01
   184 000AC 0C83                  JBC     status, Z
   185 000AD 0B0C                  BS      I2CCR1, STOP
   186 000AE 0000                  NOP
   187 000AF 0E4C                  JBS     I2CCR1, FULL
   188 000B0 14AF                  JMP     $-1
   189 000B1 040F                  MOV     A, I2CDB
   190 000B2 0040                  MOV     R0, A
   191 000B3 0544                  INC     R4
   192 000B4 05DF                  DJZ     BUFFER
   193 000B5 14A9                  JMP     ReadDataLp
   194 000B6 1E90                  BANK    0
   195 000B7 0000                  NOP
   196 000B8 0000                  NOP
   197 000B9 0000                  NOP
   198 000BA 14BA                  JMP     $
   199                             ;---------------------------------------------------------
   200 000BB               Data_Tbl:
   201 000BB 03C2                  ADD     PC, A
   202 000BC 0012                  RET                 ; 0
   203 000BD 1C07                  RETL    0x07        ; 1
   204 000BE 1C06                  RETL    0x06        ; 2
   205 000BF 1C05                  RETL    0x05        ; 3
   206 000C0 1C04                  RETL    0x04        ; 4
   207 000C1 1C03                  RETL    0x03        ; 5
   208 000C2 1C02                  RETL    0x02        ; 6
   209 000C3 1C01                  RETL    0x01        ; 7
   210 000C4 1C00                  RETL    0x00        ; 8
   211                             END
   212                     ;-----------------------------------------------------------------
  0 Error(s), 0 Warning(s), 0 User Message(s)

⌨️ 快捷键说明

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