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

📄 8733_spi_mt.lst

📁 Elan eKTP8733N单片机开发程序
💻 LST
字号:
     1                     ;****************************************************************;
     2                     ; TILTE:       eKTP8733N SPI Transfer DEMO CODE                  ;
     3                     ; FUNCTION:    eKTP8733N SPI Transfer as Master                  ;
     4                     ; COMPANY:     ELAN MICROELECTRONICS (SZ) LTD.                   ;
     5                     ;****************************************************************;
     6                     ; 该范例以eKTP8733N作为MASTER,MCU循环重复发送10个不同数据,每发送一
     7                     ; 个数据的时间间隔约1.6S. 发送的10组数据为: 0FH, F0H, 5AH, A5H, 5FH,
     8                     ; F5H, AFH, FAH, 55H, AAH; Fs: IRC 4MHz
     9                     ;-----------------------------------------------------------------
    10                     ; bank 0
    11       0002          PC          ==      0x02    ; Program Counter & Stack
    12       0003          STATUS      ==      0x03    ;
    13       0000              C       ==      0       ; Carry flag
    14       0002              Z       ==      2       ; Zero flag
    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       0003              SPIIF   ==      3       ; SPI interrupt flag
    25                     ; bank 1
    26       0005          IOC5        ==      0x05    ; PORT5 I/O control register
    27       0006          IOC6        ==      0x06    ; PORT6 I/O control register
    28       0007          IOC7        ==      0x07    ; PORT7 I/O control register
    29       0008          IOC8        ==      0x08    ; PORT8 I/O control register
    30       000C          WDTCR       ==      0x0C    ; WDT timer control register
    31       000E          B1RE        ==      0x0E
    32       000E          IMR1        ==      0x0E    ; Interrupt mask register 1
    33       000F          B1RF        ==      0x0F
    34       000F          IMR2        ==      0x0F    ; Interrupt mask register 2
    35                     ; bank 2
    36       0005          TCCCR       ==      0x05    ; Time Clock/Counter control register
    37                     ; bank 3
    38       0005          TCC         ==      0x05    ; Time Clock/Counter
    39       0006          COBS1       ==      0x06    ; Code option: Type&IRC calibration register
    40       0007          COBS2       ==      0x07    ; Code option: LVR, Noise, IRC, RCOUT register
    41                     ; bank 7
    42       000C          SPIS        ==      0x0C    ; SPI status register
    43       000D          SPICR       ==      0x0D    ; SPI control register
    44       0004              SSE     ==      4
    45       000E          SPIR        ==      0x0E    ; SPI read buffer
    46       000F          SPIW        ==      0x0F    ; SPI write buffer
    47                     ;
    48       001E          DATA_BUF    ==      0x1E    ; Data buffer
    49       001F          TEMP        ==      0x1F
    50                     ;-----------------------------------------------------------------
    51                             ORG     0x00
    52 00000 0000                  NOP
    53 00001 1453                  JMP     Main
    54                             ORG     0X1B            ; SPI interrupt vector
    55 0001B 1EB0                  LJMP    SPI_INT         ; To SPI interrupt program
    55 0001C 0050                  LJMP    SPI_INT         ; To SPI interrupt program
    56                             ORG     0x50
    57                     ;-----------------------------------------------------------------
    58 00050               SPI_INT:
    59                             ; User code
    60                             ; ...
    61 00050 1E90                  BANK    0
    62 00051 08CF                  BC      ISR2, SPIIF
    63 00052 0013                  RETI
    64                     ;-----------------------------------------------------------------
    65 00053               Main:
    66 00053 0000                  NOP
    67 00054 1E90                  BANK    0
    68 00055 00C5                  CLR     PORT5           ; PORT5 output logic "0"
    69 00056 00C6                  CLR     PORT6           ; PORT6 output logic "0"
    70 00057 00C7                  CLR     PORT7           ; PORT7 output logic "0"
    71 00058 00C8                  CLR     PORT8           ; PORT8 output logic "0"
    72 00059 00DE                  CLR		0x1E
    73 0005A 00DF                  CLR		0x1F
    74 0005B 1E91                  BANK    1
    75 0005C 00C5                  CLR     IOC5            ; Set port5 as output pin
    76 0005D 1808                  MOV     A, @0x08
    77 0005E 0046                  MOV     IOC6, A         ; Set P63 as input pin
    78 0005F 00C7                  CLR     IOC7            ; Set port7 as output pin
    79 00060 00C8                  CLR     IOC8            ; Set port8 as output pin
    80 00061 1800                  MOV     A, @0x00
    81 00062 004C                  MOV     WDTCR, A        ; Disable WDT
    82 00063 1810                  MOV     A, @0x10
    83 00064 004E                  MOV     IMR1, A         ; Enable TCC interrupt
    84 00065 1800                  MOV     A, @0x00
    85 00066 004F                  MOV     IMR2, A         ; Disable SPI interrupt
    86 00067 1E92                  BANK    2
    87 00068 1800                  MOV     A, @0x00
    88 00069 0045                  MOV     TCCCR, A        ; TCC rate --> 1:1
    89 0006A 1E93                  BANK    3
    90 0006B 183F                  MOV     A, @0x3F        ; Select ekt8733, irc: 1*F
    91 0006C 0046                  MOV     COBS1, A
    92 0006D 1830                  MOV     A, @0x30        ; Select IRC 4MHz
    93 0006E 0047                  MOV     COBS2, A
    94 0006F 00C5                  CLR     TCC
    95 00070 1E97                  BANK    7
    96 00071 1840                  MOV     A, @01000000b   ; Shift left, SDO delay time: 16clk,
    97 00072 004C                  MOV     SPIS, A         ; disable open-drain
    98 00073 184C                  MOV     A, @01001100b   ; Data shift out rising edge, is on hold during low
    99 00074 004D                  MOV     SPICR, A        ; Enable SPI mode, after data output sdo remain low
   100                                                     ; Selecting SPI Baud Rate is Fosc/32
   101                             ;-----------------------------------------------
   102 00075               LOOP:
   103 00075 041E                  MOV     A, DATA_BUF     ; To get data to transfer
   104 00076 108C                  CALL    Data_Tbl
   105 00077 1E97                  BANK    7
   106 00078 004F                  MOV     SPIW, A         ; Write data to buffer
   107 00079 0B0D                  BS      SPICR, SSE      ; Start to shift data
   108 0007A 0D0D                  JBC     SPICR, SSE      ; Wait to finish shift data
   109 0007B 147A                  JMP     $-1
   110 0007C 00DF                  CLR     TEMP
   111                             ;JMP		LOOP
   112 0007D               WAITLP:
   113 0007D 1E90                  BANK    0
   114 0007E 0F0E                  JBS     ISR1, TCIF      ; Wait for about 1.28Ms to shift next data
   115 0007F 147E                  JMP     $-1
   116 00080 00CE                  CLR     ISR1            ; Clear TCC flag
   117 00081 055F                  INC     TEMP
   118 00082 041F                  MOV     A, TEMP
   119 00083 1FEC                  ADD     A, @256-20     ; 256*1*20/4M
   120 00084 0E03                  JBS     STATUS, C
   121 00085 147D                  JMP     WAITLP
   122                     ;
   123 00086 055E                  INC     DATA_BUF
   124 00087 041E                  MOV     A, DATA_BUF     ; After shifting 10 bytes data, repeat
   125 00088 1FF6                  ADD     A, @256-10
   126 00089 0C03                  JBC     STATUS, C
   127 0008A 00DE                  CLR     DATA_BUF
   128 0008B 1475                  JMP     LOOP
   129                             ;-----------------------------------------------
   130 0008C               Data_Tbl:
   131 0008C 03C2                  ADD     PC, A
   132 0008D 1C0F                  RETL    0x0F        ; 0
   133 0008E 1CF0                  RETL    0xF0        ; 1
   134 0008F 1C5A                  RETL    0x5A        ; 2
   135 00090 1CA5                  RETL    0xA5        ; 3
   136 00091 1C5F                  RETL    0x5F        ; 4
   137 00092 1CF5                  RETL    0xF5        ; 5
   138 00093 1CAF                  RETL    0xAF        ; 6
   139 00094 1CFA                  RETL    0xFA        ; 7
   140 00095 1C55                  RETL    0x55        ; 8
   141 00096 1CAA                  RETL    0xAA        ; 9
   142                             ;-----------------------------------------------
   143                             END
   144                     
  0 Error(s), 0 Warning(s), 0 User Message(s)

⌨️ 快捷键说明

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