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

📄 nrf905_temperature.s

📁 ADC采集温度数据通过nrf905发送出去
💻 S
📖 第 1 页 / 共 5 页
字号:
	.module nrf905_temperature.c
	.area text(rom, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
_StepCount::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
	.dbsym e StepCount _StepCount c
_num::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
	.dbsym e num _num c
_LPCData:
	.blkb 1
	.area idata
	.byte 255
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
	.dbsym s LPCData _LPCData c
_SecondCount::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
	.dbsym e SecondCount _SecondCount i
_Count::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
	.dbsym e Count _Count i
	.area text(rom, con, rel)
	.dbfile E:\变电站测温\测温模块\nrf905_temperature.c
	.dbfunc e EEPROM_read _EEPROM_read fc
;      uiAddress -> R16,R17
	.even
_EEPROM_read::
	.dbline -1
	.dbline 223
; 
; /***********************************************************************************
; Project:          uRF905 demo program (V2.1)
; Filename:         uRF905_Sample_Code.c
; Prozessor:        Mega8 family
; Compiler:         ICCAVR Version 6.14
; Autor:            YUAN
; Copyrigth:        (c) Sensirion AG
; ***********************************************************************************/
; 
; #include<iom8v.h>
; #include <math.h>
; #include<macros.h>
; #include<eeprom.h>
; #include<string.h>
; #include<stdio.h>
; 
; #define CH_NO_FREQ_422_4MHz  0x000                     //工作频率422.4MHz(433MHz频段最低频率)
; #define CH_NO_FREQ_422_5MHz  0x001                     //工作频率422.5MHz
; #define CH_NO_FREQ_425_0MHz  0x01a                     //工作频率425.0MHz
; #define CH_NO_FREQ_427_5MHz  0x033                     //工作频率427.5MHz
; 
; #define CH_NO_FREQ_430_0MHz  0x04c                     //工作频率430.0MHz
; #define CH_NO_FREQ_433_0MHz  0x06a                     //工作频率433.0MHz(433MHz频段基准频率)
; #define CH_NO_FREQ_433_1MHz  0x06b                     //工作频率433.1MHz
; #define CH_NO_FREQ_433_2MHz  0x06c                     //工作频率433.2MHz
; #define CH_NO_FREQ_434_7MHz  0x07b                     //工作频率434.7MHz
; #define CH_NO_FREQ_473_5MHz  0x1ff                     //工作频率473.5MHz(433MHz频段最高频率)
; 
; #define CH_NO_FREQ_844_8MHz  0x000                     //工作频率844.8MHz(868MHz频段最低频率)
; 
; #define CH_NO_FREQ_862_0MHz  0x056                     //工作频率862.0MHz
; #define CH_NO_FREQ_868_0MHz  0x074                     //工作频率868.0MHz(868MHz频段基准频率)
; #define CH_NO_FREQ_868_2MHz  0x075                     //工作频率868.2MHz
; #define CH_NO_FREQ_868_4MHz  0x076                     //工作频率868.4MHz
; #define CH_NO_FREQ_869_8MHz  0x07d                     //工作频率869.8MHz
; #define CH_NO_FREQ_895_8MHz  0x0ff                     //工作频率895.8MHz
; #define CH_NO_FREQ_896_0MHz  0x100                     //工作频率896.0MHz
; #define CH_NO_FREQ_900_0MHz  0x114                     //工作频率900.0MHz
; #define CH_NO_FREQ_902_2MHz  0x11f                     //工作频率902.2MHz
; #define CH_NO_FREQ_902_4MHz  0x120                     //工作频率902.4MHz
; #define CH_NO_FREQ_915_0MHz  0x15f                     //工作频率915.0MHz(915MHz频段基准频率)
; #define CH_NO_FREQ_927_8MHz  0x19f                     //工作频率927.8MHz
; 
; #define CH_NO_FREQ_947_0MHz  0x1ff                     //工作频率947.0MHz(915MHz频段最高频率)
; 
; #define CH_NO_FREQ           CH_NO_FREQ_430_0MHz       //工作频率433.0MHz
; //#define CH_NO_FREQ           CH_NO_FREQ_915_0MHz       //工作频率915.0MHz
; 
; 
; #define CH_NO_BYTE           CH_NO_FREQ & 0xff         //工作频率低8位       Byte0       01101100
; 
; #define AUTO_RETRAN          0x20                      //重发数据包          Byte1.5     0
; #define RX_RED_PWR           0x10                      //接收低功耗模式      Byte1.4     0
; #define PA_PWR__10dBm        0x00                      //输出功率-10dBm      Byte1.3~2   00
; #define PA_PWR_2dBm          0x04                      //输出功率+2dBm       Byte1.3~2
; #define PA_PWR_6dBm          0x08                      //输出功率+6dBm       Byte1.3~2
; #define PA_PWR_10dBm         0x0c                      //输出功率+10dBm      Byte1.3~2
; #define HFREQ_PLL_433MHz     0x00                      //工作在433MHz频段    Byte1.1     0
; #define HFREQ_PLL_868MHz     0x02                      //工作在868MHz频段    Byte1.1
; #define HFREQ_PLL_915MHz     0x02                      //工作在915MHz频段    Byte1.1
; #define CH_NO_BIT8           CH_NO_FREQ >> 8           //工作频率第9位       Byte1.0     0
; 
; #define	ADDR_1				'G'
; #define	ADDR_2				'W'
; #define	ADDR_3				'Z'
; #define	ADDR_4				'D'
; 
; #define CMD_ASKDATA					0x00
; #define CMD_RETDATA					0x01
; #define CMD_DOWNPARA				0x02
; #define CMD_RETPARA					0x03
; 
; #define CMD_SETID                   0X05
; #define CMD_SETID_OK                0X06
; #define CMD_READID                    0x07
; 
; typedef unsigned char	BOOLEAN;
; typedef unsigned char	INT8U;
; typedef signed char		INT8S;
; typedef unsigned int	INT16U;
; typedef signed int		INT16S;
; typedef unsigned long	INT32U;
; typedef signed long		INT32S;
; 
; #define BIT_H(x)	(1<<x)
; #define BIT_L(x)	(~(1<<x))
; 
; #define TX_STATUS	(PORTD |= BIT_H(PD2))
; #define RX_STATUS	(PORTD &= BIT_L(PD2))
; 
; #define	PWR_UP_H	(PORTB |= BIT_H(PB0))
; #define	PWR_UP_L	(PORTB &= BIT_L(PB0))
; 
; #define	CSN_H	 	(PORTB |= BIT_H(PB2))
; #define	CSN_L	 	(PORTB &= BIT_L(PB2))
; 
; #define	MOSI_H	 	(PORTB |= BIT_H(PB3))
; #define	MOSI_L	 	(PORTB &= BIT_L(PB3))
; 
; #define	MISO_H	 	(PORTB |= BIT_H(PB4))
; #define	MISO_L	 	(PORTB &= BIT_L(PB4))
; 
; #define	SCK_H	 	(PORTB |= BIT_H(PB5))
; #define	SCK_L	 	(PORTB &= BIT_L(PB5))
; 
; #define	CD			(PIND & BIT_H(PD2))
; #define	DR			(PIND & BIT_H(PD3))
; #define	AM			(PIND & BIT_H(PD4))
; 
; #define	TX_EN_H	 	(PORTD |= BIT_H(PD5))
; #define	TX_EN_L	 	(PORTD &= BIT_L(PD5))
; 
; #define	TRX_CE_H	(PORTD |= BIT_H(PD6))
; #define	TRX_CE_L	(PORTD &= BIT_L(PD6))
; 
; #define	LED_H	 	(PORTD |= BIT_H(PD7))
; #define	LED_L	 	(PORTD &= BIT_L(PD7))
; 
; #define noACK 0
; #define ACK   1
; 
; #define fosc		7372800
; #define baud		115200
; #define AD_NUM		30
; 
; #define MS_COUNT	fosc/1000/17		//延时计数
; #define SR_NOP()	asm("nop")			//空指令
; 
; #define ID_L_ADDR			0x1fe				
; #define ID_H_ADDR           	0x1fd	
; 
; #define LIMIT_START_ARRD    0x1c0
; 
; #define  num_ADDR   0x1b0
; 
; #define RXBUF_LEN	32
; #define RXBUF_LEN1	RXBUF_LEN-1
; 
; #define SPI_BUF_LEN		16
; #define SPI_BUF_LEN1	SPI_BUF_LEN-1
; 
; #define	BYTE	unsigned char
; #define	WORD	unsigned int
; 
; static	WORD	adc_val;		//AD结果
; 
; WORD	adc_mux;		//AD通道
; 
; 
; static	WORD	adc_mul;		//AD放大倍数,4--1倍,3-10倍,2--100倍,1--1000倍,0--10000倍
; static	WORD	adc_num;
; static	WORD	adc_num1;
; static	WORD	adc_count;
; 
; BYTE	TxFlag[6];
; 
; BYTE	Mode;					//	运行模式	0 -- 正常,1 -- 测试
; 
; BYTE	SPI_Received;
; BYTE	Register[10];
; 
; BYTE	StepCount=0;
; BYTE    num = 1;
; 
; BYTE    data[16];
; BYTE    startnum;
; BYTE    no;
; WORD    limit[8][3];
; 
; BYTE   alarmno;
; 
; static INT8U	rxbuf[RXBUF_LEN],LPCData=0xff;
; static INT8U	rxpt;
; static INT8U	handlept;
; 
; WORD	Alarm_flag_prev[8];			 
; BYTE   alarm_flag[8];
; 
; 
; static BYTE		tx_addr[4];
; static BYTE		tx_buf[RXBUF_LEN];
; static BYTE		tx_len;
; static BYTE		lastcmd;
; 
; static INT8U	spi_rxbuf[SPI_BUF_LEN];
; static INT8U	spi_rxpt;
; static INT8U	spi_handlept;
; //static INT8U	spi_txflag;
; 
; #define			W_CONFIG   			0x00
; #define			R_CONFIG   			0x10
; #define			W_TX_PAYLOAD		0x20
; #define			R_TX_PAYLOAD		0x21
; #define			W_TX_ADDRESS		0x22
; #define			R_TX_ADDRESS		0x23
; #define			R_RX_PAYLOAD		0x24
; #define			CHANNEL_CONFIG		0x8c
; #define			SPI_CMD_NUM			8
; 
; static	INT8U	ID_L;
; static  INT8U   ID_H;
; 	
; WORD	TCNTData;
; WORD	SecondCount=0;
; WORD	Count=0;
; 
; BYTE	FlashFlag;		//灯闪烁标志
; BYTE	SendDataFlag;
; 
; #define	SENDTIMER	3				//	每10秒钟发送一次数据
; #define	NODATALIMIT	300				//	3分钟收不到命令则复位
; #define	FLASHLIMIT	2				//	每收到一组数据闪烁1次
; 
; BYTE  temperature_L,temperature_H;
; 
; void handle(void);
; void InitSPI(void);
; void SendGram(BYTE cmd);
; 
; /////////////////////////////////////////////////////////////
; BYTE EEPROM_read(WORD uiAddress)
; {
L2:
	.dbline 224
; 	while(EECR&(1<<EEWE));		//等待写入前一个字节
L3:
	.dbline 224
	sbic 0x1c,1
	rjmp L2
X0:
	.dbline 225
; 	EEAR=uiAddress;				//设置地址寄存器
	out 0x1f,R17
	out 0x1e,R16
	.dbline 226
; 	EECR |= (1<<EERE);			//通过设置EERE,开始读EEPROM
	sbi 0x1c,0
	.dbline 227
; 	return EEDR;				//返回数据寄存器
	in R16,0x1d
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r uiAddress 16 i
	.dbend
	.dbfunc e EEPROM_write _EEPROM_write fV
;         ucData -> R18
;      uiAddress -> R16,R17
	.even
_EEPROM_write::
	.dbline -1
	.dbline 232
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void EEPROM_write( WORD uiAddress, BYTE ucData)
; {
L6:
	.dbline 233
; 	while(EECR&(1<<EEWE));		//等待写入前一个字节
L7:
	.dbline 233
	sbic 0x1c,1
	rjmp L6
X1:
	.dbline 234
; 	EEAR=uiAddress;				//设置地址寄存器
	out 0x1f,R17
	out 0x1e,R16
	.dbline 235
; 	EEDR=ucData;				//设置数据寄存器
	out 0x1d,R18
	.dbline 236
; 	EECR |= (1<<EEMWE);			//将EEMWE写入高
	sbi 0x1c,2
	.dbline 237
; 	EECR |= (1<<EEWE);			//通过设置EEWE,开始写EEPROM
	sbi 0x1c,1
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbsym r ucData 18 c
	.dbsym r uiAddress 16 i
	.dbend
	.dbfunc e delay _delay fV
;              n -> R16,R17
	.even
_delay::
	.dbline -1
	.dbline 241
; }
; //
; void delay(WORD n)
; {
L10:
	.dbline 242
;     while(--n);
L11:
	.dbline 242
	movw R24,R16
	sbiw R24,1
	movw R16,R24
	cpi R16,0
	cpc R16,R17
	brne L10
X2:
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbsym r n 16 i
	.dbend
	.dbfunc e sr_ms _sr_ms fV
;              i -> R20,R21
;              j -> R22,R23
;              n -> R16,R17
	.even
_sr_ms::
	rcall push_xgsetF000
	.dbline -1
	.dbline 246
; }
; //延时n毫秒
; void sr_ms(WORD n)
; {	//延时n毫秒
	.dbline 249
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L17
L14:
	.dbline 250
; 		for(j=0; j<MS_COUNT;j++);
	clr R22
	clr R23
	rjmp L21
L18:
	.dbline 250
L19:
	.dbline 250
	subi R22,255  ; offset = 1
	sbci R23,255
L21:
	.dbline 250
	ldi R24,177
	ldi R25,1
	ldi R26,0
	ldi R27,0
	movw R2,R22
	clr R4
	clr R5
	cp R2,R24
	cpc R3,R25
	cpc R4,R26
	cpc R5,R27
	brlt L18
X3:
L15:
	.dbline 249
	subi R20,255  ; offset = 1
	sbci R21,255
L17:
	.dbline 249
	cp R20,R16
	cpc R21,R17
	brlo L14
X4:
	.dbline -2
L13:
	.dbline 0 ; func end
	rjmp pop_xgsetF000
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r n 16 i
	.dbend
	.dbfunc e quarter_ms _quarter_ms fV
;              i -> R20,R21
;              j -> R22,R23
;              n -> R16,R17
	.even
_quarter_ms::
	rcall push_xgsetF000
	.dbline -1
	.dbline 255
; }
; 
; /////////////////////////////////////////////////////////////
; void quarter_ms(WORD n)
; {	//延时n毫秒
	.dbline 258
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L26
L23:
	.dbline 259
; 		for(j=0; j<MS_COUNT/4;j++);
	clr R22
	clr R23
	rjmp L30
L27:
	.dbline 259
L28:
	.dbline 259
	subi R22,255  ; offset = 1
	sbci R23,255
L30:
	.dbline 259
	ldi R24,108
	ldi R25,0
	ldi R26,0
	ldi R27,0
	movw R2,R22
	clr R4
	clr R5
	cp R2,R24
	cpc R3,R25
	cpc R4,R26
	cpc R5,R27
	brlt L27
X5:
L24:
	.dbline 258
	subi R20,255  ; offset = 1
	sbci R21,255
L26:
	.dbline 258
	cp R20,R16
	cpc R21,R17
	brlo L23
X6:
	.dbline -2
L22:
	.dbline 0 ; func end
	rjmp pop_xgsetF000
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r n 16 i
	.dbend
	.dbfunc e half_ms _half_ms fV
;              i -> R20,R21
;              j -> R22,R23
;              n -> R16,R17
	.even
_half_ms::
	rcall push_xgsetF000
	.dbline -1
	.dbline 264
; }
; 
; /////////////////////////////////////////////////////////////
; void half_ms(WORD n)
; {	//延时n毫秒
	.dbline 267
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L35
L32:
	.dbline 268
; 		for(j=0; j<MS_COUNT/2;j++);
	clr R22
	clr R23
	rjmp L39
L36:
	.dbline 268
L37:
	.dbline 268
	subi R22,255  ; offset = 1
	sbci R23,255
L39:
	.dbline 268
	ldi R24,216
	ldi R25,0
	ldi R26,0
	ldi R27,0
	movw R2,R22
	clr R4
	clr R5
	cp R2,R24
	cpc R3,R25
	cpc R4,R26
	cpc R5,R27
	brlt L36
X7:
L33:
	.dbline 267
	subi R20,255  ; offset = 1
	sbci R21,255
L35:
	.dbline 267
	cp R20,R16
	cpc R21,R17
	brlo L32
X8:
	.dbline -2
L31:
	.dbline 0 ; func end
	rjmp pop_xgsetF000
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r n 16 i
	.dbend
	.dbfunc e ms _ms fV
;              i -> R20,R21
;              j -> R22,R23
;              n -> R16,R17
	.even
_ms::
	rcall push_xgsetF000
	.dbline -1
	.dbline 272
; }
; 
; void ms(WORD n)
; {	//延时n毫秒
	.dbline 275
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L44
L41:
	.dbline 276
; 		for(j=0; j<MS_COUNT;j++);
	clr R22
	clr R23
	rjmp L48
L45:
	.dbline 276
L46:
	.dbline 276
	subi R22,255  ; offset = 1
	sbci R23,255
L48:
	.dbline 276
	ldi R24,177
	ldi R25,1
	ldi R26,0
	ldi R27,0
	movw R2,R22
	clr R4
	clr R5
	cp R2,R24
	cpc R3,R25
	cpc R4,R26
	cpc R5,R27
	brlt L45
X9:
L42:
	.dbline 275
	subi R20,255  ; offset = 1
	sbci R21,255
L44:
	.dbline 275
	cp R20,R16
	cpc R21,R17
	brlo L41
X10:
	.dbline -2
L40:
	.dbline 0 ; func end
	rjmp pop_xgsetF000
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r n 16 i
	.dbend
	.dbfunc e us _us fV
;              i -> R20,R21
;              j -> R22,R23
;              n -> R16,R17
	.even
_us::
	rcall push_xgsetF000
	.dbline -1
	.dbline 280
; }
; 
; void us(WORD n)
; {	//延时n毫秒
	.dbline 283
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L53
L50:
	.dbline 284
; 		for(j=0; j<MS_COUNT/1000;j++);
	clr R22
	clr R23
	rjmp L57
L54:
	.dbline 284
L55:
	.dbline 284
	subi R22,255  ; offset = 1
	sbci R23,255
L57:
	.dbline 284
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	movw R2,R22
	clr R4
	clr R5
	cp R2,R24
	cpc R3,R25
	cpc R4,R26
	cpc R5,R27
	brlt L54
X11:
L51:
	.dbline 283
	subi R20,255  ; offset = 1
	sbci R21,255
L53:
	.dbline 283
	cp R20,R16
	cpc R21,R17
	brlo L50
X12:
	.dbline -2
L49:
	.dbline 0 ; func end
	rjmp pop_xgsetF000
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r n 16 i
	.dbend
	.dbfunc e delay_s _delay_s fV
;              i -> R20,R21
;              n -> R10,R11
	.even
_delay_s::
	rcall push_xgset300C
	movw R10,R16
	.dbline -1
	.dbline 289
; }
; 
; /////////////////////////////////////////////////////////////
; void delay_s(WORD n)
; {
	.dbline 291
; 	WORD	i;
; 	for ( i=0; i<10*n; i++ )	ms(100);
	clr R20
	clr R21
	rjmp L62
L59:
	.dbline 291
	ldi R16,100
	ldi R17,0
	rcall _ms
L60:
	.dbline 291
	subi R20,255  ; offset = 1
	sbci R21,255
L62:
	.dbline 291
	ldi R16,10
	ldi R17,0
	movw R18,R10
	rcall empy16s
	cp R20,R16
	cpc R21,R17
	brlo L59
X13:
	.dbline -2
L58:
	.dbline 0 ; func end
	rjmp pop_xgset300C
	.dbsym r i 20 i
	.dbsym r n 10 i
	.dbend
	.dbfunc e uart_init _uart_init fV
	.even
_uart_init::
	.dbline -1
	.dbline 297
; }
; 
; /////////////////////////////////////////////////////////////
; //UART口
; void uart_init(void)
; {
	.dbline 298
; 	UCSRB = 0x00;							//设置波特率时关闭发送和接收
	clr R2
	out 0xa,R2
	.dbline 299
; 	UCSRA = 0x00;
	out 0xb,R2
	.dbline 300
; 	UCSRC = (1<<UCSZ1)|(1<<UCSZ0);			//8位数据+1位STOP位
	ldi R24,6
	out 0x20,R24
	.dbline 301
; 	UBRRL=(fosc/16/baud-1)%256;
	ldi R24,3
	out 0x9,R24
	.dbline 302
; 	UBRRH=(fosc/16/baud-1)/256;			//设置波特率
	out 0x20,R2
	.dbline 303
; 	UCSRB =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);	//允许发送和接收
	ldi R24,152

⌨️ 快捷键说明

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