📄 spi.lis
字号:
0062 .dbline 59
0062 ; DDR_SPI = (1<<DDR_SS)|(1<<DDR_MOSI)|(1<<DDR_SCK);//Port initialize
0062 8CE2 ldi R24,44
0064 84B9 out 0x4,R24
0066 .dbline 60
0066 ; SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);//enable SPI,Master,fosc/16
0066 81E5 ldi R24,81
0068 8CBD out 0x2c,R24
006A .dbline -2
006A L14:
006A .dbline 0 ; func end
006A 0895 ret
006C .dbend
006C .dbfunc e SPI_MasterTransmit _SPI_MasterTransmit fV
006C ; cData -> R16
.even
006C _SPI_MasterTransmit::
006C .dbline -1
006C .dbline 64
006C ; }
006C ; //**SPI_MasterTransmit()**//
006C ; void SPI_MasterTransmit(unsigned char cData)
006C ; {
006C .dbline 65
006C ; SPI_PORT &=~(1<<SPI_SS);
006C 2A98 cbi 0x5,2
006E .dbline 66
006E ; SPDR = cData;//启动数据传输
006E 0EBD out 0x2e,R16
0070 L16:
0070 .dbline 68
0070 ; while(!(SPSR & (1<<SPIF)))//等待传输结束
0070 ; ;
0070 L17:
0070 .dbline 67
0070 2DB4 in R2,0x2d
0072 27FE sbrs R2,7
0074 FDCF rjmp L16
0076 X3:
0076 .dbline 69
0076 ; SPI_PORT |=(1<<SPI_SS);
0076 2A9A sbi 0x5,2
0078 .dbline -2
0078 L15:
0078 .dbline 0 ; func end
0078 0895 ret
007A .dbsym r cData 16 c
007A .dbend
007A .dbfunc e SPI_MasterReceive _SPI_MasterReceive fc
.even
007A _SPI_MasterReceive::
007A .dbline -1
007A .dbline 73
007A ; }
007A ; //**SPI_MasterReceive()**//
007A ; unsigned char SPI_MasterReceive(void)
007A ; {
007A .dbline 74
007A ; SPI_MasterTransmit(0x00);
007A 0027 clr R16
007C F7DF xcall _SPI_MasterTransmit
007E .dbline 75
007E ; return SPDR;
007E 0EB5 in R16,0x2e
0080 .dbline -2
0080 L19:
0080 .dbline 0 ; func end
0080 0895 ret
0082 .dbend
0082 .dbfunc e INT_Init _INT_Init fV
.even
0082 _INT_Init::
0082 .dbline -1
0082 .dbline 94
0082 ; }
0082 ; //**********中断服务程序*********************
0082 ; /*#pragma interrupt_handler SPI_ovf_isr:18
0082 ; void SPI_ovf_isr(void)
0082 ; {
0082 ; unsigned char temp_data;
0082 ; temp_data=SPDR;
0082 ; USART_Transmit(temp_data);
0082 ; }*/
0082 ; //*************************************************//
0082 ; //****************** SPI_over *******************//
0082 ; //*************************************************//
0082 ;
0082 ; //*************************************************
0082 ; //****************** INT **********************
0082 ; //*************************************************
0082 ; //**INT_Init()**//
0082 ; void INT_Init()
0082 ; {
0082 .dbline 95
0082 ; DDRD &= ~(1<<DDD2);//clr,input
0082 5298 cbi 0xa,2
0084 .dbline 96
0084 ; EICRA |= (1<<ISC01);//h2l trig
0084 80916900 lds R24,105
0088 8260 ori R24,2
008A 80936900 sts 105,R24
008E .dbline 97
008E ; EIMSK |= (1<<INT0);//set INT0 open
008E E89A sbi 0x1d,0
0090 .dbline -2
0090 L20:
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbend
.area vector(rom, abs)
.org 4
0004 0C944900 jmp _INT0_ovf_isr
.area text(rom, con, rel)
0092 .dbfile G:\燕洪成\gra_des\exper\spi\spi_master\spi.c
0092 .dbfunc e INT0_ovf_isr _INT0_ovf_isr fV
0092 ; temp_data -> R10
.even
0092 _INT0_ovf_isr::
0092 0E940000 xcall push_lset
0096 AA92 st -y,R10
0098 BA92 st -y,R11
009A .dbline -1
009A .dbline 101
009A ; }
009A ; #pragma interrupt_handler INT0_ovf_isr:2
009A ; void INT0_ovf_isr(void)
009A ; {
009A .dbline 103
009A ; unsigned char temp_data;
009A ; temp_data=SPI_MasterReceive();
009A EFDF xcall _SPI_MasterReceive
009C A02E mov R10,R16
009E .dbline 104
009E ; USART_Transmit(temp_data);
009E DADF xcall _USART_Transmit
00A0 .dbline -2
00A0 L21:
00A0 .dbline 0 ; func end
00A0 B990 ld R11,y+
00A2 A990 ld R10,y+
00A4 0E940000 xcall pop_lset
00A8 1895 reti
00AA .dbsym r temp_data 10 c
00AA .dbend
00AA .dbfunc e main _main fV
.even
00AA _main::
00AA .dbline -1
00AA .dbline 111
00AA ; }
00AA ; //*************************************************
00AA ; //****************** INT_over *********************
00AA ; //*************************************************
00AA ;
00AA ; void main(void)
00AA ; {
00AA .dbline 112
00AA ; CLI();
00AA F894 cli
00AC .dbline 113
00AC ; INT_Init();
00AC EADF xcall _INT_Init
00AE .dbline 114
00AE ; USART_Init();
00AE BFDF xcall _USART_Init
00B0 .dbline 115
00B0 ; SPI_MasterInit();
00B0 D8DF xcall _SPI_MasterInit
00B2 .dbline 116
00B2 ; SEI();
00B2 7894 sei
00B4 L23:
00B4 .dbline 119
00B4 ;
00B4 ; while(1)
00B4 ; {
00B4 .dbline 120
00B4 ; ;
00B4 .dbline 122
00B4 ; //USART_Transmit(temp_data);
00B4 ; }
00B4 L24:
00B4 .dbline 118
00B4 FFCF xjmp L23
00B6 X4:
00B6 .dbline -2
00B6 L22:
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbend
00B8 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -