📄 spidemo.lst
字号:
A51 MACRO ASSEMBLER SPIDEMO 08/04/2010 09:13:23 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN SPIDemo.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SPIDemo.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;/*------------------------------------------------------------------*/
2 ;/* --- STC MCU International Limited -------------------------------*/
3 ;/* --- STC 1T Series MCU SPI Demo(Each other as the master-slave) --*/
4 ;/* --- Mobile: (86)13922805190 -------------------------------------*/
5 ;/* --- Fax: 86-755-82944243 ----------------------------------------*/
6 ;/* --- Tel: 86-755-82948412 ----------------------------------------*/
7 ;/* --- Web: www.STCMCU.com -----------------------------------------*/
8 ;/* If you want to use the program or the program referenced in the */
9 ;/* article, please specify in which data and procedures from STC */
10 ;/*------------------------------------------------------------------*/
11
008E 12 AUXR DATA 08EH ;Auxiliary register
00CD 13 SPSTAT DATA 0CDH ;SPI status register
0080 14 SPIF EQU 080H ;SPSTAT.7
0040 15 WCOL EQU 040H ;SPSTAT.6
00CE 16 SPCTL DATA 0CEH ;SPI control register
0080 17 SSIG EQU 080H ;SPCTL.7
0040 18 SPEN EQU 040H ;SPCTL.6
0020 19 DORD EQU 020H ;SPCTL.5
0010 20 MSTR EQU 010H ;SPCTL.4
0008 21 CPOL EQU 008H ;SPCTL.3
0004 22 CPHA EQU 004H ;SPCTL.2
0000 23 SPDHH EQU 000H ;CPU_CLK/4
0001 24 SPDH EQU 001H ;CPU_CLK/16
0002 25 SPDL EQU 002H ;CPU_CLK/64
0003 26 SPDLL EQU 003H ;CPU_CLK/128
00CF 27 SPDAT DATA 0CFH ;SPI data register
0093 28 SPISS BIT P1.3 ;SPI slave select, connect to other MCU's SS(P1.4) pin
29
30 ;//////////////////////////////////////////////////////////
31
0000 32 ORG 0000H
0000 020100 33 LJMP RESET
0100 34 ORG 0100H
0100 35 RESET:
0100 120127 36 LCALL INIT_UART ;initial UART
0103 120139 37 LCALL INIT_SPI ;initial SPI
0106 38 MAIN:
0106 20980D 39 JB RI,MASTER_MODE
0109 40 SLAVE_MODE:
0109 E5CD 41 MOV A,SPSTAT
010B 30E7F8 42 JNB ACC.7,MAIN
010E 75CDC0 43 MOV SPSTAT,#SPIF | WCOL ;clear SPI status
0111 85CFCF 44 MOV SPDAT,SPDAT ;return received SPI data
0114 80F0 45 SJMP MAIN
0116 46 MASTER_MODE:
0116 75CE50 47 MOV SPCTL,#SPEN | MSTR; ;set as master
0119 12014B 48 LCALL RECV_UART ;receive UART data from PC
011C 120154 49 LCALL SPI_SWAP ;send it to slave, in the meantime, receive SPI data from s
lave
011F 120143 50 LCALL SEND_UART ;send SPI data to PC
0122 75CE40 51 MOV SPCTL,#SPEN; ;reset as slave
0125 80DF 52 SJMP MAIN
53
54 ;//////////////////////////////////////////////////////////
55
0127 56 INIT_UART:
0127 75985A 57 MOV SCON,#5AH ;set UART mode as 8-bit variable baudrate
A51 MACRO ASSEMBLER SPIDEMO 08/04/2010 09:13:23 PAGE 2
012A 758920 58 MOV TMOD,#20H ;timer1 as 8-bit auto reload mode
012D 758E40 59 MOV AUXR,#40H ;timer1 work at 1T mode
0130 758BFB 60 MOV TL1,#0FBH ;115200 bps(256 - 18432000 / 32 / 115200)
0133 758DFB 61 MOV TH1,#0FBH
0136 D28E 62 SETB TR1
0138 22 63 RET
64
65 ;//////////////////////////////////////////////////////////
66
0139 67 INIT_SPI:
0139 75CF00 68 MOV SPDAT,#0 ;initial SPI data
013C 75CDC0 69 MOV SPSTAT,#SPIF | WCOL ;clear SPI status
013F 75CE40 70 MOV SPCTL,#SPEN ;slave mode
0142 22 71 RET
72
73 ;//////////////////////////////////////////////////////////
74
0143 75 SEND_UART:
0143 3099FD 76 JNB TI,$ ;wait pre-data sent
0146 C299 77 CLR TI ;clear TI flag
0148 F599 78 MOV SBUF,A ;send current data
014A 22 79 RET
80
81 ;//////////////////////////////////////////////////////////
82
014B 83 RECV_UART:
014B 3098FD 84 JNB RI,$ ;wait receive complete
014E C298 85 CLR RI ;clear RI flag
0150 E599 86 MOV A,SBUF ;return receive data
0152 22 87 RET
0153 22 88 RET
89
90 ;//////////////////////////////////////////////////////////
91
0154 92 SPI_SWAP:
0154 C293 93 CLR SPISS ;pull low slave SS
0156 F5CF 94 MOV SPDAT,A ;trigger SPI send
0158 95 WAIT:
0158 E5CD 96 MOV A,SPSTAT
015A 30E7FB 97 JNB ACC.7,WAIT ;wait send complete
015D 75CDC0 98 MOV SPSTAT,#SPIF | WCOL ;clear SPI status
0160 D293 99 SETB SPISS ;push high slave SS
0162 E5CF 100 MOV A,SPDAT ;return received SPI data
0164 22 101 RET
102
103 ;//////////////////////////////////////////////////////////
104
105 END
A51 MACRO ASSEMBLER SPIDEMO 08/04/2010 09:13:23 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
AUXR . . . . . . . D ADDR 008EH A
CPHA . . . . . . . N NUMB 0004H A
CPOL . . . . . . . N NUMB 0008H A
DORD . . . . . . . N NUMB 0020H A
INIT_SPI . . . . . C ADDR 0139H A
INIT_UART. . . . . C ADDR 0127H A
MAIN . . . . . . . C ADDR 0106H A
MASTER_MODE. . . . C ADDR 0116H A
MSTR . . . . . . . N NUMB 0010H A
P1 . . . . . . . . D ADDR 0090H A
RECV_UART. . . . . C ADDR 014BH A
RESET. . . . . . . C ADDR 0100H A
RI . . . . . . . . B ADDR 0098H.0 A
SBUF . . . . . . . D ADDR 0099H A
SCON . . . . . . . D ADDR 0098H A
SEND_UART. . . . . C ADDR 0143H A
SLAVE_MODE . . . . C ADDR 0109H A
SPCTL. . . . . . . D ADDR 00CEH A
SPDAT. . . . . . . D ADDR 00CFH A
SPDH . . . . . . . N NUMB 0001H A
SPDHH. . . . . . . N NUMB 0000H A
SPDL . . . . . . . N NUMB 0002H A
SPDLL. . . . . . . N NUMB 0003H A
SPEN . . . . . . . N NUMB 0040H A
SPIF . . . . . . . N NUMB 0080H A
SPISS. . . . . . . B ADDR 0090H.3 A
SPI_SWAP . . . . . C ADDR 0154H A
SPSTAT . . . . . . D ADDR 00CDH A
SSIG . . . . . . . N NUMB 0080H A
TH1. . . . . . . . D ADDR 008DH A
TI . . . . . . . . B ADDR 0098H.1 A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
WAIT . . . . . . . C ADDR 0158H A
WCOL . . . . . . . N NUMB 0040H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -