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

📄 cc1100.s

📁 极低功率UHF无线收发器 315/433/868和915MHz ISM/SRD波段系统 AMR-自动仪表读数 电子消费产品 RKE-两路远程无键登录
💻 S
📖 第 1 页 / 共 2 页
字号:
L39:
	.dbline 267
L40:
	.dbline 267
;     while (GDO0);
	sbic 0x10,2
	rjmp L39
	.dbline 268
;     SpiTxRxByte(temp);
	mov R16,R20
	rcall _SpiTxRxByte
	.dbline 269
;     for (i = 0; i < count; i++)
	clr R22
	rjmp L45
L42:
	.dbline 270
	.dbline 271
	mov R30,R22
	clr R31
	add R30,R12
	adc R31,R13
	ldd R16,z+0
	rcall _SpiTxRxByte
	.dbline 272
L43:
	.dbline 269
	inc R22
L45:
	.dbline 269
	cp R22,R10
	brlo L42
	.dbline 273
;  	{
;         SpiTxRxByte(buffer[i]);
;     }
;     CSN_1;
	sbi 0x18,2
	.dbline 273
	.dbline -2
L38:
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r i 22 c
	.dbsym r count 10 c
	.dbsym r buffer 12 pc
	.dbsym r addr 20 c
	.dbend
	.dbfunc e halSpiStrobe _halSpiStrobe fV
;         strobe -> R20
	.even
_halSpiStrobe::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 283
; }
; 
; //*****************************************************************************************
; //函数名:void halSpiStrobe(INT8U strobe)
; //输入:命令
; //输出:无
; //功能描述:SPI写命令
; //*****************************************************************************************
; void halSpiStrobe(INT8U strobe) 
; {
	.dbline 284
;     CSN_0;
	cbi 0x18,2
	.dbline 284
L47:
	.dbline 285
L48:
	.dbline 285
;     while (GDO0);
	sbic 0x10,2
	rjmp L47
	.dbline 286
;     SpiTxRxByte(strobe);		//写入命令
	mov R16,R20
	rcall _SpiTxRxByte
	.dbline 287
;     CSN_1;
	sbi 0x18,2
	.dbline 287
	.dbline -2
L46:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r strobe 20 c
	.dbend
	.dbfunc e halSpiReadReg _halSpiReadReg fc
;          value -> R20
;           temp -> R22
;           addr -> R20
	.even
_halSpiReadReg::
	rcall push_gset2
	mov R20,R16
	.dbline -1
	.dbline 301
; }
; 
; 
; 
; 
; 
; //*****************************************************************************************
; //函数名:INT8U halSpiReadReg(INT8U addr)
; //输入:地址
; //输出:该寄存器的配置字
; //功能描述:SPI读寄存器
; //*****************************************************************************************
; INT8U halSpiReadReg(INT8U addr) 
; {
	.dbline 303
; 	INT8U temp, value;
;        temp = addr|READ_SINGLE;//读寄存器命令
	mov R22,R20
	ori R22,128
	.dbline 304
; 	CSN_0;
	cbi 0x18,2
	.dbline 304
L51:
	.dbline 305
L52:
	.dbline 305
; 	while (GDO0);
	sbic 0x10,2
	rjmp L51
	.dbline 306
; 	SpiTxRxByte(temp);
	mov R16,R22
	rcall _SpiTxRxByte
	.dbline 307
; 	value = SpiTxRxByte(0);
	clr R16
	rcall _SpiTxRxByte
	mov R20,R16
	.dbline 308
; 	CSN_1;
	sbi 0x18,2
	.dbline 308
	.dbline 309
; 	return value;
	.dbline -2
L50:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r value 20 c
	.dbsym r temp 22 c
	.dbsym r addr 20 c
	.dbend
	.dbfunc e halSpiReadBurstReg _halSpiReadBurstReg fV
;           temp -> R20
;              i -> R22
;          count -> R10
;         buffer -> R12,R13
;           addr -> R20
	.even
_halSpiReadBurstReg::
	rcall push_gset4
	movw R12,R18
	mov R20,R16
	ldd R10,y+8
	.dbline -1
	.dbline 320
; }
; 
; 
; //*****************************************************************************************
; //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
; //输入:地址,读出数据后暂存的缓冲区,读出配置个数
; //输出:无
; //功能描述:SPI连续写配置寄存器
; //*****************************************************************************************
; void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
; {
	.dbline 322
;     INT8U i,temp;
; 	temp = addr | READ_BURST;		//写入要读的配置寄存器地址和读命令
	ori R20,192
	.dbline 323
;     CSN_0;
	cbi 0x18,2
	.dbline 323
L55:
	.dbline 324
L56:
	.dbline 324
;     while (GDO0);
	sbic 0x10,2
	rjmp L55
	.dbline 325
; 	SpiTxRxByte(temp);   
	mov R16,R20
	rcall _SpiTxRxByte
	.dbline 326
;     for (i = 0; i < count; i++) 
	clr R22
	rjmp L61
L58:
	.dbline 327
	.dbline 328
	clr R16
	rcall _SpiTxRxByte
	mov R30,R22
	clr R31
	add R30,R12
	adc R31,R13
	std z+0,R16
	.dbline 329
L59:
	.dbline 326
	inc R22
L61:
	.dbline 326
	cp R22,R10
	brlo L58
	.dbline 330
; 	{
;         buffer[i] = SpiTxRxByte(0);
;     }
;     CSN_1;
	sbi 0x18,2
	.dbline 330
	.dbline -2
L54:
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r i 22 c
	.dbsym r count 10 c
	.dbsym r buffer 12 pc
	.dbsym r addr 20 c
	.dbend
	.dbfunc e halSpiReadStatus _halSpiReadStatus fc
;           temp -> R20
;          value -> R22
;           addr -> R20
	.even
_halSpiReadStatus::
	rcall push_gset2
	mov R20,R16
	.dbline -1
	.dbline 341
; }
; 
; 
; //*****************************************************************************************
; //函数名:INT8U halSpiReadReg(INT8U addr)
; //输入:地址
; //输出:该状态寄存器当前值
; //功能描述:SPI读状态寄存器
; //*****************************************************************************************
; INT8U halSpiReadStatus(INT8U addr) 
; {
	.dbline 343
;     INT8U value,temp;
; 	temp = addr | READ_BURST;		//写入要读的状态寄存器的地址同时写入读命令
	ori R20,192
	.dbline 344
;     CSN_0;
	cbi 0x18,2
	.dbline 344
L63:
	.dbline 345
L64:
	.dbline 345
;     while (GDO0);
	sbic 0x10,2
	rjmp L63
	.dbline 346
;     SpiTxRxByte(temp);
	mov R16,R20
	rcall _SpiTxRxByte
	.dbline 347
; 	value = SpiTxRxByte(0);
	clr R16
	rcall _SpiTxRxByte
	mov R22,R16
	.dbline 348
; 	CSN_1;
	sbi 0x18,2
	.dbline 348
	.dbline 349
; 	return value;
	.dbline -2
L62:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r value 22 c
	.dbsym r addr 20 c
	.dbend
	.dbfunc e halRfWriteRfSettings _halRfWriteRfSettings fV
	.even
_halRfWriteRfSettings::
	.dbline -1
	.dbline 360
; }
; 
; 
; //*****************************************************************************************
; //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
; //输入:无
; //输出:无
; //功能描述:配置CC1100的寄存器
; //*****************************************************************************************
; void halRfWriteRfSettings(void) 
; {
	.dbline 363
;     //halSpiWriteReg(CCxxx0_FIFOTHR,0x09);
;     //halSpiWriteReg(CCxxx0_MCSM1,0x00);     //CCA,没有作通
;     halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的
	ldi R30,<_rfSettings
	ldi R31,>_rfSettings
	lpm R18,Z
	ldi R16,12
	rcall _halSpiWriteReg
	.dbline 365
;     // Write register settings
;     halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
	ldi R30,<_rfSettings+1
	ldi R31,>_rfSettings+1
	lpm R18,Z
	ldi R16,11
	rcall _halSpiWriteReg
	.dbline 366
;     halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
	ldi R30,<_rfSettings+2
	ldi R31,>_rfSettings+2
	lpm R18,Z
	ldi R16,12
	rcall _halSpiWriteReg
	.dbline 367
;     halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
	ldi R30,<_rfSettings+3
	ldi R31,>_rfSettings+3
	lpm R18,Z
	ldi R16,13
	rcall _halSpiWriteReg
	.dbline 368
;     halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
	ldi R30,<_rfSettings+4
	ldi R31,>_rfSettings+4
	lpm R18,Z
	ldi R16,14
	rcall _halSpiWriteReg
	.dbline 369
;     halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
	ldi R30,<_rfSettings+5
	ldi R31,>_rfSettings+5
	lpm R18,Z
	ldi R16,15
	rcall _halSpiWriteReg
	.dbline 370
;     halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
	ldi R30,<_rfSettings+6
	ldi R31,>_rfSettings+6
	lpm R18,Z
	ldi R16,16
	rcall _halSpiWriteReg
	.dbline 371
;     halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
	ldi R30,<_rfSettings+7
	ldi R31,>_rfSettings+7
	lpm R18,Z
	ldi R16,17
	rcall _halSpiWriteReg
	.dbline 372
;     halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
	ldi R30,<_rfSettings+8
	ldi R31,>_rfSettings+8
	lpm R18,Z
	ldi R16,18
	rcall _halSpiWriteReg
	.dbline 373
;     halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
	ldi R30,<_rfSettings+9
	ldi R31,>_rfSettings+9
	lpm R18,Z
	ldi R16,19
	rcall _halSpiWriteReg
	.dbline 374
;     halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
	ldi R30,<_rfSettings+10
	ldi R31,>_rfSettings+10
	lpm R18,Z
	ldi R16,20
	rcall _halSpiWriteReg
	.dbline 375
;     halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
	ldi R30,<_rfSettings+11
	ldi R31,>_rfSettings+11
	lpm R18,Z
	ldi R16,10
	rcall _halSpiWriteReg
	.dbline 376
;     halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
	ldi R30,<_rfSettings+12
	ldi R31,>_rfSettings+12
	lpm R18,Z
	ldi R16,21
	rcall _halSpiWriteReg
	.dbline 377
;     halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
	ldi R30,<_rfSettings+13
	ldi R31,>_rfSettings+13
	lpm R18,Z
	ldi R16,33
	rcall _halSpiWriteReg
	.dbline 378
;     halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
	ldi R30,<_rfSettings+14
	ldi R31,>_rfSettings+14
	lpm R18,Z
	ldi R16,34
	rcall _halSpiWriteReg
	.dbline 379
;     halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
	ldi R30,<_rfSettings+15
	ldi R31,>_rfSettings+15
	lpm R18,Z
	ldi R16,24
	rcall _halSpiWriteReg
	.dbline 380
;     halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
	ldi R30,<_rfSettings+16
	ldi R31,>_rfSettings+16
	lpm R18,Z
	ldi R16,25
	rcall _halSpiWriteReg
	.dbline 381
;     halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
	ldi R30,<_rfSettings+17
	ldi R31,>_rfSettings+17
	lpm R18,Z
	ldi R16,26
	rcall _halSpiWriteReg
	.dbline 382
;     halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
	ldi R30,<_rfSettings+18
	ldi R31,>_rfSettings+18
	lpm R18,Z
	ldi R16,27
	rcall _halSpiWriteReg
	.dbline 383
; 	halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
	ldi R30,<_rfSettings+19
	ldi R31,>_rfSettings+19
	lpm R18,Z
	ldi R16,28
	rcall _halSpiWriteReg
	.dbline 384
;     halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
	ldi R30,<_rfSettings+20
	ldi R31,>_rfSettings+20
	lpm R18,Z
	ldi R16,29
	rcall _halSpiWriteReg
	.dbline 385
;     halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
	ldi R30,<_rfSettings+21
	ldi R31,>_rfSettings+21
	lpm R18,Z
	ldi R16,35
	rcall _halSpiWriteReg
	.dbline 386
; 	halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
	ldi R30,<_rfSettings+22
	ldi R31,>_rfSettings+22
	lpm R18,Z
	ldi R16,36
	rcall _halSpiWriteReg
	.dbline 387
; 	halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
	ldi R30,<_rfSettings+23
	ldi R31,>_rfSettings+23
	lpm R18,Z
	ldi R16,37
	rcall _halSpiWriteReg
	.dbline 388
;     halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
	ldi R30,<_rfSettings+24
	ldi R31,>_rfSettings+24
	lpm R18,Z
	ldi R16,38
	rcall _halSpiWriteReg
	.dbline 389
;     halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
	ldi R30,<_rfSettings+25
	ldi R31,>_rfSettings+25
	lpm R18,Z
	ldi R16,41
	rcall _halSpiWriteReg
	.dbline 390
;     halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
	ldi R30,<_rfSettings+26
	ldi R31,>_rfSettings+26
	lpm R18,Z
	ldi R16,44
	rcall _halSpiWriteReg
	.dbline 391
;     halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
	ldi R30,<_rfSettings+27
	ldi R31,>_rfSettings+27
	lpm R18,Z
	ldi R16,45
	rcall _halSpiWriteReg
	.dbline 392
;     halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
	ldi R30,<_rfSettings+28
	ldi R31,>_rfSettings+28
	lpm R18,Z
	ldi R16,46
	rcall _halSpiWriteReg
	.dbline 393
;     halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
	ldi R30,<_rfSettings+29
	ldi R31,>_rfSettings+29
	lpm R18,Z
	clr R16
	rcall _halSpiWriteReg
	.dbline 394
;     halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);    
	ldi R30,<_rfSettings+30
	ldi R31,>_rfSettings+30
	lpm R18,Z
	ldi R16,2
	rcall _halSpiWriteReg
	.dbline 395
;     halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
	ldi R30,<_rfSettings+31
	ldi R31,>_rfSettings+31
	lpm R18,Z
	ldi R16,7
	rcall _halSpiWriteReg
	.dbline 396
;     halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
	ldi R30,<_rfSettings+32
	ldi R31,>_rfSettings+32
	lpm R18,Z
	ldi R16,8
	rcall _halSpiWriteReg
	.dbline 397
;     halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);
	ldi R30,<_rfSettings+33
	ldi R31,>_rfSettings+33
	lpm R18,Z
	ldi R16,9
	rcall _halSpiWriteReg
	.dbline 398
;     halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);
	ldi R30,<_rfSettings+34
	ldi R31,>_rfSettings+34
	lpm R18,Z
	ldi R16,6
	rcall _halSpiWriteReg
	.dbline -2
L66:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e halRfSendPacket _halRfSendPacket fV
;           size -> R22
;       txBuffer -> R20,R21
	.even
_halRfSendPacket::
	rcall push_gset2
	mov R22,R18
	movw R20,R16
	sbiw R28,1
	.dbline -1
	.dbline 413
; }
; 
; 
; 
; 
; 
; 
; //*****************************************************************************************
; //函数名:
; //输入:
; //输出:
; //功能描述:CC1100发送主叫数据
; //*****************************************************************************************
; void halRfSendPacket(INT8U *txBuffer, INT8U size) 
; {  
	.dbline 415
;     
;     halSpiWriteReg(CCxxx0_TXFIFO, size+2);
	mov R18,R22
	subi R18,254    ; addi 2
	ldi R16,63
	rcall _halSpiWriteReg
	.dbline 416
;     halSpiWriteReg(CCxxx0_TXFIFO, ID_Opponent);
	ldi R18,240
	ldi R16,63
	rcall _halSpiWriteReg
	.dbline 417
;     halSpiWriteReg(CCxxx0_TXFIFO, ID_Oneself);
	ldi R18,240
	ldi R16,63
	rcall _halSpiWriteReg
	.dbline 419
; 
;     halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);	//写入要发送的数据
	std y+0,R22
	movw R18,R20
	ldi R16,63
	rcall _halSpiWriteBurstReg
	.dbline 422
;     
;     
;     halSpiStrobe(CCxxx0_STX);		//进入发送模式发送数据
	ldi R16,53
	rcall _halSpiStrobe
L102:
	.dbline 425
L103:
	.dbline 425
;    
;     // Wait for GDO0 to be set - > sync transmitted
;     while (!GDO0);
	in R2,0x10
	tst R2
	brne L105
	ldi R20,1
	ldi R21,0
	rjmp L106
L105:
	clr R20
	clr R21
L106:
	sbrc R20,2
	rjmp L102
L107:
	.dbline 428
L108:
	.dbline 428
;     
;     // Wait for GDO0 to be set - > sync transmitted 
;     while (GDO0);
	sbic 0x10,2
	rjmp L107
	.dbline 430
;     
; 	halSpiStrobe(CCxxx0_SFTX);        //清洗发送缓冲区
	ldi R16,59
	rcall _halSpiStrobe
	.dbline -2
L101:
	adiw R28,1
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r size 22 c
	.dbsym r txBuffer 20 pc
	.dbend

⌨️ 快捷键说明

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