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

📄 main.lis

📁 atmega128单片机上实现的nrf905无线收发程序
💻 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 + -