⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lss

📁 一个基于MEGA16的GUI
💻 LSS
📖 第 1 页 / 共 2 页
字号:
     7a0:	41 ff       	sbrs	r20, 1
     7a2:	02 c0       	rjmp	.+4      	; 0x7a8 <task0+0x11a>
     7a4:	80 6f       	ori	r24, 0xF0	; 240
     7a6:	01 c0       	rjmp	.+2      	; 0x7aa <task0+0x11c>
     7a8:	8f 70       	andi	r24, 0x0F	; 15
     7aa:	80 93 a3 01 	sts	0x01A3, r24
	   KEY=(TEM_Buffer&0x0001)?   (KEY|0x0f):(KEY&0xf0);
     7ae:	40 ff       	sbrs	r20, 0
     7b0:	02 c0       	rjmp	.+4      	; 0x7b6 <task0+0x128>
     7b2:	8f 60       	ori	r24, 0x0F	; 15
     7b4:	01 c0       	rjmp	.+2      	; 0x7b8 <task0+0x12a>
     7b6:	80 7f       	andi	r24, 0xF0	; 240
     7b8:	80 93 a3 01 	sts	0x01A3, r24
	   }
	   TEM_Buffer=0;
     7bc:	10 92 b5 01 	sts	0x01B5, r1
     7c0:	10 92 b4 01 	sts	0x01B4, r1
	   Rec_Start=0;
     7c4:	10 92 af 01 	sts	0x01AF, r1
	  }
	  sei();
     7c8:	78 94       	sei
	  OSWait(K_SIG,0);
     7ca:	60 e0       	ldi	r22, 0x00	; 0
     7cc:	81 e0       	ldi	r24, 0x01	; 1
     7ce:	0e 94 96 0a 	call	0x152c <OSWait>
     7d2:	5d cf       	rjmp	.-326    	; 0x68e <task0>

000007d4 <task1>:
	}
}

void task1(void)
{uint8 i;
	while(1)
	{
	 Display[0]=(TEM_H/10)+48;
     7d4:	20 91 dc 00 	lds	r18, 0x00DC
     7d8:	30 91 dd 00 	lds	r19, 0x00DD
     7dc:	c9 01       	movw	r24, r18
     7de:	6a e0       	ldi	r22, 0x0A	; 10
     7e0:	70 e0       	ldi	r23, 0x00	; 0
     7e2:	0e 94 96 16 	call	0x2d2c <__udivmodhi4>
     7e6:	cb 01       	movw	r24, r22
     7e8:	80 5d       	subi	r24, 0xD0	; 208
     7ea:	80 93 d6 00 	sts	0x00D6, r24
	 Display[1]=(TEM_H%10)+48;
     7ee:	c9 01       	movw	r24, r18
     7f0:	6a e0       	ldi	r22, 0x0A	; 10
     7f2:	70 e0       	ldi	r23, 0x00	; 0
     7f4:	0e 94 96 16 	call	0x2d2c <__udivmodhi4>
     7f8:	80 5d       	subi	r24, 0xD0	; 208
     7fa:	80 93 d7 00 	sts	0x00D7, r24
	 Display[3]=(TEM_L/100)+48;
     7fe:	20 91 b2 01 	lds	r18, 0x01B2
     802:	30 91 b3 01 	lds	r19, 0x01B3
     806:	c9 01       	movw	r24, r18
     808:	64 e6       	ldi	r22, 0x64	; 100
     80a:	70 e0       	ldi	r23, 0x00	; 0
     80c:	0e 94 96 16 	call	0x2d2c <__udivmodhi4>
     810:	cb 01       	movw	r24, r22
     812:	80 5d       	subi	r24, 0xD0	; 208
     814:	80 93 d9 00 	sts	0x00D9, r24
	 Display[4]=((TEM_L%100)/10)+48;
     818:	c9 01       	movw	r24, r18
     81a:	64 e6       	ldi	r22, 0x64	; 100
     81c:	70 e0       	ldi	r23, 0x00	; 0
     81e:	0e 94 96 16 	call	0x2d2c <__udivmodhi4>
     822:	9c 01       	movw	r18, r24
     824:	6a e0       	ldi	r22, 0x0A	; 10
     826:	70 e0       	ldi	r23, 0x00	; 0
     828:	0e 94 96 16 	call	0x2d2c <__udivmodhi4>
     82c:	cb 01       	movw	r24, r22
     82e:	80 5d       	subi	r24, 0xD0	; 208
     830:	80 93 da 00 	sts	0x00DA, r24
	 Display[5]=((TEM_L%100)%10)+48;
     834:	c9 01       	movw	r24, r18
     836:	6a e0       	ldi	r22, 0x0A	; 10
     838:	70 e0       	ldi	r23, 0x00	; 0
     83a:	0e 94 96 16 	call	0x2d2c <__udivmodhi4>
     83e:	80 5d       	subi	r24, 0xD0	; 208
     840:	80 93 db 00 	sts	0x00DB, r24
	 Temperature_buffer[0]=TEM_H;
     844:	80 91 dc 00 	lds	r24, 0x00DC
     848:	80 93 63 00 	sts	0x0063, r24
    Write a byte \c value to EEPROM address \c addr. */

void 
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
     84c:	a0 91 60 00 	lds	r26, 0x0060
     850:	b0 91 61 00 	lds	r27, 0x0061
  asm volatile (
     854:	08 2e       	mov	r0, r24
     856:	0e 94 b7 16 	call	0x2d6e <__eeprom_write_byte_1C1D1E>
	 eeprom_write_byte (Eep_Addr, TEM_H);
	 Eep_Addr++;
     85a:	80 91 60 00 	lds	r24, 0x0060
     85e:	90 91 61 00 	lds	r25, 0x0061
     862:	01 96       	adiw	r24, 0x01	; 1
     864:	90 93 61 00 	sts	0x0061, r25
     868:	80 93 60 00 	sts	0x0060, r24
	 if(Eep_Addr>512)
     86c:	81 50       	subi	r24, 0x01	; 1
     86e:	92 40       	sbci	r25, 0x02	; 2
     870:	30 f0       	brcs	.+12     	; 0x87e <task1+0xaa>
	 {Eep_Addr=4;}
     872:	84 e0       	ldi	r24, 0x04	; 4
     874:	90 e0       	ldi	r25, 0x00	; 0
     876:	90 93 61 00 	sts	0x0061, r25
     87a:	80 93 60 00 	sts	0x0060, r24
	 for(i=59;i>0;i--)
     87e:	9b e3       	ldi	r25, 0x3B	; 59
     880:	ae e9       	ldi	r26, 0x9E	; 158
     882:	b0 e0       	ldi	r27, 0x00	; 0
	 {
	  Temperature_buffer[60]=Temperature_buffer[i-1];
     884:	fd 01       	movw	r30, r26
     886:	31 97       	sbiw	r30, 0x01	; 1
     888:	80 81       	ld	r24, Z
     88a:	80 93 9f 00 	sts	0x009F, r24
	  Temperature_buffer[i]=Temperature_buffer[60];
     88e:	8c 93       	st	X, r24
     890:	91 50       	subi	r25, 0x01	; 1
     892:	df 01       	movw	r26, r30
     894:	b9 f7       	brne	.-18     	; 0x884 <task1+0xb0>
	 }
	 
	OSWait(K_TMO | K_SIG,50);
     896:	62 e3       	ldi	r22, 0x32	; 50
     898:	83 e0       	ldi	r24, 0x03	; 3
     89a:	0e 94 96 0a 	call	0x152c <OSWait>
     89e:	9a cf       	rjmp	.-204    	; 0x7d4 <task1>

000008a0 <task2>:
}
}

		void task2(void)
{
	while(1)
	{
	  GUI_MMenuNSelect(current_MMENU, old_MMENU_NO);
     8a0:	60 91 a8 01 	lds	r22, 0x01A8
     8a4:	80 91 de 00 	lds	r24, 0x00DE
     8a8:	90 91 df 00 	lds	r25, 0x00DF
     8ac:	0e 94 8f 13 	call	0x271e <GUI_MMenuNSelect>
	  GUI_MMenuSelect(current_MMENU, current_MMENU_NO);
     8b0:	60 91 a9 01 	lds	r22, 0x01A9
     8b4:	80 91 de 00 	lds	r24, 0x00DE
     8b8:	90 91 df 00 	lds	r25, 0x00DF
     8bc:	0e 94 58 13 	call	0x26b0 <GUI_MMenuSelect>
      if(buttom&0x80)                                /*  如果OK按钮有按下*/
     8c0:	80 91 a5 01 	lds	r24, 0x01A5
     8c4:	87 ff       	sbrs	r24, 7
     8c6:	53 c0       	rjmp	.+166    	; 0x96e <task2+0xce>
	  {
	   buttom &=0x7f;
     8c8:	8f 77       	andi	r24, 0x7F	; 127
     8ca:	80 93 a5 01 	sts	0x01A5, r24
	   if(buttom==1)
     8ce:	81 30       	cpi	r24, 0x01	; 1
     8d0:	c9 f5       	brne	.+114    	; 0x944 <task2+0xa4>
	    {
		 if(current_SMENU->mmenu_no != current_MMENU_NO)
     8d2:	e0 91 a1 00 	lds	r30, 0x00A1
     8d6:	f0 91 a2 00 	lds	r31, 0x00A2
     8da:	92 81       	ldd	r25, Z+2	; 0x02
     8dc:	80 91 a9 01 	lds	r24, 0x01A9
     8e0:	98 17       	cp	r25, r24
     8e2:	91 f0       	breq	.+36     	; 0x908 <task2+0x68>
		 {
		  cli();
     8e4:	f8 94       	cli
		  current_SMENU=&Smenu[old_MMENU_NO];
     8e6:	90 91 a8 01 	lds	r25, 0x01A8
     8ea:	81 e1       	ldi	r24, 0x11	; 17
     8ec:	98 9f       	mul	r25, r24
     8ee:	f0 01       	movw	r30, r0
     8f0:	11 24       	eor	r1, r1
     8f2:	ed 55       	subi	r30, 0x5D	; 93
     8f4:	ff 4f       	sbci	r31, 0xFF	; 255
     8f6:	f0 93 a2 00 	sts	0x00A2, r31
     8fa:	e0 93 a1 00 	sts	0x00A1, r30
	      current_SMENU->mmenu_no=old_MMENU_NO;
     8fe:	92 83       	std	Z+2, r25	; 0x02
		  GUI_SMenuHide( current_SMENU );            /*   消除下拉菜单*/
     900:	cf 01       	movw	r24, r30
     902:	0e 94 28 15 	call	0x2a50 <GUI_SMenuHide>
          sei();	
     906:	78 94       	sei
		 }
		 current_SMENU=&Smenu[current_MMENU_NO];
     908:	90 91 a9 01 	lds	r25, 0x01A9
     90c:	81 e1       	ldi	r24, 0x11	; 17
     90e:	98 9f       	mul	r25, r24
     910:	f0 01       	movw	r30, r0
     912:	11 24       	eor	r1, r1
     914:	ed 55       	subi	r30, 0x5D	; 93
     916:	ff 4f       	sbci	r31, 0xFF	; 255
     918:	f0 93 a2 00 	sts	0x00A2, r31
     91c:	e0 93 a1 00 	sts	0x00A1, r30
		 current_SMENU->state=current_SMENU_NO;
     920:	80 91 a7 01 	lds	r24, 0x01A7
     924:	82 87       	std	Z+10, r24	; 0x0a
	     cli();
     926:	f8 94       	cli
		 current_SMENU->mmenu_no=current_MMENU_NO;    /*  画下拉菜单 */
     928:	e0 91 a1 00 	lds	r30, 0x00A1
     92c:	f0 91 a2 00 	lds	r31, 0x00A2
     930:	80 91 a9 01 	lds	r24, 0x01A9
     934:	82 83       	std	Z+2, r24	; 0x02
         GUI_SMenuDraw(current_SMENU);
     936:	80 91 a1 00 	lds	r24, 0x00A1
     93a:	90 91 a2 00 	lds	r25, 0x00A2
     93e:	0e 94 ba 13 	call	0x2774 <GUI_SMenuDraw>
         sei();
     942:	78 94       	sei
		}
	    if(buttom==0)
     944:	80 91 a5 01 	lds	r24, 0x01A5
     948:	88 23       	and	r24, r24
     94a:	89 f4       	brne	.+34     	; 0x96e <task2+0xce>
	     {
		  if(current_SMENU->mmenu_no==current_MMENU_NO)
     94c:	e0 91 a1 00 	lds	r30, 0x00A1
     950:	f0 91 a2 00 	lds	r31, 0x00A2
     954:	92 81       	ldd	r25, Z+2	; 0x02
     956:	80 91 a9 01 	lds	r24, 0x01A9
     95a:	98 17       	cp	r25, r24
     95c:	41 f4       	brne	.+16     	; 0x96e <task2+0xce>
		  {
		   cli();
     95e:	f8 94       	cli
		   GUI_SMenuHide( current_SMENU );            /*   消除下拉菜单*/
     960:	80 91 a1 00 	lds	r24, 0x00A1
     964:	90 91 a2 00 	lds	r25, 0x00A2
     968:	0e 94 28 15 	call	0x2a50 <GUI_SMenuHide>
		   sei();
     96c:	78 94       	sei
		  }
		 }
	  }
      if(buttom==1)
     96e:	80 91 a5 01 	lds	r24, 0x01A5
     972:	81 30       	cpi	r24, 0x01	; 1
     974:	71 f4       	brne	.+28     	; 0x992 <task2+0xf2>
     {  
	  if(current_SMENU->state!=current_SMENU_NO)
     976:	e0 91 a1 00 	lds	r30, 0x00A1
     97a:	f0 91 a2 00 	lds	r31, 0x00A2
     97e:	82 85       	ldd	r24, Z+10	; 0x0a
     980:	40 91 a7 01 	lds	r20, 0x01A7
     984:	84 17       	cp	r24, r20
     986:	29 f0       	breq	.+10     	; 0x992 <task2+0xf2>
	  {
	  GUI_SMenuSelect(current_SMENU, old_SMENU_NO,current_SMENU_NO);
     988:	60 91 a6 01 	lds	r22, 0x01A6
     98c:	cf 01       	movw	r24, r30
     98e:	0e 94 97 14 	call	0x292e <GUI_SMenuSelect>
	  }
	 }
	 if(OK&0x01)
     992:	80 91 a4 01 	lds	r24, 0x01A4
     996:	80 ff       	sbrs	r24, 0
     998:	18 c0       	rjmp	.+48     	; 0x9ca <task2+0x12a>
	 {
	 (*Smenu[Function_MMENU_NO].Function[Function_SMENU_NO])();	  /* 调用子功能函数 */
     99a:	80 91 b0 01 	lds	r24, 0x01B0
     99e:	99 27       	eor	r25, r25
     9a0:	20 91 b1 01 	lds	r18, 0x01B1
     9a4:	33 27       	eor	r19, r19
     9a6:	f9 01       	movw	r30, r18
     9a8:	74 e0       	ldi	r23, 0x04	; 4
     9aa:	ee 0f       	add	r30, r30
     9ac:	ff 1f       	adc	r31, r31
     9ae:	7a 95       	dec	r23
     9b0:	e1 f7       	brne	.-8      	; 0x9aa <task2+0x10a>
     9b2:	e2 0f       	add	r30, r18
     9b4:	f3 1f       	adc	r31, r19
     9b6:	88 0f       	add	r24, r24
     9b8:	99 1f       	adc	r25, r25
     9ba:	e8 0f       	add	r30, r24
     9bc:	f9 1f       	adc	r31, r25
     9be:	ed 55       	subi	r30, 0x5D	; 93
     9c0:	ff 4f       	sbci	r31, 0xFF	; 255
     9c2:	03 84       	ldd	r0, Z+11	; 0x0b
     9c4:	f4 85       	ldd	r31, Z+12	; 0x0c
     9c6:	e0 2d       	mov	r30, r0
     9c8:	09 95       	icall
	 }
	OSWait(K_TMO | K_SIG,50);
     9ca:	62 e3       	ldi	r22, 0x32	; 50
     9cc:	83 e0       	ldi	r24, 0x03	; 3
     9ce:	0e 94 96 0a 	call	0x152c <OSWait>
     9d2:	66 cf       	rjmp	.-308    	; 0x8a0 <task2>

000009d4 <task3>:
	}
}

		void task3(void)
{
     9d4:	1f 93       	push	r17
     9d6:	cf 93       	push	r28
    uint8  key_temp=0,old_key=0;
     9d8:	10 e0       	ldi	r17, 0x00	; 0
	while(1)
	{ 
	 OSWait(K_TMO, 3);    /*  等待50MS*/
     9da:	63 e0       	ldi	r22, 0x03	; 3
     9dc:	82 e0       	ldi	r24, 0x02	; 2
     9de:	0e 94 96 0a 	call	0x152c <OSWait>
	 key_temp=(PIND&0xf0);
     9e2:	c0 b3       	in	r28, 0x10	; 16
     9e4:	c0 7f       	andi	r28, 0xF0	; 240
     OSWait(K_TMO, 1);  /*  等待50MS*/
     9e6:	61 e0       	ldi	r22, 0x01	; 1
     9e8:	82 e0       	ldi	r24, 0x02	; 2
     9ea:	0e 94 96 0a 	call	0x152c <OSWait>
	 if((PIND&0xf0) ==key_temp)
     9ee:	80 b3       	in	r24, 0x10	; 16
     9f0:	28 2f       	mov	r18, r24
     9f2:	33 27       	eor	r19, r19
     9f4:	20 7f       	andi	r18, 0xF0	; 240
     9f6:	30 70       	andi	r19, 0x00	; 0
     9f8:	8c 2f       	mov	r24, r28
     9fa:	99 27       	eor	r25, r25
     9fc:	28 17       	cp	r18, r24
     9fe:	39 07       	cpc	r19, r25
     a00:	61 f7       	brne	.-40     	; 0x9da <task3+0x6>
	  {
	    if(key_temp != old_key)     /* 识别长按

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -