?? cc1100.lis
字號:
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 + -