📄 dd_isr.lis
字号:
.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 + -