?? lyj.lis
字號:
00B4 .dbend
00B4 .dbfunc e WdtOff _WdtOff fV
.even
00B4 _WdtOff::
00B4 .dbline -1
00B4 .dbline 145
00B4 ;
00B4 ; }
00B4 ;
00B4 ; void WdtOff()
00B4 ; {
00B4 .dbline 146
00B4 ; CLI();//!!必須,WDTOE置位后必須4個時鐘內清 WDE,才能真正關斷WDT
00B4 F894 cli
00B6 .dbline 147
00B6 ; WDR();
00B6 A895 wdr
00B8 .dbline 148
00B8 ; WDTCR |=(BIT(WDTOE)|(BIT(WDE)));
00B8 81B5 in R24,0x21
00BA 8861 ori R24,24
00BC 81BD out 0x21,R24
00BE .dbline 150
00BE ; //WDTCR&=~BIT(WDE);//0;//off
00BE ; WDTCR=0x07;
00BE 87E0 ldi R24,7
00C0 81BD out 0x21,R24
00C2 .dbline 151
00C2 ; SEI();
00C2 7894 sei
00C4 .dbline -2
00C4 L11:
00C4 .dbline 0 ; func end
00C4 0895 ret
00C6 .dbend
00C6 .dbfunc e PwrIdle _PwrIdle fV
.even
00C6 _PwrIdle::
00C6 .dbline -1
00C6 .dbline 155
00C6 ; }
00C6 ;
00C6 ; void PwrIdle()
00C6 ; {//P30 MCUCR 休眠控制和INT0,1,
00C6 .dbline 156
00C6 ; MCUCR&=0x0f;
00C6 85B7 in R24,0x35
00C8 8F70 andi R24,15
00CA 85BF out 0x35,R24
00CC .dbline 157
00CC ; MCUCR |=BIT(SE);
00CC 85B7 in R24,0x35
00CE 8068 ori R24,128
00D0 85BF out 0x35,R24
00D2 .dbline 158
00D2 ; asm("sleep");
00D2 8895 sleep
00D4 .dbline -2
00D4 L12:
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbend
00D6 .dbfunc e PwrDown _PwrDown fV
.even
00D6 _PwrDown::
00D6 .dbline -1
00D6 .dbline 162
00D6 ; }
00D6 ;
00D6 ; void PwrDown()
00D6 ; {
00D6 .dbline 163
00D6 ; MCUCR&=0x0f;
00D6 85B7 in R24,0x35
00D8 8F70 andi R24,15
00DA 85BF out 0x35,R24
00DC .dbline 164
00DC ; MCUCR |=0x60;//0x60掉電 0x70省電
00DC 85B7 in R24,0x35
00DE 8066 ori R24,96
00E0 85BF out 0x35,R24
00E2 .dbline 165
00E2 ; asm("sleep");
00E2 8895 sleep
00E4 .dbline -2
00E4 L13:
00E4 .dbline 0 ; func end
00E4 0895 ret
00E6 .dbend
00E6 .dbfunc e TestIR _TestIR fV
.even
00E6 _TestIR::
00E6 .dbline -1
00E6 .dbline 171
00E6 ; }
00E6 ;
00E6 ; //測試紅外輸出
00E6 ; //無信號時有小許干擾輸出,遙控器保持按鍵時有持續輸出
00E6 ; void TestIR()
00E6 ; {
00E6 .dbline 172
00E6 ; if ((PIND&(1<<IR))!=0)
00E6 879B sbis 0x10,7
00E8 02C0 rjmp L15
00EA .dbline 173
00EA ; {BeepOff();}
00EA .dbline 173
00EA ADD1 rcall _BeepOff
00EC .dbline 173
00EC 01C0 rjmp L16
00EE L15:
00EE .dbline 175
00EE .dbline 175
00EE A9D1 rcall _BeepOn
00F0 .dbline 175
00F0 L16:
00F0 .dbline -2
00F0 L14:
00F0 .dbline 0 ; func end
00F0 0895 ret
00F2 .dbend
00F2 .dbfunc e main _main fV
.even
00F2 _main::
00F2 .dbline -1
00F2 .dbline 180
00F2 ; else
00F2 ; {BeepOn();}
00F2 ;
00F2 ; }
00F2 ;
00F2 ; void main(void)
00F2 ; {
00F2 .dbline 182
00F2 ;
00F2 ; IoInit();
00F2 D0DF rcall _IoInit
00F4 .dbline 183
00F4 ; SystemIni();
00F4 D6D1 rcall _SystemIni
00F6 .dbline 184
00F6 ; Beep();
00F6 A9D1 rcall _Beep
00F8 10C0 rjmp L19
00FA L18:
00FA .dbline 186
00FA ; while (1)
00FA ; {
00FA .dbline 187
00FA ; if (bTimer) TimerFunc();
00FA 20900D00 lds R2,_bTimer
00FE 2220 tst R2
0100 09F0 breq L21
0102 .dbline 187
0102 7BD1 rcall _TimerFunc
0104 L21:
0104 .dbline 189
0104 ; //TestIR();
0104 ; if (bIrCmdOk) CheckIrCmd();
0104 20900B00 lds R2,_bIrCmdOk
0108 2220 tst R2
010A 09F0 breq L23
010C .dbline 189
010C 1BD1 rcall _CheckIrCmd
010E L23:
010E .dbline 190
010E ; if (bCmdOk) ReadCmd();
010E 20900C00 lds R2,_bCmdOk
0112 2220 tst R2
0114 09F0 breq L25
0116 .dbline 190
0116 03D0 rcall _ReadCmd
0118 L25:
0118 .dbline 191
0118 D6DF rcall _PwrIdle
011A .dbline 192
011A L19:
011A .dbline 185
011A EFCF rjmp L18
011C X0:
011C .dbline 192
011C ; PwrIdle();
011C ; };
011C .dbline -2
011C L17:
011C .dbline 0 ; func end
011C 0895 ret
011E .dbend
011E .dbfunc e ReadCmd _ReadCmd fV
.even
011E _ReadCmd::
011E 00D0 rcall push_gset1
0120 .dbline -1
0120 .dbline 198
0120 ;
0120 ; }
0120 ;
0120 ; //命令執行
0120 ; void ReadCmd()
0120 ; {
0120 .dbline 199
0120 ; bCmdOk=0;
0120 2224 clr R2
0122 20920C00 sts _bCmdOk,R2
0126 .dbline 201
0126 ; //Beep();
0126 ; switch (iCmd)
0126 40910900 lds R20,_iCmd
012A 5527 clr R21
012C 4130 cpi R20,1
012E E0E0 ldi R30,0
0130 5E07 cpc R21,R30
0132 89F0 breq L31
0134 4230 cpi R20,2
0136 E0E0 ldi R30,0
0138 5E07 cpc R21,R30
013A 91F0 breq L32
013C 4330 cpi R20,3
013E E0E0 ldi R30,0
0140 5E07 cpc R21,R30
0142 99F0 breq L33
0144 4430 cpi R20,4
0146 E0E0 ldi R30,0
0148 5E07 cpc R21,R30
014A A1F0 breq L34
014C 4530 cpi R20,5
014E E0E0 ldi R30,0
0150 5E07 cpc R21,R30
0152 E1F0 breq L37
0154 26C0 rjmp L28
0156 X1:
0156 .dbline 202
0156 ; {
0156 L31:
0156 .dbline 204
0156 ; case CSTOP:
0156 ; MotorStop();
0156 60D1 rcall _MotorStop
0158 .dbline 205
0158 ; BeepN(2);
0158 02E0 ldi R16,2
015A 10E0 ldi R17,0
015C 7BD1 rcall _BeepN
015E .dbline 206
015E ; break;
015E 21C0 rjmp L29
0160 L32:
0160 .dbline 208
0160 ; case CUP:
0160 ; MotorUp();
0160 55D1 rcall _MotorUp
0162 .dbline 209
0162 ; BeepN(1);
0162 01E0 ldi R16,1
0164 10E0 ldi R17,0
0166 76D1 rcall _BeepN
0168 .dbline 210
0168 ; break;
0168 1CC0 rjmp L29
016A L33:
016A .dbline 212
016A ; case CDOWN:
016A ; MotorDown();
016A 53D1 rcall _MotorDown
016C .dbline 213
016C ; BeepN(1);
016C 01E0 ldi R16,1
016E 10E0 ldi R17,0
0170 71D1 rcall _BeepN
0172 .dbline 214
0172 ; break;
0172 17C0 rjmp L29
0174 L34:
0174 .dbline 216
0174 ; case CLAMP:
0174 ; if ((PORTC&(1<<LAMP))==0)
0174 AA99 sbic 0x15,2
0176 05C0 rjmp L35
0178 .dbline 217
0178 ; { LampOn();
0178 .dbline 217
0178 52D1 rcall _LampOn
017A .dbline 218
017A ; BeepN(1);
017A 01E0 ldi R16,1
017C 10E0 ldi R17,0
017E 6AD1 rcall _BeepN
0180 .dbline 219
0180 ; }
0180 10C0 rjmp L29
0182 L35:
0182 .dbline 221
0182 ; else
0182 ; { LampOff();
0182 .dbline 221
0182 4FD1 rcall _LampOff
0184 .dbline 222
0184 ; BeepN(2);
0184 02E0 ldi R16,2
0186 10E0 ldi R17,0
0188 65D1 rcall _BeepN
018A .dbline 223
018A ; }
018A .dbline 224
018A ; break;
018A 0BC0 rjmp L29
018C L37:
018C .dbline 226
018C ; case CDIS:
018C ; if ((PORTC&(1<<DIS))==0)
018C AB99 sbic 0x15,3
018E 05C0 rjmp L38
0190 .dbline 227
0190 ; { DisOn();
0190 .dbline 227
0190 4FD1 rcall _DisOn
0192 .dbline 228
0192 ; BeepN(1);
0192 01E0 ldi R16,1
0194 10E0 ldi R17,0
0196 5ED1 rcall _BeepN
0198 .dbline 229
0198 ; }
0198 04C0 rjmp L29
019A L38:
019A .dbline 231
019A ; else
019A ; { DisOff();
019A .dbline 231
019A 4CD1 rcall _DisOff
019C .dbline 232
019C ; BeepN(2);
019C 02E0 ldi R16,2
019E 10E0 ldi R17,0
01A0 59D1 rcall _BeepN
01A2 .dbline 233
01A2 ; }
01A2 .dbline 234
01A2 ; break;
01A2 L28:
01A2 L29:
01A2 .dbline -2
01A2 L27:
01A2 00D0 rcall pop_gset1
01A4 .dbline 0 ; func end
01A4 0895 ret
01A6 .dbend
01A6 .dbfunc e CheckIR _CheckIR fV
01A6 ; iPos -> R16
01A6 ; iNowBit -> R18
.even
01A6 _CheckIR::
01A6 .dbline -1
01A6 .dbline 240
01A6 ; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -