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

📄 cc1100.lis

📁 极低功率UHF无线收发器 315/433/868和915MHz ISM/SRD波段系统 AMR-自动仪表读数 电子消费产品 RKE-两路远程无键登录
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 006E                   .dbline 156
 006E                   .dbline 157
 006E           ;       SCK_0;
 006E C598              cbi 0x18,5
 0070                   .dbline 157
 0070                   .dbline 158
 0070           ;       CSN_1;
 0070 C29A              sbi 0x18,2
 0072                   .dbline 158
 0072                   .dbline -2
 0072           L15:
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbend
 0074                   .dbfunc e CpuInit _CpuInit fV
                        .even
 0074           _CpuInit::
 0074                   .dbline -1
 0074                   .dbline 168
 0074           ; }
 0074           ; 
 0074           ; /*****************************************************************************************
 0074           ; //函数名:CpuInit()
 0074           ; //输入:无
 0074           ; //输出:无
 0074           ; //功能描述:SPI初始化程序
 0074           ; /*****************************************************************************************/
 0074           ; void CpuInit(void)
 0074           ; {
 0074                   .dbline 169
 0074           ;               UartInit();
 0074 EEDF              rcall _UartInit
 0076                   .dbline 171
 0076           ;         
 0076           ;               SpiInit();
 0076 F6DF              rcall _SpiInit
 0078                   .dbline 172
 0078           ;               delay(5000);
 0078 08E8              ldi R16,5000
 007A 13E1              ldi R17,19
 007C C1DF              rcall _delay
 007E                   .dbline -2
 007E           L16:
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbend
 0080                   .dbfunc e SpiTxRxByte _SpiTxRxByte fc
 0080           ;           temp -> R20
 0080           ;              i -> R22
 0080           ;            dat -> R16
                        .even
 0080           _SpiTxRxByte::
 0080 00D0              rcall push_gset2
 0082                   .dbline -1
 0082                   .dbline 182
 0082           ; }
 0082           ;       
 0082           ; //*****************************************************************************************
 0082           ; //函数名:SpisendByte(INT8U dat)
 0082           ; //输入:发送的数据
 0082           ; //输出:无
 0082           ; //功能描述:SPI发送一个字节
 0082           ; //*****************************************************************************************
 0082           ; INT8U SpiTxRxByte(INT8U dat)
 0082           ; {
 0082                   .dbline 184
 0082           ;       INT8U i,temp;
 0082           ;       temp = 0;
 0082 4427              clr R20
 0084                   .dbline 186
 0084           ;       
 0084           ;       SCK_0;
 0084 C598              cbi 0x18,5
 0086                   .dbline 186
 0086                   .dbline 187
 0086           ;       for(i=0; i<8; i++)
 0086 6627              clr R22
 0088 11C0              rjmp L21
 008A           L18:
 008A                   .dbline 188
 008A           ;       {
 008A                   .dbline 189
 008A           ;               if(dat & 0x80)
 008A 07FF              sbrs R16,7
 008C 02C0              rjmp L22
 008E                   .dbline 190
 008E           ;               {
 008E                   .dbline 191
 008E           ;                       MOSI_1;
 008E C39A              sbi 0x18,3
 0090                   .dbline 191
 0090                   .dbline 192
 0090           ;               }
 0090 01C0              rjmp L23
 0092           L22:
 0092                   .dbline 193
 0092 C398              cbi 0x18,3
 0094           L23:
 0094                   .dbline 193
 0094           ;               else MOSI_0;
 0094                   .dbline 194
 0094           ;               dat <<= 1;
 0094 000F              lsl R16
 0096                   .dbline 196
 0096           ; 
 0096           ;               SCK_1; 
 0096 C59A              sbi 0x18,5
 0098                   .dbline 196
 0098                   .dbline 197
 0098           ;               _nop_();
 0098 0000              nop
 009A                   .dbline 198
 009A           ;               _nop_();
 009A 0000              nop
 009C                   .dbline 200
 009C           ; 
 009C           ;               temp <<= 1;
 009C 440F              lsl R20
 009E                   .dbline 201
 009E           ;               if(MISO)temp++; 
 009E B49B              sbis 0x16,4
 00A0 01C0              rjmp L24
 00A2                   .dbline 201
 00A2 4395              inc R20
 00A4           L24:
 00A4                   .dbline 202
 00A4 C598              cbi 0x18,5
 00A6                   .dbline 202
 00A6                   .dbline 203
 00A6 0000              nop
 00A8                   .dbline 204
 00A8 0000              nop
 00AA                   .dbline 205
 00AA           L19:
 00AA                   .dbline 187
 00AA 6395              inc R22
 00AC           L21:
 00AC                   .dbline 187
 00AC 6830              cpi R22,8
 00AE 68F3              brlo L18
 00B0                   .dbline 206
 00B0           ;               SCK_0;
 00B0           ;               _nop_();
 00B0           ;               _nop_();        
 00B0           ;       }
 00B0           ;       return temp;
 00B0 042F              mov R16,R20
 00B2                   .dbline -2
 00B2           L17:
 00B2 00D0              rcall pop_gset2
 00B4                   .dbline 0 ; func end
 00B4 0895              ret
 00B6                   .dbsym r temp 20 c
 00B6                   .dbsym r i 22 c
 00B6                   .dbsym r dat 16 c
 00B6                   .dbend
 00B6                   .dbfunc e RESET_CC1100 _RESET_CC1100 fV
                        .even
 00B6           _RESET_CC1100::
 00B6                   .dbline -1
 00B6                   .dbline 216
 00B6           ; }
 00B6           ; 
 00B6           ; //*****************************************************************************************
 00B6           ; //函数名:void RESET_CC1100(void)
 00B6           ; //输入:无
 00B6           ; //输出:无
 00B6           ; //功能描述:复位CC1100
 00B6           ; //*****************************************************************************************
 00B6           ; void RESET_CC1100(void) 
 00B6           ; {
 00B6                   .dbline 217
 00B6           ;       CSN_0; 
 00B6 C298              cbi 0x18,2
 00B8                   .dbline 217
 00B8           L27:
 00B8                   .dbline 218
 00B8           L28:
 00B8                   .dbline 218
 00B8           ;       while (GDO0); 
 00B8 8299              sbic 0x10,2
 00BA FECF              rjmp L27
 00BC                   .dbline 219
 00BC           ;       SpiTxRxByte(CCxxx0_SRES);               //写入复位命令
 00BC 00E3              ldi R16,48
 00BE E0DF              rcall _SpiTxRxByte
 00C0           L30:
 00C0                   .dbline 220
 00C0           L31:
 00C0                   .dbline 220
 00C0           ;       while (GDO0); 
 00C0 8299              sbic 0x10,2
 00C2 FECF              rjmp L30
 00C4                   .dbline 221
 00C4           ;       CSN_1; 
 00C4 C29A              sbi 0x18,2
 00C6                   .dbline 221
 00C6                   .dbline -2
 00C6           L26:
 00C6                   .dbline 0 ; func end
 00C6 0895              ret
 00C8                   .dbend
 00C8                   .dbfunc e POWER_UP_RESET_CC1100 _POWER_UP_RESET_CC1100 fV
                        .even
 00C8           _POWER_UP_RESET_CC1100::
 00C8                   .dbline -1
 00C8                   .dbline 231
 00C8           ; }
 00C8           ; 
 00C8           ; //*****************************************************************************************
 00C8           ; //函数名:void POWER_UP_RESET_CC1100(void) 
 00C8           ; //输入:无
 00C8           ; //输出:无
 00C8           ; //功能描述:上电复位CC1100
 00C8           ; //*****************************************************************************************
 00C8           ; void POWER_UP_RESET_CC1100(void) 
 00C8           ; {
 00C8                   .dbline 232
 00C8           ;       CSN_1; 
 00C8 C29A              sbi 0x18,2
 00CA                   .dbline 232
 00CA                   .dbline 233
 00CA           ;       halWait(1); 
 00CA 01E0              ldi R16,1
 00CC 10E0              ldi R17,0
 00CE ABDF              rcall _halWait
 00D0                   .dbline 234
 00D0           ;       CSN_0; 
 00D0 C298              cbi 0x18,2
 00D2                   .dbline 234
 00D2                   .dbline 235
 00D2           ;       halWait(1); 
 00D2 01E0              ldi R16,1
 00D4 10E0              ldi R17,0
 00D6 A7DF              rcall _halWait
 00D8                   .dbline 236
 00D8           ;       CSN_1; 
 00D8 C29A              sbi 0x18,2
 00DA                   .dbline 236
 00DA                   .dbline 237
 00DA           ;       halWait(41); 
 00DA 09E2              ldi R16,41
 00DC 10E0              ldi R17,0
 00DE A3DF              rcall _halWait
 00E0                   .dbline 238
 00E0           ;       RESET_CC1100();                 //复位CC1100
 00E0 EADF              rcall _RESET_CC1100
 00E2                   .dbline -2
 00E2           L33:
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbend
 00E4                   .dbfunc e halSpiWriteReg _halSpiWriteReg fV
 00E4           ;          value -> R20
 00E4           ;           addr -> R22
                        .even
 00E4           _halSpiWriteReg::
 00E4 00D0              rcall push_gset2
 00E6 422F              mov R20,R18
 00E8 602F              mov R22,R16
 00EA                   .dbline -1
 00EA                   .dbline 248
 00EA           ; }
 00EA           ; 
 00EA           ; //*****************************************************************************************
 00EA           ; //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
 00EA           ; //输入:地址和配置字
 00EA           ; //输出:无
 00EA           ; //功能描述:SPI写寄存器
 00EA           ; //*****************************************************************************************
 00EA           ; void halSpiWriteReg(INT8U addr, INT8U value) 
 00EA           ; {
 00EA                   .dbline 249
 00EA           ;     CSN_0;
 00EA C298              cbi 0x18,2
 00EC                   .dbline 249
 00EC           L35:
 00EC                   .dbline 250
 00EC           L36:
 00EC                   .dbline 250
 00EC           ;     while (GDO0);
 00EC 8299              sbic 0x10,2
 00EE FECF              rjmp L35
 00F0                   .dbline 251
 00F0           ;     SpiTxRxByte(addr);                //写地址
 00F0 062F              mov R16,R22
 00F2 C6DF              rcall _SpiTxRxByte
 00F4                   .dbline 252
 00F4           ;     SpiTxRxByte(value);               //写入配置
 00F4 042F              mov R16,R20
 00F6 C4DF              rcall _SpiTxRxByte
 00F8                   .dbline 253
 00F8           ;     CSN_1;
 00F8 C29A              sbi 0x18,2
 00FA                   .dbline 253
 00FA                   .dbline -2
 00FA           L34:
 00FA 00D0              rcall pop_gset2
 00FC                   .dbline 0 ; func end
 00FC 0895              ret
 00FE                   .dbsym r value 20 c
 00FE                   .dbsym r addr 22 c
 00FE                   .dbend
 00FE                   .dbfunc e halSpiWriteBurstReg _halSpiWriteBurstReg fV
 00FE           ;           temp -> R20
 00FE           ;              i -> R22
 00FE           ;          count -> R10
 00FE           ;         buffer -> R12,R13
 00FE           ;           addr -> R20
                        .even
 00FE           _halSpiWriteBurstReg::
 00FE 00D0              rcall push_gset4
 0100 6901              movw R12,R18
 0102 402F              mov R20,R16
 0104 A884              ldd R10,y+8
 0106                   .dbline -1
 0106                   .dbline 263
 0106           ; }
 0106           ; 
 0106           ; //*****************************************************************************************
 0106           ; //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 0106           ; //输入:地址,写入缓冲区,写入个数
 0106           ; //输出:无
 0106           ; //功能描述:SPI连续写配置寄存器
 0106           ; //*****************************************************************************************
 0106           ; void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 0106           ; {
 0106                   .dbline 265
 0106           ;     INT8U i, temp;
 0106           ;       temp = addr | WRITE_BURST;
 0106 4064              ori R20,64
 0108                   .dbline 266
 0108           ;     CSN_0;
 0108 C298              cbi 0x18,2
 010A                   .dbline 266

⌨️ 快捷键说明

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