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

📄 main.s

📁 atmega128单片机上实现的nrf905无线收发程序
💻 S
字号:
	.module main.c
	.area data(ram, con, rel)
_receive_addr::
	.blkb 2
	.area idata
	.byte 'V,49
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'V,49
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.dbsym e receive_addr _receive_addr A[4:4]c
_send_addr::
	.blkb 2
	.area idata
	.byte 19,'e
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.blkb 2
	.area idata
	.byte 19,'e
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.dbsym e send_addr _send_addr A[4:4]c
_w_ptr::
	.blkw 1
	.area idata
	.word _ECG_data
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.dbsym e w_ptr _w_ptr pc
_r_ptr::
	.blkw 1
	.area idata
	.word _ECG_data
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.dbsym e r_ptr _r_ptr pc
_second::
	.blkb 1
	.area idata
	.byte 128
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.dbsym e second _second c
_led_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.dbsym e led_flag _led_flag c
	.area vector(rom, abs)
	.org 24
	jmp _Int_DR
	.area data(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.area text(rom, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
	.dbfunc e Int_DR _Int_DR fV
	.even
_Int_DR::
	xcall push_lset
	.dbline -1
	.dbline 39
; /*
; *2008,浙江工业大学信息与控制研究所
; *All rights reserved
; *
; *文件名称:ECG_NRF905.C
; *摘    要:主函数,实现心电数据的采集,发送
; *
; *当前版本:1.0
; *作    者:董齐芬
; *完成日期:2008.5.17
; *
; *取代版本:
; *原 作 者:
; *完成日期:
; */
; 
; //#include "time.h"
; //#include "mcp42010.h"
; //#include "adc.h"
; #include "nrf.h"
; #include "common.h"
; #include "spi.h"
; #include "int.h"
; 
; unsigned char receive_addr[4]={0x56,0x31,0x56,0x31};                 //4字节的接收地址a513d36a
; unsigned char send_addr[4]={0x13,0x65,0x13,0x65};                   //4字节的发送地址
; unsigned char ECG_data[ECG_LENGTH];  //存放心电数据1024个
; unsigned char *w_ptr=ECG_data;       //将采集到的数据存放到存储区的地址指针
; unsigned char *r_ptr=ECG_data;       //无线发送时数据存储区的地址指针
; unsigned char nrf_data[PACKAGE_LENGTH];          //正要发送的无线数据包    0x5f+心电数据+序列号
; unsigned char receive_data[PACKAGE_LENGTH];          //接收到的无线数据包    0x5f+心电数据+序列号
; unsigned char second=0x80;           //秒的次序,8秒一次循环
; unsigned char led_flag=0;
; 
; void mcu_init(void);   //声明处理器初始化函数
; 
; #pragma interrupt_handler Int_DR: 7		
; void Int_DR(void)                            //外部中断INT5,中断向量号为7,接收数无线据
; {
	.dbline 40
;     LED_YELLOW;
	sbi 0x1b,0
	.dbline 40
	cbi 0x1b,1
	.dbline 40
	.dbline 41
; 	RxPacket(receive_data);
	ldi R16,<_receive_data
	ldi R17,>_receive_data
	xcall _RxPacket
	.dbline -2
L1:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e main _main fV
;              j -> <dead>
;              s -> R20
;              i -> R22
	.even
_main::
	.dbline -1
	.dbline 53
; 	//////////////////////还应改变一下缓冲区的指针(接收多个包时)
;  
; }
; 
; /*
; *函数功能:主函数
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; */
; void main(void)
; {  
	.dbline 55
;    unsigned char i,j,s;
;    s=0;
	clr R20
	.dbline 57
;    
;    CLI();             //disable all interrupts
	cli
	.dbline 58
;    mcu_init();        //处理器各模块初始化 
	xcall _mcu_init
	.dbline 60
;    
;    for (i=0;i<PACKAGE_LENGTH-1;i++)
	clr R22
	xjmp L6
L3:
	.dbline 61
	.dbline 62
	ldi R24,<_nrf_data
	ldi R25,>_nrf_data
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R22
	.dbline 63
L4:
	.dbline 60
	inc R22
L6:
	.dbline 60
	cpi R22,20
	brlo L3
	xjmp L8
L7:
	.dbline 66
;    {
;      nrf_data[i]=i;   //测试数据,每个数据包的前PACKAGE_LENGTH-1个数据都一致,最后一个字节为数据包的序列号
;    }
;    
;    while (1)
;    {
	.dbline 68
; 	  
; 	  nrf_data[PACKAGE_LENGTH-1]=s;   //代表数据包的序列号
	sts _nrf_data+20,R20
	.dbline 69
; 	  set_Tmode();              //把905设置成发送模式
	xcall _set_Tmode
	.dbline 70
; 	  EIMSK&=~BIT(5);           //发送时将屏蔽外部中断5
	in R24,0x39
	andi R24,223
	out 0x39,R24
	.dbline 71
; 	  LED_RED;
	cbi 0x1b,0
	.dbline 71
	sbi 0x1b,1
	.dbline 71
	.dbline 72
; 	  set_Taddr(send_addr);
	ldi R16,<_send_addr
	ldi R17,>_send_addr
	xcall _set_Taddr
	.dbline 73
;       TxPacket(nrf_data);
	ldi R16,<_nrf_data
	ldi R17,>_nrf_data
	xcall _TxPacket
	.dbline 75
; 	
;       if (led_flag)
	lds R2,_led_flag
	tst R2
	breq L11
	.dbline 76
; 	  {
	.dbline 77
; 		LED_RED;
	cbi 0x1b,0
	.dbline 77
	sbi 0x1b,1
	.dbline 77
	.dbline 78
; 		led_flag=0;
	clr R2
	sts _led_flag,R2
	.dbline 79
; 	  }
	xjmp L12
L11:
	.dbline 81
; 	  else
; 	  {
	.dbline 82
; 		LED_YELLOW;
	sbi 0x1b,0
	.dbline 82
	cbi 0x1b,1
	.dbline 82
	.dbline 83
; 		led_flag=1;
	ldi R24,1
	sts _led_flag,R24
	.dbline 84
; 	  }
L12:
	.dbline 86
; 	  
; 	  EIFR|=0XFF;           //清除外部中断的标志位
	in R24,0x38
	ori R24,255
	out 0x38,R24
	.dbline 87
; 	  set_Rmode();           //nRF设置成接收模式 必须有下一句的开启外部中断5和上一句的清除外部中断的标志位
	xcall _set_Rmode
	.dbline 88
; 	  EIMSK|=BIT(5);         //开启外部中断5,以监测是无线模块是否收到数据
	in R24,0x39
	ori R24,32
	out 0x39,R24
	.dbline 90
; 	  
;       Delays();              //延时一段时间继续发送
	xcall _Delays
	.dbline 91
; 	  s++;
	inc R20
	.dbline 92
; 	  if (s==250)
	cpi R20,250
	brne L13
	.dbline 93
; 	  {
	.dbline 94
; 	    s=0;
	clr R20
	.dbline 95
; 	  }
L13:
	.dbline 96
L8:
	.dbline 65
	xjmp L7
X0:
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym l j 1 c
	.dbsym r s 20 c
	.dbsym r i 22 c
	.dbend
	.dbfunc e mcu_init _mcu_init fV
	.even
_mcu_init::
	.dbline -1
	.dbline 107
;     }
; }
; 	   
;    
; /*
; *函数功能:处理器初始化函数,将要用到的各个模块的初始化函数放在一起
; *输入参数:无
; *输出参数:无
; *返 回 值:无
; */
; void mcu_init(void)
; {
	.dbline 108
;   initled();     //led灯初始化
	xcall _initled
	.dbline 109
;   initbuzzer();  //蜂鸣器初始化
	xcall _initbuzzer
	.dbline 110
;   init_spi();
	xcall _init_spi
	.dbline 111
;   init_905();    //nrf905上电初始化
	xcall _init_905
	.dbline 112
;   set_confword(receive_addr);//设置905配置寄存器
	ldi R16,<_receive_addr
	ldi R17,>_receive_addr
	xcall _set_confword
	.dbline 113
;   send_conf();   //配置寄存器内容
	xcall _send_conf
	.dbline 114
;   init_INT();        //DR引脚中断初始化
	xcall _init_INT
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\main.c
_receive_data::
	.blkb 21
	.dbsym e receive_data _receive_data A[21:21]c
_nrf_data::
	.blkb 21
	.dbsym e nrf_data _nrf_data A[21:21]c
_ECG_data::
	.blkb 1024
	.dbsym e ECG_data _ECG_data A[1024:1024]c

⌨️ 快捷键说明

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