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

📄 main.lis

📁 嵌入式单片机控制温度传感的无线收发方案!
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module main.c
                        .area data(ram, con, rel)
 0000           _buf::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .blkb 8
                        .area idata
 0001 0000000000000000  .byte 0,0,0,0,0,0,0,0
                        .area data(ram, con, rel)
 0009                   .dbfile E:\公司用\atmega8l\final\new\nrf905_receive\main.c
 0009                   .dbsym e buf _buf A[9:9]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\公司用\atmega8l\final\new\nrf905_receive\main.c
 0000                   .dbfunc e Get_CRC16 _Get_CRC16 fi
 0000           ;            low -> R20
 0000           ;           high -> R22
 0000           ;              i -> R10
 0000           ;          check -> R6
 0000           ;              j -> R14
 0000           ;            crc -> R12,R13
 0000           ;            len -> R18
 0000           ;            buf -> R4,R5
                        .even
 0000           _Get_CRC16::
 0000 00D0              rcall push_gset5
 0002 2801              movw R4,R16
 0004                   .dbline -1
 0004                   .dbline 18
 0004           ; /************************************
 0004           ; 功能:nrf905接受函数主函数
 0004           ; 时间:2008年8月30日
 0004           ; 编写:陈锐
 0004           ; 版本:1.2
 0004           ; ************************************/
 0004           ; 
 0004           ; #include "confg.h"
 0004           ; 
 0004           ; //buf[0]:子机地址;buf[1]:命令参数0x03;
 0004           ; //buf[2]:数据长度,长度为7;buf[3]和buf[4]:温度数据
 0004           ; //buf[5]和buf[6]:子机电压数据;buf[7]和buf[8]:crc校检
 0004           ; unsigned char buf[9]={0};//向主机发送的数据
 0004           ; 
 0004           ; //crc校检函数
 0004           ; //*buf数据缓冲区,len数据缓冲区长度,CRC 返回的16位校检码
 0004           ; unsigned int Get_CRC16(unsigned char *buf,unsigned char len)
 0004           ; {
 0004                   .dbline 23
 0004           ;    unsigned char high,low;
 0004           ;    unsigned char i,j;
 0004           ;    unsigned char check;
 0004           ;    unsigned int crc;
 0004           ;    crc=0xffff;
 0004 8FEF              ldi R24,65535
 0006 9FEF              ldi R25,255
 0008 6C01              movw R12,R24
 000A                   .dbline 24
 000A           ;    for(i=0;i<len;i++)
 000A AA24              clr R10
 000C 1FC0              rjmp L5
 000E           L2:
 000E                   .dbline 25
 000E           ;    {
 000E                   .dbline 26
 000E           ;         crc=crc^buf[i];
 000E EA2D              mov R30,R10
 0010 FF27              clr R31
 0012 E40D              add R30,R4
 0014 F51D              adc R31,R5
 0016 2080              ldd R2,z+0
 0018 3324              clr R3
 001A C224              eor R12,R2
 001C D324              eor R13,R3
 001E                   .dbline 27
 001E           ;         for(j=0;j<8;j++)
 001E EE24              clr R14
 0020 11C0              rjmp L9
 0022           L6:
 0022                   .dbline 28
 0022           ;         {
 0022                   .dbline 29
 0022           ;            check=crc&1;
 0022 C601              movw R24,R12
 0024 8170              andi R24,1
 0026 9070              andi R25,0
 0028 682E              mov R6,R24
 002A                   .dbline 30
 002A           ;                crc=crc>>1;
 002A D694              lsr R13
 002C C794              ror R12
 002E                   .dbline 31
 002E           ;                crc=crc&0x7fff;
 002E C601              movw R24,R12
 0030 9F77              andi R25,127
 0032 6C01              movw R12,R24
 0034                   .dbline 32
 0034           ;                if(check==1)
 0034 862D              mov R24,R6
 0036 8130              cpi R24,1
 0038 21F4              brne L10
 003A                   .dbline 33
 003A           ;                {
 003A                   .dbline 34
 003A           ;                  crc=crc^0xa001;
 003A 81E0              ldi R24,40961
 003C 90EA              ldi R25,160
 003E C826              eor R12,R24
 0040 D926              eor R13,R25
 0042                   .dbline 35
 0042           ;                }
 0042           L10:
 0042                   .dbline 36
 0042           L7:
 0042                   .dbline 27
 0042 E394              inc R14
 0044           L9:
 0044                   .dbline 27
 0044 8E2D              mov R24,R14
 0046 8830              cpi R24,8
 0048 60F3              brlo L6
 004A                   .dbline 37
 004A           L3:
 004A                   .dbline 24
 004A A394              inc R10
 004C           L5:
 004C                   .dbline 24
 004C A216              cp R10,R18
 004E F8F2              brlo L2
 0050                   .dbline 38
 0050           ;         }   
 0050           ;    } 
 0050           ;         high=crc&0x00ff;
 0050 6C2D              mov R22,R12
 0052 7070              andi R23,0
 0054                   .dbline 39
 0054           ;         low=crc>>8;
 0054 A601              movw R20,R12
 0056 452F              mov R20,R21
 0058 5527              clr R21
 005A                   .dbline 40
 005A           ;         crc=(high<<8)|low;
 005A D62E              mov R13,R22
 005C C42E              mov R12,R20
 005E                   .dbline 41
 005E           ;         return crc; 
 005E 8601              movw R16,R12
 0060                   .dbline -2
 0060           L1:
 0060 00D0              rcall pop_gset5
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym r low 20 c
 0064                   .dbsym r high 22 c
 0064                   .dbsym r i 10 c
 0064                   .dbsym r check 6 c
 0064                   .dbsym r j 14 c
 0064                   .dbsym r crc 12 i
 0064                   .dbsym r len 18 c
 0064                   .dbsym r buf 4 pc
 0064                   .dbend
 0064                   .dbfunc e port_init _port_init fV
                        .even
 0064           _port_init::
 0064                   .dbline -1
 0064                   .dbline 46
 0064           ; }
 0064           ; 
 0064           ; //串口初始化
 0064           ; void port_init(void)
 0064           ; {
 0064                   .dbline 48
 0064           ; 
 0064           ;   PORTB = 0xD7;
 0064 87ED              ldi R24,215
 0066 88BB              out 0x18,R24
 0068                   .dbline 49
 0068           ;  DDRB  = 0x2C;
 0068 8CE2              ldi R24,44
 006A 87BB              out 0x17,R24
 006C                   .dbline 50
 006C           ;  PORTC = 0x00; //m103 output only
 006C 2224              clr R2
 006E 25BA              out 0x15,R2
 0070                   .dbline 51
 0070           ;  DDRC  = 0x00;
 0070 24BA              out 0x14,R2
 0072                   .dbline 52
 0072           ;  PORTD = 0x1f;
 0072 8FE1              ldi R24,31
 0074 82BB              out 0x12,R24
 0076                   .dbline 53
 0076           ;  DDRD  = 0xe0;
 0076 80EE              ldi R24,224
 0078 81BB              out 0x11,R24
 007A                   .dbline -2
 007A                   .dbline 54
 007A           ; }
 007A           L12:
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbend
 007C                   .dbfunc e spi_init _spi_init fV
 007C           ;           temp -> R16
                        .even
 007C           _spi_init::
 007C                   .dbline -1
 007C                   .dbline 59
 007C           ; 
 007C           ; 
 007C           ; //SPI initialize
 007C           ; void spi_init(void)
 007C           ; {uchar temp;
 007C                   .dbline 62
 007C           ; 
 007C           ;  //SPCR = 0xD1; //SPI中断允许,SPI允许,主机模式,MSB,极性方式00,1/16系统时钟速率
 007C           ;  SPCR = 0x51; //不使用SPI中断,其它同上
 007C 81E5              ldi R24,81
 007E 8DB9              out 0xd,R24
 0080                   .dbline 63
 0080           ;  SPSR = 0x00; //setup SPI
 0080 2224              clr R2
 0082 2EB8              out 0xe,R2
 0084                   .dbline 65
 0084           ;  
 0084           ;  temp = SPSR; //!!!
 0084 0EB1              in R16,0xe
 0086                   .dbline 66
 0086           ;  temp = SPDR; //清空SPI,和中断标志,使SPI空闲    
 0086 0FB1              in R16,0xf
 0088                   .dbline -2
 0088                   .dbline 67
 0088           ; }
 0088           L13:
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r temp 16 c
 008A                   .dbend
 008A                   .dbfunc e init_devices _init_devices fV
                        .even
 008A           _init_devices::
 008A                   .dbline -1
 008A                   .dbline 71
 008A           ; 
 008A           ; //call this routine to initialize all peripherals
 008A           ; void init_devices(void)
 008A           ; {
 008A                   .dbline 73
 008A           ;  //stop errant interrupts until set up
 008A           ;  CLI(); //disable all interrupts
 008A F894              cli
 008C                   .dbline 74
 008C           ;  port_init();
 008C EBDF              rcall _port_init
 008E                   .dbline 75
 008E           ;  spi_init();
 008E F6DF              rcall _spi_init
 0090                   .dbline 76
 0090           ;  uart_init();
 0090 00D0              rcall _uart_init
 0092                   .dbline 78
 0092           ; 
 0092           ;  MCUCR = 0x0c;

⌨️ 快捷键说明

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