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

📄 enoronhand.lss

📁 在AVR 平台下的控制代码,通过CAN控制
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     614:	fc 01       	movw	r30, r24
     616:	64 30       	cpi	r22, 0x04	; 4
     618:	24 f0       	brlt	.+8      	; 0x622
     61a:	63 50       	subi	r22, 0x03	; 3
     61c:	62 83       	std	Z+2, r22	; 0x02
     61e:	0e 94 06 03 	call	0x60c
     622:	08 95       	ret
     624:	08 95       	ret

00000626 <tdGetFIFO>:
     626:	cf 93       	push	r28
     628:	df 93       	push	r29
     62a:	dc 01       	movw	r26, r24
     62c:	ec 91       	ld	r30, X
     62e:	ec 01       	movw	r28, r24
     630:	89 81       	ldd	r24, Y+1	; 0x01
     632:	e8 17       	cp	r30, r24
     634:	91 f0       	breq	.+36     	; 0x65a
     636:	ff 27       	eor	r31, r31
     638:	e7 fd       	sbrc	r30, 7
     63a:	f0 95       	com	r31
     63c:	ea 0f       	add	r30, r26
     63e:	fb 1f       	adc	r31, r27
     640:	83 81       	ldd	r24, Z+3	; 0x03
     642:	fb 01       	movw	r30, r22
     644:	80 83       	st	Z, r24
     646:	8c 91       	ld	r24, X
     648:	8f 5f       	subi	r24, 0xFF	; 255
     64a:	8c 93       	st	X, r24
     64c:	9a 81       	ldd	r25, Y+2	; 0x02
     64e:	89 17       	cp	r24, r25
     650:	0c f0       	brlt	.+2      	; 0x654
     652:	1c 92       	st	X, r1
     654:	81 e0       	ldi	r24, 0x01	; 1
     656:	90 e0       	ldi	r25, 0x00	; 0
     658:	02 c0       	rjmp	.+4      	; 0x65e
     65a:	80 e0       	ldi	r24, 0x00	; 0
     65c:	90 e0       	ldi	r25, 0x00	; 0
     65e:	df 91       	pop	r29
     660:	cf 91       	pop	r28
     662:	08 95       	ret

00000664 <tdSetFIFO>:
     664:	cf 93       	push	r28
     666:	df 93       	push	r29
     668:	dc 01       	movw	r26, r24
     66a:	ec 01       	movw	r28, r24
     66c:	79 81       	ldd	r23, Y+1	; 0x01
     66e:	e7 2f       	mov	r30, r23
     670:	ff 27       	eor	r31, r31
     672:	e7 fd       	sbrc	r30, 7
     674:	f0 95       	com	r31
     676:	9f 01       	movw	r18, r30
     678:	2f 5f       	subi	r18, 0xFF	; 255
     67a:	3f 4f       	sbci	r19, 0xFF	; 255
     67c:	8c 91       	ld	r24, X
     67e:	48 2f       	mov	r20, r24
     680:	55 27       	eor	r21, r21
     682:	47 fd       	sbrc	r20, 7
     684:	50 95       	com	r21
     686:	24 17       	cp	r18, r20
     688:	35 07       	cpc	r19, r21
     68a:	69 f0       	breq	.+26     	; 0x6a6
     68c:	2a 81       	ldd	r18, Y+2	; 0x02
     68e:	82 2f       	mov	r24, r18
     690:	99 27       	eor	r25, r25
     692:	87 fd       	sbrc	r24, 7
     694:	90 95       	com	r25
     696:	ef 01       	movw	r28, r30
     698:	c8 1b       	sub	r28, r24
     69a:	d9 0b       	sbc	r29, r25
     69c:	ce 01       	movw	r24, r28
     69e:	01 96       	adiw	r24, 0x01	; 1
     6a0:	84 17       	cp	r24, r20
     6a2:	95 07       	cpc	r25, r21
     6a4:	19 f4       	brne	.+6      	; 0x6ac
     6a6:	80 e0       	ldi	r24, 0x00	; 0
     6a8:	90 e0       	ldi	r25, 0x00	; 0
     6aa:	0c c0       	rjmp	.+24     	; 0x6c4
     6ac:	ea 0f       	add	r30, r26
     6ae:	fb 1f       	adc	r31, r27
     6b0:	63 83       	std	Z+3, r22	; 0x03
     6b2:	87 2f       	mov	r24, r23
     6b4:	8f 5f       	subi	r24, 0xFF	; 255
     6b6:	fd 01       	movw	r30, r26
     6b8:	81 83       	std	Z+1, r24	; 0x01
     6ba:	82 17       	cp	r24, r18
     6bc:	0c f0       	brlt	.+2      	; 0x6c0
     6be:	11 82       	std	Z+1, r1	; 0x01
     6c0:	81 e0       	ldi	r24, 0x01	; 1
     6c2:	90 e0       	ldi	r25, 0x00	; 0
     6c4:	df 91       	pop	r29
     6c6:	cf 91       	pop	r28
     6c8:	08 95       	ret

000006ca <tdFIFOIsEmpty>:
}

Bool tdFIFOIsEmpty(FifoHandle fh)
{
     6ca:	fc 01       	movw	r30, r24
    return  fh->ucHead != fh->ucTail;
     6cc:	20 e0       	ldi	r18, 0x00	; 0
     6ce:	30 e0       	ldi	r19, 0x00	; 0
     6d0:	90 81       	ld	r25, Z
     6d2:	81 81       	ldd	r24, Z+1	; 0x01
     6d4:	98 17       	cp	r25, r24
     6d6:	11 f0       	breq	.+4      	; 0x6dc
     6d8:	21 e0       	ldi	r18, 0x01	; 1
     6da:	30 e0       	ldi	r19, 0x00	; 0
}
     6dc:	c9 01       	movw	r24, r18
     6de:	08 95       	ret

000006e0 <tdFIFOIsFull>:

Bool tdFIFOIsFull(FifoHandle fh)
{
     6e0:	fc 01       	movw	r30, r24
    return (fh->ucTail + 1 == fh->ucHead) || (fh->ucTail + 1 - fh->ucSize == fh->ucHead);
     6e2:	a0 e0       	ldi	r26, 0x00	; 0
     6e4:	b0 e0       	ldi	r27, 0x00	; 0
     6e6:	81 81       	ldd	r24, Z+1	; 0x01
     6e8:	48 2f       	mov	r20, r24
     6ea:	55 27       	eor	r21, r21
     6ec:	47 fd       	sbrc	r20, 7
     6ee:	50 95       	com	r21
     6f0:	9a 01       	movw	r18, r20
     6f2:	2f 5f       	subi	r18, 0xFF	; 255
     6f4:	3f 4f       	sbci	r19, 0xFF	; 255
     6f6:	80 81       	ld	r24, Z
     6f8:	68 2f       	mov	r22, r24
     6fa:	77 27       	eor	r23, r23
     6fc:	67 fd       	sbrc	r22, 7
     6fe:	70 95       	com	r23
     700:	26 17       	cp	r18, r22
     702:	37 07       	cpc	r19, r23
     704:	59 f0       	breq	.+22     	; 0x71c
     706:	82 81       	ldd	r24, Z+2	; 0x02
     708:	99 27       	eor	r25, r25
     70a:	87 fd       	sbrc	r24, 7
     70c:	90 95       	com	r25
     70e:	48 1b       	sub	r20, r24
     710:	59 0b       	sbc	r21, r25
     712:	4f 5f       	subi	r20, 0xFF	; 255
     714:	5f 4f       	sbci	r21, 0xFF	; 255
     716:	46 17       	cp	r20, r22
     718:	57 07       	cpc	r21, r23
     71a:	11 f4       	brne	.+4      	; 0x720
     71c:	a1 e0       	ldi	r26, 0x01	; 1
     71e:	b0 e0       	ldi	r27, 0x00	; 0
}
     720:	cd 01       	movw	r24, r26
     722:	08 95       	ret

00000724 <tdGetADCValue>:
	_RoomTemp_1_, _RoomTemp_2_, _RoomTemp_3_, _RoomTemp_4_, _RoomTemp_5_, _RoomTemp_6_, _RoomTemp_7_, _RoomTemp_8_
};

Word tdGetADCValue(Byte ucKeyLine)
{
     724:	98 2f       	mov	r25, r24
    static Byte ucOrgADCChannel;
    Word wADCVal,wADCVal2;
    wADCVal = 0;
    //if(ucOrgADCChannel != ucKeyLine)

    {/* change ADC channle */
        ADCSRA &= ~0x40; 
     726:	36 98       	cbi	0x06, 6	; 6
        ucOrgADCChannel = ucKeyLine;
     728:	80 93 a3 00 	sts	0x00A3, r24
//        ADMUX &= 0xE0;
        ADMUX |= ucKeyLine;
     72c:	87 b1       	in	r24, 0x07	; 7
     72e:	89 2b       	or	r24, r25
     730:	87 b9       	out	0x07, r24	; 7
        ADCSRA |= 0x40;
     732:	36 9a       	sbi	0x06, 6	; 6
     734:	21 e0       	ldi	r18, 0x01	; 1
     736:	30 e0       	ldi	r19, 0x00	; 0
		
		//wait for conversion complete 
		while((ADCSRA & 0x10) == 0)
     738:	86 b1       	in	r24, 0x06	; 6
     73a:	99 27       	eor	r25, r25
     73c:	44 e0       	ldi	r20, 0x04	; 4
     73e:	96 95       	lsr	r25
     740:	87 95       	ror	r24
     742:	4a 95       	dec	r20
     744:	e1 f7       	brne	.-8      	; 0x73e
     746:	81 70       	andi	r24, 0x01	; 1
     748:	90 70       	andi	r25, 0x00	; 0
     74a:	82 17       	cp	r24, r18
     74c:	93 07       	cpc	r25, r19
     74e:	a1 f7       	brne	.-24     	; 0x738
		{
			
		}

		//read result
	    wADCVal = ADCL;
     750:	24 b1       	in	r18, 0x04	; 4
	    wADCVal2 = ADCH;
     752:	85 b1       	in	r24, 0x05	; 5
     754:	99 27       	eor	r25, r25
	    wADCVal += (wADCVal2<<8);
     756:	98 2f       	mov	r25, r24
     758:	88 27       	eor	r24, r24

		ADCSRA |= 0x10;//clear interrupt flag
     75a:	34 9a       	sbi	0x06, 4	; 6

		return wADCVal;
		
        //tdSleep(10);
        //ADCSRA &= ~0x40; 
    }
#if 0    
    ADCSRA &= ~0x40;  /* stop ADC and read back last value*/
    wADCVal = ADCL;
    wADCVal2 = ADCH;
    wADCVal += (wADCVal2<<8);
    wADCVal >>= 2;   /* HIGH 8 BIT AS RETTURN VAL */
    ADCSRA |= 0x40; /* prepare for next adc */
#endif
    ADMUX = 0xC0;
    ADCSRA=(1<<ADEN)|(1<<ADPS1)|(1<<ADPS0);
    ADCSRA|=(1<<ADSC);//自由模式开始转换
    tdSleep(100);
    wADCVal = ADCL;
    wADCVal2 = ADCH;
     wADCVal += (wADCVal2<<8);
    return (Byte)wADCVal;
}
     75c:	82 0f       	add	r24, r18
     75e:	91 1d       	adc	r25, r1
     760:	08 95       	ret

00000762 <tdGetADCKeyCode>:

Word tdGetADCKeyCode(Void)
{
     762:	0f 93       	push	r16
     764:	1f 93       	push	r17
     766:	cf 93       	push	r28
    Byte uc;
    Byte uc2;
    Word ucKeyBoardScan;
    for (uc = 0; uc < _KEYBOARDLINE_NUM_; uc++)
     768:	c0 e0       	ldi	r28, 0x00	; 0
    {
        ucKeyBoardScan = tdGetADCValue(c_KeyBoardLine[uc]);
     76a:	0c 2f       	mov	r16, r28
     76c:	11 27       	eor	r17, r17
     76e:	07 fd       	sbrc	r16, 7
     770:	10 95       	com	r17
     772:	f8 01       	movw	r30, r16
     774:	e8 57       	subi	r30, 0x78	; 120
     776:	ff 4f       	sbci	r31, 0xFF	; 255
     778:	80 81       	ld	r24, Z
     77a:	0e 94 92 03 	call	0x724
     77e:	ac 01       	movw	r20, r24
        DbPrintf2("%d ADC value is %x\n",uc,ucKeyBoardScan);
        for (uc2 = 0; uc2 < _KEYBOARDLEVEL_NUM_; uc2++)
     780:	20 e0       	ldi	r18, 0x00	; 0
     782:	f8 01       	movw	r30, r16
     784:	64 e0       	ldi	r22, 0x04	; 4
     786:	ee 0f       	add	r30, r30
     788:	ff 1f       	adc	r31, r31
     78a:	6a 95       	dec	r22
     78c:	e1 f7       	brne	.-8      	; 0x786
     78e:	e5 57       	subi	r30, 0x75	; 117
     790:	ff 4f       	sbci	r31, 0xFF	; 255
     792:	a8 e7       	ldi	r26, 0x78	; 120
     794:	b0 e0       	ldi	r27, 0x00	; 0
            if (ucKeyBoardScan < c_aucKeyboardLevel[uc2])
     796:	8d 91       	ld	r24, X+
     798:	9d 91       	ld	r25, X+
     79a:	48 17       	cp	r20, r24
     79c:	59 07       	cpc	r21, r25
     79e:	18 f4       	brcc	.+6      	; 0x7a6
                return c_aucKeyboardCommand[uc][uc2];
     7a0:	80 81       	ld	r24, Z
     7a2:	91 81       	ldd	r25, Z+1	; 0x01
     7a4:	09 c0       	rjmp	.+18     	; 0x7b8
     7a6:	2f 5f       	subi	r18, 0xFF	; 255
     7a8:	32 96       	adiw	r30, 0x02	; 2
     7aa:	28 30       	cpi	r18, 0x08	; 8
     7ac:	a4 f3       	brlt	.-24     	; 0x796
     7ae:	cf 5f       	subi	r28, 0xFF	; 255
     7b0:	1c 16       	cp	r1, r28
     7b2:	dc f6       	brge	.-74     	; 0x76a
    }
    // NO KEY GET
    return _VK_NONE_;
     7b4:	80 e0       	ldi	r24, 0x00	; 0
     7b6:	90 e0       	ldi	r25, 0x00	; 0
     7b8:	cf 91       	pop	r28
     7ba:	1f 91       	pop	r17
     7bc:	0f 91       	pop	r16
     7be:	08 95       	ret

000007c0 <KeyConvert>:
}




/* 把实际扫描到的按键值转换为标准按键值 */
Un_Sizet_1 KeyConvert(Un_Sizet_1 ucScanValue)
{
     7c0:	08 95       	ret

000007c2 <GetKeyCode>:
}

Byte GetKeyCode()
{
     7c2:	08 95       	ret

000007c4 <tdResToTemp>:
}

Byte tdResToTemp(Word wRes, Byte bTempRef, Word wResRef)
{
	return (bTempRef+(wRes-wResRef)/4);
     7c4:	84 1b       	sub	r24, r20
     7c6:	95 0b       	sbc	r25, r21
     7c8:	96 95       	lsr	r25
     7ca:	87 95       	ror	r24
     7cc:	96 95       	lsr	r25
     7ce:	87 95       	ror	r24
     7d0:	68 0f       	add	r22, r24
}
     7d2:	86 2f       	mov	r24, r22
     7d4:	99 27       	eor	r25, r25
     7d6:	87 fd       	sbrc	r24, 7
     7d8:	90 95       	com	r25
     7da:	08 95       	ret

000007dc <tdGetRoomTemp>:

Long dwWatch;
Byte bWatch;
Char tdGetRoomTemp(Void)
{
     7dc:	cf 92       	push	r12
     7de:	df 92       	push	r13
     7e0:	ef 92       	push	r14
     7e2:	ff 92       	push	r15
     7e4:	0f 93       	push	r16
     7e6:	1f 93       	push	r17
	
	Word wSensorADC;
	Word wSensorADC2;
	Word dwSensorValue;
	Byte cRoomTemp;
	Byte uc;

	ADMUX |= 0x41;
     7e8:	87 b1       	in	r24, 0x07	; 7
     7ea:	81 64       	ori	r24, 0x41	; 65
     7ec:	87 b9       	out	0x07, r24	; 7
    ADCSRA |= 0x40;
     7ee:	36 9a       	sbi	0x06, 6	; 6
     7f0:	21 e0       	ldi	r18, 0x01	; 1
     7f2:	30 e0       	ldi	r19, 0x00	; 0
	//wait for conversion complete 
	while((ADCSRA & 0x10) == 0)
     7f4:	86 b1       	in	r24, 0x06	; 6
     7f6:	99 27       	eor	r25, r25
     7f8:	14 e0       	ldi	r17, 0x04	; 4
     7fa:	96 95       	lsr	r25
     7fc:	87 95       	ror	r24
     7fe:	1a 95       	dec	r17
     800:	e1 f7       	brne	.-8      	; 0x7fa
     802:	81 70       	andi	r24, 0x01	; 1
     804:	90 70       	andi	r25, 0x00	; 0
     806:	82 17       	cp	r24, r18
     808:	93 07       	cpc	r25, r19
     80a:	a1 f7       	brne	.-24     	; 0x7f4
	{
		
	}

	//read result
	wSensorADC = ADCL;
     80c:	24 b1       	in	r18, 0x04	; 4
    wSensorADC2 = ADCH;
     80e:	85 b1       	in	r24, 0x05	; 5
     810:	99 27       	eor	r25, r25
	wSensorADC += (wSensorADC2<<8);
     812:	18 2f       	mov	r17, r24
     814:	00 27       	eor	r16, r16
     816:	02 0f       	add	r16, r18
     818:	11 1d       	adc	r17, r1
	ADCSRA |= 0x10;//clear interrupt flag
     81a:	34 9a       	sbi	0x06, 4	; 6
	//conversion equation about wSensorADC to wSensorValue
	//wSensorValue=(1023+wSensorADC)/(1023*2-wSensorADC)*1200
	dwSensorValue=((long int)(1023 + wSensorADC)*1200)/(1023*2-wSensorADC);
     81c:	01 50       	subi	r16, 0x01	; 1
     81e:	1c 4f       	sbci	r17, 0xFC	; 252
     820:	c8 01       	movw	r24, r16
     822:	aa 27       	eor	r26, r26
     824:	bb 27       	eor	r27, r27
     826:	0f 5f       	subi	r16, 0xFF	; 255
     828:	13 40       	sbci	r17, 0x03	; 3

⌨️ 快捷键说明

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