📄 rf.lis
字号:
00AD ; {
00AD .dbline 115
00AD ; INT8U Data;
00AD ; INT8U i,j;
00AD ;
00AD ; //清空FIFO缓冲区
00AD ; Data = RFRegRead(RegControl); //读取Control寄存器
00AD A609 lda #9
00AF 87 psha
00B0 CD0000 jsr _RFRegRead
00B3 A701 ais #1
00B5 95 tsx
00B6 B700 sta *__r1
00B8 E701 sta 1,X
00BA .dbline 116
00BA ; Data |= 0x01; //Bit0置1清FIFO
00BA AA01 ora #1
00BC E701 sta 1,X
00BE .dbline 117
00BE ; RFRegWrite(RegControl, Data); //设置Control寄存器
00BE 87 psha
00BF A609 lda #9
00C1 87 psha
00C2 CD002D jsr _RFRegWrite
00C5 A702 ais #2
00C7 95 tsx
00C8 .dbline 120
00C8 ;
00C8 ; //判断FIFO缓冲区是否被清空
00C8 ; for(i = 0; i < 0x10; i++)
00C8 7F clr ,X
00C9 201F bra L18
00CB L15:
00CB .dbline 121
00CB ; {
00CB .dbline 122
00CB ; Data = RFRegRead(RegFIFOLength); //读取FIFOLength寄存器
00CB A604 lda #4
00CD 87 psha
00CE CD0000 jsr _RFRegRead
00D1 A701 ais #1
00D3 95 tsx
00D4 B700 sta *__r1
00D6 E701 sta 1,X
00D8 .dbline 123
00D8 ; if(Data == 0) //判断FIFOLength寄存器是否已为0
00D8 2603 bne L19
00DA .dbline 124
00DA ; return 0; //成功
00DA 4F clra
00DB 2014 bra L14
00DD L19:
00DD .dbline 125
00DD 6F02 clr 2,X
00DF 2002 bra L24
00E1 L21:
00E1 .dbline 125
00E1 L22:
00E1 .dbline 125
00E1 6C02 inc 2,X
00E3 L24:
00E3 .dbline 125
00E3 E602 lda 2,X
00E5 A164 cmp #100
00E7 25F8 blo L21
00E9 .dbline 126
00E9 L16:
00E9 .dbline 120
00E9 7C inc ,X
00EA L18:
00EA .dbline 120
00EA F6 lda ,X
00EB A110 cmp #16
00ED 25DC blo L15
00EF .dbline 127
00EF ; for(j = 0; j < 100; j++); //延时
00EF ; }
00EF ; return 1; //失败
00EF A601 lda #1
00F1 .dbline -2
00F1 L14:
00F1 A703 ais #3
00F3 .dbline 0 ; func end
00F3 81 rts
00F4 .dbsym l i 0 c
00F4 .dbsym l Data 1 c
00F4 .dbsym l j 2 c
00F4 .dbend
00F4 .dbfunc e Read_FIFO _Read_FIFO fc
00F4 ; Length -> 0,X
00F4 ; i -> 1,X
00F4 ; Send_Buf -> 4,X
00F4 _Read_FIFO::
00F4 .dbline -1
00F4 A7FE ais #-2
00F6 95 tsx
00F7 .dbline 137
00F7 ; }
00F7 ;
00F7 ; //Read_FIFO---------------------------------------------------------------*
00F7 ; //功 能: 读RC531的FIFO寄存器 *
00F7 ; //参 数: *Send_Buf *
00F7 ; //返 回: Length 读得数据长度 *
00F7 ; // Send_Buf[Length] 读出的数据置于发送,接收缓冲区中 *
00F7 ; //------------------------------------------------------------------------*
00F7 ; INT8U Read_FIFO(INT8U *Send_Buf)
00F7 ; {
00F7 .dbline 142
00F7 ; INT8U Length;
00F7 ; INT8U i;
00F7 ;
00F7 ; //获得FIFOLength缓冲区内数据长度
00F7 ; Length = RFRegRead(RegFIFOLength);
00F7 A604 lda #4
00F9 87 psha
00FA CD0000 jsr _RFRegRead
00FD A701 ais #1
00FF 95 tsx
0100 B700 sta *__r1
0102 F7 sta ,X
0103 .dbline 145
0103 ;
0103 ; //根据缓冲区长度依次读取数据
0103 ; for (i = 0; i < Length; i++)
0103 6F01 clr 1,X
0105 2021 bra L29
0107 L26:
0107 .dbline 146
0107 A602 lda #2
0109 87 psha
010A CD0000 jsr _RFRegRead
010D A701 ais #1
010F 95 tsx
0110 B700 sta *__r1
0112 3F00 clr *__r2
0114 E601 lda 1,X
0116 EB05 add 5,X
0118 B700 sta *__r3
011A B600 lda *__r2
011C E904 adc 4,X
011E B700 sta *__r2
0120 B600 lda *__r1
0122 5500 ldhx *__r2
0124 F7 sta ,x
0125 95 tsx
0126 L27:
0126 .dbline 145
0126 6C01 inc 1,X
0128 L29:
0128 .dbline 145
0128 E601 lda 1,X
012A F1 cmp ,X
012B 25DA blo L26
012D .dbline 147
012D ; Send_Buf[i] = RFRegRead(RegFIFOData);
012D ; return Length;
012D F6 lda ,X
012E .dbline -2
012E L25:
012E A702 ais #2
0130 .dbline 0 ; func end
0130 81 rts
0131 .dbsym l Length 0 c
0131 .dbsym l i 1 c
0131 .dbsym l Send_Buf 4 pc
0131 .dbend
0131 .dbfunc e Write_FIFO _Write_FIFO fV
0131 ; i -> 0,X
0131 ; Length -> 5,X
0131 ; Send_Buf -> 3,X
0131 _Write_FIFO::
0131 .dbline -1
0131 A7FF ais #-1
0133 95 tsx
0134 .dbline 157
0134 ; }
0134 ;
0134 ; //Write_FIFO--------------------------------------------------------------*
0134 ; //功 能: 读RC531的FIFO寄存器 *
0134 ; //参 数: Length: 要写入的字节数 *
0134 ; // Send_Buf: 待发送数据应放在Send_Buf缓冲区中 *
0134 ; //返 回: 无 *
0134 ; //------------------------------------------------------------------------*
0134 ; void Write_FIFO(INT8U *Send_Buf, INT8U Length)
0134 ; {
0134 .dbline 161
0134 ; INT8U i;
0134 ;
0134 ; //写入
0134 ; for (i = 0; i < Length; i++)
0134 7F clr ,X
0135 201B bra L34
0137 L31:
0137 .dbline 162
0137 3F00 clr *__r0
0139 F6 lda ,X
013A EB04 add 4,X
013C B700 sta *__r1
013E B600 lda *__r0
0140 E903 adc 3,X
0142 B700 sta *__r0
0144 5500 ldhx *__r0
0146 F6 lda ,x
0147 87 psha
0148 A602 lda #2
014A 87 psha
014B CD002D jsr _RFRegWrite
014E A702 ais #2
0150 95 tsx
0151 L32:
0151 .dbline 161
0151 7C inc ,X
0152 L34:
0152 .dbline 161
0152 F6 lda ,X
0153 E105 cmp 5,X
0155 25E0 blo L31
0157 .dbline -2
0157 L30:
0157 A701 ais #1
0159 .dbline 0 ; func end
0159 81 rts
015A .dbsym l i 0 c
015A .dbsym l Length 5 c
015A .dbsym l Send_Buf 3 pc
015A .dbend
015A .dbfunc e RFReset _RFReset fc
015A ; data -> 0,X
015A ; i -> 1,X
015A _RFReset::
015A .dbline -1
015A A7FE ais #-2
015C 95 tsx
015D .dbline 175
015D ; RFRegWrite(RegFIFOData, Send_Buf[i]);
015D ; }
015D ;
015D ; //------------------------------------------------------------------------*
015D ; //2.RC531的复位及初始化 *
015D ; //------------------------------------------------------------------------*
015D ;
015D ; //RFReset-----------------------------------------------------------------*
015D ; //功 能: 端口设置和射频芯片复位 *
015D ; //参 数: 无 *
015D ; //返 回: 0 - 初始化成功 ;1 - 初始化失败 *
015D ; //------------------------------------------------------------------------*
015D ; INT8U RFReset(void)
015D ; {
015D .dbline 180
015D ; INT8U i;
015D ; INT8U data;
015D ;
015D ; //控制端口设置
015D ; RF_CTL_D |= (1 << RF_RST); //设置RF_RST为输出
015D 1407 bset #2,0x7
015F .dbline 181
015F ; RF_CTL_D &= ~(1 << RF_IRQ); //设置RF_IRQ为输入
015F 1707 bclr #3,0x7
0161 .dbline 182
0161 ; SPI1Init(); //SPI1初始化(与RC531通信)模拟主机
0161 CD0000 jsr _SPI1Init
0164 95 tsx
0165 .dbline 185
0165 ;
0165 ; //RF复位,下降沿复位
0165 ; RF_CTL_D |= 1 << RF_RST; //高电平复位
0165 1407 bset #2,0x7
0167 .dbline 186
0167 6F01 clr 1,X
0169 2002 bra L39
016B L36:
016B .dbline 186
016B L37:
016B .dbline 186
016B 6C01 inc 1,X
016D L39:
016D .dbline 186
016D ; for(i = 0; i < 200; i++); //延时,等待高电平稳定
016D E601 lda 1,X
016F A1C8 cmp #-56
0171 25F8 blo L36
0173 .dbline 187
0173 ; RF_CTL_D &= ~(1 << RF_RST); //初始化RF_RST为低
0173 1507 bclr #2,0x7
0175 .dbline 188
0175 6F01 clr 1,X
0177 2002 bra L43
0179 L40:
0179 .dbline 188
0179 L41:
0179 .dbline 188
0179 6C01 inc 1,X
017B L43:
017B .dbline 188
017B ; for(i = 0; i < 5000; i++); //复位后等待一定的时间,必须!
017B E601 lda 1,X
017D A188 cmp #-120
017F 25F8 blo L40
0181 .dbline 191
0181 ;
0181 ; //验证初始化是否成功
0181 ; RFRegWrite(RegPage, 0); //线性地址模式
0181 4F clra
0182 87 psha
0183 87 psha
0184 CD002D jsr _RFRegWrite
0187 A702 ais #2
0189 .dbline 192
0189 ; RFRegWrite(0x29, 0x20); //写$20到寄存器FIFOLevel($29)
0189 A620 lda #32
018B 87 psha
018C A629 lda #41
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -