📄 cc2420.lis
字号:
00CC ; /*******************************************
00CC ; *函数功能:读一字节RXFIFO
00CC ; *输入参数:无
00CC ; *输出参数:无
00CC ; *返 回 值:读取的数据
00CC ; ********************************************/
00CC ; unsigned char Read_RXFIFO_Byte(void)
00CC ; {
00CC .dbline 123
00CC ; unsigned char readvalue,Addr;
00CC ;
00CC ; Addr=RXFIFO|0x40; //读标志位为1
00CC 4FE7 ldi R20,127
00CE .dbline 124
00CE ; enable_spi(); //使能SPI口
00CE 0E940000 xcall _enable_spi
00D2 .dbline 125
00D2 ; SpiWrite(Addr);
00D2 042F mov R16,R20
00D4 0E940000 xcall _SpiWrite
00D8 .dbline 126
00D8 ; readvalue=SpiWrite(0xff);
00D8 0FEF ldi R16,255
00DA 0E940000 xcall _SpiWrite
00DE 402F mov R20,R16
00E0 .dbline 127
00E0 ; disable_spi(); //禁止SPI口
00E0 0E940000 xcall _disable_spi
00E4 .dbline 128
00E4 ; return readvalue;
00E4 042F mov R16,R20
00E6 .dbline -2
00E6 L10:
00E6 0E940000 xcall pop_gset1
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbsym r Addr 20 c
00EC .dbsym r readvalue 20 c
00EC .dbend
00EC .dbfunc e Write_TXFIFO _Write_TXFIFO fc
00EC ; statuevalue -> R20
00EC ; i -> R22
00EC ; p_Data -> R10,R11
00EC ; Data_Num -> R12
.even
00EC _Write_TXFIFO::
00EC 0E940000 xcall push_gset4
00F0 5901 movw R10,R18
00F2 C02E mov R12,R16
00F4 .dbline -1
00F4 .dbline 138
00F4 ; }
00F4 ;
00F4 ; /*******************************************
00F4 ; *函数功能:写TXFIFO
00F4 ; *输入参数:Data_Num:欲写入的字节个数
00F4 ; *输出参数:p_Data:存储数据的缓存首地址;
00F4 ; *返 回 值:状态寄存器的值
00F4 ; ********************************************/
00F4 ; unsigned char Write_TXFIFO(unsigned char Data_Num,unsigned char *p_Data)
00F4 ; {
00F4 .dbline 141
00F4 ; unsigned char statuevalue,i;
00F4 ;
00F4 ; enable_spi(); //使能SPI口
00F4 0E940000 xcall _enable_spi
00F8 .dbline 142
00F8 ; SpiWrite(TXFIFO);
00F8 0EE3 ldi R16,62
00FA 0E940000 xcall _SpiWrite
00FE .dbline 144
00FE ;
00FE ; for (i=0;i<Data_Num;i++)
00FE 6627 clr R22
0100 0FC0 xjmp L15
0102 L12:
0102 .dbline 145
0102 ; {
0102 .dbline 146
0102 ; statuevalue=SpiWrite(*(p_Data+i));
0102 E62F mov R30,R22
0104 FF27 clr R31
0106 EA0D add R30,R10
0108 FB1D adc R31,R11
010A 0081 ldd R16,z+0
010C 0E940000 xcall _SpiWrite
0110 402F mov R20,R16
0112 .dbline 148
0112 ;
0112 ; if ((statuevalue&(1<<TX_UNDERFLOE))!=0x00) //发生下溢
0112 05FF sbrs R16,5
0114 04C0 rjmp L16
0116 .dbline 149
0116 ; {
0116 .dbline 150
0116 ; Write_Command(SFLUSHTX);
0116 09E0 ldi R16,9
0118 73DF xcall _Write_Command
011A .dbline 151
011A ; enable_spi(); //重新使能SPI口
011A 0E940000 xcall _enable_spi
011E .dbline 152
011E ; }
011E L16:
011E .dbline 153
011E L13:
011E .dbline 144
011E 6395 inc R22
0120 L15:
0120 .dbline 144
0120 6C15 cp R22,R12
0122 78F3 brlo L12
0124 .dbline 155
0124 ; }
0124 ;
0124 ; disable_spi(); //禁止SPI口
0124 0E940000 xcall _disable_spi
0128 .dbline 156
0128 ; return statuevalue;
0128 042F mov R16,R20
012A .dbline -2
012A L11:
012A 0E940000 xcall pop_gset4
012E .dbline 0 ; func end
012E 0895 ret
0130 .dbsym r statuevalue 20 c
0130 .dbsym r i 22 c
0130 .dbsym r p_Data 10 pc
0130 .dbsym r Data_Num 12 c
0130 .dbend
0130 .dbfunc e Write_TXFIFO_Byte _Write_TXFIFO_Byte fc
0130 ; statuevalue -> R20
0130 ; p_Data -> R20
.even
0130 _Write_TXFIFO_Byte::
0130 0E940000 xcall push_gset1
0134 402F mov R20,R16
0136 .dbline -1
0136 .dbline 166
0136 ; }
0136 ;
0136 ; /*******************************************
0136 ; *函数功能:写一字节TXFIFO
0136 ; *输入参数:p_Data:要写入的数据
0136 ; *输出参数:无
0136 ; *返 回 值:状态寄存器的值
0136 ; ********************************************/
0136 ; unsigned char Write_TXFIFO_Byte(unsigned char p_Data)
0136 ; {
0136 .dbline 169
0136 ; unsigned char statuevalue;
0136 ;
0136 ; enable_spi(); //使能SPI口
0136 0E940000 xcall _enable_spi
013A .dbline 170
013A ; SpiWrite(TXFIFO);
013A 0EE3 ldi R16,62
013C 0E940000 xcall _SpiWrite
0140 .dbline 171
0140 ; statuevalue=SpiWrite(p_Data);
0140 042F mov R16,R20
0142 0E940000 xcall _SpiWrite
0146 402F mov R20,R16
0148 .dbline 172
0148 ; disable_spi(); //禁止SPI口
0148 0E940000 xcall _disable_spi
014C .dbline 173
014C ; return statuevalue;
014C 042F mov R16,R20
014E .dbline -2
014E L18:
014E 0E940000 xcall pop_gset1
0152 .dbline 0 ; func end
0152 0895 ret
0154 .dbsym r statuevalue 20 c
0154 .dbsym r p_Data 20 c
0154 .dbend
0154 .dbfunc e Write_RAM _Write_RAM fc
0154 ; statuevalue -> R20
0154 ; i -> R22
0154 ; p_Data -> R10,R11
0154 ; Data_Num -> R12
0154 ; AddrL -> R22
0154 ; AddrH -> R20
.even
0154 _Write_RAM::
0154 0E940000 xcall push_gset4
0158 622F mov R22,R18
015A 402F mov R20,R16
015C C884 ldd R12,y+8
015E AA84 ldd R10,y+10
0160 BB84 ldd R11,y+11
0162 .dbline -1
0162 .dbline 186
0162 ; }
0162 ;
0162 ; /*******************************************
0162 ; *函数功能:写RAM
0162 ; *输入参数:p_Data:存储数据的缓存首地址;
0162 ; Data_Num:要写入的字节数
0162 ; AddrH:在选定的RAM存储块中确定RAM地址
0162 ; AddrL:选择RAM存储块
0162 ; *输出参数:无
0162 ; *返 回 值:状态寄存器的值
0162 ; ********************************************/
0162 ; unsigned char Write_RAM(unsigned char AddrH,unsigned char AddrL,unsigned char Data_Num,unsigned char *p_Data)
0162 ; {
0162 .dbline 188
0162 ; unsigned char statuevalue,i;
0162 ; AddrH|=0X80; //访问RAM位置1
0162 4068 ori R20,128
0164 .dbline 189
0164 ; AddrL<<=6;
0164 660F lsl R22
0166 660F lsl R22
0168 660F lsl R22
016A 660F lsl R22
016C 660F lsl R22
016E 660F lsl R22
0170 .dbline 190
0170 ; AddrL&=0XDF; //读写操作位置0,表示写操作
0170 6F7D andi R22,223
0172 .dbline 192
0172 ;
0172 ; enable_spi(); //使能SPI口
0172 0E940000 xcall _enable_spi
0176 .dbline 193
0176 ; statuevalue=SpiWrite(AddrH);
0176 042F mov R16,R20
0178 0E940000 xcall _SpiWrite
017C 402F mov R20,R16
017E .dbline 194
017E ; SpiWrite(AddrL);
017E 062F mov R16,R22
0180 0E940000 xcall _SpiWrite
0184 .dbline 196
0184 ;
0184 ; for (i=0;i<Data_Num;i++)
0184 6627 clr R22
0186 08C0 xjmp L23
0188 L20:
0188 .dbline 197
0188 .dbline 198
0188 E62F mov R30,R22
018A FF27 clr R31
018C EA0D add R30,R10
018E FB1D adc R31,R11
0190 0081 ldd R16,z+0
0192 0E940000 xcall _SpiWrite
0196 .dbline 199
0196 L21:
0196 .dbline 196
0196 6395 inc R22
0198 L23:
0198 .dbline 196
0198 6C15 cp R22,R12
019A B0F3 brlo L20
019C .dbline 201
019C ; {
019C ; SpiWrite(*(p_Data+i));
019C ; }
019C ;
019C ; disable_spi(); //禁止SPI口
019C 0E940000 xcall _disable_spi
01A0 .dbline 202
01A0 ; return statuevalue;
01A0 042F mov R16,R20
01A2 .dbline -2
01A2 L19:
01A2 0E940000 xcall pop_gset4
01A6 .dbline 0 ; func end
01A6 0895 ret
01A8 .dbsym r statuevalue 20 c
01A8 .dbsym r i 22 c
01A8 .dbsym r p_Data 10 pc
01A8 .dbsym r Data_Num 12 c
01A8 .dbsym r AddrL 22 c
01A8 .dbsym r AddrH 20 c
01A8 .dbend
01A8 .dbfunc e Write_RAM_Byte _Write_RAM_Byte fc
01A8 ; statuevalue -> R20
01A8 ; p_Data -> y+4
01A8 ; AddrL -> R22
01A8 ; AddrH -> R20
.even
01A8 _Write_RAM_Byte::
01A8 0E940000 xcall push_gset2
01AC 622F mov R22,R18
01AE 402F mov R20,R16
01B0 .dbline -1
01B0 .dbline 214
01B0 ; }
01B0 ;
01B0 ; /*******************************************
01B0 ; *函数功能:写一字节RAM
01B0 ; *输入参数:p_Data:要写入的数据
01B0 ; AddrH:在选定的RAM存储块中确定RAM地址
01B0 ; AddrL:选择RAM存储块
01B0 ; *输出参数:无
01B0 ; *返 回 值:状态寄存器的值
01B0 ; ********************************************/
01B0 ; unsigned char Write_RAM_Byte(unsigned char AddrH,unsigned char AddrL,unsigned char p_Data)
01B0 ; {
01B0 .dbline 216
01B0 ; unsigned char statuevalue;
01B0 ; AddrH|=0X80; //访问RAM位置1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -