?? lyj.s
字號:
.dbline 281
; if (iLow>40)//4.5ms
ldi R24,40
lds R2,_iLow
cp R24,R2
brsh L60
.dbline 282
; { iIrMode=2;
.dbline 282
ldi R24,2
sts _iIrMode,R24
.dbline 283
; iBitCount=0;
clr R2
sts _iBitCount,R2
.dbline 284
; iIrData[0]=0;iIrData[1]=0;iIrData[2]=0;iIrData[3]=0;
sts _iIrData,R2
.dbline 284
sts _iIrData+1,R2
.dbline 284
sts _iIrData+2,R2
.dbline 284
sts _iIrData+3,R2
.dbline 285
; iHight=1;
ldi R24,1
sts _iHight,R24
.dbline 287
; //bCmdOk=1;iCmd=10;//Test..
; }
rjmp L40
L60:
.dbline 289
; else
; { iIrMode=0;
.dbline 289
clr R2
sts _iIrMode,R2
.dbline 291
; //確實只發送一次,后面的是按鍵保持信號,無按鍵碼信息
; }
.dbline 292
; return;
rjmp L40
X5:
.dbline 295
; }
;
; break;
L65:
.dbline 299
;
; case 2://接收用戶碼和按鍵碼,共32Bit
;
; if ((iPreBit==1)&&(iNowBit==0))//1->0
lds R24,_iPreBit
cpi R24,1
brne L66
tst R18
brne L66
.dbline 300
; { iPreBit=0;
.dbline 300
clr R2
sts _iPreBit,R2
.dbline 301
; iLow=1;
ldi R24,1
sts _iLow,R24
.dbline 302
; }
L66:
.dbline 303
; if ((iPreBit==0)&&(iNowBit==1))//0->1
lds R2,_iPreBit
tst R2
breq X11
rjmp L48
X11:
cpi R18,1
breq X12
rjmp L48
X12:
.dbline 304
; { iPreBit=1;
.dbline 304
ldi R24,1
sts _iPreBit,R24
.dbline 306
lds R2,_iHight
mov R3,R2
add R3,R2
lds R2,_iLow
cp R3,R2
brsh L70
.dbline 306
clr R18
rjmp L71
L70:
.dbline 306
; //已經接收1Bit,根據占空比判斷01
; if (iLow>(iHight+iHight)) iNowBit=0;else iNowBit=1;
ldi R18,1
L71:
.dbline 309
;
; //Bit0在前,右移位
; iPos=iBitCount/8;
lds R16,_iBitCount
lsr R16
lsr R16
lsr R16
.dbline 310
; iIrData[iPos]=iIrData[iPos]>>1;
ldi R24,<_iIrData
ldi R25,>_iIrData
mov R2,R16
clr R3
add R2,R24
adc R3,R25
movw R30,R2
ldd R4,z+0
lsr R4
std z+0,R4
.dbline 311
; if (iNowBit==1) iIrData[iPos]|=0x80;
cpi R18,1
brne L72
.dbline 311
mov R2,R16
clr R3
add R2,R24
adc R3,R25
movw R30,R2
ldd R24,z+0
ori R24,128
std z+0,R24
L72:
.dbline 313
;
; iBitCount++;
lds R24,_iBitCount
subi R24,255 ; addi 1
sts _iBitCount,R24
.dbline 314
; if (iBitCount>=32)
cpi R24,32
brlo L74
.dbline 315
; { bIrCmdOk=1;
.dbline 315
ldi R24,1
sts _bIrCmdOk,R24
.dbline 316
; iIrMode=0;
clr R2
sts _iIrMode,R2
.dbline 318
; //bCmdOk=1;iCmd=10;//Test..
; }
L74:
.dbline 320
;
; iHight=1;//must!
ldi R24,1
sts _iHight,R24
.dbline 321
; }
.dbline 322
; break;
rjmp L48
L47:
.dbline 324
clr R2
sts _iIrMode,R2
.dbline 325
L48:
.dbline -2
L40:
.dbline 0 ; func end
ret
.dbsym r iPos 16 c
.dbsym r iNowBit 18 c
.dbend
.dbfunc e CheckIrCmd _CheckIrCmd fV
; i -> R16
.even
_CheckIrCmd::
.dbline -1
.dbline 331
; default:
; iIrMode=0;
; break;
; }
; }
;
; //對紅外命令判斷操作
; void CheckIrCmd()
; {uchar i;
.dbline 332
; bIrCmdOk=0;
clr R2
sts _bIrCmdOk,R2
.dbline 333
; if (iIrData[0]!=(~iIrData[1]))
lds R2,_iIrData+1
com R2
lds R3,_iIrData
cp R3,R2
breq L77
.dbline 334
; { return;//custom碼就不對
.dbline 334
rjmp L76
L77:
.dbline 336
; }
; if (iIrData[2]!=(~iIrData[3])) return;//按鍵碼不對
lds R2,_iIrData+3
com R2
lds R3,_iIrData+2
cp R3,R2
breq L80
.dbline 336
rjmp L76
L80:
.dbline 338
;
; i=iIrData[2]&0x0f;
lds R16,_iIrData+2
andi R16,15
.dbline 340
; //BeepN(i&0x0f);
; switch (i)
clr R17
cpi R16,2
ldi R30,0
cpc R17,R30
breq L91
cpi R16,2
ldi R30,0
cpc R17,R30
brlt L85
L93:
cpi R16,7
ldi R30,0
cpc R17,R30
breq L90
cpi R16,10
ldi R30,0
cpc R17,R30
breq L88
cpi R16,11
ldi R30,0
cpc R17,R30
breq L89
cpi R16,14
ldi R30,0
cpc R17,R30
breq L92
rjmp L85
X13:
.dbline 341
; { case IRSTOP:
L88:
.dbline 342
; bCmdOk=1;iCmd=CSTOP;
ldi R24,1
sts _bCmdOk,R24
.dbline 342
sts _iCmd,R24
.dbline 343
; break;
rjmp L86
L89:
.dbline 345
; case IRUP:
; bCmdOk=1;iCmd=CUP;
ldi R24,1
sts _bCmdOk,R24
.dbline 345
ldi R24,2
sts _iCmd,R24
.dbline 346
; break;
rjmp L86
L90:
.dbline 348
; case IRDOWN:
; bCmdOk=1;iCmd=CDOWN;
ldi R24,1
sts _bCmdOk,R24
.dbline 348
ldi R24,3
sts _iCmd,R24
.dbline 349
; break;
rjmp L86
L91:
.dbline 351
; case IRLAMP:
; bCmdOk=1;iCmd=CLAMP;
ldi R24,1
sts _bCmdOk,R24
.dbline 351
ldi R24,4
sts _iCmd,R24
.dbline 352
; break;
rjmp L86
L92:
.dbline 354
; case IRDIS:
; bCmdOk=1;iCmd=CDIS;
ldi R24,1
sts _bCmdOk,R24
.dbline 354
ldi R24,5
sts _iCmd,R24
.dbline 355
; break;
L85:
L86:
.dbline -2
L76:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e CheckStop _CheckStop fV
.even
_CheckStop::
.dbline -1
.dbline 361
; }
; }
;
; //判斷限位開關
; void CheckStop()
; {
.dbline 362
; if (((PIND&(1<<UPX))==0) || ((PIND&(1<<DWNX))==0))
sbis 0x10,2
rjmp L97
sbic 0x10,3
rjmp L95
L97:
.dbline 363
.dbline 363
rcall _MotorStop
.dbline 364
ldi R16,2
ldi R17,0
rcall _BeepN
.dbline 365
L95:
.dbline -2
L94:
.dbline 0 ; func end
ret
.dbend
.dbfunc e TimerFunc _TimerFunc fV
.even
_TimerFunc::
.dbline -1
.dbline 370
; { MotorStop();
; BeepN(2);
; }
;
; }
;
; void TimerFunc()
; {
.dbline 371
; bTimer=0;
clr R2
sts _bTimer,R2
.dbline 372
; CPL(PORTB,LED);
ldi R24,2
in R2,0x18
eor R2,R24
out 0x18,R2
.dbline 376
; //CPL(PORTC,BEEP);
; //CPL(PORTC,LAMP);
; //CPL(PORTD,DOWN);
; WDR();//clear WDT
wdr
.dbline -2
L98:
.dbline 0 ; func end
ret
.dbend
.dbfunc e MotorUp _MotorUp fV
.even
_MotorUp::
.dbline -1
.dbline 380
; }
;
; void MotorUp()
; {
.dbline 381
; CLR(PORTD,UP);
cbi 0x12,5
.dbline 382
; SET(PORTD,DOWN);
sbi 0x12,6
.dbline -2
L99:
.dbline 0 ; func end
ret
.dbend
.dbfunc e MotorDown _MotorDown fV
.even
_MotorDown::
.dbline -1
.dbline 386
; }
;
; void MotorDown()
; {
.dbline 387
; SET(PORTD,UP);
sbi 0x12,5
.dbline 388
; CLR(PORTD,DOWN);
cbi 0x12,6
.dbline -2
L100:
.dbline 0 ; func end
ret
.dbend
.dbfunc e MotorStop _MotorStop fV
.even
_MotorStop::
.dbline -1
.dbline 392
; }
;
; void MotorStop()
; {
.dbline 393
; CLR(PORTD,UP);
cbi 0x12,5
.dbline 394
; CLR(PORTD,DOWN);
cbi 0x12,6
.dbline -2
L101:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LampOn _LampOn fV
.even
_LampOn::
.dbline -1
.dbline 398
; }
;
; void LampOn()
; {
.dbline 399
; SET(PORTC,LAMP);
sbi 0x15,2
.dbline -2
L102:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LampOff _LampOff fV
.even
_LampOff::
.dbline -1
.dbline 403
; }
;
; void LampOff()
; {
.dbline 404
; CLR(PORTC,LAMP);
cbi 0x15,2
.dbline -2
L103:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LampOnOff _LampOnOff fV
.even
_LampOnOff::
.dbline -1
.dbline 408
; }
;
; void LampOnOff()
; {
.dbline 409
; CPL(PORTC,LAMP);
ldi R24,4
in R2,0x15
eor R2,R24
out 0x15,R2
.dbline -2
L104:
.dbline 0 ; func end
ret
.dbend
.dbfunc e DisOn _DisOn fV
.even
_DisOn::
.dbline -1
.dbline 413
; }
;
; void DisOn()
; {
.dbline 414
; SET(PORTC,DIS);
sbi 0x15,3
.dbline -2
L105:
.dbline 0 ; func end
ret
.dbend
.dbfunc e DisOff _DisOff fV
.even
_DisOff::
.dbline -1
.dbline 418
; }
;
; void DisOff()
; {
.dbline 419
; CLR(PORTC,DIS);
cbi 0x15,3
.dbline -2
L106:
.dbline 0 ; func end
ret
.dbend
.dbfunc e DisOnOff _DisOnOff fV
.even
_DisOnOff::
.dbline -1
.dbline 423
; }
;
; void DisOnOff()
; {
.dbline 424
; CPL(PORTC,DIS);
ldi R24,8
in R2,0x15
eor R2,R24
out 0x15,R2
.dbline -2
L107:
.dbline 0 ; func end
ret
.dbend
.dbfunc e BeepOn _BeepOn fV
.even
_BeepOn::
.dbline -1
.dbline 428
; }
;
; void BeepOn()
; {
.dbline 429
; SET(PORTC,BEEP);
sbi 0x15,0
.dbline -2
L108:
.dbline 0 ; func end
ret
.dbend
.dbfunc e BeepOff _BeepOff fV
.even
_BeepOff::
.dbline -1
.dbline 433
; }
;
; void BeepOff()
; {
.dbline 434
; CLR(PORTC,BEEP);
cbi 0x15,0
.dbline -2
L109:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Beep _Beep fV
.even
_Beep::
.dbline -1
.dbline 438
; }
;
; void Beep()
; {
.dbline 439
; SET(PORTC,BEEP);
sbi 0x15,0
.dbline 440
; DelayMs(100);
ldi R16,100
rcall _DelayMs
.dbline 441
; CLR(PORTC,BEEP);
cbi 0x15,0
.dbline -2
L110:
.dbline 0 ; func end
ret
.dbend
.dbfunc e BeepN _BeepN fV
; i -> R20
; n -> R22
.even
_BeepN::
rcall push_gset2
mov R22,R16
.dbline -1
.dbline 445
; }
;
; void BeepN(uchar n)
; {uchar i;
.dbline 446
; for (i=0;i<n;i++)
clr R20
rjmp L115
L112:
.dbline 447
.dbline 447
rcall _Beep
.dbline 448
wdr
.dbline 449
ldi R16,100
rcall _DelayMs
.dbline 450
L113:
.dbline 446
inc R20
L115:
.dbline 446
cp R20,R22
brlo L112
.dbline -2
L111:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r n 22 c
.dbend
.dbfunc e ReadSN _ReadSN fV
; i -> <dead>
; Buf -> y+2
.even
_ReadSN::
sbiw R28,10
.dbline -1
.dbline 455
; { Beep();
; WDR();
; DelayMs(100);
; }
;
; }
;
; void ReadSN()
; { char Buf[8],i;
.dbline 456
; EEPROMReadBytes( 0x20, Buf,8 );
ldi R24,8
ldi R25,0
std y+1,R25
std y+0,R24
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
ldi R16,32
ldi R17,0
rcall _EEPROMReadBytes
.dbline -2
L116:
adiw R28,10
.dbline 0 ; func end
ret
.dbsym l i 3 c
.dbsym l Buf 2 A[8:8]c
.dbend
.dbfunc e WriteSN _WriteSN fV
; i -> <dead>
; Buf -> y+2
.even
_WriteSN::
sbiw R28,10
.dbline -1
.dbline 460
; }
;
; void WriteSN()
; {char Buf[8],i;
.dbline 462
;
; EEPROMWriteBytes(0x20, Buf, 8);
ldi R24,8
ldi R25,0
std y+1,R25
std y+0,R24
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
ldi R16,32
ldi R17,0
rcall _EEPROMWriteBytes
.dbline -2
L117:
adiw R28,10
.dbline 0 ; func end
ret
.dbsym l i 3 c
.dbsym l Buf 2 A[8:8]c
.dbend
.dbfunc e SystemIni _SystemIni fV
.even
_SystemIni::
.dbline -1
.dbline 468
;
; }
;
;
; void SystemIni(void)
; {
.dbline 469
; ReadSN();
rcall _ReadSN
.dbline 470
; T0Cnt=T0N;
ldi R24,10
sts _T0Cnt,R24
.dbline -2
L118:
.dbline 0 ; func end
ret
.dbend
.dbfunc e DelayMs _DelayMs fV
; i -> R20
; ms -> R22
.even
_DelayMs::
rcall push_gset2
mov R22,R16
.dbline -1
.dbline 475
; }
;
;
; void DelayMs(char ms)
; {char i;
.dbline 476
; for (i=0;i<ms;i++)
clr R20
rjmp L123
L120:
.dbline 477
.dbline 477
ldi R16,1000
ldi R17,3
rcall _DelayUs
.dbline 478
L121:
.dbline 476
inc R20
L123:
.dbline 476
cp R20,R22
brlo L120
.dbline 479
; {DelayUs(1000);
; }
; return;
.dbline -2
L119:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r ms 22 c
.dbend
.dbfunc e DelayUs _DelayUs fV
; i -> R20,R21
; us -> R16,R17
.even
_DelayUs::
rcall push_gset1
.dbline -1
.dbline 483
; }
;
; void DelayUs(uint us)
; {uint i;
.dbline 485
;
; for (i=0;i<us;i++)
clr R20
clr R21
rjmp L128
L125:
.dbline 486
.dbline 486
nop
.dbline 486
nop
.dbline 486
nop
.dbline 486
nop
.dbline 487
L126:
.dbline 485
subi R20,255 ; offset = 1
sbci R21,255
L128:
.dbline 485
cp R20,R16
cpc R21,R17
brlo L125
.dbline -2
L124:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r us 16 i
.dbend
.area bss(ram, con, rel)
.dbfile D:\IccAvr\Pei\LYJ\LYJ.c
_iIrData::
.blkb 4
.dbsym e iIrData _iIrData A[4:4]c
_iBitCount::
.blkb 1
.dbsym e iBitCount _iBitCount c
_iIrMode::
.blkb 1
.dbsym e iIrMode _iIrMode c
_iLow::
.blkb 1
.dbsym e iLow _iLow c
_iHight::
.blkb 1
.dbsym e iHight _iHight c
_iPreBit::
.blkb 1
.dbsym e iPreBit _iPreBit c
_iCmd::
.blkb 1
.dbsym e iCmd _iCmd c
_T0Cnt::
.blkb 1
.dbsym e T0Cnt _T0Cnt c
_bIrCmdOk::
.blkb 1
.dbsym e bIrCmdOk _bIrCmdOk c
_bCmdOk::
.blkb 1
.dbsym e bCmdOk _bCmdOk c
_bTimer::
.blkb 1
.dbsym e bTimer _bTimer c
_b20ms::
.blkb 1
.dbsym e b20ms _b20ms c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -