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

📄 main.lss

📁 AVR红外遥控
💻 LSS
📖 第 1 页 / 共 5 页
字号:
  // 不是持续按键,是单次按键
  // 抖动检测
  tmp8 = cnt_t2;
  while (((cnt_t2 - tmp8) < 3) && (read_key() == 1));    // 150mS去抖动等待
  if (read_key() == 1) { //有效单次按键
     
    proflag |= _BV(PRO_ONE_KEY);         // 设置单次按键标志
      
    // 切换显示类型
    if (++key_type == 3) {
      key_type = 0;
    }
      
    proflag |= _BV(PRO_DISPLAY);    // 启动显示切换进程

  }
  else {
    proflag &= ~_BV(PRO_ONE_KEY);   // 清除单次按键标志
    proflag &= ~_BV(PRO_KEEP_KEY);  // 清除持续按键标志
    disbuf.cnt_down = 30;           // 复位持续按键倒计数
  }
    
  return;
  
}


// ===========================================================================
void proc_display(void) {
  
  u32_t tmp1, tmp2;
  
  // 是否起用本进程?
  if ((proflag & _BV(PRO_DISPLAY)) == 0) {
    return;
  }
  
  // 显示‘功’W
  tmp1 = disbuf.w + 1800;  // 四舍五入;保证不至于永远丢“功”显示不出来的0.01~0.09
  tmp1 /= 3600;            // 由于显示电流小数点1位,电压小数点1位,功小数点1位,所以要再除10
  tmp2 = SUM_W;
  tmp2 += tmp1;
  
  if (tmp2 > 99999999) {    // “功”累计超过8位BCD码,就循环....
    tmp2 -= 100000000;
  }
  
  htobcd8(&bcd_buf[5], tmp2);      // 刷新显示缓冲区
  bcd_buf[10] |= 0x80;             // 小数点位置 
  
  // 倒计时显示
  if ((proflag & _BV(PRO_KEEP_KEY)) != 0) { // 倒计时清除"FFF30".."FFF29"...
    htobcd5(&bcd_buf[0], disbuf.cnt_down);
    bcd_buf[0] = 0x0f; // "F"
    bcd_buf[1] = 0x0f; // "F"
    bcd_buf[2] = 0x0f; // "F"
    
    goto fin_display;
  }
  
  // V/I/P显示
  switch (key_type)
  {
    case KEY_TYPE_U:
      htobcd5(&bcd_buf[0], disbuf.u); // 显示数
      bcd_buf[3] |= 0x80;             // 小数点位置
      LED14_ON;
      LED15_OFF;
      LED16_OFF;
      break;
    case KEY_TYPE_I:
      htobcd5(&bcd_buf[0], disbuf.i); // 显示数
      bcd_buf[2] |= 0x80;             // 小数点位置
      LED14_OFF;
      LED15_ON;
      LED16_OFF;
      break;
    case KEY_TYPE_P:
      htobcd5(&bcd_buf[0], disbuf.p); // 显示数
      bcd_buf[2] |= 0x80;             // 小数点位置
      LED14_OFF;
      LED15_OFF;
      LED16_ON;
      break;
  }

fin_display:      
  proflag &= ~_BV(PRO_DISPLAY);
  
  return;
}




// ===========================================================================
void proc_test_sample(void) {
     7da:	80 91 07 01 	lds	r24, 0x0107
     7de:	81 ff       	sbrs	r24, 1
     7e0:	08 95       	ret

    if((flag0 & _BV(FLAG0_T1)) != 0) {

        htobcd5(&bcd_buf[0], (u32_t)sample_i);
     7e2:	40 91 02 01 	lds	r20, 0x0102
     7e6:	50 91 03 01 	lds	r21, 0x0103
     7ea:	66 27       	eor	r22, r22
     7ec:	77 27       	eor	r23, r23
     7ee:	8f e0       	ldi	r24, 0x0F	; 15
     7f0:	91 e0       	ldi	r25, 0x01	; 1
     7f2:	6b de       	rcall	.-810    	; 0x4ca <htobcd5>
        htobcd8(&bcd_buf[5], (u32_t)sample_v);
     7f4:	40 91 0c 01 	lds	r20, 0x010C
     7f8:	50 91 0d 01 	lds	r21, 0x010D
     7fc:	66 27       	eor	r22, r22
     7fe:	77 27       	eor	r23, r23
     800:	84 e1       	ldi	r24, 0x14	; 20
     802:	91 e0       	ldi	r25, 0x01	; 1
     804:	da dd       	rcall	.-1100   	; 0x3ba <htobcd8>
        
        flag0 &= ~_BV(FLAG0_T1);
     806:	80 91 07 01 	lds	r24, 0x0107
     80a:	8d 7f       	andi	r24, 0xFD	; 253
     80c:	80 93 07 01 	sts	0x0107, r24
     810:	08 95       	ret

00000812 <proc_display>:
     812:	ef 92       	push	r14
     814:	ff 92       	push	r15
     816:	0f 93       	push	r16
     818:	1f 93       	push	r17
     81a:	80 91 01 01 	lds	r24, 0x0101
     81e:	82 ff       	sbrs	r24, 2
     820:	9b c0       	rjmp	.+310    	; 0x958 <proc_display+0x146>
     822:	60 91 28 01 	lds	r22, 0x0128
     826:	70 91 29 01 	lds	r23, 0x0129
     82a:	80 91 2a 01 	lds	r24, 0x012A
     82e:	90 91 2b 01 	lds	r25, 0x012B
     832:	68 5f       	subi	r22, 0xF8	; 248
     834:	78 4f       	sbci	r23, 0xF8	; 248
     836:	8f 4f       	sbci	r24, 0xFF	; 255
     838:	9f 4f       	sbci	r25, 0xFF	; 255
     83a:	e0 90 31 01 	lds	r14, 0x0131
     83e:	f0 90 32 01 	lds	r15, 0x0132
     842:	00 91 33 01 	lds	r16, 0x0133
     846:	10 91 34 01 	lds	r17, 0x0134
     84a:	20 e1       	ldi	r18, 0x10	; 16
     84c:	3e e0       	ldi	r19, 0x0E	; 14
     84e:	40 e0       	ldi	r20, 0x00	; 0
     850:	50 e0       	ldi	r21, 0x00	; 0
     852:	bf d3       	rcall	.+1918   	; 0xfd2 <__udivmodsi4>
     854:	2e 0d       	add	r18, r14
     856:	3f 1d       	adc	r19, r15
     858:	40 1f       	adc	r20, r16
     85a:	51 1f       	adc	r21, r17
     85c:	20 30       	cpi	r18, 0x00	; 0
     85e:	81 ee       	ldi	r24, 0xE1	; 225
     860:	38 07       	cpc	r19, r24
     862:	85 ef       	ldi	r24, 0xF5	; 245
     864:	48 07       	cpc	r20, r24
     866:	85 e0       	ldi	r24, 0x05	; 5
     868:	58 07       	cpc	r21, r24
     86a:	70 f5       	brcc	.+92     	; 0x8c8 <proc_display+0xb6>
     86c:	ba 01       	movw	r22, r20
     86e:	a9 01       	movw	r20, r18
     870:	84 e1       	ldi	r24, 0x14	; 20
     872:	91 e0       	ldi	r25, 0x01	; 1
     874:	a2 dd       	rcall	.-1212   	; 0x3ba <htobcd8>
     876:	80 91 19 01 	lds	r24, 0x0119
     87a:	80 68       	ori	r24, 0x80	; 128
     87c:	80 93 19 01 	sts	0x0119, r24
     880:	80 91 01 01 	lds	r24, 0x0101
     884:	84 fd       	sbrc	r24, 4
     886:	25 c0       	rjmp	.+74     	; 0x8d2 <proc_display+0xc0>
     888:	90 91 00 01 	lds	r25, 0x0100
     88c:	91 30       	cpi	r25, 0x01	; 1
     88e:	09 f4       	brne	.+2      	; 0x892 <proc_display+0x80>
     890:	4d c0       	rjmp	.+154    	; 0x92c <proc_display+0x11a>
     892:	91 30       	cpi	r25, 0x01	; 1
     894:	98 f5       	brcc	.+102    	; 0x8fc <proc_display+0xea>
     896:	40 91 1c 01 	lds	r20, 0x011C
     89a:	50 91 1d 01 	lds	r21, 0x011D
     89e:	60 91 1e 01 	lds	r22, 0x011E
     8a2:	70 91 1f 01 	lds	r23, 0x011F
     8a6:	8f e0       	ldi	r24, 0x0F	; 15
     8a8:	91 e0       	ldi	r25, 0x01	; 1
     8aa:	0f de       	rcall	.-994    	; 0x4ca <htobcd5>
     8ac:	80 91 12 01 	lds	r24, 0x0112
     8b0:	80 68       	ori	r24, 0x80	; 128
     8b2:	80 93 12 01 	sts	0x0112, r24
     8b6:	45 98       	cbi	0x08, 5	; 8
     8b8:	44 9a       	sbi	0x08, 4	; 8
     8ba:	5d 9a       	sbi	0x0b, 5	; 11
     8bc:	80 91 01 01 	lds	r24, 0x0101
     8c0:	8b 7f       	andi	r24, 0xFB	; 251
     8c2:	80 93 01 01 	sts	0x0101, r24
     8c6:	48 c0       	rjmp	.+144    	; 0x958 <proc_display+0x146>
     8c8:	20 50       	subi	r18, 0x00	; 0
     8ca:	31 4e       	sbci	r19, 0xE1	; 225
     8cc:	45 4f       	sbci	r20, 0xF5	; 245
     8ce:	55 40       	sbci	r21, 0x05	; 5
     8d0:	cd cf       	rjmp	.-102    	; 0x86c <proc_display+0x5a>
     8d2:	40 91 2e 01 	lds	r20, 0x012E
     8d6:	55 27       	eor	r21, r21
     8d8:	66 27       	eor	r22, r22
     8da:	77 27       	eor	r23, r23
     8dc:	8f e0       	ldi	r24, 0x0F	; 15
     8de:	91 e0       	ldi	r25, 0x01	; 1
     8e0:	f4 dd       	rcall	.-1048   	; 0x4ca <htobcd5>
     8e2:	8f e0       	ldi	r24, 0x0F	; 15
     8e4:	80 93 0f 01 	sts	0x010F, r24
     8e8:	80 93 10 01 	sts	0x0110, r24
     8ec:	80 93 11 01 	sts	0x0111, r24
     8f0:	80 91 01 01 	lds	r24, 0x0101
     8f4:	8b 7f       	andi	r24, 0xFB	; 251
     8f6:	80 93 01 01 	sts	0x0101, r24
     8fa:	2e c0       	rjmp	.+92     	; 0x958 <proc_display+0x146>
     8fc:	92 30       	cpi	r25, 0x02	; 2
     8fe:	d1 f7       	brne	.-12     	; 0x8f4 <proc_display+0xe2>
     900:	40 91 24 01 	lds	r20, 0x0124
     904:	50 91 25 01 	lds	r21, 0x0125
     908:	60 91 26 01 	lds	r22, 0x0126
     90c:	70 91 27 01 	lds	r23, 0x0127
     910:	8f e0       	ldi	r24, 0x0F	; 15
     912:	91 e0       	ldi	r25, 0x01	; 1
     914:	da dd       	rcall	.-1100   	; 0x4ca <htobcd5>
     916:	80 91 11 01 	lds	r24, 0x0111
     91a:	80 68       	ori	r24, 0x80	; 128
     91c:	80 93 11 01 	sts	0x0111, r24
     920:	45 9a       	sbi	0x08, 5	; 8
     922:	44 9a       	sbi	0x08, 4	; 8
     924:	5d 98       	cbi	0x0b, 5	; 11
     926:	80 91 01 01 	lds	r24, 0x0101
     92a:	e4 cf       	rjmp	.-56     	; 0x8f4 <proc_display+0xe2>
     92c:	40 91 20 01 	lds	r20, 0x0120
     930:	50 91 21 01 	lds	r21, 0x0121
     934:	60 91 22 01 	lds	r22, 0x0122
     938:	70 91 23 01 	lds	r23, 0x0123
     93c:	8f e0       	ldi	r24, 0x0F	; 15
     93e:	91 e0       	ldi	r25, 0x01	; 1
     940:	c4 dd       	rcall	.-1144   	; 0x4ca <htobcd5>
     942:	80 91 11 01 	lds	r24, 0x0111
     946:	80 68       	ori	r24, 0x80	; 128
     948:	80 93 11 01 	sts	0x0111, r24
     94c:	45 9a       	sbi	0x08, 5	; 8
     94e:	44 98       	cbi	0x08, 4	; 8
     950:	5d 9a       	sbi	0x0b, 5	; 11
     952:	80 91 01 01 	lds	r24, 0x0101
     956:	ce cf       	rjmp	.-100    	; 0x8f4 <proc_display+0xe2>
     958:	1f 91       	pop	r17
     95a:	0f 91       	pop	r16
     95c:	ff 90       	pop	r15
     95e:	ef 90       	pop	r14
     960:	08 95       	ret

00000962 <proc_key>:
     962:	cf 93       	push	r28
     964:	df 93       	push	r29
     966:	d0 d1       	rcall	.+928    	; 0xd08 <read_key>
     968:	88 23       	and	r24, r24
     96a:	a9 f0       	breq	.+42     	; 0x996 <proc_key+0x34>
     96c:	80 91 01 01 	lds	r24, 0x0101
     970:	83 fd       	sbrc	r24, 3
     972:	1a c0       	rjmp	.+52     	; 0x9a8 <proc_key+0x46>
     974:	80 91 0e 01 	lds	r24, 0x010E
     978:	c8 2f       	mov	r28, r24
     97a:	dd 27       	eor	r29, r29
     97c:	80 91 0e 01 	lds	r24, 0x010E
     980:	99 27       	eor	r25, r25
     982:	8c 1b       	sub	r24, r28
     984:	9d 0b       	sbc	r25, r29
     986:	03 97       	sbiw	r24, 0x03	; 3
     988:	1c f4       	brge	.+6      	; 0x990 <proc_key+0x2e>
     98a:	be d1       	rcall	.+892    	; 0xd08 <read_key>
     98c:	81 30       	cpi	r24, 0x01	; 1
     98e:	b1 f3       	breq	.-20     	; 0x97c <proc_key+0x1a>
     990:	bb d1       	rcall	.+886    	; 0xd08 <read_key>
     992:	81 30       	cpi	r24, 0x01	; 1
     994:	69 f0       	breq	.+26     	; 0x9b0 <proc_key+0x4e>
     996:	80 91 01 01 	lds	r24, 0x0101
     99a:	87 7e       	andi	r24, 0xE7	; 231
     99c:	80 93 01 01 	sts	0x0101, r24
     9a0:	8e e1       	ldi	r24, 0x1E	; 30
     9a2:	80 93 2e 01 	sts	0x012E, r24
     9a6:	14 c0       	rjmp	.+40     	; 0x9d0 <proc_key+0x6e>
     9a8:	80 61       	ori	r24, 0x10	; 16
     9aa:	80 93 01 01 	sts	0x0101, r24
     9ae:	10 c0       	rjmp	.+32     	; 0x9d0 <proc_key+0x6e>
     9b0:	90 91 01 01 	lds	r25, 0x0101
     9b4:	80 91 00 01 	lds	r24, 0x0100
     9b8:	8f 5f       	subi	r24, 0xFF	; 255
     9ba:	80 93 00 01 	sts	0x0100, r24
     9be:	83 30       	cpi	r24, 0x03	; 3
     9c0:	21 f0       	breq	.+8      	; 0x9ca <proc_key+0x68>
     9c2:	9c 60       	ori	r25, 0x0C	; 12
     9c4:	90 93 01 01 	sts	0x0101, r25
     9c8:	03 c0       	rjmp	.+6      	; 0x9d0 <proc_key+0x6e>
     9ca:	10 92 00 01 	sts	0x0100, r1
     9ce:	f9 cf       	rjmp	.-14     	; 0x9c2 <proc_key+0x60>
     9d0:	df 91       	pop	r29
     9d2:	cf 91       	pop	r28
     9d4:	08 95       	ret

000009d6 <proc_save>:
     9d6:	8f 92       	push	r8
     9d8:	9f 92       	push	r9
     9da:	af 92       	push	r10
     9dc:	bf 92       	push	r11
     9de:	cf 92       	push	r12
     9e0:	df 92       	push	r13
     9e2:	ef 92       	push	r14
     9e4:	ff 92       	push	r15
     9e6:	0f 93       	push	r16
     9e8:	1f 93       	push	r17
     9ea:	cf 93       	push	r28
     9ec:	df 93       	push	r29
     9ee:	cd b7       	in	r28, 0x3d	; 61
     9f0:	de b7       	in	r29, 0x3e	; 62
     9f2:	27 97       	sbiw	r28, 0x07	; 7
     9f4:	0f b6       	in	r0, 0x3f	; 63
     9f6:	f8 94       	cli
     9f8:	de bf       	out	0x3e, r29	; 62
     9fa:	0f be       	out	0x3f, r0	; 63
     9fc:	cd bf       	out	0x3d, r28	; 61
     9fe:	80 91 01 01 	lds	r24, 0x0101
     a02:	81 ff       	sbrs	r24, 1
     a04:	c9 c0       	rjmp	.+402    	; 0xb98 <proc_save+0x1c2>
     a06:	f8 94       	cli
     a08:	60 91 28 01 	lds	r22, 0x0128
     a0c:	70 91 29 01 	lds	r23, 0x0129
     a10:	80 91 2a 01 	lds	r24, 0x012A
     a14:	90 91 2b 01 	lds	r25, 0x012B
     a18:	68 5f       	subi	r22, 0xF8	; 248
     a1a:	78 4f       	sbci	r23, 0xF8	; 248
     a1c:	8f 4f       	sbci	r24, 0xFF	; 255
     a1e:	9f 4f       	sbci	r25, 0xFF	; 255
     a20:	11 e3       	ldi	r17, 0x31	; 49
     a22:	c1 2e       	mov	r12, r17
     a24:	11 e0       	ldi	r17, 0x01	; 1
     a26:	d1 2e       	mov	r13, r17
     a28:	e0 90 31 01 	lds	r14, 0x0131
     a2c:	f0 90 32 01 	lds	r15, 0x0132
     a30:	00 91 33 01 	lds	r16, 0x0133
     a34:	10 91 34 01 	lds	r17, 0x0134
     a38:	20 e1       	ldi	r18, 0x10	; 16
     a3a:	3e e0       	ldi	r19, 0x0E	; 14
     a3c:	40 e0       	ldi	r20, 0x00	; 0
     a3e:	50 e0       	ldi	r21, 0x00	; 0
     a40:	c8 d2       	rcall	.+1424   	; 0xfd2 <__udivmodsi4>
     a42:	2e 0d       	add	r18, r14
     a44:	3f 1d       	adc	r19, r15
     a46:	40 1f       	adc	r20, r16
     a48:	51 1f       	adc	r21, r17
     a4a:	20 93 31 01 	sts	0x0131, r18
     a4e:	30 93 32 01 	sts	0x0132, r19
     a52:	40 93 33 01 	sts	0x0133, r20
     a56:	50 93 34 01 	sts	0x0134, r21
     a5a:	20 30       	cpi	r18, 0x00	; 0
     a5c:	81 ee       	ldi	r24, 0xE1	; 225
     a5e:	38 07       	cpc	r19, r24
     a60:	85 ef       	ldi	r24, 0xF5	; 245
     a62:	48 07       	cpc	r20, r24
     a64:	85 e0       	ldi	r24, 0x05	; 5
     a66:	58 07       	cpc	r21, r24
     a68:	08 f0       	brcs	.+2      	; 0xa6c <proc_save+0x96>
     a6a:	6a c0       	rjmp	.+212    	; 0xb40 <proc_save+0x16a>
     a6c:	10 92 28 01 	sts	0x0128, r1
     a70:	10 92 29 01 	sts	0x0129, r1
     a74:	10 92 2a 01 	sts	0x012A, r1
     a78:	10 92 2b 01 	sts	0x012B, r1
     a7c:	10 92 2d 01 	sts	0x012D, r1
     a80:	10 92 2c 01 	sts	0x012C, r1
     a84:	10 92 35 01 	sts	0x0135, r1
     a88:	65 e0       	ldi	r22, 0x05	; 5
     a8a:	c6 01       	movw	r24, r12
     a8c:	79 dd       	rcall	.-1294   	; 0x580 <checksum>
     a8e:	80 93 35 01 	sts	0x0135, r24
     a92:	40 91 2f 01 	lds	r20, 0x012F
     a96:	50 91 30 01 	lds	r21, 0x0130
     a9a:	4a 01       	movw	r8, r20
     a9c:	91 e0       	ldi	r25, 0x01	; 1
  

⌨️ 快捷键说明

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