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

📄 dd_isr.lis

📁 ADI公司射频芯片7020+ATMEGA16射频模块源程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module dd_isr.c
                        .area vector(rom, abs)
                        .org 40
 0028 0C940000          jmp _dd_spi_i2c_isr
                        .org 72
 0048 0C94C100          jmp _dd_adf7021_sync_isr
                        .org 44
 002C 0C94DF00          jmp _UART_RECV_DEAL
                        .org 52
 0034 0C940301          jmp _UART_SEND_DEAL
                        .area text(rom, con, rel)
 0000                   .dbfile D:\icc\examples.avr\230M\dd_isr.c
 0000                   .dbfunc e dd_spi_i2c_isr _dd_spi_i2c_isr fV
 0000           ;           temp -> R20
                        .even
 0000           _dd_spi_i2c_isr::
 0000 0E940000          xcall push_lset
 0004 0E940000          xcall push_gset1
 0008 2297              sbiw R28,2
 000A                   .dbline -1
 000A                   .dbline 16
 000A           ; /*****************************************************************************
 000A           ; *   File:                                                                                            dd_isr.c
 000A           ; *****************************************************************************/
 000A           ; 
 000A           ; #include "dd.h"
 000A           ; //#include "api.h"
 000A           ; extern unsigned int crc16(unsigned char byte);
 000A           ; extern void crc16_reset(void);
 000A           ; unsigned char uart_tx_buffer[max_uart_buffer_size];
 000A           ; unsigned char time_count;
 000A           ; unsigned char rf_tx_state[3],crc_tempn[2];
 000A           ; /*****************************************************************************
 000A           ;  * Function:    dd_spi_i2c_isr
 000A           ;  ****************************************************************************/
 000A           ; void dd_spi_i2c_isr(void)  // 8051 vector 0x003B
 000A           ; {
 000A                   .dbline 24
 000A           ;       unsigned char temp;
 000A           ; //    UINT16 temp_crc;
 000A           ; 
 000A           ;     /* Handle priority processes first: SPIDAT access is extremely critical */
 000A           ; 
 000A           ; 
 000A           ;       // Handle SPI interrupt 
 000A           ;         if (dd_data_port_state == DATA_PORT_TRANSMITTING)
 000A 80910000          lds R24,_dd_data_port_state
 000E 8230              cpi R24,2
 0010 09F0              breq X0
 0012 44C0              xjmp L8
 0014           X0:
 0014                   .dbline 25
 0014           ;         {   
 0014                   .dbline 27
 0014           ;               
 0014           ;                   if(dd_port_data_tx_frame_idx<dd_port_data_tx_buffer[8]+9){
 0014 80910800          lds R24,_dd_port_data_tx_buffer+8
 0018 875F              subi R24,247    ; addi 9
 001A 20900000          lds R2,_dd_port_data_tx_frame_idx
 001E 2816              cp R2,R24
 0020 A0F4              brsh L10
 0022                   .dbline 27
 0022                   .dbline 30
 0022           ;                       
 0022           ;                               
 0022           ;                               temp = dd_port_data_tx_buffer[dd_port_data_tx_frame_idx];
 0022 80E0              ldi R24,<_dd_port_data_tx_buffer
 0024 90E0              ldi R25,>_dd_port_data_tx_buffer
 0026 E22D              mov R30,R2
 0028 FF27              clr R31
 002A E80F              add R30,R24
 002C F91F              adc R31,R25
 002E 4081              ldd R20,z+0
 0030                   .dbline 31
 0030           ;                                       SPDR = temp;
 0030 4FB9              out 0xf,R20
 0032                   .dbline 32
 0032           ;                                       if(dd_port_data_tx_frame_idx>8){
 0032 88E0              ldi R24,8
 0034 8215              cp R24,R2
 0036 18F4              brsh L13
 0038                   .dbline 32
 0038                   .dbline 34
 0038           ;                                         
 0038           ;                                       crc16(temp);
 0038 042F              mov R16,R20
 003A 0E940000          xcall _crc16
 003E                   .dbline 36
 003E           ;                                          
 003E           ;                                       }
 003E           L13:
 003E                   .dbline 37
 003E           ;                                       dd_port_data_tx_frame_idx++;
 003E 80910000          lds R24,_dd_port_data_tx_frame_idx
 0042 8F5F              subi R24,255    ; addi 1
 0044 80930000          sts _dd_port_data_tx_frame_idx,R24
 0048                   .dbline 39
 0048           ;                                       
 0048           ;                       }
 0048 29C0              xjmp L11
 004A           L10:
 004A                   .dbline 40
 004A           ;                       else{
 004A                   .dbline 42
 004A           ;                       
 004A           ;                             if(dd_port_data_tx_frame_idx==dd_port_data_tx_buffer[8]+9){
 004A 80910800          lds R24,_dd_port_data_tx_buffer+8
 004E 875F              subi R24,247    ; addi 9
 0050 20900000          lds R2,_dd_port_data_tx_frame_idx
 0054 2816              cp R2,R24
 0056 49F4              brne L15
 0058                   .dbline 42
 0058                   .dbline 44
 0058           ;                             
 0058           ;                                     SPDR = crc_lo;
 0058 20900000          lds R2,_crc_lo
 005C 2FB8              out 0xf,R2
 005E                   .dbline 45
 005E           ;                                     dd_port_data_tx_frame_idx++;
 005E 80910000          lds R24,_dd_port_data_tx_frame_idx
 0062 8F5F              subi R24,255    ; addi 1
 0064 80930000          sts _dd_port_data_tx_frame_idx,R24
 0068                   .dbline 47
 0068 19C0              xjmp L16
 006A           L15:
 006A                   .dbline 47
 006A           ;                                         
 006A           ;                             }else if(dd_port_data_tx_frame_idx==dd_port_data_tx_buffer[8]+10){
 006A 80910800          lds R24,_dd_port_data_tx_buffer+8
 006E 865F              subi R24,246    ; addi 10
 0070 20900000          lds R2,_dd_port_data_tx_frame_idx
 0074 2816              cp R2,R24
 0076 49F4              brne L18
 0078                   .dbline 47
 0078                   .dbline 49
 0078           ;                               
 0078           ;                                            SPDR = crc_hi;
 0078 20900000          lds R2,_crc_hi
 007C 2FB8              out 0xf,R2
 007E                   .dbline 50
 007E           ;                                        dd_port_data_tx_frame_idx++;
 007E 80910000          lds R24,_dd_port_data_tx_frame_idx
 0082 8F5F              subi R24,255    ; addi 1
 0084 80930000          sts _dd_port_data_tx_frame_idx,R24
 0088                   .dbline 52
 0088 09C0              xjmp L19
 008A           L18:
 008A                   .dbline 52
 008A           ;                                                
 008A           ;                             }else{
 008A                   .dbline 53
 008A           ;                                    dd_port_data_tx_frame_idx = 0;
 008A 2224              clr R2
 008C 20920000          sts _dd_port_data_tx_frame_idx,R2
 0090                   .dbline 54
 0090           ;                                                rf_tx_state[2]=1;
 0090 81E0              ldi R24,1
 0092 80936900          sts _rf_tx_state+2,R24
 0096                   .dbline 55
 0096           ;                                                SPCR  &= 0x3f;
 0096 8DB1              in R24,0xd
 0098 8F73              andi R24,63
 009A 8DB9              out 0xd,R24
 009C                   .dbline 59
 009C           ;                                                //IEIP2 &= ~0x01;
 009C           ;                                                //SPICON &= ~0x20;
 009C           ;                                                
 009C           ;                             }
 009C           L19:
 009C           L16:
 009C                   .dbline 61
 009C           ;                          
 009C           ;                   }
 009C           L11:
 009C                   .dbline 64
 009C           ;                          
 009C           ;                               
 009C           ;               }                      
 009C           L8:
 009C                   .dbline 72
 009C           ;                                 
 009C           ;                               
 009C           ;                                          
 009C           ;                                       
 009C           ; 
 009C           ; 
 009C           ; 
 009C           ;         if (dd_data_port_state == DATA_PORT_RECEIVING)
 009C 80910000          lds R24,_dd_data_port_state
 00A0 8330              cpi R24,3
 00A2 09F0              breq X1
 00A4 68C0              xjmp L22
 00A6           X1:
 00A6                   .dbline 73
 00A6           ;         {
 00A6                   .dbline 74
 00A6           ;                       temp = SPDR;
 00A6 4FB1              in R20,0xf
 00A8                   .dbline 77
 00A8           ;                       //SPDR = 0xFF;
 00A8           ;                       
 00A8           ;                       if(dd_port_data_rx_frame_idx==0){
 00A8 20900000          lds R2,_dd_port_data_rx_frame_idx
 00AC 2220              tst R2
 00AE 59F4              brne L24
 00B0                   .dbline 77
 00B0                   .dbline 79
 00B0           ;                       
 00B0           ;                            crc16(temp);
 00B0 042F              mov R16,R20
 00B2 0E940000          xcall _crc16
 00B6                   .dbline 80
 00B6           ;                                dd_port_data_rx_frame_idx++;
 00B6 80910000          lds R24,_dd_port_data_rx_frame_idx
 00BA 8F5F              subi R24,255    ; addi 1
 00BC 80930000          sts _dd_port_data_rx_frame_idx,R24
 00C0                   .dbline 81
 00C0           ;                                dd_port_data_rx_payload_length=temp;
 00C0 40930000          sts _dd_port_data_rx_payload_length,R20
 00C4                   .dbline 83
 00C4           ;                                
 00C4           ;                       }
 00C4 58C0              xjmp L25
 00C6           L24:
 00C6                   .dbline 85
 00C6           ;                       //else  if(dd_port_data_rx_frame_idx<(dd_port_data_rx_payload_length+1)){
 00C6           ;                       else  if(dd_port_data_rx_frame_idx<6){
 00C6 80910000          lds R24,_dd_port_data_rx_frame_idx
 00CA 8630              cpi R24,6
 00CC 88F4              brsh L26
 00CE                   .dbline 85
 00CE                   .dbline 87
 00CE           ;                             
 00CE           ;                                 dd_port_data_rx_buffer[dd_port_data_rx_frame_idx-1]=temp;
 00CE 80E0              ldi R24,<_dd_port_data_rx_buffer-1
 00D0 90E0              ldi R25,>_dd_port_data_rx_buffer-1
 00D2 E0910000          lds R30,_dd_port_data_rx_frame_idx
 00D6 FF27              clr R31
 00D8 E80F              add R30,R24
 00DA F91F              adc R31,R25
 00DC 4083              std z+0,R20
 00DE                   .dbline 88
 00DE           ;                                 crc16(temp);
 00DE 042F              mov R16,R20
 00E0 0E940000          xcall _crc16
 00E4                   .dbline 89

⌨️ 快捷键说明

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