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

📄 cc1000avr.lis

📁 CC1000通信
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0084                   .dbline 156
 0084 9498              cbi 0x12,4
 0086                   .dbline 157
 0086           L22:
 0086                   .dbline 146
 0086 A394              inc R10
 0088           L24:
 0088                   .dbline 146
 0088 8A2D              mov R24,R10
 008A 8830              cpi R24,8
 008C 98F3              brlo L21
 008E                   .dbline 158
 008E 949A              sbi 0x12,4
 0090                   .dbline 159
 0090           L12:
 0090                   .dbline 115
 0090 4395              inc R20
 0092           L14:
 0092                   .dbline 115
 0092 4017              cp R20,R16
 0094 78F2              brlo L11
 0096                   .dbline -2
 0096           L10:
 0096 0E940000          xcall pop_gset3
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r WordCounter 20 c
 009C                   .dbsym r BitCounter 10 c
 009C                   .dbsym r Data 22 S
 009C                   .dbsym r Configuration 18 pS
 009C                   .dbsym r Count 16 c
 009C                   .dbend
 009C                   .dbfunc e WriteToCC1000Register _WriteToCC1000Register fV
 009C           ;            val -> y+0
 009C           ;           data -> R20
 009C           ;           addr -> R22
                        .even
 009C           _WriteToCC1000Register::
 009C 0E940000          xcall push_gset2
 00A0 422F              mov R20,R18
 00A2 602F              mov R22,R16
 00A4 2297              sbiw R28,2
 00A6                   .dbline -1
 00A6                   .dbline 228
 00A6           ;       Data=Data<<1;
 00A6           ;       PORTD&=~(1<<PCLK); //PCLK=0
 00A6           ;      }
 00A6           ;   PORTD|=(1<<PCLK); //PCLK=1
 00A6           ;   }   /* Finished with word */   
 00A6           ; }
 00A6           ; 
 00A6           ; /****************************************************************************//////////////////////新的CONFIG
 00A6           ; /*  This routine sends new configuration data to the CC1000                 */
 00A6           ; /*  Based on bit bashing (general I/O pin use)                              */
 00A6           ; /****************************************************************************/
 00A6           ; /*
 00A6           ; void ConfigureCC1000(char Count, short Configuration[])
 00A6           ; {
 00A6           ;   char  BitCounter;
 00A6           ;   char  WordCounter;
 00A6           ;   short Data;
 00A6           ;  
 00A6           ;  
 00A6           ;    
 00A6           ;   PORTA|=(1<<PALE); //PALE=1
 00A6           ;   
 00A6           ;   for (WordCounter=0;WordCounter<Count;WordCounter++)
 00A6           ;   {
 00A6           ;     Data=Configuration[WordCounter];
 00A6           ;     PORTA&=~(1<<PALE); // PALE=0
 00A6           ;     
 00A6           ;     /* Send address bits */
 00A6           ; /*    for (BitCounter=0;BitCounter<7;BitCounter++)
 00A6           ;     {
 00A6           ;       PORTB|=(1<<PCLK); // PCLK=1
 00A6           ;       if ((Data&0x8000)==0) {
 00A6           ;         PORTB&=~(1<<PDATA); // PDATA=0
 00A6           ;       }
 00A6           ;       else {
 00A6           ;         PORTB|=(1<<PDATA); // PDATA=1
 00A6           ;       }
 00A6           ;       Data=Data<<1;
 00A6           ;       PORTB&=~(1<<PCLK); //PCLK=0;
 00A6           ;     }
 00A6           ;     
 00A6           ;     /* Send read/write bit */
 00A6           ;     /* Ignore bit in data, always use 1 */
 00A6           ;  /*    
 00A6           ;     PORTB|=(1<<PCLK); //PCLK=1
 00A6           ;     PORTB|=(1<<PDATA);  //PDATA=1
 00A6           ;     PORTB&=~(1<<PCLK); //PCLK=0
 00A6           ;     Data=Data<<1;
 00A6           ;     PORTB|=(1<<PCLK); //PCLK=1
 00A6           ;     PORTA|=(1<<PALE); //PALE=1
 00A6           ;     
 00A6           ;     /* Send data bits */
 00A6           ;  /*    
 00A6           ;     for (BitCounter=0;BitCounter<8;BitCounter++)
 00A6           ;     {
 00A6           ;       PORTB|=(1<<PCLK); //PCLK=1
 00A6           ;       if ((Data&0x8000)==0) {
 00A6           ;         PORTB&=~(1<<PDATA); // PDATA=0
 00A6           ;       }
 00A6           ;       else {
 00A6           ;         PORTB|=(1<<PDATA); // PDATA=1
 00A6           ;       }
 00A6           ;       Data=Data<<1;
 00A6           ;       PORTB&=~(1<<PCLK); //PCLK=0
 00A6           ;      }
 00A6           ;   PORTB|=(1<<PCLK); //PCLK=1
 00A6           ;   }   /* Finished with word */   
 00A6           ; /* }
 00A6           ; /****************************************************************************/
 00A6           ; /*  This routine writes to a single CC1000 register                         */
 00A6           ; /****************************************************************************/
 00A6           ; 
 00A6           ; void WriteToCC1000Register(char addr, char data)
 00A6           ; {
 00A6                   .dbline 231
 00A6           ;   short val;
 00A6           ;   
 00A6           ;   val=(addr&0x7F)<<9 | (data&0xFF);
 00A6 29E0              ldi R18,9
 00A8 30E0              ldi R19,0
 00AA 062F              mov R16,R22
 00AC 1127              clr R17
 00AE 0F77              andi R16,127
 00B0 1070              andi R17,0
 00B2 0E940000          xcall lsl16
 00B6 1801              movw R2,R16
 00B8 842F              mov R24,R20
 00BA 9927              clr R25
 00BC 9070              andi R25,0
 00BE 282A              or R2,R24
 00C0 392A              or R3,R25
 00C2 3982              std y+1,R3
 00C4 2882              std y+0,R2
 00C6                   .dbline 232
 00C6           ;   ConfigureCC1000(1,&val);
 00C6 9E01              movw R18,R28
 00C8 01E0              ldi R16,1
 00CA AFDF              xcall _ConfigureCC1000
 00CC                   .dbline -2
 00CC           L27:
 00CC 2296              adiw R28,2
 00CE 0E940000          xcall pop_gset2
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym l val 0 S
 00D4                   .dbsym r data 20 c
 00D4                   .dbsym r addr 22 c
 00D4                   .dbend
 00D4                   .dbfunc e WriteToCC1000RegisterWord _WriteToCC1000RegisterWord fV
 00D4           ;    addranddata -> y+0
                        .even
 00D4           _WriteToCC1000RegisterWord::
 00D4 1A93              st -y,r17
 00D6 0A93              st -y,r16
 00D8                   .dbline -1
 00D8                   .dbline 241
 00D8           ; }
 00D8           ; 
 00D8           ; /****************************************************************************/
 00D8           ; /*  This routine writes to a single CC1000 register, with data and address  */
 00D8           ; /*  given in the same variable                                              */
 00D8           ; /****************************************************************************/
 00D8           ; 
 00D8           ; void WriteToCC1000RegisterWord(short addranddata)
 00D8           ; {
 00D8                   .dbline 243
 00D8           ;  
 00D8           ;   ConfigureCC1000(1,&addranddata);
 00D8 9E01              movw R18,R28
 00DA 01E0              ldi R16,1
 00DC A6DF              xcall _ConfigureCC1000
 00DE                   .dbline -2
 00DE           L28:
 00DE 2296              adiw R28,2
 00E0                   .dbline 0 ; func end
 00E0 0895              ret
 00E2                   .dbsym l addranddata 0 S
 00E2                   .dbend
 00E2                   .dbfunc e ReadFromCC1000Register _ReadFromCC1000Register fc
 00E2           ;          Debug -> R20
 00E2           ;     BitCounter -> R22
 00E2           ;           Data -> R10
 00E2           ;           addr -> R16
                        .even
 00E2           _ReadFromCC1000Register::
 00E2 0E940000          xcall push_gset3
 00E6                   .dbline -1
 00E6                   .dbline 251
 00E6           ; }
 00E6           ; 
 00E6           ; /****************************************************************************/////////////////////////原始的READ
 00E6           ; /*  This routine reads from a single CC1000 register                        */
 00E6           ; /****************************************************************************/
 00E6           ; 
 00E6           ; char ReadFromCC1000Register(char addr)
 00E6           ; {
 00E6                   .dbline 257
 00E6           ;   char BitCounter;
 00E6           ;   char Data;
 00E6           ;   char Debug;
 00E6           ;   
 00E6           ;     
 00E6           ;   PORTD|=(1<<PALE); //PALE=1
 00E6 959A              sbi 0x12,5
 00E8                   .dbline 259
 00E8           ;   
 00E8           ;   Data=addr<<1;
 00E8 A02E              mov R10,R16
 00EA AA0C              lsl R10
 00EC                   .dbline 260
 00EC           ;   PORTD&=~(1<<PALE);
 00EC 9598              cbi 0x12,5
 00EE                   .dbline 263
 00EE           ;     
 00EE           ;    /*Send address bits */
 00EE           ;  for (BitCounter=0;BitCounter<7;BitCounter++)
 00EE 6627              clr R22
 00F0 09C0              xjmp L33
 00F2           L30:
 00F2                   .dbline 264
 00F2           ;   {
 00F2                   .dbline 265
 00F2           ;     PORTD|=(1<<PCLK); // PCLK=1
 00F2 949A              sbi 0x12,4
 00F4                   .dbline 266
 00F4           ;     if ((Data&0x80)==0) {
 00F4 A7FC              sbrc R10,7
 00F6 02C0              rjmp L34
 00F8                   .dbline 266
 00F8                   .dbline 267
 00F8           ;       PORTD&=~(1<<PDATA); // PDATA=0
 00F8 9398              cbi 0x12,3
 00FA                   .dbline 268
 00FA           ;     }
 00FA 01C0              xjmp L35
 00FC           L34:
 00FC                   .dbline 269
 00FC           ;     else {
 00FC                   .dbline 270
 00FC           ;       PORTD|=(1<<PDATA); // PDATA=1
 00FC 939A              sbi 0x12,3
 00FE                   .dbline 271
 00FE           ;     }
 00FE           L35:
 00FE                   .dbline 272
 00FE AA0C              lsl R10
 0100                   .dbline 273
 0100 9498              cbi 0x12,4
 0102                   .dbline 274
 0102           L31:
 0102                   .dbline 263
 0102 6395              inc R22
 0104           L33:
 0104                   .dbline 263
 0104 6730              cpi R22,7
 0106 A8F3              brlo L30
 0108                   .dbline 279
 0108           ;     Data=Data<<1;
 0108           ;     PORTD&=~(1<<PCLK); //PCLK=0;
 0108           ;   }
 0108           ;   
 0108           ;    /*Send read/write bit */
 0108           ;   /* Ignore bit in data, always use 0 */
 0108           ;  
 0108           ;   PORTD|=(1<<PCLK); //PCLK=1
 0108 949A              sbi 0x12,4
 010A                   .dbline 280
 010A           ;   PORTD&=~(1<<PDATA); //PDATA=0
 010A 9398              cbi 0x12,3
 010C                   .dbline 281
 010C           ;   PORTD&=~(1<<PCLK); //PCLK=0
 010C 9498              cbi 0x12,4
 010E                   .dbline 284
 010E           ;  
 010E           ;  
 010E           ;   PORTD|=(1<<PCLK); //PCLK=1
 010E 949A              sbi 0x12,4
 0110                   .dbline 285
 0110           ;   PORTD|=(1<<PALE); //PALE=1
 0110 959A              sbi 0x12,5
 0112                   .dbline 289
 0112           ;     
 0112           ;   /* Receive data bits */
 0112           ;   
 0112           ;   PORTD|=(1<<PDATA); //PDATA=1
 0112 939A              sbi 0x12,3
 0114                   .dbline 291
 0114           ;    
 0114           ;   DDRD&=~(1<<PDATA); /* Set up PDATA as an input */
 0114 8B98              cbi 0x11,3
 0116                   .dbline 293
 0116           ;    
 0116           ;   for (BitCounter=0;BitCounter<8;BitCounter++)
 0116 6627              clr R22
 0118 0FC0              xjmp L39
 011A           L36:
 011A                   .dbline 294
 011A           ;   {
 011A                   .dbline 295
 011A           ;     PORTD&=~(1<<PCLK); //PCLK=0

⌨️ 快捷键说明

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