📄 adc7512.lis
字号:
.module adc7512.c
.area text(rom, con, rel)
0000 .dbfile E:\产品\开发板\mega128-board\实验程序\数模转换\adc7512.c
0000 .dbfunc e s_ms _s_ms fV
0000 ; t -> R16,R17
.even
0000 _s_ms::
0000 .dbline -1
0000 .dbline 7
0000 ; #include<iom128v.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; //延时函数
0000 ; void s_ms(unsigned int t)
0000 ; {
0000 .dbline 8
0000 ; for(;t>1;t--)
0000 02C0 xjmp L5
0002 L2:
0002 .dbline 9
0002 ; {
0002 .dbline 10
0002 ; }
0002 L3:
0002 .dbline 8
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 L5:
0006 .dbline 8
0006 81E0 ldi R24,1
0008 90E0 ldi R25,0
000A 8017 cp R24,R16
000C 9107 cpc R25,R17
000E C8F3 brlo L2
0010 X0:
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbsym r t 16 i
0012 .dbend
0012 .dbfunc e spi_init _spi_init fV
.even
0012 _spi_init::
0012 .dbline -1
0012 .dbline 14
0012 ; }
0012 ;
0012 ; void spi_init()
0012 ; {
0012 .dbline 15
0012 ; DDRB=0xf7; //端口设置
0012 87EF ldi R24,247
0014 87BB out 0x17,R24
0016 .dbline 16
0016 ; PORTB=0xff;
0016 8FEF ldi R24,255
0018 88BB out 0x18,R24
001A .dbline 17
001A ; SPSR=0x00;
001A 2224 clr R2
001C 2EB8 out 0xe,R2
001E .dbline 18
001E ; SPCR=0x5d; //主机模式 方式0 ocs/16
001E 8DE5 ldi R24,93
0020 8DB9 out 0xd,R24
0022 .dbline -2
0022 L6:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e spi_send _spi_send fV
0024 ; spi_hi -> R12
0024 ; spi_lo -> R10
0024 ; spi_data -> R16,R17
.even
0024 _spi_send::
0024 0E940000 xcall push_xgset003C
0028 .dbline -1
0028 .dbline 22
0028 ; }
0028 ;
0028 ; void spi_send(uint spi_data)
0028 ; {
0028 .dbline 24
0028 ; uchar spi_lo,spi_hi;
0028 ; spi_lo=spi_data;
0028 A02E mov R10,R16
002A .dbline 25
002A ; spi_hi=spi_data>>8;
002A 6801 movw R12,R16
002C CD2C mov R12,R13
002E DD24 clr R13
0030 .dbline 27
0030 ;
0030 ; PORTB&=~(1<<0); //ss=0
0030 C098 cbi 0x18,0
0032 .dbline 28
0032 ; SPDR=spi_hi;
0032 CFB8 out 0xf,R12
0034 L8:
0034 .dbline 29
0034 ; while(!(SPSR&(1<<SPIF)));
0034 L9:
0034 .dbline 29
0034 779B sbis 0xe,7
0036 FECF rjmp L8
0038 X1:
0038 .dbline 30
0038 ; SPDR=spi_lo;
0038 AFB8 out 0xf,R10
003A L11:
003A .dbline 31
003A ; while(!(SPSR&(1<<SPIF)));
003A L12:
003A .dbline 31
003A 779B sbis 0xe,7
003C FECF rjmp L11
003E X2:
003E .dbline 32
003E ; PORTB|=(1<<0);
003E C09A sbi 0x18,0
0040 .dbline -2
0040 L7:
0040 .dbline 0 ; func end
0040 0C940000 xjmp pop_xgset003C
0044 .dbsym r spi_hi 12 c
0044 .dbsym r spi_lo 10 c
0044 .dbsym r spi_data 16 i
0044 .dbend
0044 .dbfunc e main _main fI
.even
0044 _main::
0044 .dbline -1
0044 .dbline 37
0044 ; }
0044 ;
0044 ; //主函数
0044 ; main()
0044 ; {
0044 .dbline 38
0044 ; s_ms(50000); //等待7512复位
0044 00E5 ldi R16,50000
0046 13EC ldi R17,195
0048 DBDF xcall _s_ms
004A .dbline 39
004A ; spi_init();
004A E3DF xcall _spi_init
004C .dbline 40
004C ; spi_send(0x07ff);
004C 0FEF ldi R16,2047
004E 17E0 ldi R17,7
0050 E9DF xcall _spi_send
0052 L15:
0052 .dbline 41
0052 ; while(1);
0052 L16:
0052 .dbline 41
0052 FFCF xjmp L15
0054 X3:
0054 .dbline -2
0054 L14:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbend
0056 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -