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