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

📄 spi.lis

📁 avr atmega168v spi的程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -