?? board.lis
字號:
00EA 8991 ld R24,y+
00EC 2990 ld R2,y+
00EE .dbline 0 ; func end
00EE 1895 reti
00F0 .dbend
.area vector(rom, abs)
.org 36
0024 78C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
00F0 .dbfile D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\board.c
00F0 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
00F0 _uart0_rx_isr::
00F0 2A92 st -y,R2
00F2 8A93 st -y,R24
00F4 9A93 st -y,R25
00F6 EA93 st -y,R30
00F8 FA93 st -y,R31
00FA 2FB6 in R2,0x3f
00FC 2A92 st -y,R2
00FE .dbline -1
00FE .dbline 266
00FE .dbline 267
00FE 2224 clr R2
0100 20920500 sts _RXOTCnt,R2
0104 .dbline 268
0104 81E0 ldi R24,1
0106 80930600 sts _RXOTFlg,R24
010A .dbline 270
010A 80E0 ldi R24,<_UartReceive_Buf
010C 90E0 ldi R25,>_UartReceive_Buf
010E E0910C00 lds R30,_RFSendCnt
0112 FF27 clr R31
0114 E80F add R30,R24
0116 F91F adc R31,R25
0118 2090C600 lds R2,198
011C 2082 std z+0,R2
011E .dbline 271
011E 80910C00 lds R24,_RFSendCnt
0122 8F5F subi R24,255 ; addi 1
0124 80930C00 sts _RFSendCnt,R24
0128 .dbline 272
0128 8C33 cpi R24,60
012A 81F4 brne L18
012C .dbline 273
012C .dbline 274
012C 2224 clr R2
012E 20920600 sts _RXOTFlg,R2
0132 .dbline 276
0132 81E0 ldi R24,1
0134 80930900 sts _RFSendFlg,R24
0138 .dbline 277
0138 8091C100 lds R24,193
013C 8F7E andi R24,239
013E 8093C100 sts 193,R24
0142 .dbline 278
0142 8091C100 lds R24,193
0146 8F77 andi R24,127
0148 8093C100 sts 193,R24
014C .dbline 279
014C L18:
014C .dbline -2
014C L17:
014C 2990 ld R2,y+
014E 2FBE out 0x3f,R2
0150 F991 ld R31,y+
0152 E991 ld R30,y+
0154 9991 ld R25,y+
0156 8991 ld R24,y+
0158 2990 ld R2,y+
015A .dbline 0 ; func end
015A 1895 reti
015C .dbend
015C .dbfunc e timer0_init _timer0_init fV
.even
015C _timer0_init::
015C .dbline -1
015C .dbline 290
015C ; }
015C ; /*
015C ; ************************************************************
015C ; *Description:串口發送中斷函數
015C ; *Arguments :none
015C ; *Returns :none
015C ; *Notes :
015C ; ************************************************************
015C ; */
015C ; #pragma interrupt_handler uart0_tx_isr:iv_USART0_UDRE
015C ; void uart0_tx_isr (void)
015C ; {
015C ; UDR0 = RFReceive_Buf[RFReceiveCnt];
015C ; RFReceiveCnt++;
015C ; if (RFReceiveCnt == RFReceiveLen)
015C ; {
015C ; DIS_TX_INT(); //串口數據發送完畢,關閉發送空中斷
015C ; }
015C ; }
015C ; /*
015C ; ************************************************************
015C ; *Description:串口接收中斷函數
015C ; *Arguments :none
015C ; *Returns :none
015C ; *Notes :利用超時處理來決定一包數據是否接收完成
015C ; ************************************************************
015C ; */
015C ; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
015C ; void uart0_rx_isr (void)
015C ; {
015C ; RXOTCnt = 0;
015C ; RXOTFlg = TRUE;
015C ;
015C ; UartReceive_Buf[RFSendCnt] = UDR0;
015C ; RFSendCnt++;
015C ; if (RFSendCnt == MAX_DATA_NUM) //1字節的包長 + 60字節數據(共61字節)最大60字節
015C ; {
015C ; RXOTFlg = FALSE;
015C ;
015C ; RFSendFlg = TRUE; //接收完最大一包數據,準備射頻發送
015C ; DIS_RX(); //禁止串口接收
015C ; DIS_RX_INT(); //禁止串口接收中斷
015C ; }
015C ; }
015C ; /*
015C ; ************************************************************
015C ; *Description:初始化軟件定時器
015C ; *Arguments :none
015C ; *Returns :none
015C ; *Notes :
015C ; ************************************************************
015C ; */
015C ; void timer0_init(void)
015C ; {
015C .dbline 291
015C ; TCCR0B |= (BIT(CS02) | BIT(CS00)); //1024分頻,開始計數
015C 85B5 in R24,0x25
015E 8560 ori R24,5
0160 85BD out 0x25,R24
0162 .dbline 292
0162 ; TIMSK0 |= BIT(TOIE0); //使能Timer0溢出中斷
0162 80916E00 lds R24,110
0166 8160 ori R24,1
0168 80936E00 sts 110,R24
016C .dbline 293
016C ; TCNT0 = Sys_Set[Baud_Set_Num].tcnt0_val;
016C 20900100 lds R2,_Baud_Set_Num
0170 88E0 ldi R24,8
0172 829D mul R24,R2
0174 F001 movw R30,R0
0176 80E0 ldi R24,<_Sys_Set
0178 90E0 ldi R25,>_Sys_Set
017A E80F add R30,R24
017C F91F adc R31,R25
017E E491 lpm R30,Z
0180 E6BD out 0x26,R30
0182 .dbline -2
0182 L20:
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbend
.area vector(rom, abs)
.org 32
0020 C2C0 rjmp _IntTimer0
.area text(rom, con, rel)
0184 .dbfile D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\board.c
0184 .dbfunc e IntTimer0 _IntTimer0 fV
.even
0184 _IntTimer0::
0184 0A92 st -y,R0
0186 1A92 st -y,R1
0188 2A92 st -y,R2
018A 3A92 st -y,R3
018C 8A93 st -y,R24
018E 9A93 st -y,R25
0190 EA93 st -y,R30
0192 FA93 st -y,R31
0194 0FB6 in R0,0x3f
0196 0A92 st -y,R0
0198 .dbline -1
0198 .dbline 306
0198 ; }
0198 ;
0198 ; /*
0198 ; ************************************************************
0198 ; *Description:串口接收的超時處理中斷時間函數
0198 ; *Arguments :none
0198 ; *Returns :none
0198 ; *Notes :超時10ms
0198 ; ************************************************************
0198 ; */
0198 ; #pragma interrupt_handler IntTimer0:iv_TIMER0_OVF
0198 ; void IntTimer0 (void)
0198 ; {
0198 .dbline 307
0198 ; TCNT0 = Sys_Set[Baud_Set_Num].tcnt0_val;
0198 20900100 lds R2,_Baud_Set_Num
019C 88E0 ldi R24,8
019E 829D mul R24,R2
01A0 F001 movw R30,R0
01A2 80E0 ldi R24,<_Sys_Set
01A4 90E0 ldi R25,>_Sys_Set
01A6 E80F add R30,R24
01A8 F91F adc R31,R25
01AA E491 lpm R30,Z
01AC E6BD out 0x26,R30
01AE .dbline 309
01AE ;
01AE ; if(Beep_Flag==TRUE)
01AE 80910400 lds R24,_Beep_Flag
01B2 8130 cpi R24,1
01B4 C1F4 brne L22
01B6 .dbline 310
01B6 ; {
01B6 .dbline 311
01B6 ; if(Beep_Time++>50)
01B6 20900200 lds R2,_Beep_Time
01BA 30900300 lds R3,_Beep_Time+1
01BE C101 movw R24,R2
01C0 0196 adiw R24,1
01C2 90930300 sts _Beep_Time+1,R25
01C6 80930200 sts _Beep_Time,R24
01CA 82E3 ldi R24,50
01CC 90E0 ldi R25,0
01CE 8215 cp R24,R2
01D0 9305 cpc R25,R3
01D2 48F4 brsh L24
01D4 .dbline 312
01D4 ; {
01D4 .dbline 313
01D4 ; BEEP_OFF();
01D4 5D98 cbi 0xb,5
01D6 .dbline 314
01D6 ; Beep_Time=0;
01D6 2224 clr R2
01D8 3324 clr R3
01DA 30920300 sts _Beep_Time+1,R3
01DE 20920200 sts _Beep_Time,R2
01E2 .dbline 315
01E2 ; Beep_Flag=FALSE;
01E2 20920400 sts _Beep_Flag,R2
01E6 .dbline 316
01E6 ; }
01E6 L24:
01E6 .dbline 317
01E6 ; }
01E6 L22:
01E6 .dbline 319
01E6 ;
01E6 ; if (RXOTFlg == TRUE)
01E6 80910600 lds R24,_RXOTFlg
01EA 8130 cpi R24,1
01EC B9F4 brne L26
01EE .dbline 320
01EE ; {
01EE .dbline 321
01EE ; RXOTCnt++;
01EE 80910500 lds R24,_RXOTCnt
01F2 8F5F subi R24,255 ; addi 1
01F4 80930500 sts _RXOTCnt,R24
01F8 .dbline 322
01F8 ; if (RXOTCnt == 2)
01F8 8230 cpi R24,2
01FA 81F4 brne L28
01FC .dbline 323
01FC ; {
01FC .dbline 324
01FC ; RXOTFlg = FALSE;
01FC 2224 clr R2
01FE 20920600 sts _RXOTFlg,R2
0202 .dbline 325
0202 ; RFSendFlg = TRUE; //接收超時
0202 81E0 ldi R24,1
0204 80930900 sts _RFSendFlg,R24
0208 .dbline 326
0208 ; DIS_RX(); //禁止串口接收
0208 8091C100 lds R24,193
020C 8F7E andi R24,239
020E 8093C100 sts 193,R24
0212 .dbline 327
0212 ; DIS_RX_INT(); //禁止串口接收中斷
0212 8091C100 lds R24,193
0216 8F77 andi R24,127
0218 8093C100 sts 193,R24
021C .dbline 328
021C ; }
021C L28:
021C .dbline 329
021C L26:
021C .dbline -2
021C L21:
021C 0990 ld R0,y+
021E 0FBE out 0x3f,R0
0220 F991 ld R31,y+
0222 E991 ld R30,y+
0224 9991 ld R25,y+
0226 8991 ld R24,y+
0228 3990 ld R3,y+
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -