📄 cc1100.lis
字号:
00FE 8160 ori R24,1
0100 A82E mov R10,R24
0102 03C0 xjmp L38
0104 L37:
0104 ; else
0104 ; spi_status=spi_status&0xfe;
0104 8A2D mov R24,R10
0106 8E7F andi R24,254
0108 A82E mov R10,R24
010A L38:
010A 80DF xcall _CLEAR_CLOCK
010C A8DF xcall _Dly10us
010E A7DF xcall _Dly10us
0110 L32:
0110 6395 inc R22
0112 L34:
0112 6830 cpi R22,8
0114 C0F2 brlo L31
0116 ; CLEAR_CLOCK();
0116 ; Dly10us();Dly10us();
0116 ; }
0116 ; return(spi_status);
0116 0A2D mov R16,R10
0118 L30:
0118 0E940000 xcall pop_gset4
011C .dbline 0 ; func end
011C 0895 ret
011E ; rd_pin -> R22
011E ; value -> R10
011E ; i -> R20
.even
011E _SPI_read::
011E 0E940000 xcall push_gset3
0122 ; }
0122 ; unsigned char SPI_read()
0122 ; {
0122 ; unsigned char i,value,rd_pin;
0122 ; for(i=0;i<8;i++)
0122 4427 clr R20
0124 1DC0 xjmp L43
0126 L40:
0126 ; {
0126 ; SET_CLOCK(); //P_SCLK=1;
0126 6CDF xcall _SET_CLOCK
0128 ; value <<=1;Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
0128 AA0C lsl R10
012A 99DF xcall _Dly10us
012C 98DF xcall _Dly10us
012E 97DF xcall _Dly10us
0130 96DF xcall _Dly10us
0132 95DF xcall _Dly10us
0134 ; rd_pin=GET_OUT();
0134 81DF xcall _GET_OUT
0136 602F mov R22,R16
0138 ; if((rd_pin&0x01)==0x01) value|=0x01;
0138 862F mov R24,R22
013A 8170 andi R24,1
013C 8130 cpi R24,1
013E 21F4 brne L44
0140 8A2D mov R24,R10
0142 8160 ori R24,1
0144 A82E mov R10,R24
0146 03C0 xjmp L45
0148 L44:
0148 ; else value&=0xfe;
0148 8A2D mov R24,R10
014A 8E7F andi R24,254
014C A82E mov R10,R24
014E L45:
014E 87DF xcall _Dly10us
0150 86DF xcall _Dly10us
0152 5CDF xcall _CLEAR_CLOCK
0154 84DF xcall _Dly10us
0156 83DF xcall _Dly10us
0158 82DF xcall _Dly10us
015A 81DF xcall _Dly10us
015C 80DF xcall _Dly10us
015E L41:
015E 4395 inc R20
0160 L43:
0160 4830 cpi R20,8
0162 08F3 brlo L40
0164 ; Dly10us();Dly10us();
0164 ; CLEAR_CLOCK(); //SCLK=0 //P_SCLK=0;
0164 ; Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
0164 ; }
0164 ; return value;
0164 0A2D mov R16,R10
0166 L39:
0166 0E940000 xcall pop_gset3
016A .dbline 0 ; func end
016A 0895 ret
016C ; RxTxstatus -> R20
.even
016C _spiGetRxTxStatus::
016C 0E940000 xcall push_gset1
0170 ; }
0170 ; /******************************************/
0170 ; unsigned char spiGetRxTxStatus()
0170 ; {
0170 ; unsigned char RxTxstatus;
0170 ; CLEAR_CSN(); // CSn=0
0170 61DF xcall _CLEAR_CSN
0172 L47:
0172 L48:
0172 ; while(GET_OUT());
0172 62DF xcall _GET_OUT
0174 0030 cpi R16,0
0176 0107 cpc R16,R17
0178 E1F7 brne L47
017A X1:
017A ; CLEAR_CLOCK();
017A 48DF xcall _CLEAR_CLOCK
017C ; RxTxstatus=SPI_write(CCxxx0_SNOP);
017C 0DE3 ldi R16,61
017E 9EDF xcall _SPI_write
0180 402F mov R20,R16
0182 ; CLEAR_CLOCK(); //SCLK=0
0182 44DF xcall _CLEAR_CLOCK
0184 ; CLEAR_IN(); // SI=0
0184 4FDF xcall _CLEAR_IN
0186 ; SET_CSN(); //CSn=1
0186 54DF xcall _SET_CSN
0188 ; return(RxTxstatus);
0188 042F mov R16,R20
018A L46:
018A 0E940000 xcall pop_gset1
018E .dbline 0 ; func end
018E 0895 ret
0190 ; value -> R20
0190 ; addr -> R22
.even
0190 _halSpiWriteReg::
0190 0E940000 xcall push_gset2
0194 422F mov R20,R18
0196 602F mov R22,R16
0198 ; }
0198 ; /******************************************/
0198 ; void halSpiWriteReg(unsigned char addr, unsigned char value)
0198 ; {
0198 ; CLEAR_CSN();
0198 4DDF xcall _CLEAR_CSN
019A L51:
019A L52:
019A ; while(GET_OUT());
019A 4EDF xcall _GET_OUT
019C 0030 cpi R16,0
019E 0107 cpc R16,R17
01A0 E1F7 brne L51
01A2 X2:
01A2 ; CLEAR_CLOCK();
01A2 34DF xcall _CLEAR_CLOCK
01A4 ; addr&=0x7F;
01A4 6F77 andi R22,127
01A6 ; SPI_write(addr);
01A6 062F mov R16,R22
01A8 89DF xcall _SPI_write
01AA ; SPI_write(value);
01AA 042F mov R16,R20
01AC 87DF xcall _SPI_write
01AE ; CLEAR_CLOCK();
01AE 2EDF xcall _CLEAR_CLOCK
01B0 ; CLEAR_IN();
01B0 39DF xcall _CLEAR_IN
01B2 ; SET_CSN();
01B2 3EDF xcall _SET_CSN
01B4 L50:
01B4 0E940000 xcall pop_gset2
01B8 .dbline 0 ; func end
01B8 0895 ret
01BA ; strobe -> R20
.even
01BA _halSpiStrobe::
01BA 0E940000 xcall push_gset1
01BE 402F mov R20,R16
01C0 ; }
01C0 ; /******************************************/
01C0 ; void halSpiStrobe(unsigned char strobe)
01C0 ; {
01C0 ; CLEAR_CSN(); // CSn=0
01C0 39DF xcall _CLEAR_CSN
01C2 ; CLEAR_CLOCK();
01C2 24DF xcall _CLEAR_CLOCK
01C4 L55:
01C4 L56:
01C4 ; while(GET_OUT());
01C4 39DF xcall _GET_OUT
01C6 0030 cpi R16,0
01C8 0107 cpc R16,R17
01CA E1F7 brne L55
01CC X3:
01CC ; SPI_write(strobe);
01CC 042F mov R16,R20
01CE 76DF xcall _SPI_write
01D0 ; CLEAR_CLOCK();
01D0 1DDF xcall _CLEAR_CLOCK
01D2 ; CLEAR_IN();
01D2 28DF xcall _CLEAR_IN
01D4 ; SET_CSN();
01D4 2DDF xcall _SET_CSN
01D6 L54:
01D6 0E940000 xcall pop_gset1
01DA .dbline 0 ; func end
01DA 0895 ret
01DC ; value -> R12
01DC ; j -> R20
01DC ; i -> R14
01DC ; count -> R22
01DC ; buffer -> R10,R11
01DC ; addr -> R20
.even
01DC _halSpiWriteBurstReg::
01DC 0E940000 xcall push_gset5
01E0 5901 movw R10,R18
01E2 402F mov R20,R16
01E4 6A85 ldd R22,y+10
01E6 ; }
01E6 ; /*******************************************/
01E6 ; void halSpiWriteBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
01E6 ; {
01E6 ; unsigned char i,j,value;
01E6 ; CLEAR_CLOCK();
01E6 12DF xcall _CLEAR_CLOCK
01E8 ; Dly10us();Dly10us();
01E8 3ADF xcall _Dly10us
01EA 39DF xcall _Dly10us
01EC ; CLEAR_CSN(); // CSn=0
01EC 23DF xcall _CLEAR_CSN
01EE ; addr|=WRITE_BURST;
01EE 4064 ori R20,64
01F0 ; SPI_write(addr);
01F0 042F mov R16,R20
01F2 64DF xcall _SPI_write
01F4 ; CLEAR_IN();
01F4 17DF xcall _CLEAR_IN
01F6 ; for(j=0;j<count;j++)
01F6 4427 clr R20
01F8 0FC0 xjmp L62
01FA L59:
01FA ; {
01FA ; value=buffer[j];
01FA E42F mov R30,R20
01FC FF27 clr R31
01FE EA0D add R30,R10
0200 FB1D adc R31,R11
0202 C080 ldd R12,z+0
0204 ; SPI_write(value);
0204 0C2D mov R16,R12
0206 5ADF xcall _SPI_write
0208 ; CLEAR_IN();
0208 0DDF xcall _CLEAR_IN
020A EE24 clr R14
020C 01C0 xjmp L66
020E L63:
020E L64:
020E E394 inc R14
0210 L66:
0210 8E2D mov R24,R14
0212 8436 cpi R24,100
0214 E0F3 brlo L63
0216 L60:
0216 4395 inc R20
0218 L62:
0218 4617 cp R20,R22
021A 78F3 brlo L59
021C ; for(i=0;i<100;i++);
021C ; }
021C ; SET_CSN();
021C 09DF xcall _SET_CSN
021E L58:
021E 0E940000 xcall pop_gset5
0222 .dbline 0 ; func end
0222 0895 ret
0224 ; i -> R20,R21
.even
0224 _CC1100_POR::
0224 0E940000 xcall push_gset1
0228 ; }
0228 ; /******************************/
0228 ; void CC1100_POR()
0228 ; {
0228 ; unsigned int i;
0228 ; halSpiStrobe(CCxxx0_SIDLE);
0228 06E3 ldi R16,54
022A C7DF xcall _halSpiStrobe
022C ; SET_CSN();
022C 01DF xcall _SET_CSN
022E 4427 clr R20
0230 5527 clr R21
0232 02C0 xjmp L71
0234 L68:
0234 L69:
0234 4F5F subi R20,255 ; offset = 1
0236 5F4F sbci R21,255
0238 L71:
0238 ; for(i=0;i<100;i++);
0238 4436 cpi R20,100
023A E0E0 ldi R30,0
023C 5E07 cpc R21,R30
023E D0F3 brlo L68
0240 ; CLEAR_CSN();
0240 F9DE xcall _CLEAR_CSN
0242 4427 clr R20
0244 5527 clr R21
0246 02C0 xjmp L75
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -