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

📄 cc2420.lis

📁 该程序通过调试
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module cc2420.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\无线传感器网络资料\cc2420驱动\测试1\RX\cc2420.c
 0000                   .dbfunc e Write_Command _Write_Command fc
 0000           ;      statueval -> R20
 0000           ;        command -> R20
                        .even
 0000           _Write_Command::
 0000 0E940000          xcall push_gset1
 0004 402F              mov R20,R16
 0006                   .dbline -1
 0006                   .dbline 24
 0006           ; /***************************************
 0006           ; *2008,浙江工业大学信息与控制研究所
 0006           ; *All rights reserved
 0006           ; *
 0006           ; *文件名称:cc2420.c
 0006           ; *摘    要:无线收发芯片cc2420驱动程序
 0006           ; *
 0006           ; *当前版本:1.0
 0006           ; *作    者:董齐芬
 0006           ; *完成日期:2008.8.11
 0006           ; ****************************************/
 0006           ; 
 0006           ; #include "cc2420.h"
 0006           ; #include "spi.h"
 0006           ; #include "common.h"
 0006           ; 
 0006           ; /*******************************************
 0006           ; *函数功能:写命令寄存器
 0006           ; *输入参数:命令字
 0006           ; *输出参数:无
 0006           ; *返 回 值:状态寄存器的值
 0006           ; ********************************************/
 0006           ; unsigned char Write_Command(unsigned char command)
 0006           ; {
 0006                   .dbline 27
 0006           ;   unsigned char statueval;
 0006           ;   
 0006           ;   enable_spi();     //使能SPI口
 0006 0E940000          xcall _enable_spi
 000A                   .dbline 28
 000A           ;   statueval=SpiWrite(command);
 000A 042F              mov R16,R20
 000C 0E940000          xcall _SpiWrite
 0010 402F              mov R20,R16
 0012                   .dbline 29
 0012           ;   disable_spi();      //禁止SPI口  
 0012 0E940000          xcall _disable_spi
 0016                   .dbline 31
 0016           ;   
 0016           ;   return statueval;
 0016 042F              mov R16,R20
 0018                   .dbline -2
 0018           L1:
 0018 0E940000          xcall pop_gset1
 001C                   .dbline 0 ; func end
 001C 0895              ret
 001E                   .dbsym r statueval 20 c
 001E                   .dbsym r command 20 c
 001E                   .dbend
 001E                   .dbfunc e Read_Status _Read_Status fc
 001E           ;    statuevalue -> R20
                        .even
 001E           _Read_Status::
 001E 0E940000          xcall push_gset1
 0022                   .dbline -1
 0022                   .dbline 41
 0022           ; }
 0022           ; 
 0022           ; /*******************************************
 0022           ; *函数功能:读状态寄存器
 0022           ; *输入参数:无
 0022           ; *输出参数:无
 0022           ; *返 回 值:状态寄存器的值
 0022           ; ********************************************/
 0022           ; unsigned char Read_Status(void)
 0022           ; {
 0022                   .dbline 43
 0022           ;   unsigned char statuevalue;
 0022           ;   statuevalue=Write_Command(SNOP);        //空操作命令,为了读取当前状态寄存器的值
 0022 0027              clr R16
 0024 EDDF              xcall _Write_Command
 0026 402F              mov R20,R16
 0028                   .dbline 44
 0028           ;   return statuevalue;
 0028                   .dbline -2
 0028           L2:
 0028 0E940000          xcall pop_gset1
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r statuevalue 20 c
 002E                   .dbend
 002E                   .dbfunc e Write_ConfigureWord _Write_ConfigureWord fc
 002E           ;    statuevalue -> R20
 002E           ;          DataL -> y+4
 002E           ;          DataH -> R22
 002E           ;           Addr -> R20
                        .even
 002E           _Write_ConfigureWord::
 002E 0E940000          xcall push_gset2
 0032 622F              mov R22,R18
 0034 402F              mov R20,R16
 0036                   .dbline -1
 0036                   .dbline 56
 0036           ; }
 0036           ; 
 0036           ; /*******************************************
 0036           ; *函数功能:写配置字
 0036           ; *输入参数:Addr:配置寄存器的地址;
 0036           ;            DataH:配置字的高字节;
 0036           ;                  DataL:配置字的低字节;
 0036           ; *输出参数:无
 0036           ; *返 回 值:状态寄存器的值
 0036           ; ********************************************/
 0036           ; unsigned char Write_ConfigureWord(unsigned char Addr,unsigned char DataH,unsigned char DataL)
 0036           ; {
 0036                   .dbline 60
 0036           ;   unsigned char statuevalue;
 0036           ;   
 0036           ;   // enable_spi();     //使能SPI口   以具体情况而定使能/禁止SPI口放在何处
 0036           ;   statuevalue=SpiWrite(Addr);  //发送配置寄存器的地址,同时返回当前状态寄存器的值
 0036 042F              mov R16,R20
 0038 0E940000          xcall _SpiWrite
 003C 402F              mov R20,R16
 003E                   .dbline 61
 003E           ;   SpiWrite(DataH); //发送配置字的高字节
 003E 062F              mov R16,R22
 0040 0E940000          xcall _SpiWrite
 0044                   .dbline 62
 0044           ;   SpiWrite(DataL); //发送配置字的低字节
 0044 0C81              ldd R16,y+4
 0046 0E940000          xcall _SpiWrite
 004A                   .dbline 65
 004A           ;   // disable_spi();      //禁止SPI口  
 004A           ;  
 004A           ;   return statuevalue;
 004A 042F              mov R16,R20
 004C                   .dbline -2
 004C           L3:
 004C 0E940000          xcall pop_gset2
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r statuevalue 20 c
 0052                   .dbsym l DataL 4 c
 0052                   .dbsym r DataH 22 c
 0052                   .dbsym r Addr 20 c
 0052                   .dbend
 0052                   .dbfunc e Read_ConfigureWord _Read_ConfigureWord fc
 0052           ;    statuevalue -> R20
 0052           ;          DataL -> y+4
 0052           ;          DataH -> R22,R23
 0052           ;           Addr -> R20
                        .even
 0052           _Read_ConfigureWord::
 0052 0E940000          xcall push_gset2
 0056 B901              movw R22,R18
 0058 402F              mov R20,R16
 005A                   .dbline -1
 005A                   .dbline 76
 005A           ; }
 005A           ; 
 005A           ; /*******************************************
 005A           ; *函数功能:读配置字
 005A           ; *输入参数:Addr:配置寄存器的地址;       
 005A           ; *输出参数:DataH:配置字的高字节;
 005A           ;            DataL:配置字的低字节;
 005A           ; *返 回 值:状态寄存器的值
 005A           ; ********************************************/
 005A           ; unsigned char Read_ConfigureWord(unsigned char Addr,unsigned char *DataH,unsigned char *DataL)
 005A           ; {
 005A                   .dbline 79
 005A           ;   unsigned char statuevalue;
 005A           ;   
 005A           ;   Addr|=0x40;     //读标志位为1
 005A 4064              ori R20,64
 005C                   .dbline 80
 005C           ;   enable_spi();     //使能SPI口   以具体情况而定使能/禁止SPI口放在何处
 005C 0E940000          xcall _enable_spi
 0060                   .dbline 81
 0060           ;   statuevalue=SpiWrite(Addr);  //发送配置寄存器的地址,同时返回当前状态寄存器的值
 0060 042F              mov R16,R20
 0062 0E940000          xcall _SpiWrite
 0066 402F              mov R20,R16
 0068                   .dbline 82
 0068           ;   *DataH=SpiWrite(0xff); //读配置字的高字节
 0068 0FEF              ldi R16,255
 006A 0E940000          xcall _SpiWrite
 006E FB01              movw R30,R22
 0070 0083              std z+0,R16
 0072                   .dbline 83
 0072           ;   *DataL=SpiWrite(0xff); //读配置字的低字节
 0072 0FEF              ldi R16,255
 0074 0E940000          xcall _SpiWrite
 0078 202E              mov R2,R16
 007A EC81              ldd R30,y+4
 007C FD81              ldd R31,y+5
 007E 2082              std z+0,R2
 0080                   .dbline 84
 0080           ;   disable_spi();      //禁止SPI口  
 0080 0E940000          xcall _disable_spi
 0084                   .dbline 86
 0084           ;  
 0084           ;   return statuevalue;
 0084 042F              mov R16,R20
 0086                   .dbline -2
 0086           L4:
 0086 0E940000          xcall pop_gset2
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbsym r statuevalue 20 c
 008C                   .dbsym l DataL 4 pc
 008C                   .dbsym r DataH 22 pc
 008C                   .dbsym r Addr 20 c
 008C                   .dbend
 008C                   .dbfunc e Read_RXFIFO _Read_RXFIFO fc
 008C           ;           Addr -> R20
 008C           ;    statuevalue -> R20
 008C           ;              i -> R22
 008C           ;         p_Data -> R10,R11
 008C           ;       Data_Num -> R12
                        .even
 008C           _Read_RXFIFO::
 008C 0E940000          xcall push_gset4
 0090 5901              movw R10,R18
 0092 C02E              mov R12,R16
 0094                   .dbline -1
 0094                   .dbline 96
 0094           ; }
 0094           ; 
 0094           ; /*******************************************
 0094           ; *函数功能:读RXFIFO 
 0094           ; *输入参数:Data_Num:欲读取的字节个数
 0094           ; *输出参数:p_Data:存储数据的缓存首地址;
 0094           ; *返 回 值:状态寄存器的值
 0094           ; ********************************************/
 0094           ; unsigned char Read_RXFIFO(unsigned char Data_Num,unsigned char *p_Data) 
 0094           ; {
 0094                   .dbline 99
 0094           ;   unsigned char statuevalue,Addr,i;
 0094           ;   
 0094           ;   Addr=RXFIFO|0x40;     //读标志位为1
 0094 4FE7              ldi R20,127
 0096                   .dbline 100
 0096           ;   enable_spi();         //使能SPI口 
 0096 0E940000          xcall _enable_spi
 009A                   .dbline 101
 009A           ;   statuevalue=SpiWrite(Addr);
 009A 042F              mov R16,R20
 009C 0E940000          xcall _SpiWrite
 00A0 402F              mov R20,R16
 00A2                   .dbline 103
 00A2           ;   
 00A2           ;   for(i=0;i<Data_Num;i++)
 00A2 6627              clr R22
 00A4 09C0              xjmp L9
 00A6           L6:
 00A6                   .dbline 104
 00A6                   .dbline 105
 00A6 0FEF              ldi R16,255
 00A8 0E940000          xcall _SpiWrite
 00AC E62F              mov R30,R22
 00AE FF27              clr R31
 00B0 EA0D              add R30,R10
 00B2 FB1D              adc R31,R11
 00B4 0083              std z+0,R16
 00B6                   .dbline 106
 00B6           L7:
 00B6                   .dbline 103
 00B6 6395              inc R22
 00B8           L9:
 00B8                   .dbline 103
 00B8 6C15              cp R22,R12
 00BA A8F3              brlo L6
 00BC                   .dbline 108
 00BC           ;   {
 00BC           ;     *(p_Data+i)=SpiWrite(0xff);
 00BC           ;   }
 00BC           ;   
 00BC           ;   disable_spi();      //禁止SPI口  
 00BC 0E940000          xcall _disable_spi
 00C0                   .dbline 110
 00C0           ;  
 00C0           ;   return statuevalue;
 00C0 042F              mov R16,R20
 00C2                   .dbline -2
 00C2           L5:
 00C2 0E940000          xcall pop_gset4
 00C6                   .dbline 0 ; func end
 00C6 0895              ret
 00C8                   .dbsym r Addr 20 c
 00C8                   .dbsym r statuevalue 20 c
 00C8                   .dbsym r i 22 c
 00C8                   .dbsym r p_Data 10 pc
 00C8                   .dbsym r Data_Num 12 c
 00C8                   .dbend
 00C8                   .dbfunc e Read_RXFIFO_Byte _Read_RXFIFO_Byte fc
 00C8           ;           Addr -> R20
 00C8           ;      readvalue -> R20
                        .even
 00C8           _Read_RXFIFO_Byte::
 00C8 0E940000          xcall push_gset1
 00CC                   .dbline -1
 00CC                   .dbline 120
 00CC           ; }
 00CC           ; 

⌨️ 快捷键说明

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