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

📄 nrf905_jinju.s

📁 监测高压电电流
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module nrf905_JinJu.c
	.area text(rom, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
_LPCData:
	.blkb 1
	.area idata
	.byte 255
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.dbsym s LPCData _LPCData c
_SecondCount::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.dbsym e SecondCount _SecondCount i
_Count::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.dbsym e Count _Count i
_LastCmdCount::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.dbsym e LastCmdCount _LastCmdCount i
	.area text(rom, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.dbfunc e EEPROM_read _EEPROM_read fc
;      uiAddress -> R16,R17
	.even
_EEPROM_read::
	.dbline -1
	.dbline 218
; //	用LM2902取代PGA103版本
; //
; /***********************************************************************************
; 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
; ***********************************************************************************/
; /////////////////////////////////////////////////////////////
; /*
; 	烟台国网中电自动化技术有限公司
; 	环境模块通信程序(ICCAVR)
; 	作者:袁德海
; 
; 规约:
; 	1、串口通讯帧格式
; 		1BYTE 1BYTE	    2BYTE
; 		头部  类型	           数据	结尾
; 		EB 90  00(下行)	 ID    num	LPC				召唤数据	               7字节
; 		EB 90  01(上行)	 ID    num*2数据	    LPC	发送数据			6+2*num 字节
; 		EB 90  02(下行)	 ID	   num NO 3级报警限	LPC	设置参数			      14字节
; 		EB 90  03(上行)  ID	   num NO 3级报警限 LPC	校验参数				  14字节
; 		其中:num为该监测装置的温度监测点数
; 	2、SPI通讯帧格式(只有报告数据与串口通讯帧格式不同,其余完全相同
; 		1BYTE 1BYTE	    2BYTE 1BYTE  1BYTE
; 		头部  类型	           				   数据				结尾
; 		EB 90  01(上行)	 ID    num startno  num*2数据	    LPC	发送数据		6+2*num 字节
; 		   其中:num为该帧报文的数据个数,startno为该帧数据的测量号,因此最多4个数据
; */
; #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
; 
; #define	MAXNUM		8					//
; 
; 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	PWR_UP_H	(PORTB |= BIT_H(PB0))
; #define	PWR_UP_L	(PORTB &= BIT_L(PB0))
; 
; #define PAC_H       (PORTB |= BIT_H(PB0))
; #define PAC_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 MS_COUNT	fosc/1000/17		//延时计数
; #define SR_NOP()	asm("nop")			//空指令
; 
; #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
; 
; BYTE	TxFlag[6];
; 
; BYTE	Mode;					//	运行模式	0 -- 正常,1 -- 测试
; 
; WORD	ID;						//  要发送的ID号
; BYTE	num;					//	监测单元的监测点数
; BYTE	SPI_Received;
; BYTE	Register[10];
; 
; static INT8U	rxbuf[RXBUF_LEN], LPCData=0xff;
; static INT8U	rxpt;
; static INT8U	handlept;
; 
; 
; static BYTE		tx_addr[4];
; static BYTE		tx_buf[RXBUF_LEN];
; static BYTE		buf[RXBUF_LEN];
; static BYTE		tx_len;
; 
; 
; static INT8U	spi_rxbuf[SPI_BUF_LEN];
; static INT8U	spi_rxpt;
; static INT8U	spi_handlept;
; 
; #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
; 
; WORD	TCNTData;
; WORD	SecondCount=0;
; WORD	Count=0;
; 
; BYTE	FlashFlag;		//灯闪烁标志
; BYTE	SendDataFlag;
; 
; #define	SENDTIMER	3				//	每10秒钟发送一次数据
; #define	NODATALIMIT	1000				//	10分钟收不到命令则复位
; #define	FLASHLIMIT	2				//	每收到一组数据闪烁1次
; WORD	NoDataCount;
; WORD	temperature;				//	环境温度
; #define	LASTCMDCOUNT	5
; 
; WORD	LastCmdCount=0;
; 
; void handle(void);
; void InitSPI(void);
; 
; 
; /////////////////////////////////////////////////////////////
; BYTE EEPROM_read(WORD uiAddress)
; {
L2:
	.dbline 219
; 	while(EECR&(1<<EEWE));		//等待写入前一个字节
L3:
	.dbline 219
	sbic 0x1c,1
	rjmp L2
X0:
	.dbline 220
; 	EEAR=uiAddress;				//设置地址寄存器
	out 0x1f,R17
	out 0x1e,R16
	.dbline 221
; 	EECR |= (1<<EERE);			//通过设置EERE,开始读EEPROM
	sbi 0x1c,0
	.dbline 222
; 	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 227
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void EEPROM_write( WORD uiAddress, BYTE ucData)
; {
L6:
	.dbline 228
; 	while(EECR&(1<<EEWE));		//等待写入前一个字节
L7:
	.dbline 228
	sbic 0x1c,1
	rjmp L6
X1:
	.dbline 229
; 	EEAR=uiAddress;				//设置地址寄存器
	out 0x1f,R17
	out 0x1e,R16
	.dbline 230
; 	EEDR=ucData;				//设置数据寄存器
	out 0x1d,R18
	.dbline 231
; 	EECR |= (1<<EEMWE);			//将EEMWE写入高
	sbi 0x1c,2
	.dbline 232
; 	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 236
; }
; //
; void delay(WORD n)
; {
L10:
	.dbline 237
;     while(--n);
L11:
	.dbline 237
	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 241
; }
; //延时n毫秒
; void sr_ms(WORD n)
; {	//延时n毫秒
	.dbline 244
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L17
L14:
	.dbline 245
; 		for(j=0; j<MS_COUNT;j++);
	clr R22
	clr R23
	rjmp L21
L18:
	.dbline 245
L19:
	.dbline 245
	subi R22,255  ; offset = 1
	sbci R23,255
L21:
	.dbline 245
	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 244
	subi R20,255  ; offset = 1
	sbci R21,255
L17:
	.dbline 244
	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 250
; }
; 
; /////////////////////////////////////////////////////////////
; void quarter_ms(WORD n)
; {	//延时n毫秒
	.dbline 253
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L26
L23:
	.dbline 254
; 		for(j=0; j<MS_COUNT/4;j++);
	clr R22
	clr R23
	rjmp L30
L27:
	.dbline 254
L28:
	.dbline 254
	subi R22,255  ; offset = 1
	sbci R23,255
L30:
	.dbline 254
	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 253
	subi R20,255  ; offset = 1
	sbci R21,255
L26:
	.dbline 253
	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 259
; }
; 
; /////////////////////////////////////////////////////////////
; void half_ms(WORD n)
; {	//延时n毫秒
	.dbline 262
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L35
L32:
	.dbline 263
; 		for(j=0; j<MS_COUNT/2;j++);
	clr R22
	clr R23
	rjmp L39
L36:
	.dbline 263
L37:
	.dbline 263
	subi R22,255  ; offset = 1
	sbci R23,255
L39:
	.dbline 263
	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 262
	subi R20,255  ; offset = 1
	sbci R21,255
L35:
	.dbline 262
	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 267
; }
; 
; void ms(WORD n)
; {	//延时n毫秒
	.dbline 270
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L44
L41:
	.dbline 271
; 		for(j=0; j<MS_COUNT;j++);
	clr R22
	clr R23
	rjmp L48
L45:
	.dbline 271
L46:
	.dbline 271
	subi R22,255  ; offset = 1
	sbci R23,255
L48:
	.dbline 271
	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 270
	subi R20,255  ; offset = 1
	sbci R21,255
L44:
	.dbline 270
	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 275
; }
; 
; void us(WORD n)
; {	//延时n毫秒
	.dbline 278
; 	WORD i,j;
; 
; 	for(i=0; i<n; i++)
	clr R20
	clr R21
	rjmp L53
L50:
	.dbline 279
; 		for(j=0; j<MS_COUNT/1000;j++);
	clr R22
	clr R23
	rjmp L57
L54:
	.dbline 279
L55:
	.dbline 279
	subi R22,255  ; offset = 1
	sbci R23,255
L57:
	.dbline 279
	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 278
	subi R20,255  ; offset = 1
	sbci R21,255
L53:
	.dbline 278
	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 284
; }
; 
; /////////////////////////////////////////////////////////////
; void delay_s(WORD n)
; {
	.dbline 286
; 	WORD	i;
; 	for ( i=0; i<10*n; i++ )	ms(100);
	clr R20
	clr R21
	rjmp L62
L59:
	.dbline 286
	ldi R16,100
	ldi R17,0
	rcall _ms
L60:
	.dbline 286
	subi R20,255  ; offset = 1
	sbci R21,255
L62:
	.dbline 286
	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 292
; }
; 
; /////////////////////////////////////////////////////////////
; //UART口
; void uart_init(void)
; {
	.dbline 293
; 	UCSRB = 0x00;							//设置波特率时关闭发送和接收
	clr R2
	out 0xa,R2
	.dbline 294
; 	UCSRA = 0x00;
	out 0xb,R2
	.dbline 295
; 	UCSRC = (1<<UCSZ1)|(1<<UCSZ0);			//8位数据+1位STOP位
	ldi R24,6
	out 0x20,R24
	.dbline 296
; 	UBRRL=(fosc/16/baud-1)%256;
	ldi R24,3
	out 0x9,R24
	.dbline 297
; 	UBRRH=(fosc/16/baud-1)/256;			//设置波特率
	out 0x20,R2
	.dbline 298
; 	UCSRB =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);	//允许发送和接收
	ldi R24,152
	out 0xa,R24
	.dbline -2
L63:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_RxChar _uart_RxChar fc
	.even
_uart_RxChar::
	.dbline -1
	.dbline 304
; }
; 
; /////////////////////////////////////////////////////////////
; //URAT口
; BYTE uart_RxChar(void)
; {
L65:
	.dbline 305
; 	while(!(UCSRA& (1<<RXC)));//判断是否接收到数据
L66:
	.dbline 305
	sbis 0xb,7
	rjmp L65
X14:
	.dbline 306
; 	return UDR;                //接收数据
	in R16,0xc
	.dbline -2
L64:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_TxChar _uart_TxChar fV
;              c -> R16
	.even
_uart_TxChar::
	.dbline -1
	.dbline 311
; }
; 
; /////////////////////////////////////////////////////////////
; void uart_TxChar(BYTE c)
; {
L69:
	.dbline 312
; 	while (!(UCSRA&(1<<UDRE)));//判断上次发送是否完成
L70:
	.dbline 312
	sbis 0xb,5
	rjmp L69
X15:
	.dbline 313
; 	UDR=c;                      //发送数据
	out 0xc,R16
	.dbline -2
L68:
	.dbline 0 ; func end
	ret
	.dbsym r c 16 c
	.dbend
	.dbfunc e put_bytes _put_bytes fV
;              i -> R20,R21
;            len -> R10,R11
;            buf -> R12,R13
	.even
_put_bytes::
	rcall push_xgset303C
	movw R10,R18
	movw R12,R16
	.dbline -1

⌨️ 快捷键说明

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