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

📄 cc2420.lis

📁 该程序通过调试
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -