📄 enoronhand.lss
字号:
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 + -