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

📄 cc1100.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module cc1100.c
                        .area data(ram, con, rel)
 0000           _paTable::
 0000                   .blkb 2
                        .area idata
 0000 C0C0              .byte 192,192
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 C0C0              .byte 192,192
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 C0C0              .byte 192,192
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 C0C0              .byte 192,192
                        .area data(ram, con, rel)
 0008           _SEND_DONE::
 0008                   .blkb 1
                        .area idata
 0008 00                .byte 0
                        .area data(ram, con, rel)
                        .area text(rom, con, rel)
                        .even
 0000           _SET_CLOCK::
 0000           ; /*
 0000           ; 	  v2.5  halSpiWriteReg(CCxxx0_MCSM2, 0x08);
 0000           ; 	        halSpiWriteReg(CCxxx0_PKTLEN, 0x1F);
 0000           ; 	  v2.6  测试发送:Dly1mS(100); 删去
 0000           ; */
 0000           ; #include <iom128v.h>
 0000           ; #include "cc1100_reg.h"
 0000           ; typedef unsigned char uint8_t	;
 0000           ; typedef unsigned int uint16_t;
 0000           ; unsigned char paTable[8]   = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};  
 0000           ; //unsigned char txBuffer[17] = {16, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
 0000           ; unsigned char rxBuffer[32]; //接收缓冲区的大小
 0000           ; 
 0000           ; //unsigned char rd_pin;  
 0000           ; //unsigned char packetLength;
 0000           ; 
 0000           ; unsigned char rd_reg;
 0000           ; 
 0000           ; //unsigned char INTERRUPT_STATE=0x00;
 0000           ; unsigned char SEND_DONE=0x00;
 0000           ; 
 0000           ; 	//void GDO0_INPUT() {TOSH_MAKE_CC1100_GDO0_INPUT();}
 0000           ; 	//void GDO0_OUTPUT() {TOSH_MAKE_CC1100_GDO0_OUTPUT();}
 0000           ; 	//void SET_GDO0() { TOSH_SET_CC1100_GDO0_PIN(); }
 0000           ; 	//void CLEAR_GDO0() { TOSH_CLR_CC1100_GDO0_PIN(); }	
 0000           ; /*	void SET_CLOCK() { TOSH_SET_CC1100_SCLK_PIN(); }
 0000           ; 	void CLEAR_CLOCK() { TOSH_CLR_CC1100_SCLK_PIN(); }
 0000           ; 	void SET_IN() { TOSH_SET_CC1100_IN_PIN(); }
 0000           ; 	void CLEAR_IN() { TOSH_CLR_CC1100_IN_PIN(); }	
 0000           ; 	void SET_CSN() { TOSH_SET_CC1100_CSN_PIN(); }
 0000           ; 	void CLEAR_CSN() { TOSH_CLR_CC1100_CSN_PIN(); }
 0000           ; 	char GET_OUT() { return TOSH_READ_CC1100_OUT_PIN(); }
 0000           ; 	char GET_GDO0() { return TOSH_READ_CC1100_GDO0_PIN(); }
 0000           ; 	*/
 0000           ; 	//char GET_GDO2() { return TOSH_READ_CC1100_GDO2_PIN(); }
 0000           ; 	
 0000           ; 	
 0000           ; 	
 0000           ; 	
 0000           ; 	
 0000           ; 	
 0000           ; 	void SET_CLOCK() { PORTG |=0x1; }
 0000 80916500          lds R24,101
 0004 8160              ori R24,1
 0006 80936500          sts 101,R24
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
                        .even
 000C           _CLEAR_CLOCK::
 000C           ; 	void CLEAR_CLOCK() { PORTG &=~(0x1); }
 000C 80916500          lds R24,101
 0010 8E7F              andi R24,254
 0012 80936500          sts 101,R24
 0016           L2:
 0016                   .dbline 0 ; func end
 0016 0895              ret
                        .even
 0018           _SET_IN::
 0018           ; 	void SET_IN() { PORTG |=0x2; }
 0018 80916500          lds R24,101
 001C 8260              ori R24,2
 001E 80936500          sts 101,R24
 0022           L3:
 0022                   .dbline 0 ; func end
 0022 0895              ret
                        .even
 0024           _CLEAR_IN::
 0024           ; 	void CLEAR_IN() { PORTG &=~(0x2); }	
 0024 80916500          lds R24,101
 0028 8D7F              andi R24,253
 002A 80936500          sts 101,R24
 002E           L4:
 002E                   .dbline 0 ; func end
 002E 0895              ret
                        .even
 0030           _SET_CSN::
 0030           ; 	void SET_CSN() { PORTC |=0x4; }
 0030 AA9A              sbi 0x15,2
 0032           L5:
 0032                   .dbline 0 ; func end
 0032 0895              ret
                        .even
 0034           _CLEAR_CSN::
 0034           ; 	void CLEAR_CSN() { PORTC &=~(0x4); }
 0034 AA98              cbi 0x15,2
 0036           L6:
 0036                   .dbline 0 ; func end
 0036 0895              ret
                        .even
 0038           _GET_OUT::
 0038           ; 	char GET_OUT() { return ((PORTC & 1<<1)!=0);}
 0038 A99B              sbis 0x15,1
 003A 03C0              rjmp L8
 003C 01E0              ldi R16,1
 003E 10E0              ldi R17,0
 0040 02C0              xjmp L9
 0042           L8:
 0042 0027              clr R16
 0044 1127              clr R17
 0046           L9:
 0046           L7:
 0046                   .dbline 0 ; func end
 0046 0895              ret
                        .even
 0048           _GET_GDO0::
 0048           ; 	char GET_GDO0() {  return ((PORTD & 1<<1)!=0);}
 0048 919B              sbis 0x12,1
 004A 03C0              rjmp L11
 004C 01E0              ldi R16,1
 004E 10E0              ldi R17,0
 0050 02C0              xjmp L12
 0052           L11:
 0052 0027              clr R16
 0054 1127              clr R17
 0056           L12:
 0056           L10:
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058           ;              i -> R16
                        .even
 0058           _Dly10us::
 0058           ; 	
 0058           ; 	
 0058           ; extern	uint8_t CC1100_sendDone();
 0058           ; extern	uint8_t CC1100_receive(uint8_t *msg);
 0058           ; 	
 0058           ; /******************************************/	
 0058           ; 
 0058           ; //延时函数 10us
 0058           ; 	void Dly10us() 
 0058           ; 	{
 0058           ; 		unsigned char i;
 0058           ; 		for(i=0;i<10;i++)
 0058 0027              clr R16
 005A 0BC0              xjmp L17
 005C           L14:
 005C 0000              nop
 005E 0000              nop
 0060 0000              nop
 0062 0000              nop
 0064 0000              nop
 0066 0000              nop
 0068 0000              nop
 006A 0000              nop
 006C 0000              nop
 006E 0000              nop
 0070           L15:
 0070 0395              inc R16
 0072           L17:
 0072 0A30              cpi R16,10
 0074 98F3              brlo L14
 0076           L13:
 0076                   .dbline 0 ; func end
 0076 0895              ret
 0078           ;              i -> R20,R21
 0078           ;              j -> R22,R23
 0078           ;              l -> R16,R17
                        .even
 0078           _Dly1mS::
 0078 0E940000          xcall push_gset2
 007C           ;               {
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;                       asm("nop");
 007C           ;               }
 007C           ;       }       
 007C           ; //延时函数 1ms
 007C           ;       void Dly1mS(unsigned int l) 
 007C           ;       {
 007C 12C0              xjmp L20
 007E           L19:
 007E           ; 		unsigned int i,j;
 007E           ; 		while(l--)
 007E           ; 		for(i=0;i<54;i++)
 007E 4427              clr R20
 0080 5527              clr R21
 0082 0BC0              xjmp L25
 0084           L22:
 0084 6627              clr R22
 0086 7727              clr R23
 0088 02C0              xjmp L29
 008A           L26:
 008A           L27:
 008A 6F5F              subi R22,255  ; offset = 1
 008C 7F4F              sbci R23,255
 008E           L29:
 008E 6436              cpi R22,100
 0090 E0E0              ldi R30,0
 0092 7E07              cpc R23,R30
 0094 D0F3              brlo L26
 0096           L23:
 0096 4F5F              subi R20,255  ; offset = 1
 0098 5F4F              sbci R21,255
 009A           L25:
 009A 4633              cpi R20,54
 009C E0E0              ldi R30,0
 009E 5E07              cpc R21,R30
 00A0 88F3              brlo L22
 00A2           L20:
 00A2 1801              movw R2,R16
 00A4 0150              subi R16,1
 00A6 1040              sbci R17,0
 00A8 2220              tst R2
 00AA 49F7              brne L19
 00AC 3320              tst R3
 00AE 39F7              brne L19
 00B0           X0:
 00B0           L18:
 00B0 0E940000          xcall pop_gset2
 00B4                   .dbline 0 ; func end
 00B4 0895              ret
 00B6           ;         rd_pin -> R12
 00B6           ;              i -> R22
 00B6           ;     spi_status -> R10
 00B6           ;          value -> R20
                        .even
 00B6           _SPI_write::
 00B6 0E940000          xcall push_gset4
 00BA 402F              mov R20,R16
 00BC           ;               for(j=0;j<100;j++);             
 00BC           ;       }
 00BC           ;       
 00BC           ; /******************************************/  
 00BC           ; 
 00BC           ;       unsigned char SPI_write(unsigned char value)
 00BC           ;       {
 00BC           ;               unsigned char i,spi_status,rd_pin;
 00BC           ;               for(i=0;i<8;i++)
 00BC 6627              clr R22
 00BE 26C0              xjmp L34
 00C0           L31:
 00C0           ; 		{
 00C0           ; 			if((value&0x80)==0x80)
 00C0 842F              mov R24,R20
 00C2 8078              andi R24,128
 00C4 8038              cpi R24,128
 00C6 19F4              brne L35
 00C8           ;                       {
 00C8           ;                                Dly10us();
 00C8 C7DF              xcall _Dly10us
 00CA           ;                                SET_IN(); // SI=1
 00CA A6DF              xcall _SET_IN
 00CC           ;                       }
 00CC 03C0              xjmp L36
 00CE           L35:
 00CE           ; 			else
 00CE           ; 			{
 00CE           ; 				 CLEAR_IN(); // SI=0
 00CE AADF              xcall _CLEAR_IN
 00D0           ;                                Dly10us();Dly10us();
 00D0 C3DF              xcall _Dly10us
 00D2 C2DF              xcall _Dly10us
 00D4           ;                       }
 00D4           L36:
 00D4           ; 			Dly10us();Dly10us();Dly10us();
 00D4 C1DF              xcall _Dly10us
 00D6 C0DF              xcall _Dly10us
 00D8 BFDF              xcall _Dly10us
 00DA           ;                       SET_CLOCK(); //SCLK=1;
 00DA 92DF              xcall _SET_CLOCK
 00DC           ;                       Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
 00DC BDDF              xcall _Dly10us
 00DE BCDF              xcall _Dly10us
 00E0 BBDF              xcall _Dly10us
 00E2 BADF              xcall _Dly10us
 00E4 B9DF              xcall _Dly10us
 00E6           ;                       value <<=1;
 00E6 440F              lsl R20
 00E8           ;                       spi_status<<=1;
 00E8 AA0C              lsl R10
 00EA           ;                       rd_pin=GET_OUT();
 00EA A6DF              xcall _GET_OUT
 00EC C02E              mov R12,R16
 00EE           ;                       if((rd_pin&0x01)==0x01)
 00EE 8C2D              mov R24,R12
 00F0 8170              andi R24,1
 00F2 8130              cpi R24,1
 00F4 21F4              brne L37
 00F6           ;                       spi_status=spi_status|0x01;
 00F6 8A2D              mov R24,R10
 00F8 8160              ori R24,1
 00FA A82E              mov R10,R24
 00FC 03C0              xjmp L38
 00FE           L37:
 00FE           ; 			else
 00FE           ; 			spi_status=spi_status&0xfe;
 00FE 8A2D              mov R24,R10
 0100 8E7F              andi R24,254
 0102 A82E              mov R10,R24
 0104           L38:
 0104 83DF              xcall _CLEAR_CLOCK
 0106 A8DF              xcall _Dly10us
 0108 A7DF              xcall _Dly10us
 010A           L32:
 010A 6395              inc R22
 010C           L34:
 010C 6830              cpi R22,8
 010E C0F2              brlo L31
 0110           ;                       CLEAR_CLOCK();
 0110           ;                       Dly10us();Dly10us();
 0110           ;               }
 0110           ;               return(spi_status);
 0110 0A2D              mov R16,R10
 0112           L30:
 0112 0E940000          xcall pop_gset4
 0116                   .dbline 0 ; func end
 0116 0895              ret
 0118           ;         rd_pin -> R22
 0118           ;          value -> R10
 0118           ;              i -> R20
                        .even
 0118           _SPI_read::
 0118 0E940000          xcall push_gset3
 011C           ;       }       
 011C           ;       unsigned char SPI_read()
 011C           ;       {
 011C           ;               unsigned char i,value,rd_pin;
 011C           ;               for(i=0;i<8;i++) 
 011C 4427              clr R20
 011E 1DC0              xjmp L43
 0120           L40:
 0120           ; 		{
 0120           ; 			SET_CLOCK(); //P_SCLK=1;
 0120 6FDF              xcall _SET_CLOCK

⌨️ 快捷键说明

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