📄 board.s
字号:
; EN_RX_INT();
lds R24,193
ori R24,128
sts 193,R24
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 38
rjmp _uart0_tx_isr
.area text(rom, con, rel)
.dbfile D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\board.c
.dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
_uart0_tx_isr::
st -y,R2
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 248
.dbline 249
ldi R24,<_RFReceive_Buf
ldi R25,>_RFReceive_Buf
lds R30,_RFReceiveCnt
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sts 198,R2
.dbline 250
lds R24,_RFReceiveCnt
subi R24,255 ; addi 1
sts _RFReceiveCnt,R24
.dbline 251
lds R2,_RFReceiveLen
cp R24,R2
brne L15
.dbline 252
.dbline 253
lds R24,193
andi R24,223
sts 193,R24
.dbline 254
L15:
.dbline -2
L14:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area vector(rom, abs)
.org 36
rjmp _uart0_rx_isr
.area text(rom, con, rel)
.dbfile D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\board.c
.dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
_uart0_rx_isr::
st -y,R2
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 266
.dbline 267
clr R2
sts _RXOTCnt,R2
.dbline 268
ldi R24,1
sts _RXOTFlg,R24
.dbline 270
ldi R24,<_UartReceive_Buf
ldi R25,>_UartReceive_Buf
lds R30,_RFSendCnt
clr R31
add R30,R24
adc R31,R25
lds R2,198
std z+0,R2
.dbline 271
lds R24,_RFSendCnt
subi R24,255 ; addi 1
sts _RFSendCnt,R24
.dbline 272
cpi R24,60
brne L18
.dbline 273
.dbline 274
clr R2
sts _RXOTFlg,R2
.dbline 276
ldi R24,1
sts _RFSendFlg,R24
.dbline 277
lds R24,193
andi R24,239
sts 193,R24
.dbline 278
lds R24,193
andi R24,127
sts 193,R24
.dbline 279
L18:
.dbline -2
L17:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 290
; }
; /*
; ************************************************************
; *Description:串口发送中断函数
; *Arguments :none
; *Returns :none
; *Notes :
; ************************************************************
; */
; #pragma interrupt_handler uart0_tx_isr:iv_USART0_UDRE
; void uart0_tx_isr (void)
; {
; UDR0 = RFReceive_Buf[RFReceiveCnt];
; RFReceiveCnt++;
; if (RFReceiveCnt == RFReceiveLen)
; {
; DIS_TX_INT(); //串口数据发送完毕,关闭发送空中断
; }
; }
; /*
; ************************************************************
; *Description:串口接收中断函数
; *Arguments :none
; *Returns :none
; *Notes :利用超时处理来决定一包数据是否接收完成
; ************************************************************
; */
; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
; void uart0_rx_isr (void)
; {
; RXOTCnt = 0;
; RXOTFlg = TRUE;
;
; UartReceive_Buf[RFSendCnt] = UDR0;
; RFSendCnt++;
; if (RFSendCnt == MAX_DATA_NUM) //1字节的包长 + 60字节数据(共61字节)最大60字节
; {
; RXOTFlg = FALSE;
;
; RFSendFlg = TRUE; //接收完最大一包数据,准备射频发送
; DIS_RX(); //禁止串口接收
; DIS_RX_INT(); //禁止串口接收中断
; }
; }
; /*
; ************************************************************
; *Description:初始化软件定时器
; *Arguments :none
; *Returns :none
; *Notes :
; ************************************************************
; */
; void timer0_init(void)
; {
.dbline 291
; TCCR0B |= (BIT(CS02) | BIT(CS00)); //1024分频,开始计数
in R24,0x25
ori R24,5
out 0x25,R24
.dbline 292
; TIMSK0 |= BIT(TOIE0); //使能Timer0溢出中断
lds R24,110
ori R24,1
sts 110,R24
.dbline 293
; TCNT0 = Sys_Set[Baud_Set_Num].tcnt0_val;
lds R2,_Baud_Set_Num
ldi R24,8
mul R24,R2
movw R30,R0
ldi R24,<_Sys_Set
ldi R25,>_Sys_Set
add R30,R24
adc R31,R25
lpm R30,Z
out 0x26,R30
.dbline -2
L20:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 32
rjmp _IntTimer0
.area text(rom, con, rel)
.dbfile D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\board.c
.dbfunc e IntTimer0 _IntTimer0 fV
.even
_IntTimer0::
st -y,R0
st -y,R1
st -y,R2
st -y,R3
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R0,0x3f
st -y,R0
.dbline -1
.dbline 306
; }
;
; /*
; ************************************************************
; *Description:串口接收的超时处理中断时间函数
; *Arguments :none
; *Returns :none
; *Notes :超时10ms
; ************************************************************
; */
; #pragma interrupt_handler IntTimer0:iv_TIMER0_OVF
; void IntTimer0 (void)
; {
.dbline 307
; TCNT0 = Sys_Set[Baud_Set_Num].tcnt0_val;
lds R2,_Baud_Set_Num
ldi R24,8
mul R24,R2
movw R30,R0
ldi R24,<_Sys_Set
ldi R25,>_Sys_Set
add R30,R24
adc R31,R25
lpm R30,Z
out 0x26,R30
.dbline 309
;
; if(Beep_Flag==TRUE)
lds R24,_Beep_Flag
cpi R24,1
brne L22
.dbline 310
; {
.dbline 311
; if(Beep_Time++>50)
lds R2,_Beep_Time
lds R3,_Beep_Time+1
movw R24,R2
adiw R24,1
sts _Beep_Time+1,R25
sts _Beep_Time,R24
ldi R24,50
ldi R25,0
cp R24,R2
cpc R25,R3
brsh L24
.dbline 312
; {
.dbline 313
; BEEP_OFF();
cbi 0xb,5
.dbline 314
; Beep_Time=0;
clr R2
clr R3
sts _Beep_Time+1,R3
sts _Beep_Time,R2
.dbline 315
; Beep_Flag=FALSE;
sts _Beep_Flag,R2
.dbline 316
; }
L24:
.dbline 317
; }
L22:
.dbline 319
;
; if (RXOTFlg == TRUE)
lds R24,_RXOTFlg
cpi R24,1
brne L26
.dbline 320
; {
.dbline 321
; RXOTCnt++;
lds R24,_RXOTCnt
subi R24,255 ; addi 1
sts _RXOTCnt,R24
.dbline 322
; if (RXOTCnt == 2)
cpi R24,2
brne L28
.dbline 323
; {
.dbline 324
; RXOTFlg = FALSE;
clr R2
sts _RXOTFlg,R2
.dbline 325
; RFSendFlg = TRUE; //接收超时
ldi R24,1
sts _RFSendFlg,R24
.dbline 326
; DIS_RX(); //禁止串口接收
lds R24,193
andi R24,239
sts 193,R24
.dbline 327
; DIS_RX_INT(); //禁止串口接收中断
lds R24,193
andi R24,127
sts 193,R24
.dbline 328
; }
L28:
.dbline 329
L26:
.dbline -2
L21:
ld R0,y+
out 0x3f,R0
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R3,y+
ld R2,y+
ld R1,y+
ld R0,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e Delay _Delay fV
; i -> R20,R21
; dly -> R16,R17
.even
_Delay::
rcall push_gset1
.dbline -1
.dbline 341
; }
; }
; /*
; ************************************************************
; *Description:延时函数
; *Arguments :none
; *Returns :none
; *Notes :
; ************************************************************
; */
;
; void Delay(INT16U dly)
; {
.dbline 344
clr R20
clr R21
rjmp L34
L31:
.dbline 344
L32:
.dbline 344
subi R20,255 ; offset = 1
sbci R21,255
L34:
.dbline 344
; INT16U i;
;
; for(i=0;i<dly;i++);
cp R20,R16
cpc R21,R17
brlo L31
.dbline -2
L30:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r dly 16 i
.dbend
.dbfunc e RF_Sts_ToRX _RF_Sts_ToRX fV
.even
_RF_Sts_ToRX::
.dbline -1
.dbline 356
; }
;
; /*
; ************************************************************
; *Description:切换CC1100工作状态为接收
; *Arguments :none
; *Returns :none
; *Notes :
; ************************************************************
; */
; void RF_Sts_ToRX(void)
; {
.dbline 357
; CC1100Strobe(CC1100_SIDLE); //强制转为空闲状态
ldi R16,54
rcall _CC1100Strobe
.dbline 358
; Delay(1000);
ldi R16,1000
ldi R17,3
rcall _Delay
.dbline 359
; CC1100Strobe(CC1100_SFRX); //清除接收缓存
ldi R16,58
rcall _CC1100Strobe
.dbline 360
; CC1100Strobe(CC1100_SRX); //切换到接收模式,进入FS_WAKEUP
ldi R16,52
rcall _CC1100Strobe
.dbline 361
; CC1100Strobe(CC1100_SRX); //进入CALIBRATE
ldi R16,52
rcall _CC1100Strobe
.dbline 362
; Delay(1000); //进入SETTLING
ldi R16,1000
ldi R17,3
rcall _Delay
.dbline 363
; CC1100Strobe(CC1100_SRX); //进入RX
ldi R16,52
rcall _CC1100Strobe
.dbline -2
L35:
.dbline 0 ; func end
ret
.dbend
.dbfunc e RF_Sts_ToTX _RF_Sts_ToTX fV
.even
_RF_Sts_ToTX::
.dbline -1
.dbline 374
; }
; /*
; ************************************************************
; *Description:切换CC1100工作状态为发送
; *Arguments :none
; *Returns :none
; *Notes :
; ************************************************************
; */
; void RF_Sts_ToTX(void)
; {
.dbline 375
; CC1100Strobe(CC1100_SIDLE); //强制转为空闲状态
ldi R16,54
rcall _CC1100Strobe
.dbline 376
; Delay(1000);
ldi R16,1000
ldi R17,3
rcall _Delay
.dbline 377
; CC1100Strobe(CC1100_SFTX); //清除发送缓存
ldi R16,59
rcall _CC1100Strobe
.dbline 378
; CC1100Strobe(CC1100_STX); //切换到发送模式,进入FS_WAKEUP
ldi R16,53
rcall _CC1100Strobe
.dbline 379
; CC1100Strobe(CC1100_STX); //进入CALIBRATE
ldi R16,53
rcall _CC1100Strobe
.dbline 380
; Delay(1000); //进入SETTLING
ldi R16,1000
ldi R17,3
rcall _Delay
.dbline 381
; CC1100Strobe(CC1100_STX); //进入TX
ldi R16,53
rcall _CC1100Strobe
.dbline -2
L36:
.dbline 0 ; func end
ret
.dbend
.dbfunc e CC1100WriteRfSettings _CC1100WriteRfSettings fV
.even
_CC1100WriteRfSettings::
.dbline -1
.dbline 383
; }
; void CC1100WriteRfSettings(void) {
.dbline 385
; // Write register settings
; CC1100WriteReg(CC1100_IOCFG2, rfSettings.IOCFG2);
ldi R30,<_rfSettings
ldi R31,>_rfSettings
lpm R18,Z
clr R16
rcall _CC1100WriteReg
.dbline 386
; CC1100WriteReg(CC1100_IOCFG1, rfSettings.IOCFG1);
ldi R30,<_rfSettings+1
ldi R31,>_rfSettings+1
lpm R18,Z
ldi R16,1
rcall _CC1100WriteReg
.dbline 387
; CC1100WriteReg(CC1100_IOCFG0, rfSettings.IOCFG0);
ldi R30,<_rfSettings+2
ldi R31,>_rfSettings+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -