📄 doorc.lst
字号:
(0203) EEPROMwrite(0x200+i,0x01);
0DD8 E021 LDI R18,1
0DD9 2F04 MOV R16,R20
0DDA 2711 CLR R17
0DDB 5000 SUBI R16,0
0DDC 4F1E SBCI R17,0xFE
0DDD 940E48B2 CALL _EEPROMwrite
0DDF 9543 INC R20
0DE0 3140 CPI R20,0x10
0DE1 F3B0 BCS 0x0DD8
(0204) // for(i=3;i<8;i++)
(0205) // EEPROMwrite(0x100+i,0x01);
(0206) EEPROMwrite(EVEN_FLAG,0xaa);
0DE2 EA2A LDI R18,0xAA
0DE3 E003 LDI R16,3
0DE4 E010 LDI R17,0
0DE5 940E48B2 CALL _EEPROMwrite
(0207) }
(0208) else ;
0DE7 940E486E CALL pop_gset1
0DE9 9508 RET
(0209)
(0210) }
(0211) void timer1_init(void)
(0212) {
(0213) TCCR1B = 0x00; //stop
_timer1_init:
0DEA 2422 CLR R2
0DEB BC2E OUT 0x2E,R2
(0214) TCNT1H = 0xFD; //setup
0DEC EF8D LDI R24,0xFD
0DED BD8D OUT 0x2D,R24
(0215) TCNT1L = 0xE5;
0DEE EE85 LDI R24,0xE5
0DEF BD8C OUT 0x2C,R24
(0216) TCCR1A = 0x00;
0DF0 BC2F OUT 0x2F,R2
(0217) TCCR1B = 0x05; //start Timer
0DF1 E085 LDI R24,5
0DF2 BD8E OUT 0x2E,R24
0DF3 9508 RET
(0218) }
(0219) void timer0_init(void) //1ms
(0220) {
(0221) TCCR0 = 0x00; //stop
_timer0_init:
0DF4 2422 CLR R2
0DF5 BE23 OUT 0x33,R2
(0222) // ASSR = 0x00; //set async mode
(0223) TCNT0 = 0x54; //set count
0DF6 E584 LDI R24,0x54
0DF7 BF82 OUT 0x32,R24
(0224) // OCR0 = 0xAC;
(0225) TCCR0 = 0x04; //start timer
0DF8 E084 LDI R24,4
0DF9 BF83 OUT 0x33,R24
0DFA 9508 RET
_timer0_ovf_isr:
0DFB 922A ST R2,-Y
0DFC 923A ST R3,-Y
0DFD 938A ST R24,-Y
0DFE 939A ST R25,-Y
0DFF B62F IN R2,0x3F
0E00 922A ST R2,-Y
(0226) }
(0227)
(0228) #pragma interrupt_handler timer0_ovf_isr:17
(0229) void timer0_ovf_isr(void)
(0230) {
(0231) // unsigned char oop;
(0232) TCNT0 = 0x54; //1ms
0E01 E584 LDI R24,0x54
0E02 BF82 OUT 0x32,R24
(0233) commtimer++;
0E03 91800100 LDS R24,commtimer
0E05 91900101 LDS R25,commtimer+1
0E07 9601 ADIW R24,1
0E08 93900101 STS commtimer+1,R25
0E0A 93800100 STS commtimer,R24
(0234) if(commtimer>1950)
0E0C E98E LDI R24,0x9E
0E0D E097 LDI R25,7
0E0E 90200100 LDS R2,commtimer
0E10 90300101 LDS R3,commtimer+1
0E12 1582 CP R24,R2
0E13 0593 CPC R25,R3
0E14 F430 BCC 0x0E1B
(0235) {
(0236) commtimer=0;
0E15 2422 CLR R2
0E16 2433 CLR R3
0E17 92300101 STS commtimer+1,R3
0E19 92200100 STS commtimer,R2
(0237) // WDR();
(0238) }
0E1B 9029 LD R2,Y+
0E1C BE2F OUT 0x3F,R2
0E1D 9199 LD R25,Y+
0E1E 9189 LD R24,Y+
0E1F 9039 LD R3,Y+
0E20 9029 LD R2,Y+
0E21 9518 RETI
(0239) }
(0240) void beep(unsigned char second)
(0241) {
(0242) beep_second=second;
_beep:
second --> R16
0E22 93000131 STS beep_second,R16
(0243) beep_flag=1;
0E24 E081 LDI R24,1
0E25 93800132 STS beep_flag,R24
(0244) CLEAR_BELL();
0E27 9ABD SBI 0x17,5
(0245) CLEAR_LED0();
0E28 9A8F SBI 0x11,7
(0246) timer=0;
0E29 2422 CLR R2
0E2A 2433 CLR R3
0E2B 92300130 STS timer+1,R3
0E2D 9220012F STS timer,R2
0E2F 9508 RET
_COMM_RX:
0E30 940E486B CALL push_gset1
(0247) }
(0248) void COMM_RX(void)
(0249) {
(0250) RxHead0=0;
0E32 2422 CLR R2
0E33 92200201 STS RxHead0,R2
(0251)
(0252) sio_flag=0;
0E35 922001A3 STS sio_flag,R2
(0253) // CLEAR_LED0();
(0254) switch(RX_BUF0[1])
0E37 91400135 LDS R20,RX_BUF0+1
0E39 2755 CLR R21
0E3A 3242 CPI R20,0x22
0E3B E0E0 LDI R30,0
0E3C 075E CPC R21,R30
0E3D F089 BEQ 0x0E4F
0E3E E282 LDI R24,0x22
0E3F E090 LDI R25,0
0E40 1784 CP R24,R20
0E41 0795 CPC R25,R21
0E42 F02C BLT 0x0E48
0E43 3141 CPI R20,0x11
0E44 E0E0 LDI R30,0
0E45 075E CPC R21,R30
0E46 F031 BEQ 0x0E4D
0E47 C00A RJMP 0x0E52
0E48 3343 CPI R20,0x33
0E49 E0E0 LDI R30,0
0E4A 075E CPC R21,R30
0E4B F029 BEQ 0x0E51
0E4C C005 RJMP 0x0E52
(0255) {
(0256) // case 0x01:
(0257) // senddata(0);
(0258) // break;
(0259)
(0260) case 0x11:
(0261) setup_curtime(); //设置模块当前时间
0E4D D27F RCALL _setup_curtime
(0262) break;
0E4E C003 RJMP 0x0E52
(0263)
(0264) case 0x22: //采集时间记录
(0265) colle_time();
0E4F D068 RCALL _colle_time
(0266) break;
0E50 C001 RJMP 0x0E52
(0267)
(0268) case 0x33: //采集事件记录
(0269) colle_even();
0E51 D003 RCALL _colle_even
(0270) break;
(0271)
(0272) default:
(0273) break;
0E52 940E486E CALL pop_gset1
0E54 9508 RET
_colle_even:
i --> R20
0E55 940E486B CALL push_gset1
(0274) }
(0275) }
(0276) void colle_even(void)
(0277) {
(0278) unsigned char i;
(0279) for(i=0;i<12;i++)
0E57 2744 CLR R20
0E58 C00E RJMP 0x0E67
(0280) even_data[i]=EEPROMread(0x200+i);
0E59 2F04 MOV R16,R20
0E5A 2711 CLR R17
0E5B 5000 SUBI R16,0
0E5C 4F1E SBCI R17,0xFE
0E5D 940E48AD CALL _EEPROMread
0E5F E287 LDI R24,0x27
0E60 E092 LDI R25,2
0E61 2FE4 MOV R30,R20
0E62 27FF CLR R31
0E63 0FE8 ADD R30,R24
0E64 1FF9 ADC R31,R25
0E65 8300 STD Z+0,R16
0E66 9543 INC R20
0E67 304C CPI R20,0xC
0E68 F380 BCS 0x0E59
(0281) send_even();
0E69 D005 RCALL _send_even
(0282) beep(2);
0E6A E002 LDI R16,2
0E6B DFB6 RCALL _beep
0E6C 940E486E CALL pop_gset1
0E6E 9508 RET
_send_even:
i --> R20
0E6F 940E486B CALL push_gset1
(0283)
(0284) }
(0285) void send_even(void)
(0286) {
(0287) unsigned int i;
(0288) SET_LIGHT();
0E71 98BE CBI 0x17,6
(0289) TX_BUF0[0]=0x33;
0E72 E383 LDI R24,0x33
0E73 93800140 STS TX_BUF0,R24
(0290) TX_BUF0[1]=15;
0E75 E08F LDI R24,0xF
0E76 93800141 STS TX_BUF0+1,R24
(0291) TX_BUF0[2]=even_data[0];
0E78 90200227 LDS R2,even_data
0E7A 92200142 STS TX_BUF0+2,R2
(0292) TX_BUF0[3]=even_data[1];
0E7C 90200228 LDS R2,even_data+1
0E7E 92200143 STS TX_BUF0+3,R2
(0293) TX_BUF0[4]=even_data[2];
0E80 90200229 LDS R2,even_data+2
0E82 92200144 STS 0x144,R2
(0294) TX_BUF0[5]=even_data[3];
0E84 9020022A LDS R2,even_data+3
0E86 92200145 STS 0x145,R2
(0295) TX_BUF0[6]=even_data[4];
0E88 9020022B LDS R2,0x22B
0E8A 92200146 STS 0x146,R2
(0296) TX_BUF0[7]=even_data[5];
0E8C 9020022C LDS R2,0x22C
0E8E 92200147 STS 0x147,R2
(0297) TX_BUF0[8]=even_data[6];
0E90 9020022D LDS R2,0x22D
0E92 92200148 STS 0x148,R2
(0298) TX_BUF0[9]=even_data[7];
0E94 9020022E LDS R2,0x22E
0E96 92200149 STS 0x149,R2
(0299) TX_BUF0[10]=even_data[8];
0E98 9020022F LDS R2,0x22F
0E9A 9220014A STS 0x14A,R2
(0300) TX_BUF0[11]=even_data[9];
0E9C 90200230 LDS R2,0x230
0E9E 9220014B STS 0x14B,R2
(0301) TX_BUF0[12]=even_data[10];
0EA0 90200231 LDS R2,0x231
0EA2 9220014C STS 0x14C,R2
(0302)
(0303) TX_BUF0[13]=0x03;
0EA4 E083 LDI R24,3
0EA5 9380014D STS 0x14D,R24
(0304) TransmitByte0(TX_BUF0,14);
0EA7 E02E LDI R18,0xE
0EA8 E400 LDI R16,0x40
0EA9 E011 LDI R17,1
0EAA DEBD RCALL _TransmitByte0
(0305) for(i=0;i<3800;i++);
0EAB 2744 CLR R20
0EAC 2755 CLR R21
0EAD C002 RJMP 0x0EB0
0EAE 5F4F SUBI R20,0xFF
0EAF 4F5F SBCI R21,0xFF
0EB0 3D48 CPI R20,0xD8
0EB1 E0EE LDI R30,0xE
0EB2 075E CPC R21,R30
0EB3 F3D0 BCS 0x0EAE
(0306) CLEAR_LIGHT();
0EB4 9ABE SBI 0x17,6
0EB5 940E486E CALL pop_gset1
0EB7 9508 RET
_colle_time:
i --> R20
0EB8 940E486B CALL push_gset1
(0307) }
(0308) void colle_time(void)
(0309) {
(0310) unsigned int i;
(0311)
(0312) TX_BUF0[0]=0x22;
0EBA E282 LDI R24,0x22
0EBB 93800140 STS TX_BUF0,R24
(0313) TX_BUF0[1]=88;
0EBD E588 LDI R24,0x58
0EBE 93800141 STS TX_BUF0+1,R24
(0314) TX_BUF0[2]=EEPROMread(1*16+0);
0EC0 E100 LDI R16,0x10
0EC1 E010 LDI R17,0
0EC2 940E48AD CALL _EEPROMread
0EC4 93000142 STS TX_BUF0+2,R16
(0315) TX_BUF0[3]=EEPROMread(1*16+1);
0EC6 E101 LDI R16,0x11
0EC7 E010 LDI R17,0
0EC8 940E48AD CALL _EEPROMread
0ECA 93000143 STS TX_BUF0+3,R16
(0316) TX_BUF0[4]=EEPROMread(1*16+2);
0ECC E102 LDI R16,0x12
0ECD E010 LDI R17,0
0ECE 940E48AD CALL _EEPROMread
0ED0 93000144 STS 0x144,R16
(0317) TX_BUF0[5]=EEPROMread(1*16+3);
0ED2 E103 LDI R16,0x13
0ED3 E010 LDI R17,0
0ED4 940E48AD CALL _EEPROMread
0ED6 93000145 STS 0x145,R16
(0318) TX_BUF0[6]=EEPROMread(1*16+4);
0ED8 E104 LDI R16,0x14
0ED9 E010 LDI R17,0
0EDA 940E48AD CALL _EEPROMread
0EDC 93000146 STS 0x146,R16
(0319) TX_BUF0[7]=EEPROMread(1*16+5);
0EDE E105 LDI R16,0x15
0EDF E010 LDI R17,0
0EE0 940E48AD CALL _EEPROMread
0EE2 93000147 STS 0x147,R16
(0320) TX_BUF0[8]=EEPROMread(1*16+6);
0EE4 E106 LDI R16,0x16
0EE5 E010 LDI R17,0
0EE6 940E48AD CALL _EEPROMread
0EE8 93000148 STS 0x148,R16
(0321)
(0322) TX_BUF0[9]=EEPROMread(2*16+0);
0EEA E200 LDI R16,0x20
0EEB E010 LDI R17,0
0EEC 940E48AD CALL _EEPROMread
0EEE 93000149 STS 0x149,R16
(0323) TX_BUF0[10]=EEPROMread(2*16+1);
0EF0 E201 LDI R16,0x21
0EF1 E010 LDI R17,0
0EF2 940E48AD CALL _EEPROMread
0EF4 9300014A STS 0x14A,R16
(0324) TX_BUF0[11]=EEPROMread(2*16+2);
0EF6 E202 LDI R16,0x22
0EF7 E010 LDI R17,0
0EF8 940E48AD CALL _EEPROMread
0EFA 9300014B STS 0x14B,R16
(0325) TX_BUF0[12]=EEPROMread(2*16+3);
0EFC E203 LDI R16,0x23
0EFD E010 LDI R17,0
0EFE 940E48AD CALL _EEPROMread
0F00 9300014C STS 0x14C,R16
(0326) TX_BUF0[13]=EEPROMread(2*16+4);
0F02 E204 LDI R16,0x24
0F03 E010 LDI R17,0
0F04 940E48AD CALL _EEPROMread
0F06 9300014D STS 0x14D,R16
(0327) TX_BUF0[14]=EEPROMread(2*16+5);
0F08 E205 LDI R16,0x25
0F09 E010 LDI R17,0
0F0A 940E48AD CALL _EEPROMread
0F0C 9300014E STS 0x14E,R16
(0328) TX_BUF0[15]=EEPROMread(2*16+6);
0F0E E206 LDI R16,0x26
0F0F E010 LDI R17,0
0F10 940E48AD CALL _EEPROMread
0F12 9300014F STS 0x14F,R16
(0329)
(0330) TX_BUF0[16]=EEPROMread(3*16+0);
0F14 E300 LDI R16,0x30
0F15 E010 LDI R17,0
0F16 940E48AD CALL _EEPROMread
0F18 93000150 STS 0x150,R16
(0331) TX_BUF0[17]=EEPROMread(3*16+1);
0F1A E301 LDI R16,0x31
0F1B E010 LDI R17,0
0F1C 940E48AD CALL _EEPROMread
0F1E 93000151 STS 0x151,R16
(0332) TX_BUF0[18]=EEPROMread(3*16+2);
0F20 E302 LDI R16,0x32
0F21 E010 LDI R17,0
0F22 940E48AD CALL _EEPROMread
0F24 93000152 STS 0x152,R16
(0333) TX_BUF0[19]=EEPROMread(3*16+3);
0F26 E303 LDI R16,0x33
0F27 E010 LDI R17,0
0F28 940E48AD CALL _EEPROMread
0F2A 93000153 STS 0x153,R16
(0334) TX_BUF0[20]=EEPROMread(3*16+4);
0F2C E304 LDI R16,0x34
0F2D E010 LDI R17,0
0F2E 940E48AD CALL _EEPROMread
0F30 93000154 STS 0x154,R16
(0335) TX_BUF0[21]=EEPROMread(3*16+5);
0F32 E305 LDI R16,0x35
0F33 E010 LDI R17,0
0F34 940E48AD CALL _EEPROMread
0F36 93000155 STS 0x155,R16
(0336) TX_BUF0[22]=EEPROMread(3*16+6);
0F38 E306 LDI R16,0x36
0F39 E010 LDI R17,0
0F3A 940E48AD CALL _EEPROMread
0F3C 93000156 STS 0x156,R16
(0337)
(0338) TX_BUF0[23]=EEPROMread(4*16+0);
0F3E E400 LDI R16,0x40
0F3F E010 LDI R17,0
0F40 940E48AD CALL _EEPROMread
0F42 93000157 STS 0x157,R16
(0339) TX_BUF0[24]=EEPROMread(4*16+1);
0F44 E401 LDI R16,0x41
0F45 E010 LDI R17,0
0F46 940E48AD CALL _EEPROMread
0F48 93000158 STS 0x158,R16
(0340) TX_BUF0[25]=EEPROMread(4*16+2);
0F4A E402 LDI R16,0x42
0F4B E010 LDI R17,0
0F4C 940E48AD CALL _EEPROMread
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -