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

📄 adc7512.lis

📁 这是atmega128单片机的数模转换程序
💻 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 + -