1p1s5.lss
来自「cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表」· LSS 代码 · 共 1,717 行 · 第 1/5 页
LSS
1,717 行
6ac: 82 81 ldd r24, Z+2 ; 0x02
6ae: 93 81 ldd r25, Z+3 ; 0x03
6b0: 28 17 cp r18, r24
6b2: 39 07 cpc r19, r25
6b4: 21 f4 brne .+8 ; 0x6be <OSQAccept+0x56>
{
pEvent->OSQOut = pEvent->OSQStart;
6b6: 8d 91 ld r24, X+
6b8: 9c 91 ld r25, X
6ba: 97 83 std Z+7, r25 ; 0x07
6bc: 86 83 std Z+6, r24 ; 0x06
}
OS_OPEN_INT();
6be: 80 91 f7 00 lds r24, 0x00F7
6c2: 81 50 subi r24, 0x01 ; 1
6c4: 80 93 f7 00 sts 0x00F7, r24
6c8: 80 91 f7 00 lds r24, 0x00F7
6cc: 88 23 and r24, r24
6ce: 09 f4 brne .+2 ; 0x6d2 <OSQAccept+0x6a>
6d0: 78 94 sei
return OS_Q_OK;
6d2: 81 e0 ldi r24, 0x01 ; 1
6d4: 90 e0 ldi r25, 0x00 ; 0
6d6: 0c c0 rjmp .+24 ; 0x6f0 <OSQAccept+0x88>
}
OS_OPEN_INT();
6d8: 80 91 f7 00 lds r24, 0x00F7
6dc: 81 50 subi r24, 0x01 ; 1
6de: 80 93 f7 00 sts 0x00F7, r24
6e2: 80 91 f7 00 lds r24, 0x00F7
6e6: 88 23 and r24, r24
6e8: 09 f4 brne .+2 ; 0x6ec <OSQAccept+0x84>
6ea: 78 94 sei
return OS_Q_ERR;
6ec: 8f ef ldi r24, 0xFF ; 255
6ee: 90 e0 ldi r25, 0x00 ; 0
6f0: df 91 pop r29
6f2: cf 91 pop r28
6f4: 08 95 ret
000006f6 <OSQQuery>:
}
//------------------------------------------------
uint8 OSQQuery(OS_Q *pEvent)
{
6f6: fc 01 movw r30, r24
if (pEvent == (OS_Q *)0)
6f8: 89 2b or r24, r25
6fa: 19 f4 brne .+6 ; 0x702 <OSQQuery+0xc>
{
return (OS_ERR_PEVENT_NULL);
6fc: 85 e0 ldi r24, 0x05 ; 5
6fe: 90 e0 ldi r25, 0x00 ; 0
700: 08 95 ret
}
OS_CLOSE_INT();
702: f8 94 cli
704: 80 91 f7 00 lds r24, 0x00F7
708: 8f 5f subi r24, 0xFF ; 255
70a: 80 93 f7 00 sts 0x00F7, r24
if (pEvent->OSQCnt != 0)
70e: 91 85 ldd r25, Z+9 ; 0x09
710: 99 23 and r25, r25
712: 69 f0 breq .+26 ; 0x72e <OSQQuery+0x38>
{
OS_OPEN_INT();
714: 80 91 f7 00 lds r24, 0x00F7
718: 81 50 subi r24, 0x01 ; 1
71a: 80 93 f7 00 sts 0x00F7, r24
71e: 80 91 f7 00 lds r24, 0x00F7
722: 88 23 and r24, r24
724: 09 f4 brne .+2 ; 0x728 <OSQQuery+0x32>
726: 78 94 sei
return (OS_Q_NO_EMPTY);
728: 83 e0 ldi r24, 0x03 ; 3
72a: 90 e0 ldi r25, 0x00 ; 0
72c: 08 95 ret
}
else if (pEvent->OSQCnt >= pEvent->OSQSize)
72e: 80 85 ldd r24, Z+8 ; 0x08
730: 98 17 cp r25, r24
732: 68 f0 brcs .+26 ; 0x74e <OSQQuery+0x58>
{
OS_OPEN_INT();
734: 80 91 f7 00 lds r24, 0x00F7
738: 81 50 subi r24, 0x01 ; 1
73a: 80 93 f7 00 sts 0x00F7, r24
73e: 80 91 f7 00 lds r24, 0x00F7
742: 88 23 and r24, r24
744: 09 f4 brne .+2 ; 0x748 <OSQQuery+0x52>
746: 78 94 sei
return (OS_Q_FULL);
748: 82 e0 ldi r24, 0x02 ; 2
74a: 90 e0 ldi r25, 0x00 ; 0
74c: 08 95 ret
}
else
{
OS_OPEN_INT();
74e: 80 91 f7 00 lds r24, 0x00F7
752: 81 50 subi r24, 0x01 ; 1
754: 80 93 f7 00 sts 0x00F7, r24
758: 80 91 f7 00 lds r24, 0x00F7
75c: 88 23 and r24, r24
75e: 09 f4 brne .+2 ; 0x762 <OSQQuery+0x6c>
760: 78 94 sei
return (OS_Q_EMPTY);
762: 84 e0 ldi r24, 0x04 ; 4
764: 90 e0 ldi r25, 0x00 ; 0
}
}
766: 08 95 ret
00000768 <ScanKey_MainLoop>:
{
static uint8 KeyState = 0; //按键状态
static uint8 OldKeyCode = 0; //老键值缓存
static uint8 KeyCount = 0; //按键按下的时间,用于连击处理
uint8 GETKEY = 0;
768: 20 e0 ldi r18, 0x00 ; 0
if (!KeyScan.fGetTime)
76a: 80 91 72 00 lds r24, 0x0072
76e: 88 23 and r24, r24
770: 19 f4 brne .+6 ; 0x778 <ScanKey_MainLoop+0x10>
{ KeyVal = 0; }
772: 20 93 62 01 sts 0x0162, r18
776: 08 95 ret
else
{ //系统时间到进行按键扫描
KeyScan.fGetTime = 0;
778: 20 93 72 00 sts 0x0072, r18
KeyScan.WaitTime = _10MS;
77c: 81 e0 ldi r24, 0x01 ; 1
77e: 90 e0 ldi r25, 0x00 ; 0
780: 90 93 74 00 sts 0x0074, r25
784: 80 93 73 00 sts 0x0073, r24
if (!SET_KEY) GETKEY |= 0x04;
788: b5 9b sbis 0x16, 5 ; 22
78a: 24 e0 ldi r18, 0x04 ; 4
if (!UP_KEY) GETKEY |= 0x02;
78c: b4 9b sbis 0x16, 4 ; 22
78e: 22 60 ori r18, 0x02 ; 2
if (!DN_KEY) GETKEY |= 0x01;
790: b3 9b sbis 0x16, 3 ; 22
792: 21 60 ori r18, 0x01 ; 1
switch (KeyState) //根据按键不同的状态进行处理
794: 80 91 fb 00 lds r24, 0x00FB
798: 99 27 eor r25, r25
79a: 81 30 cpi r24, 0x01 ; 1
79c: 91 05 cpc r25, r1
79e: a9 f0 breq .+42 ; 0x7ca <ScanKey_MainLoop+0x62>
7a0: 82 30 cpi r24, 0x02 ; 2
7a2: 91 05 cpc r25, r1
7a4: 1c f4 brge .+6 ; 0x7ac <ScanKey_MainLoop+0x44>
7a6: 89 2b or r24, r25
7a8: 39 f0 breq .+14 ; 0x7b8 <ScanKey_MainLoop+0x50>
7aa: 08 95 ret
7ac: 82 30 cpi r24, 0x02 ; 2
7ae: 91 05 cpc r25, r1
7b0: 81 f0 breq .+32 ; 0x7d2 <ScanKey_MainLoop+0x6a>
7b2: 03 97 sbiw r24, 0x03 ; 3
7b4: 09 f1 breq .+66 ; 0x7f8 <ScanKey_MainLoop+0x90>
7b6: 08 95 ret
{
case 0:
if (GETKEY)
7b8: 22 23 and r18, r18
7ba: 09 f4 brne .+2 ; 0x7be <ScanKey_MainLoop+0x56>
7bc: 50 c0 rjmp .+160 ; 0x85e <ScanKey_MainLoop+0xf6>
{
OldKeyCode = GETKEY;
7be: 20 93 fc 00 sts 0x00FC, r18
KeyState = 1;
7c2: 81 e0 ldi r24, 0x01 ; 1
7c4: 80 93 fb 00 sts 0x00FB, r24
7c8: 4a c0 rjmp .+148 ; 0x85e <ScanKey_MainLoop+0xf6>
}
KeyVal = 0;
break;
case 1:
KeyState = 2; //按键消抖20ms
7ca: 82 e0 ldi r24, 0x02 ; 2
7cc: 80 93 fb 00 sts 0x00FB, r24
break;
7d0: 08 95 ret
case 2:
if (OldKeyCode == GETKEY)
7d2: 80 91 fc 00 lds r24, 0x00FC
7d6: 82 17 cp r24, r18
7d8: 61 f4 brne .+24 ; 0x7f2 <ScanKey_MainLoop+0x8a>
{
KeyState = 3; //按键按下
7da: 83 e0 ldi r24, 0x03 ; 3
7dc: 80 93 fb 00 sts 0x00FB, r24
KeyVal = OldKeyCode; //传递键值
7e0: 20 93 62 01 sts 0x0162, r18
WatchKeyTime.WaitTime = _60S;
7e4: 80 e7 ldi r24, 0x70 ; 112
7e6: 97 e1 ldi r25, 0x17 ; 23
7e8: 90 93 fa 00 sts 0x00FA, r25
7ec: 80 93 f9 00 sts 0x00F9, r24
7f0: 08 95 ret
}
else
{ KeyState = 0; } //抖动
7f2: 10 92 fb 00 sts 0x00FB, r1
break;
7f6: 08 95 ret
case 3:
if (OldKeyCode == GETKEY)
7f8: 30 91 fc 00 lds r19, 0x00FC
7fc: 32 17 cp r19, r18
7fe: c1 f5 brne .+112 ; 0x870 <ScanKey_MainLoop+0x108>
{
KeyCount++;
800: 20 91 fd 00 lds r18, 0x00FD
804: 82 2f mov r24, r18
806: 8f 5f subi r24, 0xFF ; 255
808: 80 93 fd 00 sts 0x00FD, r24
if (KeyCount >= 250) //按键时间大于250MS吗?
80c: 8a 3f cpi r24, 0xFA ; 250
80e: b8 f0 brcs .+46 ; 0x83e <ScanKey_MainLoop+0xd6>
{
if (TaskID)
810: 80 91 fe 00 lds r24, 0x00FE
814: 88 23 and r24, r24
816: 11 f0 breq .+4 ; 0x81c <ScanKey_MainLoop+0xb4>
{
SaveFunData(); //常按保存数据
818: 9f d2 rcall .+1342 ; 0xd58 <SaveFunData>
while(1);
81a: ff cf rjmp .-2 ; 0x81a <ScanKey_MainLoop+0xb2>
}
else
{
KeyVal = 6;
81c: 86 e0 ldi r24, 0x06 ; 6
81e: 80 93 62 01 sts 0x0162, r24
KeyCount = 0; //常按进入功能参数设定
822: 10 92 fd 00 sts 0x00FD, r1
IO_HighAlarm = ON;
826: 93 9a sbi 0x12, 3 ; 18
fH_Alarm = OFF; //关闭报警
828: 10 92 7b 01 sts 0x017B, r1
L_Alarm = ON;
82c: 81 e0 ldi r24, 0x01 ; 1
82e: 90 e0 ldi r25, 0x00 ; 0
830: 90 93 69 01 sts 0x0169, r25
834: 80 93 68 01 sts 0x0168, r24
fL_Alarm = OFF;
838: 10 92 7c 01 sts 0x017C, r1
break;
83c: 08 95 ret
}
}
else if ((KeyCount >= 15) && (OldKeyCode != 0x04))
83e: 8f 30 cpi r24, 0x0F ; 15
840: 70 f0 brcs .+28 ; 0x85e <ScanKey_MainLoop+0xf6>
842: 34 30 cpi r19, 0x04 ; 4
844: 61 f0 breq .+24 ; 0x85e <ScanKey_MainLoop+0xf6>
{
WatchKeyTime.WaitTime = _60S;
846: 80 e7 ldi r24, 0x70 ; 112
848: 97 e1 ldi r25, 0x17 ; 23
84a: 90 93 fa 00 sts 0x00FA, r25
84e: 80 93 f9 00 sts 0x00F9, r24
if (fDOKEY)
852: 80 91 63 01 lds r24, 0x0163
856: 88 23 and r24, r24
858: 29 f0 breq .+10 ; 0x864 <ScanKey_MainLoop+0xfc>
{
KeyCount = 0;
85a: 10 92 fd 00 sts 0x00FD, r1
KeyVal = 0;
85e: 10 92 62 01 sts 0x0162, r1
862: 08 95 ret
}
else
{
KeyCount -= 15;
864: 2e 50 subi r18, 0x0E ; 14
866: 20 93 fd 00 sts 0x00FD, r18
KeyVal = OldKeyCode;
86a: 30 93 62 01 sts 0x0162, r19
86e: 08 95 ret
}
}
else
{ KeyVal = 0; }
}
else
{
KeyState = 0; //按键松开
870: 10 92 fb 00 sts 0x00FB, r1
KeyCount = 0;
874: 10 92 fd 00 sts 0x00FD, r1
fDOKEY = 0;
878: 10 92 63 01 sts 0x0163, r1
87c: f0 cf rjmp .-32 ; 0x85e <ScanKey_MainLoop+0xf6>
0000087e <WatchKey>:
KeyVal = 0;
}
break;
default:
break;
}
}
}
//--------------------------------------------------
void WatchKey(void)
{
if ((TaskID) && (WatchKeyTime.fGetTime))
87e: 80 91 fe 00 lds r24, 0x00FE
882: 88 23 and r24, r24
884: 21 f0 breq .+8 ; 0x88e <WatchKey+0x10>
886: 80 91 f8 00 lds r24, 0x00F8
88a: 81 11 cpse r24, r1
while (1);
88c: ff cf rjmp .-2 ; 0x88c <WatchKey+0xe>
88e: 08 95 ret
00000890 <ValAdd>:
}
//------------------------------------------------------
uint16 ValAdd(uint16 ValTemp,uint8 ValCount,uint16 MaxVal)
{
if ((ValTemp += ValCount) >= MaxVal) //参数递增函数
890: 86 0f add r24, r22
892: 91 1d adc r25, r1
894: 84 17 cp r24, r20
896: 95 07 cpc r25, r21
898: 10 f0 brcs .+4 ; 0x89e <ValAdd+0xe>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?