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

📄 enoronhand.lss

📁 在AVR 平台下的控制代码,通过CAN控制
💻 LSS
📖 第 1 页 / 共 5 页
字号:
    ||||
    ||||
    ||||---------- 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 + -