📄 rudongbeng.lss
字号:
outputStep=OUTPUT_STEP_STOP;
}
81c: 80 91 7a 00 lds r24, 0x007A
820: 90 91 7b 00 lds r25, 0x007B
824: 01 96 adiw r24, 0x01 ; 1
826: 90 93 7b 00 sts 0x007B, r25
82a: 80 93 7a 00 sts 0x007A, r24
}
82e: a8 98 cbi 0x15, 0 ; 21
else //if(outputStep==OUTPUT_STEP_STOP)
830: a9 9a sbi 0x15, 1 ; 21
{
outputStopTimeCounter++;
832: 20 91 7a 00 lds r18, 0x007A
836: 30 91 7b 00 lds r19, 0x007B
83a: 80 91 7c 00 lds r24, 0x007C
83e: 90 91 7d 00 lds r25, 0x007D
842: 82 17 cp r24, r18
844: 93 07 cpc r25, r19
846: 58 f5 brcc .+86 ; 0x89e <outputControl+0x94>
OUTPUT1_OFF();
OUTPUT2_OFF();
848: 10 92 7b 00 sts 0x007B, r1
84c: 10 92 7a 00 sts 0x007A, r1
if(outPutMode==OUTPUT_HAND)
850: 40 93 85 00 sts 0x0085, r20
854: 08 95 ret
{
outPutEnable=0;
outputStep=OUTPUT_STEP_WORK;
}
//LED3_OFF();
856: 80 91 7e 00 lds r24, 0x007E
85a: 90 91 7f 00 lds r25, 0x007F
85e: 01 96 adiw r24, 0x01 ; 1
860: 90 93 7f 00 sts 0x007F, r25
864: 80 93 7e 00 sts 0x007E, r24
if(outputStopTimeCounter>outputStopTimeSetting)
868: a8 98 cbi 0x15, 0 ; 21
{
86a: a9 98 cbi 0x15, 1 ; 21
outputStopTimeCounter=0;
86c: 80 91 83 00 lds r24, 0x0083
870: 88 23 and r24, r24
872: 21 f4 brne .+8 ; 0x87c <outputControl+0x72>
outputStep=OUTPUT_STEP_WORK;
//完成一个周期,判断一下运作的模式,
874: 10 92 82 00 sts 0x0082, r1
//假如是手动状态,设置该程序暂停,
878: 10 92 85 00 sts 0x0085, r1
//假如是自动状态,继续运行。
}
87c: 20 91 7e 00 lds r18, 0x007E
880: 30 91 7f 00 lds r19, 0x007F
884: 80 91 80 00 lds r24, 0x0080
888: 90 91 81 00 lds r25, 0x0081
88c: 82 17 cp r24, r18
88e: 93 07 cpc r25, r19
890: 30 f4 brcc .+12 ; 0x89e <outputControl+0x94>
}
}
892: 10 92 7f 00 sts 0x007F, r1
896: 10 92 7e 00 sts 0x007E, r1
}
89a: 10 92 85 00 sts 0x0085, r1
89e: 08 95 ret
000008a0 <ledStatusShow>:
/*********************************************************
//LED输出控制
//假设时间单位是100ms
*********************************************************/
void ledStatusShow(void)
{
//恢复状态灯指示
//设置状态
if(unitTimeCounter>0)
{
//闪烁处理
if(timeSwitchTimeCounter>0)
{
//点亮一次
8a0: 80 91 88 00 lds r24, 0x0088
8a4: 90 91 89 00 lds r25, 0x0089
8a8: 89 2b or r24, r25
8aa: d9 f0 breq .+54 ; 0x8e2 <ledStatusShow+0x42>
if(timeSwitchTimeCounter>150)
{
//运作时间的设置状态
if(timeSetMode==TIME_SET_WORK)
{
LED1_ON();
8ac: 80 91 8a 00 lds r24, 0x008A
8b0: 88 23 and r24, r24
8b2: 79 f0 breq .+30 ; 0x8d2 <ledStatusShow+0x32>
LED2_OFF();
}
//间隔时间的设置状态
8b4: 80 91 8a 00 lds r24, 0x008A
8b8: 87 39 cpi r24, 0x97 ; 151
8ba: 58 f4 brcc .+22 ; 0x8d2 <ledStatusShow+0x32>
else //if(timeSetMode==TIME_SET_WORK)
{
LED1_OFF();
LED2_ON();
}
}
//关闭
else if(timeSwitchTimeCounter>100)
{
//运作时间的设置状态
if(timeSetMode==TIME_SET_WORK)
{
LED1_OFF();
LED2_OFF();
}
8bc: 80 91 8a 00 lds r24, 0x008A
8c0: 85 36 cpi r24, 0x65 ; 101
8c2: 20 f4 brcc .+8 ; 0x8cc <ledStatusShow+0x2c>
//间隔时间的设置状态
else //if(timeSetMode==TIME_SET_WORK)
{
LED1_OFF();
LED2_OFF();
}
}
//点亮一次
else if(timeSwitchTimeCounter>50)
{
//运作时间的设置状态
if(timeSetMode==TIME_SET_WORK)
{
LED1_ON();
LED2_OFF();
}
//间隔时间的设置状态
8c4: 80 91 8a 00 lds r24, 0x008A
8c8: 83 33 cpi r24, 0x33 ; 51
8ca: 18 f4 brcc .+6 ; 0x8d2 <ledStatusShow+0x32>
else //if(timeSetMode==TIME_SET_WORK)
{
LED1_OFF();
LED2_ON();
}
}
//关闭
else //if(timeSwitchTimeCounter>100)
{
//运作时间的设置状态
if(timeSetMode==TIME_SET_WORK)
{
LED1_OFF();
LED2_OFF();
}
//间隔时间的设置状态
else //if(timeSetMode==TIME_SET_WORK)
{
LED1_OFF();
8cc: 80 91 86 00 lds r24, 0x0086
8d0: 0f c0 rjmp .+30 ; 0x8f0 <ledStatusShow+0x50>
LED2_OFF();
}
}
}
//恢复原来的状态
else
{
//运作时间的设置状态
if(timeSetMode==TIME_SET_WORK)
{
LED1_ON();
LED2_OFF();
}
//间隔时间的设置状态
else //if(timeSetMode==TIME_SET_WORK)
{
LED1_OFF();
8d2: 80 91 86 00 lds r24, 0x0086
8d6: 88 23 and r24, r24
8d8: 11 f4 brne .+4 ; 0x8de <ledStatusShow+0x3e>
LED2_ON();
}
8da: 92 98 cbi 0x12, 2 ; 18
8dc: 0a c0 rjmp .+20 ; 0x8f2 <ledStatusShow+0x52>
}
}
//正常运行指示状态
else //if(unitTimeCounter==0)
{
if(outPutMode==OUTPUT_AUTO)
8de: 92 9a sbi 0x12, 2 ; 18
8e0: 05 c0 rjmp .+10 ; 0x8ec <ledStatusShow+0x4c>
{
LED1_ON();
LED2_ON();
}
else //if(outPutMode==OUTPUT_HAND)
{
LED1_OFF();
LED2_OFF();
8e2: 80 91 83 00 lds r24, 0x0083
8e6: 81 30 cpi r24, 0x01 ; 1
8e8: 19 f4 brne .+6 ; 0x8f0 <ledStatusShow+0x50>
}
}
8ea: 92 98 cbi 0x12, 2 ; 18
8ec: 93 98 cbi 0x12, 3 ; 18
8ee: 08 95 ret
}
//=====================================================
8f0: 92 9a sbi 0x12, 2 ; 18
//10ms中断定时器
8f2: 93 9a sbi 0x12, 3 ; 18
8f4: 08 95 ret
000008f6 <__vector_9>:
//=====================================================
SIGNAL(SIG_OVERFLOW0)
{
//CLI();
TCNT0 = 0x8b; //reload counter value
keyScanProgram();
outputCounter++;
if(outputCounter>10)
{
outputCounter=0;
8f6: 1f 92 push r1
8f8: 0f 92 push r0
8fa: 0f b6 in r0, 0x3f ; 63
8fc: 0f 92 push r0
8fe: 11 24 eor r1, r1
900: 2f 93 push r18
902: 3f 93 push r19
904: 4f 93 push r20
906: 5f 93 push r21
908: 6f 93 push r22
90a: 7f 93 push r23
90c: 8f 93 push r24
90e: 9f 93 push r25
910: af 93 push r26
912: bf 93 push r27
914: ef 93 push r30
916: ff 93 push r31
outputControl();
}
918: 8b e8 ldi r24, 0x8B ; 139
91a: 82 bf out 0x32, r24 ; 50
91c: 0e 94 9a 00 call 0x134 ; 0x134 <keyScanProgram>
//键盘执行程序
keyProcessCounter++;
920: 80 91 60 00 lds r24, 0x0060
924: 8f 5f subi r24, 0xFF ; 255
926: 80 93 60 00 sts 0x0060, r24
92a: 80 91 60 00 lds r24, 0x0060
92e: 8b 30 cpi r24, 0x0B ; 11
930: 20 f0 brcs .+8 ; 0x93a <__vector_9+0x44>
if(unitTimeCounter>0)unitTimeCounter--;
if(timeSwitchTimeCounter>0)timeSwitchTimeCounter--;
932: 10 92 60 00 sts 0x0060, r1
936: 0e 94 05 04 call 0x80a ; 0x80a <outputControl>
}
93a: 80 91 61 00 lds r24, 0x0061
93e: 8f 5f subi r24, 0xFF ; 255
940: 80 93 61 00 sts 0x0061, r24
//===========================================================//
944: 80 91 88 00 lds r24, 0x0088
948: 90 91 89 00 lds r25, 0x0089
94c: 89 2b or r24, r25
94e: 49 f0 breq .+18 ; 0x962 <__vector_9+0x6c>
950: 80 91 88 00 lds r24, 0x0088
954: 90 91 89 00 lds r25, 0x0089
958: 01 97 sbiw r24, 0x01 ; 1
95a: 90 93 89 00 sts 0x0089, r25
95e: 80 93 88 00 sts 0x0088, r24
//===========================================================//
962: 80 91 8a 00 lds r24, 0x008A
966: 88 23 and r24, r24
968: 29 f0 breq .+10 ; 0x974 <__vector_9+0x7e>
96a: 80 91 8a 00 lds r24, 0x008A
96e: 81 50 subi r24, 0x01 ; 1
970: 80 93 8a 00 sts 0x008A, r24
974: ff 91 pop r31
976: ef 91 pop r30
978: bf 91 pop r27
97a: af 91 pop r26
97c: 9f 91 pop r25
97e: 8f 91 pop r24
980: 7f 91 pop r23
982: 6f 91 pop r22
984: 5f 91 pop r21
986: 4f 91 pop r20
988: 3f 91 pop r19
98a: 2f 91 pop r18
98c: 0f 90 pop r0
98e: 0f be out 0x3f, r0 ; 63
990: 0f 90 pop r0
992: 1f 90 pop r1
994: 18 95 reti
00000996 <main>:
int main(void)
{
init_devices();
for(delay1=0;delay1<2000;delay1++)
{
if(delay2<3000)
{
delay2++;
}
996: 0e 94 85 00 call 0x10a ; 0x10a <init_devices>
else
{
delay2=0;
99a: 10 92 65 00 sts 0x0065, r1
99e: 10 92 64 00 sts 0x0064, r1
9a2: 1e c0 rjmp .+60 ; 0x9e0 <main+0x4a>
}
}
9a4: 80 91 66 00 lds r24, 0x0066
9a8: 90 91 67 00 lds r25, 0x0067
9ac: 88 5b subi r24, 0xB8 ; 184
9ae: 9b 40 sbci r25, 0x0B ; 11
9b0: 50 f4 brcc .+20 ; 0x9c6 <main+0x30>
9b2: 80 91 66 00 lds r24, 0x0066
9b6: 90 91 67 00 lds r25, 0x0067
9ba: 01 96 adiw r24, 0x01 ; 1
9bc: 90 93 67 00 sts 0x0067, r25
9c0: 80 93 66 00 sts 0x0066, r24
9c4: 04 c0 rjmp .+8 ; 0x9ce <main+0x38>
set_interrupt(); //re-enable interrupts
outPutEnable=0;
outputWorkTimeSetting=90;
9c6: 10 92 67 00 sts 0x0067, r1
9ca: 10 92 66 00 sts 0x0066, r1
9ce: 80 91 64 00 lds r24, 0x0064
9d2: 90 91 65 00 lds r25, 0x0065
9d6: 01 96 adiw r24, 0x01 ; 1
9d8: 90 93 65 00 sts 0x0065, r25
9dc: 80 93 64 00 sts 0x0064, r24
9e0: 80 91 64 00 lds r24, 0x0064
9e4: 90 91 65 00 lds r25, 0x0065
9e8: 80 5d subi r24, 0xD0 ; 208
9ea: 97 40 sbci r25, 0x07 ; 7
9ec: d8 f2 brcs .-74 ; 0x9a4 <main+0xe>
outputStopTimeSetting=30;
readEEPROM(dataSaveBuffer,1);
//读出工作时间设置
//taSaveTemp=0;
9ee: 78 94 sei
unionData.charData[0]=dataSaveBuffer[WORK_TIME_HIGH];
unionData.charData[1]=dataSaveBuffer[WORK_TIME_LOW];
9f0: 10 92 82 00 sts 0x0082, r1
outputWorkTimeSetting=unionData.intData;
9f4: 8a e5 ldi r24, 0x5A ; 90
9f6: 90 e0 ldi r25, 0x00 ; 0
9f8: 90 93 7d 00 sts 0x007D, r25
9fc: 80 93 7c 00 sts 0x007C, r24
a00: 8e e1 ldi r24, 0x1E ; 30
a02: 90 e0 ldi r25, 0x00 ; 0
a04: 90 93 81 00 sts 0x0081, r25
a08: 80 93 80 00 sts 0x0080, r24
//读出间隔时间设置
unionData.charData[0]=dataSaveBuffer[STOP_TIME_HIGH];
a0c: 61 e0 ldi r22, 0x01 ; 1
a0e: 8b e8 ldi r24, 0x8B ; 139
a10: 90 e0 ldi r25, 0x00 ; 0
a12: 0e 94 68 00 call 0xd0 ; 0xd0 <readEEPROM>
unionData.charData[1]=dataSaveBuffer[STOP_TIME_LOW];
outputStopTimeSetting=unionData.intData;
a16: 80 91 8b 00 lds r24, 0x008B
a1a: 80 93 97 00 sts 0x0097, r24
a1e: 80 91 8c 00 lds r24, 0x008C
a22: 80 93 98 00 sts 0x0098, r24
while(1)
a26: 80 91 97 00 lds r24, 0x0097
a2a: 90 91 98 00 lds r25, 0x0098
a2e: 90 93 7d 00 sts 0x007D, r25
a32: 80 93 7c 00 sts 0x007C, r24
{
//处理键盘程序,
//周期是100ms
a36: 80 91 8d 00 lds r24, 0x008D
a3a: 80 93 97 00 sts 0x0097, r24
if(keyProcessCounter>10)
a3e: 80 91 8e 00 lds r24, 0x008E
a42: 80 93 98 00 sts 0x0098, r24
{
a46: 80 91 97 00 lds r24, 0x0097
a4a: 90 91 98 00 lds r25, 0x0098
a4e: 90 93 81 00 sts 0x0081, r25
a52: 80 93 80 00 sts 0x0080, r24
keyProcessCounter=0;
keyProcess();
}
ledStatusShow();
}
a56: 80 91 61 00 lds r24, 0x0061
a5a: 8b 30 cpi r24, 0x0B ; 11
a5c: 20 f0 brcs .+8 ; 0xa66 <main+0xd0>
return 0;
a5e: 10 92 61 00 sts 0x0061, r1
}
a62: 0e 94 c2 01 call 0x384 ; 0x384 <keyProcess>
a66: 0e 94 50 04 call 0x8a0 ; 0x8a0 <ledStatusShow>
a6a: f5 cf rjmp .-22 ; 0xa56 <main+0xc0>
00000a6c <_exit>:
a6c: ff cf rjmp .-2 ; 0xa6c <_exit>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -