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