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 + -
显示快捷键?