📄 enoronhand.lss
字号:
||||
||||
||||---------- 00 WGM 13 12 NORMAL IO
|||------------0 x
||-------------0 ICES1
|--------------0 ICNC1
*/
TCCR1B = 0x01;
TCNT1 = 0x3323;
/* xx0000xx
||||------- 0
|||-------- 0
||--------- 0
|---------- 0 capture
*/
TIFR |= 0x00;
/* xx0001xx
||||-----1 enable timer int
|--------000 disable capture mode int
*/
TIMSK &= 0xc3;
TIMSK |= 0x04;
#endif
/* 定时器2配置 */
/* uart 初始化 00011000B
||||||||----- 0 TX data 8 bit
|||||||-------0 RX data 8 bit
||||||--------0 DATA LEN
|||||---------1 TX EN
||||----------1 RX EN
|||-----------0 No buffer empty interrupt
||------------0 No TX interrupt
|-------------0 No Rx interrupt
*/
UCSRB=_BV(RXEN)|_BV(TXEN);/*(1<<RXCIE)|(1<<TXCIE)|*/
168: 88 e1 ldi r24, 0x18 ; 24
16a: 8a b9 out 0x0a, r24 ; 10
UBRRL=25; //9600 baud 6MHz:38 4MHz:25
16c: 89 e1 ldi r24, 0x19 ; 25
16e: 89 b9 out 0x09, r24 ; 9
//流与设备连接
fdevopen(usart_putchar,usart_getchar,0);
170: 40 e0 ldi r20, 0x00 ; 0
172: 50 e0 ldi r21, 0x00 ; 0
174: 6f e7 ldi r22, 0x7F ; 127
176: 70 e0 ldi r23, 0x00 ; 0
178: 81 e7 ldi r24, 0x71 ; 113
17a: 90 e0 ldi r25, 0x00 ; 0
17c: 0e 94 8c 06 call 0xd18
TIFR = 0;
180: 18 be out 0x38, r1 ; 56
TIMSK |= 0x80;//0x02; // TIMER0 MATCH INT ENABLED
182: 89 b7 in r24, 0x39 ; 57
184: 80 68 ori r24, 0x80 ; 128
186: 89 bf out 0x39, r24 ; 57
sei();
188: 78 94 sei
18a: 08 95 ret
0000018c <BoardIni>:
}
void BoardIni(void)
{
/* Initial MCU and other chips */
/* INITIALIZE SERIAL INTERFACE TO 2400 BAUD @12MHz */
/* 初始化标准IO流操作 */
IoInit();
18c: 0e 94 8e 00 call 0x11c
190: 08 95 ret
00000192 <__vector_1>:
#if 0
while(1)
{
vfprintf(stdout,"测试1[输入数字]:\n",0);
printf("测试1[输入数字]:\n");
}
#endif
}
SIGNAL(SIG_INTERRUPT0) //输入捕捉中断
{
192: 1f 92 push r1
194: 0f 92 push r0
196: 0f b6 in r0, 0x3f ; 63
198: 0f 92 push r0
19a: 11 24 eor r1, r1
19c: 8f 93 push r24
g_Data.ucIntIndex = 0;
19e: 10 92 a5 00 sts 0x00A5, r1
bTickGet = _TRUE_;
1a2: 80 91 a4 00 lds r24, 0x00A4
1a6: 81 60 ori r24, 0x01 ; 1
1a8: 80 93 a4 00 sts 0x00A4, r24
1ac: 8f 91 pop r24
1ae: 0f 90 pop r0
1b0: 0f be out 0x3f, r0 ; 63
1b2: 0f 90 pop r0
1b4: 1f 90 pop r1
1b6: 18 95 reti
000001b8 <__vector_2>:
}
SIGNAL(SIG_INTERRUPT1) //输入捕捉中断 不知道为什么总是进入该中断,这是奇怪得事情
{
1b8: 1f 92 push r1
1ba: 0f 92 push r0
1bc: 0f b6 in r0, 0x3f ; 63
1be: 0f 92 push r0
1c0: 11 24 eor r1, r1
1c2: 8f 93 push r24
g_Data.ucIntIndex = 1;
1c4: 81 e0 ldi r24, 0x01 ; 1
1c6: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
1ca: 80 91 a4 00 lds r24, 0x00A4
1ce: 81 60 ori r24, 0x01 ; 1
1d0: 80 93 a4 00 sts 0x00A4, r24
1d4: 8f 91 pop r24
1d6: 0f 90 pop r0
1d8: 0f be out 0x3f, r0 ; 63
1da: 0f 90 pop r0
1dc: 1f 90 pop r1
1de: 18 95 reti
000001e0 <__vector_3>:
}
SIGNAL(SIG_OUTPUT_COMPARE2) //输入捕捉中断
{
1e0: 1f 92 push r1
1e2: 0f 92 push r0
1e4: 0f b6 in r0, 0x3f ; 63
1e6: 0f 92 push r0
1e8: 11 24 eor r1, r1
1ea: 8f 93 push r24
g_Data.ucIntIndex = 2;
1ec: 82 e0 ldi r24, 0x02 ; 2
1ee: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
1f2: 80 91 a4 00 lds r24, 0x00A4
1f6: 81 60 ori r24, 0x01 ; 1
1f8: 80 93 a4 00 sts 0x00A4, r24
1fc: 8f 91 pop r24
1fe: 0f 90 pop r0
200: 0f be out 0x3f, r0 ; 63
202: 0f 90 pop r0
204: 1f 90 pop r1
206: 18 95 reti
00000208 <__vector_4>:
}
SIGNAL(SIG_OVERFLOW2) //输入捕捉中断
{
208: 1f 92 push r1
20a: 0f 92 push r0
20c: 0f b6 in r0, 0x3f ; 63
20e: 0f 92 push r0
210: 11 24 eor r1, r1
212: 8f 93 push r24
g_Data.ucIntIndex = 4;
214: 84 e0 ldi r24, 0x04 ; 4
216: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
21a: 80 91 a4 00 lds r24, 0x00A4
21e: 81 60 ori r24, 0x01 ; 1
220: 80 93 a4 00 sts 0x00A4, r24
224: 8f 91 pop r24
226: 0f 90 pop r0
228: 0f be out 0x3f, r0 ; 63
22a: 0f 90 pop r0
22c: 1f 90 pop r1
22e: 18 95 reti
00000230 <__vector_9>:
}
SIGNAL(SIG_OVERFLOW0) //输入捕捉中断
{
230: 1f 92 push r1
232: 0f 92 push r0
234: 0f b6 in r0, 0x3f ; 63
236: 0f 92 push r0
238: 11 24 eor r1, r1
23a: 8f 93 push r24
g_Data.ucIntIndex = 5;
23c: 85 e0 ldi r24, 0x05 ; 5
23e: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
242: 80 91 a4 00 lds r24, 0x00A4
246: 81 60 ori r24, 0x01 ; 1
248: 80 93 a4 00 sts 0x00A4, r24
24c: 8f 91 pop r24
24e: 0f 90 pop r0
250: 0f be out 0x3f, r0 ; 63
252: 0f 90 pop r0
254: 1f 90 pop r1
256: 18 95 reti
00000258 <__vector_7>:
}
SIGNAL(SIG_OUTPUT_COMPARE1B) //输入捕捉中断
{
258: 1f 92 push r1
25a: 0f 92 push r0
25c: 0f b6 in r0, 0x3f ; 63
25e: 0f 92 push r0
260: 11 24 eor r1, r1
262: 8f 93 push r24
g_Data.ucIntIndex = 6;
264: 86 e0 ldi r24, 0x06 ; 6
266: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
26a: 80 91 a4 00 lds r24, 0x00A4
26e: 81 60 ori r24, 0x01 ; 1
270: 80 93 a4 00 sts 0x00A4, r24
274: 8f 91 pop r24
276: 0f 90 pop r0
278: 0f be out 0x3f, r0 ; 63
27a: 0f 90 pop r0
27c: 1f 90 pop r1
27e: 18 95 reti
00000280 <__vector_8>:
}
SIGNAL(SIG_OVERFLOW1) //输入捕捉中断
{
280: 1f 92 push r1
282: 0f 92 push r0
284: 0f b6 in r0, 0x3f ; 63
286: 0f 92 push r0
288: 11 24 eor r1, r1
28a: 8f 93 push r24
g_Data.ucIntIndex = 7;
28c: 87 e0 ldi r24, 0x07 ; 7
28e: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
292: 80 91 a4 00 lds r24, 0x00A4
296: 81 60 ori r24, 0x01 ; 1
298: 80 93 a4 00 sts 0x00A4, r24
29c: 8f 91 pop r24
29e: 0f 90 pop r0
2a0: 0f be out 0x3f, r0 ; 63
2a2: 0f 90 pop r0
2a4: 1f 90 pop r1
2a6: 18 95 reti
000002a8 <__vector_10>:
}
SIGNAL(SIG_SPI) //输入捕捉中断
{
2a8: 1f 92 push r1
2aa: 0f 92 push r0
2ac: 0f b6 in r0, 0x3f ; 63
2ae: 0f 92 push r0
2b0: 11 24 eor r1, r1
2b2: 8f 93 push r24
g_Data.ucIntIndex = 8;
2b4: 88 e0 ldi r24, 0x08 ; 8
2b6: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
2ba: 80 91 a4 00 lds r24, 0x00A4
2be: 81 60 ori r24, 0x01 ; 1
2c0: 80 93 a4 00 sts 0x00A4, r24
2c4: 8f 91 pop r24
2c6: 0f 90 pop r0
2c8: 0f be out 0x3f, r0 ; 63
2ca: 0f 90 pop r0
2cc: 1f 90 pop r1
2ce: 18 95 reti
000002d0 <__vector_19>:
}
SIGNAL(SIG_OUTPUT_COMPARE0) //输入捕捉中断
{
2d0: 1f 92 push r1
2d2: 0f 92 push r0
2d4: 0f b6 in r0, 0x3f ; 63
2d6: 0f 92 push r0
2d8: 11 24 eor r1, r1
2da: 8f 93 push r24
g_Data.ucIntIndex = 9;
2dc: 89 e0 ldi r24, 0x09 ; 9
2de: 80 93 a5 00 sts 0x00A5, r24
bTickGet = _TRUE_;
2e2: 80 91 a4 00 lds r24, 0x00A4
2e6: 81 60 ori r24, 0x01 ; 1
2e8: 80 93 a4 00 sts 0x00A4, r24
2ec: 8f 91 pop r24
2ee: 0f 90 pop r0
2f0: 0f be out 0x3f, r0 ; 63
2f2: 0f 90 pop r0
2f4: 1f 90 pop r1
2f6: 18 95 reti
000002f8 <CommIni>:
void CommIni(void)
{
tdInitFIFO(g_ucRsvBuffer, _RSV_BUFFER_LEN_);
2f8: 62 e3 ldi r22, 0x32 ; 50
2fa: 86 ea ldi r24, 0xA6 ; 166
2fc: 90 e0 ldi r25, 0x00 ; 0
2fe: 0e 94 0a 03 call 0x614
302: 08 95 ret
00000304 <KeyProcess>:
/* 所有按键处理都由这里进入
这里会读取已经转换好的标准键值,并进行处理
*/
void KeyProcess(void)
{
304: 08 95 ret
00000306 <tdClearKeyInFIFO>:
}
Bool tdClearKeyInFIFO(FifoHandle fh, Byte ucKeyCode)
{
306: ef 92 push r14
308: ff 92 push r15
30a: 1f 93 push r17
30c: cf 93 push r28
30e: df 93 push r29
310: ec 01 movw r28, r24
Byte ucTemp, ucRealIndex;
Bool bHeadChanged = _FALSE_;
Bool bTailChanged = _FALSE_;
Bool bFinishSwap = _FALSE_;
312: 10 e0 ldi r17, 0x00 ; 0
if (fh->ucHead == fh->ucTail || ucKeyCode == 0)
314: 58 81 ld r21, Y
316: 89 81 ldd r24, Y+1 ; 0x01
318: 58 17 cp r21, r24
31a: 11 f0 breq .+4 ; 0x320
31c: 66 23 and r22, r22
31e: 29 f4 brne .+10 ; 0x32a
return _FALSE_;
320: 80 e0 ldi r24, 0x00 ; 0
322: 90 e0 ldi r25, 0x00 ; 0
324: 5c c0 rjmp .+184 ; 0x3de
ucTemp = fh->ucHead;
ucRealIndex= fh->ucHead;
while (ucRealIndex != fh->ucTail)
{
if (!bFinishSwap)
{
if (fh->ucData[ucRealIndex] == ucKeyCode)
{
ucTemp = ucRealIndex;
while ((ucTemp != fh->ucTail) && (fh->ucData[ucTemp] == ucKeyCode))
{
ucTemp++;
if (ucTemp >= fh->ucSize)
ucTemp = 0;
}
if (ucTemp != fh->ucTail) //find fh->ucData[ucTemp] != ucKeyCode
{
fh->ucData[ucRealIndex] = fh->ucData[ucTemp];
fh->ucData[ucTemp] = ucKeyCode;
}
else //ucTemp == fh->ucTail
{
fh->ucData[ucRealIndex] = 0;
bFinishSwap = _TRUE_;
}
}
}
else
fh->ucData[ucRealIndex] = 0;
ucRealIndex++;
if (ucRealIndex >= fh->ucSize)
ucRealIndex = 0;
}
//reset tail
ucTemp = fh->ucHead;
while (ucTemp != fh->ucTail)
{
if (fh->ucData[ucTemp] == 0)
{
fh->ucTail = ucTemp;
326: 99 83 std Y+1, r25 ; 0x01
break;
328: 58 c0 rjmp .+176 ; 0x3da
32a: 25 2f mov r18, r21
32c: 78 2f mov r23, r24
32e: a2 2f mov r26, r18
330: bb 27 eor r27, r27
332: a7 fd sbrc r26, 7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -