📄 spi.lis
字号:
0084 34C0 xjmp L6
0086 L13:
0086 .dbline 57
; case SPI_READ_LOW:
; SPDR = (unsigned char)(dvd_key>>8);
0086 30900100 lds R3,_dvd_key+1
008A 20900000 lds R2,_dvd_key
008E 232C mov R2,R3
0090 3324 clr R3
0092 2FB8 out 0xf,R2
0094 .dbline 58
; spi_command = SPI_READ_HIGH;
0094 84E0 ldi R24,4
0096 80930100 sts _spi_command,R24
009A .dbline 59
; break;
009A 29C0 xjmp L6
009C L14:
009C .dbline 61
; case SPI_READ_HIGH:
; spi_command = SPI_WAIT_COMMAND;
009C 2224 clr R2
009E 20920100 sts _spi_command,R2
00A2 .dbline 62
; dvd_key =0xffff;
00A2 8FEF ldi R24,-1
00A4 9FEF ldi R25,-1
00A6 90930100 sts _dvd_key+1,R25
00AA 80930000 sts _dvd_key,R24
00AE .dbline 63
; asm("CBI 0x17,6");
00AE BE98 CBI 0x17,6
00B0 .dbline 64
; break;
00B0 1EC0 xjmp L6
00B2 L15:
00B2 .dbline 66
; case SPI_WRITE_LOW:
; g_vfd_grid_buffer[vfd_address] = spi_data;
00B2 80E0 ldi R24,<_g_vfd_grid_buffer
00B4 90E0 ldi R25,>_g_vfd_grid_buffer
00B6 E0910000 lds R30,_vfd_address
00BA FF27 clr R31
00BC E80F add R30,R24
00BE F91F adc R31,R25
00C0 4083 std z+0,R20
00C2 .dbline 67
; vfd_address++;
00C2 80910000 lds R24,_vfd_address
00C6 8F5F subi R24,255 ; addi 1
00C8 80930000 sts _vfd_address,R24
00CC .dbline 68
; spi_command = SPI_WRITE_HIGH;
00CC 82E0 ldi R24,2
00CE 80930100 sts _spi_command,R24
00D2 .dbline 69
; break;
00D2 0DC0 xjmp L6
00D4 L16:
00D4 .dbline 71
; case SPI_WRITE_HIGH:
; g_vfd_grid_buffer[vfd_address] = spi_data;
00D4 80E0 ldi R24,<_g_vfd_grid_buffer
00D6 90E0 ldi R25,>_g_vfd_grid_buffer
00D8 E0910000 lds R30,_vfd_address
00DC FF27 clr R31
00DE E80F add R30,R24
00E0 F91F adc R31,R25
00E2 4083 std z+0,R20
00E4 .dbline 75
; //if(vfd_address>22)
; //for(i=0;i++;i<24)
; //g_vfd_grid_buffer[i] = buffer[i];
; spi_command = SPI_WAIT_COMMAND;
00E4 2224 clr R2
00E6 20920100 sts _spi_command,R2
00EA .dbline 76
; break;
00EA 01C0 xjmp L6
00EC L5:
00EC .dbline 80
00EC 05D0 xcall _spi_err
00EE .dbline 81
00EE L6:
00EE .dbline -2
00EE .dbline 84
;
; default:
; // Set_FS2(0);
; spi_err();
; break;
; }
; //SPCR |=0x80;
; }
00EE L2:
00EE 0E940000 xcall pop_gset2
00F2 0E940000 xcall pop_lset
00F6 .dbline 0 ; func end
00F6 1895 reti
00F8 .dbsym l i 1 c
00F8 .dbsym r spi_data 20 c
00F8 .dbsym r spi_status 22 c
00F8 .dbfunc s spi_err _spi_err fI
; delay -> R20,R21
.even
00F8 _spi_err::
00F8 0E940000 xcall push_gset1
00FC .dbline -1
00FC .dbline 86
; void spi_err(void)
; {
00FC .dbline 89
; unsigned int delay;
;
; SPCR =00;
00FC 2224 clr R2
00FE 2DB8 out 0xd,R2
0100 .dbline 90
; SPSR =00;
0100 2EB8 out 0xe,R2
0102 .dbline 91
; SEI();
0102 7894 sei
0104 .dbline 92
; SPDR = 0xff;
0104 8FEF ldi R24,255
0106 8FB9 out 0xf,R24
0108 .dbline 93
; asm("CBI 0X17,6");
0108 BE98 CBI 0X17,6
010A .dbline 96
; //dvd_key = 0xffff;
; //DI();
; delay=50000;
010A 40E5 ldi R20,-15536
010C 53EC ldi R21,-61
010E 08C0 xjmp L20
0110 L19:
0110 .dbline 99
; //Set_FS1(0);
; while(!(PINB&0x10))
; {
0110 .dbline 100
; if(!delay) break;
0110 4030 cpi R20,0
0112 4507 cpc R20,R21
0114 09F4 brne L22
0116 .dbline 100
0116 06C0 xjmp L21
0118 L22:
0118 .dbline 101
0118 0E940000 xcall _soft_delay
011C .dbline 102
011C 4150 subi R20,1
011E 5040 sbci R21,0
0120 .dbline 103
0120 L20:
0120 .dbline 98
0120 B49B sbis 0x16,4
0122 F6CF rjmp L19
0124 L21:
0124 .dbline 104
; soft_delay();
; delay--;
; }
; SPCR = 0xec;
0124 8CEE ldi R24,236
0126 8DB9 out 0xd,R24
0128 .dbline 105
; delay =SPDR;
0128 4FB1 in R20,0xf
012A 5527 clr R21
012C .dbline 106
; delay=SPSR;
012C 4EB1 in R20,0xe
012E 5527 clr R21
0130 .dbline 108
; //delay=SPDR;
; spi_command = SPI_WAIT_COMMAND;
0130 2224 clr R2
0132 20920100 sts _spi_command,R2
0136 .dbline -2
0136 .dbline 111
;
;
; }
0136 L18:
0136 0E940000 xcall pop_gset1
013A .dbline 0 ; func end
013A 0895 ret
013C .dbsym r delay 20 i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -