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

📄 enoronhand.lss

📁 在AVR 平台下的控制代码,通过CAN控制
💻 LSS
📖 第 1 页 / 共 5 页
字号:

EnorOnHand.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000010ca  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000042  00800060  000010ca  0000115e  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000005b  008000a2  008000a2  000011a0  2**0
                  ALLOC
  3 .noinit       00000000  008000fd  008000fd  000011a0  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000011a0  2**0
                  CONTENTS
  5 .debug_aranges 000000b4  00000000  00000000  000011a0  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 000005b6  00000000  00000000  00001254  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00001b5c  00000000  00000000  0000180a  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 00000874  00000000  00000000  00003366  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   000014a6  00000000  00000000  00003bda  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    000008d5  00000000  00000000  00005080  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 2a 00 	jmp	0x54
       4:	0c 94 c9 00 	jmp	0x192
       8:	0c 94 dc 00 	jmp	0x1b8
       c:	0c 94 f0 00 	jmp	0x1e0
      10:	0c 94 04 01 	jmp	0x208
      14:	0c 94 45 00 	jmp	0x8a
      18:	0c 94 45 00 	jmp	0x8a
      1c:	0c 94 2c 01 	jmp	0x258
      20:	0c 94 40 01 	jmp	0x280
      24:	0c 94 18 01 	jmp	0x230
      28:	0c 94 54 01 	jmp	0x2a8
      2c:	0c 94 45 00 	jmp	0x8a
      30:	0c 94 45 00 	jmp	0x8a
      34:	0c 94 45 00 	jmp	0x8a
      38:	0c 94 45 00 	jmp	0x8a
      3c:	0c 94 45 00 	jmp	0x8a
      40:	0c 94 45 00 	jmp	0x8a
      44:	0c 94 45 00 	jmp	0x8a
      48:	0c 94 45 00 	jmp	0x8a
      4c:	0c 94 68 01 	jmp	0x2d0
      50:	0c 94 45 00 	jmp	0x8a

00000054 <__ctors_end>:
      54:	11 24       	eor	r1, r1
      56:	1f be       	out	0x3f, r1	; 63
      58:	cf e5       	ldi	r28, 0x5F	; 95
      5a:	d4 e0       	ldi	r29, 0x04	; 4
      5c:	de bf       	out	0x3e, r29	; 62
      5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
      60:	10 e0       	ldi	r17, 0x00	; 0
      62:	a0 e6       	ldi	r26, 0x60	; 96
      64:	b0 e0       	ldi	r27, 0x00	; 0
      66:	ea ec       	ldi	r30, 0xCA	; 202
      68:	f0 e1       	ldi	r31, 0x10	; 16
      6a:	02 c0       	rjmp	.+4      	; 0x70

0000006c <.do_copy_data_loop>:
      6c:	05 90       	lpm	r0, Z+
      6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
      70:	a2 3a       	cpi	r26, 0xA2	; 162
      72:	b1 07       	cpc	r27, r17
      74:	d9 f7       	brne	.-10     	; 0x6c

00000076 <__do_clear_bss>:
      76:	10 e0       	ldi	r17, 0x00	; 0
      78:	a2 ea       	ldi	r26, 0xA2	; 162
      7a:	b0 e0       	ldi	r27, 0x00	; 0
      7c:	01 c0       	rjmp	.+2      	; 0x80

0000007e <.do_clear_bss_loop>:
      7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
      80:	ad 3f       	cpi	r26, 0xFD	; 253
      82:	b1 07       	cpc	r27, r17
      84:	e1 f7       	brne	.-8      	; 0x7e
      86:	0c 94 5f 00 	jmp	0xbe

0000008a <__bad_interrupt>:
      8a:	0c 94 00 00 	jmp	0x0

0000008e <BackGroundFunction>:
/* describe: backgournd functions */
/* 在每个时间片的剩余时间执行该函数.如果时间片到,则返回True,否则返回False */
Bool BackGroundFunction(void)
{
    if(bTickGet)
      8e:	80 91 a4 00 	lds	r24, 0x00A4
      92:	80 ff       	sbrs	r24, 0
      94:	03 c0       	rjmp	.+6      	; 0x9c
    {
        return _TRUE_;
      96:	81 e0       	ldi	r24, 0x01	; 1
      98:	90 e0       	ldi	r25, 0x00	; 0
      9a:	08 95       	ret
    }    
    else
    {
        return _FALSE_;
      9c:	80 e0       	ldi	r24, 0x00	; 0
      9e:	90 e0       	ldi	r25, 0x00	; 0
    }
}
      a0:	08 95       	ret
      a2:	08 95       	ret

000000a4 <SysIni>:

/* describe: initial all functions */
void SysIni(void)
{
    CommIni();
      a4:	0e 94 7c 01 	call	0x2f8
    tdInitFIFO(t_VirtualKeyBuffer,VIRTUALKEYBUFFERSIZE);
      a8:	67 e0       	ldi	r22, 0x07	; 7
      aa:	89 ed       	ldi	r24, 0xD9	; 217
      ac:	90 e0       	ldi	r25, 0x00	; 0
      ae:	0e 94 0a 03 	call	0x614
    bTickGet = _FALSE_;
      b2:	80 91 a4 00 	lds	r24, 0x00A4
      b6:	8e 7f       	andi	r24, 0xFE	; 254
      b8:	80 93 a4 00 	sts	0x00A4, r24
      bc:	08 95       	ret

000000be <main>:
}


Sizet_4 main()
{
      be:	cf e5       	ldi	r28, 0x5F	; 95
      c0:	d4 e0       	ldi	r29, 0x04	; 4
      c2:	de bf       	out	0x3e, r29	; 62
      c4:	cd bf       	out	0x3d, r28	; 61
	static Char test;
	bTickGet = _FALSE_;
      c6:	80 91 a4 00 	lds	r24, 0x00A4
      ca:	8e 7f       	andi	r24, 0xFE	; 254
      cc:	80 93 a4 00 	sts	0x00A4, r24
    Word wTickCnt = 0;
	BoardIni();
      d0:	0e 94 c6 00 	call	0x18c
    SysIni();
      d4:	0e 94 52 00 	call	0xa4

	while(1)
	{
		test = tdGetRoomTemp();
      d8:	0e 94 ee 03 	call	0x7dc
      dc:	80 93 a2 00 	sts	0x00A2, r24
      e0:	fb cf       	rjmp	.-10     	; 0xd8

000000e2 <usart_putchar>:
#define CLOCK 4         // 4M CRY

//uart 发送一字节
int usart_putchar(char c)
{
      e2:	cf 93       	push	r28
      e4:	c8 2f       	mov	r28, r24
    if(c=='\n')
      e6:	8a 30       	cpi	r24, 0x0A	; 10
      e8:	19 f4       	brne	.+6      	; 0xf0
        usart_putchar('\r');
      ea:	8d e0       	ldi	r24, 0x0D	; 13
      ec:	0e 94 71 00 	call	0xe2
    loop_until_bit_is_set(UCSRA,UDRE);
      f0:	5d 9b       	sbis	0x0b, 5	; 11
      f2:	fe cf       	rjmp	.-4      	; 0xf0
    UDR=c;
      f4:	cc b9       	out	0x0c, r28	; 12
    return 0;
}
      f6:	80 e0       	ldi	r24, 0x00	; 0
      f8:	90 e0       	ldi	r25, 0x00	; 0
      fa:	cf 91       	pop	r28
      fc:	08 95       	ret

000000fe <usart_getchar>:
//uart 接收一字节
int usart_getchar(void)
{
    loop_until_bit_is_set(UCSRA,RXC);
      fe:	5f 9b       	sbis	0x0b, 7	; 11
     100:	fe cf       	rjmp	.-4      	; 0xfe
    return UDR;
     102:	8c b1       	in	r24, 0x0c	; 12
}
     104:	99 27       	eor	r25, r25
     106:	08 95       	ret

00000108 <timer0_init>:


void timer0_init(void) //CTC模式输出1KHz方波
{
 TCCR0 = (1<<WGM01)|(0<<WGM00)|(0<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
     108:	8b e0       	ldi	r24, 0x0B	; 11
     10a:	83 bf       	out	0x33, r24	; 51
 //64分频,CTC模式,OC0不输出
 //TOP=4000000/(2*64*1000)-1=30.25  选30  1.008KHz(0.992mS)
 OCR0  = (Byte)((((Dword)CLOCK*1000000)) /(2*64*2000)-1);  //设定TOP值
     10c:	8f ef       	ldi	r24, 0xFF	; 255
     10e:	8c bf       	out	0x3c, r24	; 60
     110:	08 95       	ret

00000112 <timer2_init>:
}


void timer2_init(void) //CTC模式输出1KHz方波
{
 //TCCR2 = (1<<WGM01)|(0<<WGM00)|(0<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
 TCCR2 = 0x0c;//00001100//(1<<WGM01)|(0<<WGM00)|(0<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
     112:	8c e0       	ldi	r24, 0x0C	; 12
     114:	85 bd       	out	0x25, r24	; 37
 //64分频,CTC模式,OC0不输出
 //TOP=4000000/(2*64*1000)-1=30.25  选30  1.008KHz(0.992mS)
 OCR2  = (Byte)((((Dword)CLOCK*1000000)) /(2*64*2000)-1);  //设定TOP值
     116:	8f ef       	ldi	r24, 0xFF	; 255
     118:	83 bd       	out	0x23, r24	; 35
     11a:	08 95       	ret

0000011c <IoInit>:
}


void IoInit(void)
{
    Byte    ucSreg;
    Word    wI;
    ucSreg = SREG;
     11c:	8f b7       	in	r24, 0x3f	; 63
    cli();
     11e:	f8 94       	cli
    /* IO 端口配置 */
    /* I2C */
    HI2C_SCL_OUTMODE;
     120:	a0 9a       	sbi	0x14, 0	; 20
    HI2C_SDA_OUTMODE;
     122:	a1 9a       	sbi	0x14, 1	; 20
                                  
/* LCD port define */
    LCD_CS1_OUTMODE;
     124:	b8 9a       	sbi	0x17, 0	; 23
    
    LCD_CS2_OUTMODE;
     126:	b9 9a       	sbi	0x17, 1	; 23
    
    LCD_RS_OUTMODE;
     128:	a7 9a       	sbi	0x14, 7	; 20

    LCD_RST_OUTMODE;
     12a:	a6 9a       	sbi	0x14, 6	; 20

    LCD_E_OUTMODE;
     12c:	d3 9a       	sbi	0x1a, 3	; 26

    LCD_RW_OUTMODE;
     12e:	d2 9a       	sbi	0x1a, 2	; 26

    LCD_DB7_OUTMODE;
     130:	bf 9a       	sbi	0x17, 7	; 23
    
    LCD_DB6_OUTMODE;
     132:	be 9a       	sbi	0x17, 6	; 23

    LCD_DB5_OUTMODE;
     134:	bd 9a       	sbi	0x17, 5	; 23

    LCD_DB4_OUTMODE;
     136:	bc 9a       	sbi	0x17, 4	; 23

    LCD_DB3_OUTMODE;
     138:	d7 9a       	sbi	0x1a, 7	; 26

    LCD_DB2_OUTMODE;
     13a:	d6 9a       	sbi	0x1a, 6	; 26

    LCD_DB1_OUTMODE;
     13c:	d5 9a       	sbi	0x1a, 5	; 26

    LCD_DB0_OUTMODE;
     13e:	d4 9a       	sbi	0x1a, 4	; 26
 
/* ROOM_T 温度传感器 */
    ROOM_T_INMODE;
     140:	d1 98       	cbi	0x1a, 1	; 26
 /* key board define */
    KEYBOARD_INMODE;
     142:	d0 98       	cbi	0x1a, 0	; 26

 /* TC35 define */
    TC_IGT_INMODE;
     144:	8f 98       	cbi	0x11, 7	; 17
//    #define TC_IGT_OUTMODE                CLRBIT(TC_IGT_Dir_REG,TC_IGT_Bit)
 
    TC_CTS_INMODE;
     146:	8e 98       	cbi	0x11, 6	; 17
//    #define TC_CTS_OUTMODE                CLRBIT(TC_CTS_Dir_REG,TC_CTS_Bit)
 
    TC_RTS_INMODE;
     148:	8d 98       	cbi	0x11, 5	; 17
//    #define TC_RTS_OUTMODE                CLRBIT(TC_RTS_Dir_REG,TC_RTS_Bit)
 
    TC_RING_INMODE;
     14a:	8a 98       	cbi	0x11, 2	; 17
 
    TC_TXD_OUTMODE;
     14c:	89 9a       	sbi	0x11, 1	; 17
 
    TC_RXD_INMODE;
     14e:	88 98       	cbi	0x11, 0	; 17
 
/* MUL-IN MUL-OUT define */
    MULTY_OUT_OUTMODE;
     150:	8b 9a       	sbi	0x11, 3	; 17
 
    MULTY_IN_INMODE;
     152:	8a 98       	cbi	0x11, 2	; 17
 
/* UART define */
    PIN_TXD_OUTMODE;
     154:	ba 9a       	sbi	0x17, 2	; 23
 
    PIN_RXD_INMODE;
     156:	b9 98       	cbi	0x17, 1	; 23
    
/* SFIOR
		00000000
		||||||||----------0 	PSR10  NO EFFECT
		|||||||-----------0 	PSR2   NO EFFECT
		||||||------------0 	DISABLE PULL UP
		|||||-------------0 	ACME
		||||--------------0  	RESERVED
		|-----------------000	ADTS
*/
		SFIOR = 0x00;		
     158:	10 be       	out	0x30, r1	; 48
    
    
    /* ADC setting */

/*  ADCSRA
    100X0111
    |||||-----------111 128 分频,确保 8M/16M晶体都可以产生 50k-200K时钟
    ||||------------0   ADC中断使能,关闭中断
    |||-------------X   中断标志
    ||--------------0   关闭自动触发功能
    |---------------0   开始转换
    ----------------1   ADC 使能
*/    
		ADCSRA = 0x87;
     15a:	87 e8       	ldi	r24, 0x87	; 135
     15c:	86 b9       	out	0x06, r24	; 6




/*  ADMUX
		110xxxxx
		||||||||----------- 通道选择
		|||---------------- 0 右对齐 8bit in ADCL
		||----------------- 11 3.3V Avcc电压基准
*/ 
    ADMUX = 0x40;
     15e:	80 e4       	ldi	r24, 0x40	; 64
     160:	87 b9       	out	0x07, r24	; 7
    
		


    TIMSK = 0x00;      // disable all timer int
     162:	19 be       	out	0x39, r1	; 57
    /* 定时器0配置 */
    timer2_init();
     164:	0e 94 89 00 	call	0x112
#if 0    
    /* 定时器1配置 */
/*    
    00000000
    ||||||||
    |||||||------- 00
    |||||
    |||||--------- 00 
    |||
    | |------------00 COM B MORMAL IO
    |--------------00 COM A NORMAL IO
*/    
    TCCR1A = 0x00;


/*    
    00000000
    ||||||---------001 CLK no div

⌨️ 快捷键说明

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