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

📄 cc1100.lis

📁 chipcom公司CC1100无线模块底层驱动程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0094           ;            buf -> R10,R11
 0094           ;           addr -> R20
                        .even
 0094           _CC1100ReadBurstReg::
 0094 00D0              rcall push_gset3
 0096 5901              movw R10,R18
 0098 402F              mov R20,R16
 009A 6E81              ldd R22,y+6
 009C                   .dbline -1
 009C                   .dbline 150
 009C           ; }
 009C           ; 
 009C           ; 
 009C           ; /*
 009C           ; ************************************************************
 009C           ; *Description:连续读CC1100状态寄存器
 009C           ; *Arguments  :addr:地址; *buf:读取数据存放寄存器; cnt:所要读取字节个数
 009C           ; *Returns    :none
 009C           ; *Notes      :
 009C           ; ************************************************************
 009C           ; */
 009C           ; void CC1100ReadBurstReg (INT8U addr, INT8U *buf, INT8U cnt)
 009C           ; {
 009C                   .dbline 153
 009C           ;     INT8U i;
 009C           ; 
 009C           ;     SCLK_L;                   //写地址
 009C 4598              cbi 0x8,5
 009E                   .dbline 155
 009E           ;       //CS_L;
 009E           ;       CS_H;                     //3V与5V系统相连,保证平时为低电平
 009E 439A              sbi 0x8,3
 00A0                   .dbline 156
 00A0           ;       CS_L;
 00A0 4398              cbi 0x8,3
 00A2                   .dbline 157
 00A2           ;       addr |= 0xC0;             //连续读寄存器地址
 00A2 406C              ori R20,192
 00A4                   .dbline 158
 00A4           ;       ShiftOutByte(addr);
 00A4 042F              mov R16,R20
 00A6 36D0              rcall _ShiftOutByte
 00A8                   .dbline 160
 00A8           ; 
 00A8           ;       for (i = 0; i < cnt; i++) //连续读数据
 00A8 4427              clr R20
 00AA 07C0              rjmp L20
 00AC           L17:
 00AC                   .dbline 161
 00AC                   .dbline 162
 00AC 26D0              rcall _ShiftInByte
 00AE E42F              mov R30,R20
 00B0 FF27              clr R31
 00B2 EA0D              add R30,R10
 00B4 FB1D              adc R31,R11
 00B6 0083              std z+0,R16
 00B8                   .dbline 163
 00B8           L18:
 00B8                   .dbline 160
 00B8 4395              inc R20
 00BA           L20:
 00BA                   .dbline 160
 00BA 4617              cp R20,R22
 00BC B8F3              brlo L17
 00BE                   .dbline 165
 00BE           ;       {
 00BE           ;               *(buf + i) = ShiftInByte();
 00BE           ;       }
 00BE           ;       //CS_H;
 00BE           ;       CS_H;                     //3V与5V系统相连,保证平时为低电平
 00BE 439A              sbi 0x8,3
 00C0                   .dbline 166
 00C0           ;       CS_L;
 00C0 4398              cbi 0x8,3
 00C2                   .dbline -2
 00C2           L16:
 00C2 00D0              rcall pop_gset3
 00C4                   .dbline 0 ; func end
 00C4 0895              ret
 00C6                   .dbsym r i 20 c
 00C6                   .dbsym r cnt 22 c
 00C6                   .dbsym r buf 10 pc
 00C6                   .dbsym r addr 20 c
 00C6                   .dbend
 00C6                   .dbfunc e CC1100WriteBurstReg _CC1100WriteBurstReg fV
 00C6           ;          value -> R20
 00C6           ;              i -> R22
 00C6           ;            cnt -> R10
 00C6           ;            buf -> R12,R13
 00C6           ;           addr -> R20
                        .even
 00C6           _CC1100WriteBurstReg::
 00C6 00D0              rcall push_gset4
 00C8 6901              movw R12,R18
 00CA 402F              mov R20,R16
 00CC A884              ldd R10,y+8
 00CE                   .dbline -1
 00CE                   .dbline 179
 00CE           ; }
 00CE           ; 
 00CE           ; 
 00CE           ; /*
 00CE           ; ************************************************************
 00CE           ; *Description:连续写CC1100状态寄存器
 00CE           ; *Arguments  :addr:地址; *buf:写数据寄存器; cnt:所要写字节个数
 00CE           ; *Returns    :none
 00CE           ; *Notes      :
 00CE           ; ************************************************************
 00CE           ; */
 00CE           ; void CC1100WriteBurstReg (INT8U addr, INT8U *buf, INT8U cnt)
 00CE           ; {
 00CE                   .dbline 183
 00CE           ;     INT8U i;
 00CE           ;       INT8U value;
 00CE           ; 
 00CE           ;     SCLK_L;                   //写地址
 00CE 4598              cbi 0x8,5
 00D0                   .dbline 185
 00D0           ;       //CS_L;
 00D0           ;       CS_H;                     //3V与5V系统相连,保证平时为低电平
 00D0 439A              sbi 0x8,3
 00D2                   .dbline 186
 00D2           ;       CS_L;
 00D2 4398              cbi 0x8,3
 00D4                   .dbline 187
 00D4           ;       addr |= 0x40;             //连续写寄存器地址
 00D4 4064              ori R20,64
 00D6                   .dbline 188
 00D6           ;       ShiftOutByte(addr);
 00D6 042F              mov R16,R20
 00D8 1DD0              rcall _ShiftOutByte
 00DA                   .dbline 190
 00DA           ; 
 00DA           ;       for (i = 0; i < cnt; i++) //连续写数据
 00DA 6627              clr R22
 00DC 08C0              rjmp L25
 00DE           L22:
 00DE                   .dbline 191
 00DE                   .dbline 192
 00DE E62F              mov R30,R22
 00E0 FF27              clr R31
 00E2 EC0D              add R30,R12
 00E4 FD1D              adc R31,R13
 00E6 4081              ldd R20,z+0
 00E8                   .dbline 193
 00E8 042F              mov R16,R20
 00EA 14D0              rcall _ShiftOutByte
 00EC                   .dbline 194
 00EC           L23:
 00EC                   .dbline 190
 00EC 6395              inc R22
 00EE           L25:
 00EE                   .dbline 190
 00EE 6A15              cp R22,R10
 00F0 B0F3              brlo L22
 00F2                   .dbline 196
 00F2           ;       {
 00F2           ;           value = *(buf + i);
 00F2           ;               ShiftOutByte(value);
 00F2           ;       }
 00F2           ;       //CS_H;
 00F2           ;       CS_H;                     //3V与5V系统相连,保证平时为低电平
 00F2 439A              sbi 0x8,3
 00F4                   .dbline 197
 00F4           ;       CS_L;
 00F4 4398              cbi 0x8,3
 00F6                   .dbline -2
 00F6           L21:
 00F6 00D0              rcall pop_gset4
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbsym r value 20 c
 00FA                   .dbsym r i 22 c
 00FA                   .dbsym r cnt 10 c
 00FA                   .dbsym r buf 12 pc
 00FA                   .dbsym r addr 20 c
 00FA                   .dbend
 00FA                   .dbfunc e ShiftInByte _ShiftInByte fc
 00FA           ;          value -> R16
 00FA           ;              i -> R18
                        .even
 00FA           _ShiftInByte::
 00FA                   .dbline -1
 00FA                   .dbline 210
 00FA           ; }
 00FA           ; 
 00FA           ; 
 00FA           ; /*
 00FA           ; ************************************************************
 00FA           ; *Description:利用SPI从CC1100读一个字节
 00FA           ; *Arguments  :none
 00FA           ; *Returns    :返回所读字节
 00FA           ; *Notes      :
 00FA           ; ************************************************************
 00FA           ; */
 00FA           ; INT8U ShiftInByte (void)
 00FA           ; {
 00FA                   .dbline 212
 00FA           ;     INT8U i;
 00FA           ;       INT8U value = 0;
 00FA 0027              clr R16
 00FC                   .dbline 214
 00FC           ; 
 00FC           ;       for (i = 0; i < 8; i++) //从SO移入8位数据
 00FC 2227              clr R18
 00FE 07C0              rjmp L30
 0100           L27:
 0100                   .dbline 215
 0100           ;       {
 0100                   .dbline 216
 0100           ;           SCLK_H;
 0100 459A              sbi 0x8,5
 0102                   .dbline 217
 0102           ;               value <<= 1;
 0102 000F              lsl R16
 0104                   .dbline 218
 0104           ;               if(SO_STATE)
 0104 329B              sbis 0x6,2
 0106 01C0              rjmp L31
 0108                   .dbline 219
 0108           ;               {
 0108                   .dbline 220
 0108           ;                   value |= 0x01;
 0108 0160              ori R16,1
 010A                   .dbline 221
 010A           ;               }
 010A           L31:
 010A                   .dbline 222
 010A 4598              cbi 0x8,5
 010C                   .dbline 223
 010C           L28:
 010C                   .dbline 214
 010C 2395              inc R18
 010E           L30:
 010E                   .dbline 214
 010E 2830              cpi R18,8
 0110 B8F3              brlo L27
 0112                   .dbline 225
 0112           ;               SCLK_L;
 0112           ;       }
 0112           ; 
 0112           ;       return value;
 0112                   .dbline -2
 0112           L26:
 0112                   .dbline 0 ; func end
 0112 0895              ret
 0114                   .dbsym r value 16 c
 0114                   .dbsym r i 18 c
 0114                   .dbend
 0114                   .dbfunc e ShiftOutByte _ShiftOutByte fV
 0114           ;              i -> R20
 0114           ;          value -> R16
                        .even
 0114           _ShiftOutByte::
 0114 00D0              rcall push_gset1
 0116                   .dbline -1
 0116                   .dbline 238
 0116           ; }
 0116           ; 
 0116           ; 
 0116           ; /*
 0116           ; ************************************************************
 0116           ; *Description:利用SPI向CC1100写一个字节
 0116           ; *Arguments  :value:所写字节
 0116           ; *Returns    :none
 0116           ; *Notes      :
 0116           ; ************************************************************
 0116           ; */
 0116           ; void ShiftOutByte (INT8U value)
 0116           ; {
 0116                   .dbline 241
 0116           ;     INT8U i;
 0116           ; 
 0116           ;       for (i = 0; i < 8; i++) //向SI移出8位数据
 0116 4427              clr R20
 0118 09C0              rjmp L37
 011A           L34:
 011A                   .dbline 242
 011A           ;       {
 011A                   .dbline 243
 011A           ;               if(value & 0x80)
 011A 07FF              sbrs R16,7
 011C 02C0              rjmp L38
 011E                   .dbline 244
 011E           ;               {
 011E                   .dbline 245
 011E           ;                   SI_H;
 011E 449A              sbi 0x8,4
 0120                   .dbline 246
 0120           ;               }
 0120 01C0              rjmp L39
 0122           L38:
 0122                   .dbline 248
 0122           ;               else
 0122           ;               {
 0122                   .dbline 249
 0122           ;                   SI_L;
 0122 4498              cbi 0x8,4
 0124                   .dbline 250
 0124           ;               }
 0124           L39:
 0124                   .dbline 251
 0124 459A              sbi 0x8,5
 0126                   .dbline 252
 0126 000F              lsl R16
 0128                   .dbline 253
 0128 4598              cbi 0x8,5
 012A                   .dbline 254
 012A           L35:
 012A                   .dbline 241
 012A 4395              inc R20
 012C           L37:
 012C                   .dbline 241
 012C 4830              cpi R20,8
 012E A8F3              brlo L34
 0130                   .dbline 256
 0130           ;               SCLK_H;
 0130           ;               value <<= 1;
 0130           ;               SCLK_L;
 0130           ;       }
 0130           ; 
 0130           ;       SI_L;  //5V至3V系统设为0V
 0130 4498              cbi 0x8,4
 0132                   .dbline -2
 0132           L33:
 0132 00D0              rcall pop_gset1
 0134                   .dbline 0 ; func end
 0134 0895              ret
 0136                   .dbsym r i 20 c
 0136                   .dbsym r value 16 c
 0136                   .dbend

⌨️ 快捷键说明

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