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

📄 salve.lis

📁 用两片AVR(ATmega16)单片机
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 023A                   .dbsym r number 10 i
 023A                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\MYDOCU~1\MYMCUW~1\AVR\spi\display.c
 0000           _k::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\MYDOCU~1\MYMCUW~1\AVR\spi\display.c
 0001                   .dbfile D:\MYDOCU~1\MYMCUW~1\AVR\spi\salve.c
 0001                   .dbsym e k _k c
                        .area text(rom, con, rel)
 023A                   .dbfile D:\MYDOCU~1\MYMCUW~1\AVR\spi\salve.c
 023A                   .dbfunc e delay _delay fV
 023A           ;              i -> R10,R11
 023A           ;              j -> R12,R13
 023A           ;              z -> R16,R17
                        .even
 023A           _delay::
 023A 0E940000          xcall push_xgset003C
 023E                   .dbline -1
 023E                   .dbline 20
 023E           ; //包含所需头文件
 023E           ; #include <ioM16v.h>
 023E           ; #include <macros.h>
 023E           ; #include "display.c"
 023E           ; 
 023E           ; 
 023E           ; 
 023E           ; /*------宏定义------*/
 023E           ; #define uchar unsigned char
 023E           ; #define uint  unsigned int
 023E           ; 
 023E           ; uchar k=0;
 023E           ; 
 023E           ; /*------函数定义------*/
 023E           ; //SPI函数
 023E           ; void spi_write(uchar sData);
 023E           ; uchar spi_read(void);
 023E           ; 
 023E           ; void delay(uint z)
 023E           ; {
 023E                   .dbline 22
 023E           ;  uint i,j;
 023E           ;  for(i=0;i<z;i++)
 023E AA24              clr R10
 0240 BB24              clr R11
 0242 0EC0              xjmp L39
 0244           L36:
 0244                   .dbline 23
 0244           ;   for(j=0;j<1000;j++);
 0244 CC24              clr R12
 0246 DD24              clr R13
 0248 03C0              xjmp L43
 024A           L40:
 024A                   .dbline 23
 024A           L41:
 024A                   .dbline 23
 024A C601              movw R24,R12
 024C 0196              adiw R24,1
 024E 6C01              movw R12,R24
 0250           L43:
 0250                   .dbline 23
 0250 C601              movw R24,R12
 0252 883E              cpi R24,232
 0254 E3E0              ldi R30,3
 0256 9E07              cpc R25,R30
 0258 C0F3              brlo L40
 025A           X10:
 025A           L37:
 025A                   .dbline 22
 025A C501              movw R24,R10
 025C 0196              adiw R24,1
 025E 5C01              movw R10,R24
 0260           L39:
 0260                   .dbline 22
 0260 A016              cp R10,R16
 0262 B106              cpc R11,R17
 0264 78F3              brlo L36
 0266           X11:
 0266                   .dbline -2
 0266           L35:
 0266                   .dbline 0 ; func end
 0266 0C940000          xjmp pop_xgset003C
 026A                   .dbsym r i 10 i
 026A                   .dbsym r j 12 i
 026A                   .dbsym r z 16 i
 026A                   .dbend
 026A                   .dbfunc e port_init _port_init fV
                        .even
 026A           _port_init::
 026A                   .dbline -1
 026A                   .dbline 29
 026A           ; }
 026A           ; 
 026A           ; 
 026A           ; //端口初始化
 026A           ; void port_init(void)
 026A           ; {
 026A                   .dbline 30
 026A           ;  PORTA = 0x00;
 026A 2224              clr R2
 026C 2BBA              out 0x1b,R2
 026E                   .dbline 31
 026E           ;  DDRA  = 0x00;
 026E 2ABA              out 0x1a,R2
 0270                   .dbline 32
 0270           ;  PORTB = 0x00;
 0270 28BA              out 0x18,R2
 0272                   .dbline 33
 0272           ;  DDRB  = 0x00;
 0272 27BA              out 0x17,R2
 0274                   .dbline 34
 0274           ;  PORTC = 0x00;
 0274 25BA              out 0x15,R2
 0276                   .dbline 35
 0276           ;  DDRC  = 0x00;
 0276 24BA              out 0x14,R2
 0278                   .dbline 36
 0278           ;  PORTD = 0x00;
 0278 22BA              out 0x12,R2
 027A                   .dbline 37
 027A           ;  DDRD  = 0x00;
 027A 21BA              out 0x11,R2
 027C                   .dbline -2
 027C           L44:
 027C                   .dbline 0 ; func end
 027C 0895              ret
 027E                   .dbend
 027E                   .dbfunc e spi_init _spi_init fV
                        .even
 027E           _spi_init::
 027E                   .dbline -1
 027E                   .dbline 42
 027E           ; }
 027E           ; 
 027E           ; 
 027E           ; void spi_init(void)
 027E           ; {
 027E                   .dbline 44
 027E           ;  //spi初始化
 027E           ;  DDRB|=BIT(PB6);
 027E BE9A              sbi 0x17,6
 0280                   .dbline 45
 0280           ;  SPCR = 0x40;
 0280 80E4              ldi R24,64
 0282 8DB9              out 0xd,R24
 0284                   .dbline 46
 0284           ;  SPSR = 0x00;
 0284 2224              clr R2
 0286 2EB8              out 0xe,R2
 0288                   .dbline -2
 0288           L45:
 0288                   .dbline 0 ; func end
 0288 0895              ret
 028A                   .dbend
 028A                   .dbfunc e spi_write _spi_write fV
 028A           ;          sData -> R16
                        .even
 028A           _spi_write::
 028A                   .dbline -1
 028A                   .dbline 52
 028A           ; }
 028A           ; 
 028A           ; 
 028A           ; //功能:使用SPI发送一个字节
 028A           ; void spi_write(uchar sData)
 028A           ; {
 028A                   .dbline 53
 028A           ;  SPDR = sData;
 028A 0FB9              out 0xf,R16
 028C           L47:
 028C                   .dbline 54
 028C           ;  while(!(SPSR & BIT(SPIF)));
 028C           L48:
 028C                   .dbline 54
 028C 779B              sbis 0xe,7
 028E FECF              rjmp L47
 0290           X12:
 0290                   .dbline -2
 0290           L46:
 0290                   .dbline 0 ; func end
 0290 0895              ret
 0292                   .dbsym r sData 16 c
 0292                   .dbend
 0292                   .dbfunc e spi_read _spi_read fc
                        .even
 0292           _spi_read::
 0292                   .dbline -1
 0292                   .dbline 61
 0292           ;  //sData=SPDR;//读从机发回来的数据
 0292           ; }
 0292           ; 
 0292           ; 
 0292           ; //功能:使用SPI接收一个字节
 0292           ; uchar spi_read(void)
 0292           ; {
 0292                   .dbline 62
 0292           ;  SPDR = 0x00;
 0292 2224              clr R2
 0294 2FB8              out 0xf,R2
 0296           L51:
 0296                   .dbline 63
 0296           ;  while(!(SPSR & BIT(SPIF)));
 0296           L52:
 0296                   .dbline 63
 0296 779B              sbis 0xe,7
 0298 FECF              rjmp L51
 029A           X13:
 029A                   .dbline 64
 029A           ;  k++;
 029A 80910000          lds R24,_k
 029E 8F5F              subi R24,255    ; addi 1
 02A0 80930000          sts _k,R24
 02A4                   .dbline 65
 02A4           ;  return SPDR;
 02A4 0FB1              in R16,0xf
 02A6                   .dbline -2
 02A6           L50:
 02A6                   .dbline 0 ; func end
 02A6 0895              ret
 02A8                   .dbend
 02A8                   .dbfunc e init_devices _init_devices fV
                        .even
 02A8           _init_devices::
 02A8                   .dbline -1
 02A8                   .dbline 71
 02A8           ;  
 02A8           ; }
 02A8           ; 
 02A8           ; 
 02A8           ; void init_devices(void)
 02A8           ; {
 02A8                   .dbline 72
 02A8           ;  CLI(); //禁止所有中断
 02A8 F894              cli
 02AA                   .dbline 73
 02AA           ;  MCUCR  = 0x00;
 02AA 2224              clr R2
 02AC 25BE              out 0x35,R2
 02AE                   .dbline 74
 02AE           ;  MCUCSR = 0x80;//禁止JTAG
 02AE 80E8              ldi R24,128
 02B0 84BF              out 0x34,R24
 02B2                   .dbline 75
 02B2           ;  GICR   = 0x00;
 02B2 2BBE              out 0x3b,R2
 02B4                   .dbline 76
 02B4           ;  port_init();
 02B4 DADF              xcall _port_init
 02B6                   .dbline 77
 02B6           ;  spi_init();
 02B6 E3DF              xcall _spi_init
 02B8                   .dbline 78
 02B8           ;  SEI();//开全局中断
 02B8 7894              sei
 02BA                   .dbline -2
 02BA           L54:
 02BA                   .dbline 0 ; func end
 02BA 0895              ret
 02BC                   .dbend
 02BC                   .dbfunc e main _main fV
                        .even
 02BC           _main::
 02BC                   .dbline -1
 02BC                   .dbline 82
 02BC           ; }
 02BC           ; //主函数
 02BC           ; void main(void)
 02BC           ; {
 02BC                   .dbline 83
 02BC           ;  init_devices();
 02BC F5DF              xcall _init_devices
 02BE                   .dbline 84
 02BE           ;  SEG_INIT();
 02BE 26DF              xcall _SEG_INIT
 02C0                   .dbline 85
 02C0           ;  delay(100); 
 02C0 04E6              ldi R16,100
 02C2 10E0              ldi R17,0
 02C4 BADF              xcall _delay
 02C6 09C0              xjmp L57
 02C8           L56:
 02C8                   .dbline 87
 02C8           ;  while(!(k==8))
 02C8           ;  {
 02C8                   .dbline 88
 02C8           ;      SEG_R(spi_read());
 02C8 E4DF              xcall _spi_read
 02CA 1127              clr R17
 02CC 75DF              xcall _SEG_R
 02CE                   .dbline 89
 02CE           ;          delay(100); 
 02CE 04E6              ldi R16,100
 02D0 10E0              ldi R17,0
 02D2 B3DF              xcall _delay
 02D4                   .dbline 90
 02D4           ;        SEG_L(spi_read());
 02D4 DEDF              xcall _spi_read
 02D6 1127              clr R17
 02D8 2EDF              xcall _SEG_L
 02DA                   .dbline 91
 02DA           ;  }
 02DA           L57:
 02DA                   .dbline 86
 02DA 80910000          lds R24,_k
 02DE 8830              cpi R24,8
 02E0 99F7              brne L56
 02E2           X14:
 02E2                   .dbline 92
 02E2           ;  spi_write(255);
 02E2 0FEF              ldi R16,255
 02E4 D2DF              xcall _spi_write
 02E6           L59:
 02E6                   .dbline 94
 02E6           ;  while(1)
 02E6           ;  {
 02E6                   .dbline 95
 02E6           ;   ; 
 02E6                   .dbline 96
 02E6           ;  }
 02E6           L60:
 02E6                   .dbline 93
 02E6 FFCF              xjmp L59
 02E8           X15:
 02E8                   .dbline -2
 02E8           L55:
 02E8                   .dbline 0 ; func end
 02E8 0895              ret
 02EA                   .dbend
 02EA           ; }

⌨️ 快捷键说明

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