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