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

📄 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           _GET_OUT::
 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           ; #define SET_CLOCK() { PORTG |=0x1; }
 0000           ; #define CLEAR_CLOCK() { PORTG &=~(0x1); }
 0000           ; #define SET_IN() { PORTG |=0x2; }
 0000           ; #define CLEAR_IN() { PORTG &=~(0x2); }	
 0000           ; #define SET_CSN() { PORTC |=0x4; }
 0000           ; #define CLEAR_CSN() { PORTC &=~(0x4); }
 0000           ; //char GET_OUT() { return (PINC & 0x2)!=0;}
 0000           ; //char GET_GDO0() {  return (PIND & 0x2)!=0;}
 0000           ; int GET_OUT() { return (* (volatile unsigned char *)(unsigned int )& * (volatile unsigned char *)(0x13 + 0x20) & (1 << 1)) != 0;}
 0000 999B              sbis 0x13,1
 0002 03C0              rjmp L2
 0004 01E0              ldi R16,1
 0006 10E0              ldi R17,0
 0008 02C0              xjmp L3
 000A           L2:
 000A 0027              clr R16
 000C 1127              clr R17
 000E           L3:
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010           ;           size -> R22
 0010           ;          txPtr -> R20,R21
                        .even
 0010           _CC1100_send::
 0010 0E940000          xcall push_gset2
 0014 622F              mov R22,R18
 0016 A801              movw R20,R16
 0018           ; 
 0018           ; 
 0018           ;       
 0018           ;       
 0018           ;       
 0018           ; extern        uint8_t CC1100_sendDone();
 0018           ; extern        uint8_t *CC1100_receive(uint8_t *msg);
 0018           ; 
 0018           ; unsigned char CC1100_send(uint8_t *txPtr,uint8_t size)
 0018           ; {
 0018           ;  if (1)
 0018           ;      return CC1100_sendRFburst(txPtr,size);
 0018 262F              mov R18,R22
 001A 3327              clr R19
 001C 8A01              movw R16,R20
 001E 22D3              xcall _CC1100_sendRFburst
 0020           L5:
 0020           ;  else
 0020           ;      ;
 0020           L4:
 0020 0E940000          xcall pop_gset2
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026           ;              i -> R16
                        .even
 0026           _Dly10us::
 0026           ; } 	
 0026           ; 	
 0026           ; /******************************************/	
 0026           ; 
 0026           ; //延时函数 10us
 0026           ; 	void Dly10us() 
 0026           ; 	{
 0026           ; 		unsigned char i;
 0026           ; 		for(i=0;i<10;i++)
 0026 0027              clr R16
 0028 0BC0              xjmp L11
 002A           L8:
 002A 0000              nop
 002C 0000              nop
 002E 0000              nop
 0030 0000              nop
 0032 0000              nop
 0034 0000              nop
 0036 0000              nop
 0038 0000              nop
 003A 0000              nop
 003C 0000              nop
 003E           L9:
 003E 0395              inc R16
 0040           L11:
 0040 0A30              cpi R16,10
 0042 98F3              brlo L8
 0044           L7:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046           ;              i -> R20,R21
 0046           ;              j -> R22,R23
 0046           ;              l -> R16,R17
                        .even
 0046           _Dly1mS::
 0046 0E940000          xcall push_gset2
 004A           ;               {
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;                       asm("nop");
 004A           ;               }
 004A           ;       }       
 004A           ; //延时函数 1ms
 004A           ;       void Dly1mS(unsigned int l) 
 004A           ;       {
 004A 12C0              xjmp L14
 004C           L13:
 004C           ; 		unsigned int i,j;
 004C           ; 		while(l--)
 004C           ; 		for(i=0;i<54;i++)
 004C 4427              clr R20
 004E 5527              clr R21
 0050 0BC0              xjmp L19
 0052           L16:
 0052 6627              clr R22
 0054 7727              clr R23
 0056 02C0              xjmp L23
 0058           L20:
 0058           L21:
 0058 6F5F              subi R22,255  ; offset = 1
 005A 7F4F              sbci R23,255
 005C           L23:
 005C 6436              cpi R22,100
 005E E0E0              ldi R30,0
 0060 7E07              cpc R23,R30
 0062 D0F3              brlo L20
 0064           L17:
 0064 4F5F              subi R20,255  ; offset = 1
 0066 5F4F              sbci R21,255
 0068           L19:
 0068 4633              cpi R20,54
 006A E0E0              ldi R30,0
 006C 5E07              cpc R21,R30
 006E 88F3              brlo L16
 0070           L14:
 0070 1801              movw R2,R16
 0072 0150              subi R16,1
 0074 1040              sbci R17,0
 0076 2220              tst R2
 0078 49F7              brne L13
 007A 3320              tst R3
 007C 39F7              brne L13
 007E           X0:
 007E           L12:
 007E 0E940000          xcall pop_gset2
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084           ;         rd_pin -> R12
 0084           ;              i -> R22
 0084           ;     spi_status -> R10
 0084           ;          value -> R20
                        .even
 0084           _SPI_write::
 0084 0E940000          xcall push_gset4
 0088 402F              mov R20,R16
 008A           ;               for(j=0;j<100;j++);             
 008A           ;       }
 008A           ;       
 008A           ; /******************************************/  
 008A           ; 
 008A           ;       unsigned char SPI_write(unsigned char value)
 008A           ;       {
 008A           ;               unsigned char i,spi_status,rd_pin;
 008A           ;               for(i=0;i<8;i++)
 008A 6627              clr R22
 008C 36C0              xjmp L28
 008E           L25:
 008E           ; 		{
 008E           ; 			if((value&0x80)==0x80)
 008E 842F              mov R24,R20
 0090 8078              andi R24,128
 0092 8038              cpi R24,128
 0094 39F4              brne L29
 0096           ;                       {
 0096           ;                                Dly10us();
 0096 C7DF              xcall _Dly10us
 0098           ;                                SET_IN(); // SI=1
 0098 80916500          lds R24,101
 009C 8260              ori R24,2
 009E 80936500          sts 101,R24
 00A2           ;                       }
 00A2 07C0              xjmp L30
 00A4           L29:
 00A4           ; 			else
 00A4           ; 			{
 00A4           ; 				 CLEAR_IN(); // SI=0
 00A4 80916500          lds R24,101
 00A8 8D7F              andi R24,253
 00AA 80936500          sts 101,R24
 00AE           ;                                Dly10us();Dly10us();
 00AE BBDF              xcall _Dly10us
 00B0 BADF              xcall _Dly10us
 00B2           ;                       }
 00B2           L30:
 00B2           ; 			Dly10us();Dly10us();Dly10us();
 00B2 B9DF              xcall _Dly10us
 00B4 B8DF              xcall _Dly10us
 00B6 B7DF              xcall _Dly10us
 00B8           ;                       SET_CLOCK(); //SCLK=1;
 00B8 80916500          lds R24,101
 00BC 8160              ori R24,1
 00BE 80936500          sts 101,R24
 00C2           ;                       Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
 00C2 B1DF              xcall _Dly10us
 00C4 B0DF              xcall _Dly10us
 00C6 AFDF              xcall _Dly10us
 00C8 AEDF              xcall _Dly10us
 00CA ADDF              xcall _Dly10us
 00CC           ;                       value <<=1;
 00CC 440F              lsl R20
 00CE           ;                       spi_status<<=1;
 00CE AA0C              lsl R10
 00D0           ;                       rd_pin=GET_OUT();
 00D0 97DF              xcall _GET_OUT
 00D2 C02E              mov R12,R16
 00D4           ;                       if((rd_pin&0x01)==0x01)
 00D4 8C2D              mov R24,R12
 00D6 8170              andi R24,1
 00D8 8130              cpi R24,1
 00DA 21F4              brne L31
 00DC           ;                       spi_status=spi_status|0x01;
 00DC 8A2D              mov R24,R10
 00DE 8160              ori R24,1
 00E0 A82E              mov R10,R24
 00E2 03C0              xjmp L32
 00E4           L31:
 00E4           ; 			else
 00E4           ; 			spi_status=spi_status&0xfe;
 00E4 8A2D              mov R24,R10
 00E6 8E7F              andi R24,254
 00E8 A82E              mov R10,R24
 00EA           L32:
 00EA 80916500          lds R24,101
 00EE 8E7F              andi R24,254
 00F0 80936500          sts 101,R24
 00F4 98DF              xcall _Dly10us
 00F6 97DF              xcall _Dly10us
 00F8           L26:
 00F8 6395              inc R22
 00FA           L28:
 00FA 6830              cpi R22,8
 00FC 08F4              brsh X1
 00FE C7CF              xjmp L25
 0100           X1:
 0100           ; 			CLEAR_CLOCK();
 0100           ; 			Dly10us();Dly10us();
 0100           ; 		}
 0100           ; 		return(spi_status);
 0100 0A2D              mov R16,R10
 0102           L24:
 0102 0E940000          xcall pop_gset4
 0106                   .dbline 0 ; func end
 0106 0895              ret
 0108           ;         rd_pin -> R22
 0108           ;          value -> R10
 0108           ;              i -> R20
                        .even
 0108           _SPI_read::
 0108 0E940000          xcall push_gset3
 010C           ;       }       
 010C           ;       unsigned char SPI_read()
 010C           ;       {
 010C           ;               unsigned char i,value,rd_pin;
 010C           ;               for(i=0;i<8;i++) 
 010C 4427              clr R20
 010E 25C0              xjmp L37
 0110           L34:
 0110           ; 		{
 0110           ; 			SET_CLOCK(); //P_SCLK=1;
 0110 80916500          lds R24,101
 0114 8160              ori R24,1
 0116 80936500          sts 101,R24
 011A           ;                       value <<=1;Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
 011A AA0C              lsl R10
 011C 84DF              xcall _Dly10us
 011E 83DF              xcall _Dly10us
 0120 82DF              xcall _Dly10us
 0122 81DF              xcall _Dly10us
 0124 80DF              xcall _Dly10us
 0126           ;                       rd_pin=GET_OUT();       
 0126 6CDF              xcall _GET_OUT
 0128 602F              mov R22,R16
 012A           ;                       if((rd_pin&0x01)==0x01) value|=0x01;
 012A 862F              mov R24,R22
 012C 8170              andi R24,1
 012E 8130              cpi R24,1
 0130 21F4              brne L38
 0132 8A2D              mov R24,R10
 0134 8160              ori R24,1
 0136 A82E              mov R10,R24
 0138 03C0              xjmp L39
 013A           L38:
 013A           ; 			else value&=0xfe;
 013A 8A2D              mov R24,R10
 013C 8E7F              andi R24,254
 013E A82E              mov R10,R24
 0140           L39:
 0140 72DF              xcall _Dly10us
 0142 71DF              xcall _Dly10us
 0144 80916500          lds R24,101
 0148 8E7F              andi R24,254
 014A 80936500          sts 101,R24
 014E 6BDF              xcall _Dly10us
 0150 6ADF              xcall _Dly10us
 0152 69DF              xcall _Dly10us
 0154 68DF              xcall _Dly10us
 0156 67DF              xcall _Dly10us
 0158           L35:
 0158 4395              inc R20
 015A           L37:
 015A 4830              cpi R20,8
 015C C8F2              brlo L34
 015E           ;                       Dly10us();Dly10us();
 015E           ;                       CLEAR_CLOCK(); //SCLK=0  //P_SCLK=0;
 015E           ;                       Dly10us();Dly10us();Dly10us();Dly10us();Dly10us();
 015E           ;               }
 015E           ;               return value;
 015E 0A2D              mov R16,R10
 0160           L33:
 0160 0E940000          xcall pop_gset3
 0164                   .dbline 0 ; func end
 0164 0895              ret

⌨️ 快捷键说明

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