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

📄 main.lis

📁 嵌入式单片机控制温度传感的无线收发方案!
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0092 8CE0              ldi R24,12
 0094 85BF              out 0x35,R24
 0096                   .dbline 79
 0096           ;  GICR|= 0x80;//enable INT1 interrupt
 0096 8BB7              in R24,0x3b
 0098 8068              ori R24,128
 009A 8BBF              out 0x3b,R24
 009C                   .dbline 80
 009C           ;  GIFR   = 0xc0;// 清除INT0、INT1 中断标志位
 009C 80EC              ldi R24,192
 009E 8ABF              out 0x3a,R24
 00A0                   .dbline 81
 00A0           ;  SEI(); //re-enable interrupts
 00A0 7894              sei
 00A2                   .dbline -2
 00A2                   .dbline 83
 00A2           ;  //all peripherals are now initialized
 00A2           ; }
 00A2           L14:
 00A2                   .dbline 0 ; func end
 00A2 0895              ret
 00A4                   .dbend
 00A4                   .dbfunc e rs485_send _rs485_send fV
                        .even
 00A4           _rs485_send::
 00A4                   .dbline -1
 00A4                   .dbline 86
 00A4           ; 
 00A4           ; void rs485_send(void)//打开rs485发送,DE位为1
 00A4           ; {
 00A4                   .dbline 87
 00A4           ;   DDRC=0x01;
 00A4 81E0              ldi R24,1
 00A6 84BB              out 0x14,R24
 00A8                   .dbline 88
 00A8           ;   PORTC=0x01;
 00A8 85BB              out 0x15,R24
 00AA                   .dbline -2
 00AA                   .dbline 89
 00AA           ; }
 00AA           L15:
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbend
 00AC                   .dbfunc e rs485_rec _rs485_rec fV
                        .even
 00AC           _rs485_rec::
 00AC                   .dbline -1
 00AC                   .dbline 92
 00AC           ; 
 00AC           ; void rs485_rec(void)//打开rs485接收
 00AC           ; {
 00AC                   .dbline 93
 00AC           ;   DDRC=0x01;
 00AC 81E0              ldi R24,1
 00AE 84BB              out 0x14,R24
 00B0                   .dbline 94
 00B0           ;   PORTC=0x00;
 00B0 2224              clr R2
 00B2 25BA              out 0x15,R2
 00B4                   .dbline -2
 00B4                   .dbline 95
 00B4           ; }
 00B4           L16:
 00B4                   .dbline 0 ; func end
 00B4 0895              ret
 00B6                   .dbend
 00B6                   .dbfunc e main _main fV
 00B6           ;         string -> <dead>
 00B6           ;              i -> R20,R21
                        .even
 00B6           _main::
 00B6                   .dbline -1
 00B6                   .dbline 99
 00B6           ; 
 00B6           ; 
 00B6           ; void main(void)
 00B6           ; {
 00B6                   .dbline 101
 00B6           ;    uchar string;
 00B6           ;    int i=0;
 00B6 4427              clr R20
 00B8 5527              clr R21
 00BA                   .dbline 102
 00BA           ;    init_devices();
 00BA E7DF              rcall _init_devices
 00BC                   .dbline 103
 00BC           ;    delay_10ms(20);
 00BC 04E1              ldi R16,20
 00BE 10E0              ldi R17,0
 00C0 00D0              rcall _delay_10ms
 00C2                   .dbline 105
 00C2           ;   
 00C2           ;    Read_nrf905Add();//读取nrf905的接受发送地址
 00C2 00D0              rcall _Read_nrf905Add
 00C4                   .dbline 107
 00C4           ;  
 00C4           ;    nrf905_Init(); //初始化nrf905
 00C4 00D0              rcall _nrf905_Init
 00C6                   .dbline 112
 00C6           ;    
 00C6           ;    //delay_10ms(50);
 00C6           ;        //puts_hh("receive start!");//用来演示
 00C6           ;        //  delay_10ms(2);
 00C6           ;    nrf905_RxOn();//enable nrf905接收
 00C6 00D0              rcall _nrf905_RxOn
 00C8           L18:
 00C8                   .dbline 114
 00C8                   .dbline 116
 00C8           L19:
 00C8                   .dbline 114
 00C8 FFCF              rjmp L18
 00CA           X0:
 00CA                   .dbline -2
 00CA                   .dbline 117
 00CA           ;       
 00CA           ;    while(1)     {        
 00CA           ;       
 00CA           ;   }
 00CA           ; }
 00CA           L17:
 00CA                   .dbline 0 ; func end
 00CA 0895              ret
 00CC                   .dbsym l string 1 c
 00CC                   .dbsym r i 20 I
 00CC                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 66C0              rjmp _int1_isr
                        .area text(rom, con, rel)
 00CC                   .dbfile E:\公司用\atmega8l\final\new\nrf905_receive\main.c
 00CC                   .dbfunc e int1_isr _int1_isr fV
 00CC           ;            crc -> R20,R21
                        .even
 00CC           _int1_isr::
 00CC 00D0              rcall push_lset
 00CE 00D0              rcall push_gset1
 00D0                   .dbline -1
 00D0                   .dbline 123
 00D0           ; 
 00D0           ; 
 00D0           ; 
 00D0           ; #pragma interrupt_handler int1_isr:3
 00D0           ; void int1_isr(void)
 00D0           ; {     
 00D0                   .dbline 126
 00D0           ;      unsigned int crc;
 00D0           ;      
 00D0           ;        RfRecvProc();//接收处理
 00D0 00D0              rcall _RfRecvProc
 00D2                   .dbline 130
 00D2           ;          //读出的数据Rx_Buf[0]是子机地址,Rx_Buf[2]和Rx_Buf[3]是温度数据,
 00D2           ;          //Rx_Buf[4]和Rx_Buf[5]是子机电源电压数据,Rx_Buf[1]是命令字
 00D2           ;        
 00D2           ;          buf[0]=Rx_Buf[0];//子机地址
 00D2 20900000          lds R2,_Rx_Buf
 00D6 20920000          sts _buf,R2
 00DA                   .dbline 131
 00DA           ;          buf[1]=Rx_Buf[1];//命令字
 00DA 20900100          lds R2,_Rx_Buf+1
 00DE 20920100          sts _buf+1,R2
 00E2                   .dbline 132
 00E2           ;          buf[2]=0x07;//数据长度,包括子机地址、命令字和数据
 00E2 87E0              ldi R24,7
 00E4 80930200          sts _buf+2,R24
 00E8                   .dbline 133
 00E8           ;          buf[3]=Rx_Buf[2];//Rx_Buf[2]和Rx_Buf[3]是温度数据
 00E8 20900200          lds R2,_Rx_Buf+2
 00EC 20920300          sts _buf+3,R2
 00F0                   .dbline 134
 00F0           ;          buf[4]=Rx_Buf[3];
 00F0 20900300          lds R2,_Rx_Buf+3
 00F4 20920400          sts _buf+4,R2
 00F8                   .dbline 135
 00F8           ;          buf[5]=Rx_Buf[4];//Rx_Buf[4]和Rx_Buf[5]是子机电源电压数据
 00F8 20900400          lds R2,_Rx_Buf+4
 00FC 20920500          sts _buf+5,R2
 0100                   .dbline 136
 0100           ;          buf[6]=Rx_Buf[5];
 0100 20900500          lds R2,_Rx_Buf+5
 0104 20920600          sts _buf+6,R2
 0108                   .dbline 137
 0108           ;          crc=Get_CRC16(buf,7);//获得CRC校检
 0108 27E0              ldi R18,7
 010A 00E0              ldi R16,<_buf
 010C 10E0              ldi R17,>_buf
 010E 78DF              rcall _Get_CRC16
 0110 A801              movw R20,R16
 0112                   .dbline 138
 0112           ;          buf[7]=crc;
 0112 40930700          sts _buf+7,R20
 0116                   .dbline 139
 0116           ;          buf[8]=(crc<<8); 
 0116 1A01              movw R2,R20
 0118 322C              mov R3,R2
 011A 2224              clr R2
 011C 20920800          sts _buf+8,R2
 0120                   .dbline 140
 0120           ;          rs485_send();//置rs485为发送状态
 0120 C1DF              rcall _rs485_send
 0122                   .dbline 143
 0122           ;          //printf("%s",buf);//向485发送数据
 0122           ;          
 0122           ;          printf("slave add is %d\r\n",Tx_Buf[0]);
 0122 20910000          lds R18,_Tx_Buf
 0126 3327              clr R19
 0128 00E0              ldi R16,<L35
 012A 10E0              ldi R17,>L35
 012C 00D0              rcall _printf
 012E                   .dbline 144
 012E           ;          printf("command is %x\r\n",Tx_Buf[1]);
 012E 20910100          lds R18,_Tx_Buf+1
 0132 3327              clr R19
 0134 00E0              ldi R16,<L36
 0136 10E0              ldi R17,>L36
 0138 00D0              rcall _printf
 013A                   .dbline 147
 013A           ;         
 013A           ;          //改变nrf905的发送地址
 013A           ;        Change_TX_ADD(Rx_Buf[0]);
 013A 00910000          lds R16,_Rx_Buf
 013E 00D0              rcall _Change_TX_ADD
 0140                   .dbline 148
 0140           ;          Tx_Buf[0]=0xFF;//发出确认收到命令
 0140 8FEF              ldi R24,255
 0142 80930000          sts _Tx_Buf,R24
 0146                   .dbline 150
 0146           ;          //发送测试
 0146           ;          RfSendProc();
 0146 00D0              rcall _RfSendProc
 0148                   .dbline 151
 0148           ;          rs485_rec();//置rs485为接收状态
 0148 B1DF              rcall _rs485_rec
 014A                   .dbline 152
 014A           ;          CLR(PORTB,AM);//清除中断标志
 014A C398              cbi 0x18,3
 014C                   .dbline -2
 014C                   .dbline 153
 014C           ; }
 014C           L21:
 014C 00D0              rcall pop_gset1
 014E 00D0              rcall pop_lset
 0150                   .dbline 0 ; func end
 0150 1895              reti
 0152                   .dbsym r crc 20 i
 0152                   .dbend
                        .area data(ram, con, rel)
 0009                   .dbfile E:\公司用\atmega8l\final\new\nrf905_receive\main.c
 0009           L36:
 0009                   .blkb 16
                        .area idata
 0009 636F6D6D616E642069732025780D0A00  .byte 'c,'o,'m,'m,'a,'n,'d,32,'i,'s,32,37,'x,13,10,0
                        .area data(ram, con, rel)
 0019                   .dbfile E:\公司用\atmega8l\final\new\nrf905_receive\main.c
 0019           L35:
 0019                   .blkb 18
                        .area idata
 0019 736C617665206164642069732025640D  .byte 's,'l,'a,'v,'e,32,'a,'d,'d,32,'i,'s,32,37,'d,13
 0029 0A00              .byte 10,0
                        .area data(ram, con, rel)
 002B                   .dbfile E:\公司用\atmega8l\final\new\nrf905_receive\main.c

⌨️ 快捷键说明

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