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

📄 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 rxBuffer[32]; //接收缓冲区的大小
 0000           ; 
 0000           ; unsigned char rd_reg;
 0000           ; 
 0000           ; //unsigned char INTERRUPT_STATE=0x00;
 0000           ; unsigned char SEND_DONE=0x00;
 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 (PINC & 0x2)!=0;}
 0038           ; //char GET_GDO0() {  return (PIND & 0x2)!=0;}
 0038           ; int GET_OUT() { return (* (volatile unsigned char *)(unsigned int )& * (volatile unsigned char *)(0x13 + 0x20) & (1 << 1)) != 0;}
 0038 999B              sbis 0x13,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
 0048           ;           size -> R22
 0048           ;          txPtr -> R20,R21
                        .even
 0048           _CC1100_send::
 0048 0E940000          xcall push_gset2
 004C 622F              mov R22,R18
 004E A801              movw R20,R16
 0050           ; 
 0050           ; 
 0050           ;       
 0050           ;       
 0050           ;       
 0050           ; extern        uint8_t CC1100_sendDone();
 0050           ; extern        uint8_t CC1100_receive(uint8_t *msg);
 0050           ; 
 0050           ; unsigned char CC1100_send(uint8_t *txPtr,uint8_t size)
 0050           ; {
 0050           ;  if (1)
 0050           ;      return CC1100_sendRFburst(txPtr,size);
 0050 262F              mov R18,R22
 0052 3327              clr R19
 0054 8A01              movw R16,R20
 0056 9FD2              xcall _CC1100_sendRFburst
 0058           L11:
 0058           ;  else
 0058           ;      ;
 0058           L10:
 0058 0E940000          xcall pop_gset2
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E           ;              i -> R16
                        .even
 005E           _Dly10us::
 005E           ; } 	
 005E           ; 	
 005E           ; /******************************************/	
 005E           ; 
 005E           ; //延时函数 10us
 005E           ; 	void Dly10us() 
 005E           ; 	{
 005E           ; 		unsigned char i;
 005E           ; 		for(i=0;i<10;i++)
 005E 0027              clr R16
 0060 0BC0              xjmp L17
 0062           L14:
 0062 0000              nop
 0064 0000              nop
 0066 0000              nop
 0068 0000              nop
 006A 0000              nop
 006C 0000              nop
 006E 0000              nop
 0070 0000              nop
 0072 0000              nop
 0074 0000              nop
 0076           L15:
 0076 0395              inc R16
 0078           L17:
 0078 0A30              cpi R16,10
 007A 98F3              brlo L14
 007C           L13:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E           ;              i -> R20,R21
 007E           ;              j -> R22,R23
 007E           ;              l -> R16,R17
                        .even
 007E           _Dly1mS::
 007E 0E940000          xcall push_gset2
 0082           ;               {
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;                       asm("nop");
 0082           ;               }
 0082           ;       }       
 0082           ; //延时函数 1ms
 0082           ;       void Dly1mS(unsigned int l) 
 0082           ;       {
 0082 12C0              xjmp L20
 0084           L19:
 0084           ; 		unsigned int i,j;
 0084           ; 		while(l--)
 0084           ; 		for(i=0;i<54;i++)
 0084 4427              clr R20
 0086 5527              clr R21
 0088 0BC0              xjmp L25
 008A           L22:
 008A 6627              clr R22
 008C 7727              clr R23
 008E 02C0              xjmp L29
 0090           L26:
 0090           L27:
 0090 6F5F              subi R22,255  ; offset = 1
 0092 7F4F              sbci R23,255
 0094           L29:
 0094 6436              cpi R22,100
 0096 E0E0              ldi R30,0
 0098 7E07              cpc R23,R30
 009A D0F3              brlo L26
 009C           L23:
 009C 4F5F              subi R20,255  ; offset = 1
 009E 5F4F              sbci R21,255
 00A0           L25:
 00A0 4633              cpi R20,54
 00A2 E0E0              ldi R30,0
 00A4 5E07              cpc R21,R30
 00A6 88F3              brlo L22
 00A8           L20:
 00A8 1801              movw R2,R16
 00AA 0150              subi R16,1
 00AC 1040              sbci R17,0
 00AE 2220              tst R2
 00B0 49F7              brne L19
 00B2 3320              tst R3
 00B4 39F7              brne L19
 00B6           X0:
 00B6           L18:
 00B6 0E940000          xcall pop_gset2
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC           ;         rd_pin -> R12
 00BC           ;              i -> R22
 00BC           ;     spi_status -> R10
 00BC           ;          value -> R20
                        .even
 00BC           _SPI_write::
 00BC 0E940000          xcall push_gset4
 00C0 402F              mov R20,R16
 00C2           ;               for(j=0;j<100;j++);             
 00C2           ;       }
 00C2           ;       
 00C2           ; /******************************************/  
 00C2           ; 
 00C2           ;       unsigned char SPI_write(unsigned char value)
 00C2           ;       {
 00C2           ;               unsigned char i,spi_status,rd_pin;
 00C2           ;               for(i=0;i<8;i++)
 00C2 6627              clr R22
 00C4 26C0              xjmp L34
 00C6           L31:
 00C6           ; 		{
 00C6           ; 			if((value&0x80)==0x80)
 00C6 842F              mov R24,R20
 00C8 8078              andi R24,128
 00CA 8038              cpi R24,128
 00CC 19F4              brne L35
 00CE           ;                       {
 00CE           ;                                Dly10us();
 00CE C7DF              xcall _Dly10us
 00D0           ;                                SET_IN(); // SI=1
 00D0 A3DF              xcall _SET_IN
 00D2           ;                       }
 00D2 03C0              xjmp L36
 00D4           L35:
 00D4           ; 			else
 00D4           ; 			{
 00D4           ; 				 CLEAR_IN(); // SI=0
 00D4 A7DF              xcall _CLEAR_IN
 00D6           ;                                Dly10us();Dly10us();
 00D6 C3DF              xcall _Dly10us
 00D8 C2DF              xcall _Dly10us
 00DA           ;                       }
 00DA           L36:
 00DA           ; 			Dly10us();Dly10us();Dly10us();
 00DA C1DF              xcall _Dly10us
 00DC C0DF              xcall _Dly10us
 00DE BFDF              xcall _Dly10us
 00E0           ;                       SET_CLOCK(); //SCLK=1;
 00E0 8FDF              xcall _SET_CLOCK
 00E2           ;                       Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
 00E2 BDDF              xcall _Dly10us
 00E4 BCDF              xcall _Dly10us
 00E6 BBDF              xcall _Dly10us
 00E8 BADF              xcall _Dly10us
 00EA B9DF              xcall _Dly10us
 00EC           ;                       value <<=1;
 00EC 440F              lsl R20
 00EE           ;                       spi_status<<=1;
 00EE AA0C              lsl R10
 00F0           ;                       rd_pin=GET_OUT();
 00F0 A3DF              xcall _GET_OUT
 00F2 C02E              mov R12,R16
 00F4           ;                       if((rd_pin&0x01)==0x01)
 00F4 8C2D              mov R24,R12
 00F6 8170              andi R24,1
 00F8 8130              cpi R24,1
 00FA 21F4              brne L37
 00FC           ;                       spi_status=spi_status|0x01;
 00FC 8A2D              mov R24,R10
 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

⌨️ 快捷键说明

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