📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _R_flag::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0001 .dbsym e R_flag _R_flag c
0001 _send_addr::
0001 .blkb 2
.area idata
0001 5631 .byte 'V,49
.area data(ram, con, rel)
0003 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0003 .blkb 2
.area idata
0003 5631 .byte 'V,49
.area data(ram, con, rel)
0005 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0005 .dbsym e send_addr _send_addr A[4:4]c
0005 _receive_addr::
0005 .blkb 2
.area idata
0005 1365 .byte 19,'e
.area data(ram, con, rel)
0007 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0007 .blkb 2
.area idata
0007 1365 .byte 19,'e
.area data(ram, con, rel)
0009 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0009 .dbsym e receive_addr _receive_addr A[4:4]c
0009 _broad_addr::
0009 .blkb 2
.area idata
0009 FFFF .byte 255,255
.area data(ram, con, rel)
000B .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
000B .blkb 2
.area idata
000B FFFF .byte 255,255
.area data(ram, con, rel)
000D .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
000D .dbsym e broad_addr _broad_addr A[4:4]c
000D _flag::
000D .blkb 1
.area idata
000D 00 .byte 0
.area data(ram, con, rel)
000E .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
000E .dbsym e flag _flag c
000E _pack_num::
000E .blkb 2
.area idata
000E 0000 .word 0
.area data(ram, con, rel)
0010 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0010 .dbsym e pack_num _pack_num i
.area vector(rom, abs)
.org 24
0018 0C940000 jmp _Int_DR
.area data(ram, con, rel)
0010 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
.area text(rom, con, rel)
0000 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0000 .dbfunc e Int_DR _Int_DR fV
.even
0000 _Int_DR::
0000 0E940000 xcall push_lset
0004 .dbline -1
0004 .dbline 39
0004 ; /***************************************
0004 ; *2008,浙江工业大学信息与控制研究所
0004 ; *All rights reserved
0004 ; *
0004 ; *文件名称:main.c
0004 ; *摘 要:接收节点测试主程序,用来测试丢包,传输时间和载波侦听
0004 ; *
0004 ; *当前版本:1.1
0004 ; *作 者:王微
0004 ; *完成日期:2008.7.9
0004 ; ****************************************/
0004 ;
0004 ;
0004 ; #include<iom128v.h>
0004 ; #include<macros.h>
0004 ;
0004 ;
0004 ; #include"nrf.h"
0004 ; #include"spi.h"
0004 ; #include"common.h"
0004 ; #include"INT.h"
0004 ;
0004 ; //LED显示驱动
0004 ; #define LED_YELLOW PORTA|=(1<<PORTA0);PORTA&=~(1<<PORTA1);
0004 ; #define LED_RED PORTA&=~(1<<PORTA0);PORTA|=(1<<PORTA1);
0004 ;
0004 ; unsigned char R_flag=0; //接收到其他节点的数据包的标志
0004 ;
0004 ; unsigned char send_addr[4]={0x56,0x31,0x56,0x31}; //4字节的发送地址
0004 ; unsigned char receive_addr[4]={0x13,0x65,0x13,0x65}; //4字节的接收地址a513d36a
0004 ; unsigned char broad_addr[4]={0xff,0xff,0xff,0xff}; //4字节的广播地址
0004 ; unsigned char receive_data[PACKAGE_LENGTH]; //PACKAGE_LENGTH字节的接收数据缓存区
0004 ; unsigned char transmit_data[PACKAGE_LENGTH]; //PACKAGE_LENGTH字节的发送数据缓存区
0004 ;
0004 ; unsigned char flag=0;
0004 ; unsigned int pack_num=0; //接收到数据包的个数
0004 ; #pragma interrupt_handler Int_DR: 7
0004 ; void Int_DR(void) //外部中断INT5,中断向量号为7,接收数无线据
0004 ; {
0004 .dbline 40
0004 ; RxPacket(receive_data);
0004 00E0 ldi R16,<_receive_data
0006 10E0 ldi R17,>_receive_data
0008 0E940000 xcall _RxPacket
000C .dbline 42
000C ; //////////////////////还应改变一下缓冲区的指针(接收多个包时)
000C ; R_flag=1; //接收到其他节点的数据包的标志
000C 81E0 ldi R24,1
000E 80930000 sts _R_flag,R24
0012 .dbline -2
0012 L1:
0012 0E940000 xcall pop_lset
0016 .dbline 0 ; func end
0016 1895 reti
0018 .dbend
0018 .dbfunc e main _main fV
0018 ; i -> <dead>
.even
0018 _main::
0018 .dbline -1
0018 .dbline 49
0018 ;
0018 ; }
0018 ;
0018 ;
0018 ;
0018 ; void main(void)
0018 ; {
0018 .dbline 52
0018 ; int i;
0018 ;
0018 ; init_spi();
0018 0E940000 xcall _init_spi
001C .dbline 53
001C ; init_905();
001C 0E940000 xcall _init_905
0020 .dbline 54
0020 ; init_INT(); //初始化外部中断
0020 0E940000 xcall _init_INT
0024 .dbline 56
0024 ;
0024 ; set_confword(receive_addr);//以后在初始条件下,接收地址应该为广播地址
0024 00E0 ldi R16,<_receive_addr
0026 10E0 ldi R17,>_receive_addr
0028 0E940000 xcall _set_confword
002C .dbline 57
002C ; send_conf(); //设置905的配置字
002C 0E940000 xcall _send_conf
0030 .dbline 59
0030 ;
0030 ; EIFR|=0XFF; //清除外部中断的标志位
0030 88B7 in R24,0x38
0032 8F6F ori R24,255
0034 88BF out 0x38,R24
0036 .dbline 60
0036 ; set_Rmode(); //nRF设置成接收模式 必须有下一句的开启外部中断5和上一句的清除外部中断的标志位
0036 0E940000 xcall _set_Rmode
003A .dbline 61
003A ; EIMSK|=BIT(5); //开启外部中断5,以监测是无线模块是否收到数据
003A 89B7 in R24,0x39
003C 8062 ori R24,32
003E 89BF out 0x39,R24
0040 .dbline 63
0040 ;
0040 ; LED_YELLOW;
0040 D89A sbi 0x1b,0
0042 .dbline 63
0042 D998 cbi 0x1b,1
0044 .dbline 63
0044 41C0 xjmp L4
0046 L3:
0046 .dbline 65
0046 ; while(1)
0046 ; {
0046 .dbline 66
0046 ; if(R_flag==1)
0046 80910000 lds R24,_R_flag
004A 8130 cpi R24,1
004C E9F5 brne L6
004E .dbline 67
004E ; {
004E .dbline 68
004E ; R_flag=0;
004E 2224 clr R2
0050 20920000 sts _R_flag,R2
0054 .dbline 69
0054 ; pack_num++;
0054 80910E00 lds R24,_pack_num
0058 90910F00 lds R25,_pack_num+1
005C 0196 adiw R24,1
005E 90930F00 sts _pack_num+1,R25
0062 80930E00 sts _pack_num,R24
0066 .dbline 70
0066 ; if(0xffff==pack_num)
0066 8F3F cpi R24,255
0068 EFEF ldi R30,255
006A 9E07 cpc R25,R30
006C 29F4 brne L8
006E .dbline 71
006E ; {
006E .dbline 72
006E ; pack_num=0;
006E 3324 clr R3
0070 30920F00 sts _pack_num+1,R3
0074 20920E00 sts _pack_num,R2
0078 .dbline 73
0078 ; }
0078 L8:
0078 .dbline 75
0078 ; /* */
0078 ; if(flag==0)
0078 20900D00 lds R2,_flag
007C 2220 tst R2
007E 31F4 brne L10
0080 .dbline 76
0080 ; {
0080 .dbline 77
0080 ; LED_RED;
0080 D898 cbi 0x1b,0
0082 .dbline 77
0082 D99A sbi 0x1b,1
0084 .dbline 77
0084 .dbline 78
0084 ; flag=1;
0084 81E0 ldi R24,1
0086 80930D00 sts _flag,R24
008A .dbline 79
008A ; }
008A 09C0 xjmp L11
008C L10:
008C .dbline 80
008C ; else if(flag==1)
008C 80910D00 lds R24,_flag
0090 8130 cpi R24,1
0092 29F4 brne L12
0094 .dbline 81
0094 ; {
0094 .dbline 82
0094 ; LED_YELLOW;
0094 D89A sbi 0x1b,0
0096 .dbline 82
0096 D998 cbi 0x1b,1
0098 .dbline 82
0098 .dbline 83
0098 ; flag=0;
0098 2224 clr R2
009A 20920D00 sts _flag,R2
009E .dbline 84
009E ; }
009E L12:
009E L11:
009E .dbline 87
009E ; /**/
009E ;
009E ; set_Tmode();
009E 0E940000 xcall _set_Tmode
00A2 .dbline 88
00A2 ; EIMSK&=~BIT(5); //屏蔽外部中断5
00A2 89B7 in R24,0x39
00A4 8F7D andi R24,223
00A6 89BF out 0x39,R24
00A8 .dbline 89
00A8 ; set_Taddr(send_addr);
00A8 00E0 ldi R16,<_send_addr
00AA 10E0 ldi R17,>_send_addr
00AC 0E940000 xcall _set_Taddr
00B0 .dbline 91
00B0 ; //Delay650us(); //写地址和写数据之间要延时
00B0 ; TxPacket(receive_data); //转发接收到的数据
00B0 00E0 ldi R16,<_receive_data
00B2 10E0 ldi R17,>_receive_data
00B4 0E940000 xcall _TxPacket
00B8 .dbline 93
00B8 ;
00B8 ; EIFR|=0XFF; //清除外部中断的标志位
00B8 88B7 in R24,0x38
00BA 8F6F ori R24,255
00BC 88BF out 0x38,R24
00BE .dbline 94
00BE ; set_Rmode();
00BE 0E940000 xcall _set_Rmode
00C2 .dbline 95
00C2 ; EIMSK|=BIT(5); //开启外部中断5 */
00C2 89B7 in R24,0x39
00C4 8062 ori R24,32
00C6 89BF out 0x39,R24
00C8 .dbline 97
00C8 ;
00C8 ; }
00C8 L6:
00C8 .dbline 98
00C8 L4:
00C8 .dbline 64
00C8 BECF xjmp L3
00CA X0:
00CA .dbline -2
00CA L2:
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbsym l i 1 I
00CC .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\main.c
0000 _transmit_data::
0000 .blkb 21
0015 .dbsym e transmit_data _transmit_data A[21:21]c
0015 _receive_data::
0015 .blkb 21
002A .dbsym e receive_data _receive_data A[21:21]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -