📄 cc1100.lis
字号:
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 + -