📄 system.lss
字号:
cdc: 82 2f mov r24, r18
u8_t loop1,loop2;
ptr = ptr + choice*8;
cde: 99 27 eor r25, r25
ce0: 64 e0 ldi r22, 0x04 ; 4
ce2: 88 0f add r24, r24
ce4: 99 1f adc r25, r25
ce6: 6a 95 dec r22
ce8: e1 f7 brne .-8 ; 0xce2 <display_character_char+0x1e>
cea: c8 0f add r28, r24
cec: d9 1f adc r29, r25
if((line>4)||(line==0))return 1;
cee: 8f 2d mov r24, r15
cf0: 81 50 subi r24, 0x01 ; 1
cf2: 84 30 cpi r24, 0x04 ; 4
cf4: 28 f4 brcc .+10 ; 0xd00 <display_character_char+0x3c>
if((tier>16)||(tier==0))return 1;
cf6: bd 2c mov r11, r13
cf8: ba 94 dec r11
cfa: 8f e0 ldi r24, 0x0F ; 15
cfc: 8b 15 cp r24, r11
cfe: 18 f4 brcc .+6 ; 0xd06 <display_character_char+0x42>
d00: 81 e0 ldi r24, 0x01 ; 1
d02: 90 e0 ldi r25, 0x00 ; 0
d04: 63 c0 rjmp .+198 ; 0xdcc <display_character_char+0x108>
if(line==1)
d06: 81 e0 ldi r24, 0x01 ; 1
d08: f8 16 cp r15, r24
d0a: 11 f4 brne .+4 ; 0xd10 <display_character_char+0x4c>
{
line = 0;
d0c: ff 24 eor r15, r15
d0e: 03 c0 rjmp .+6 ; 0xd16 <display_character_char+0x52>
}
else
{
line = line * 2 - 2;
d10: ff 0c add r15, r15
d12: 8e ef ldi r24, 0xFE ; 254
d14: f8 0e add r15, r24
}
tier = tier - 1;
d16: db 2c mov r13, r11
if(tier<8)
d18: 87 e0 ldi r24, 0x07 ; 7
d1a: 8b 15 cp r24, r11
d1c: 50 f1 brcs .+84 ; 0xd72 <display_character_char+0xae>
{
for(loop1=0;loop1<2;loop1++)
d1e: cc 24 eor r12, r12
{
write_left_command(0x40|(tier*8));//设置列
d20: 8b 2d mov r24, r11
d22: 99 27 eor r25, r25
d24: 53 e0 ldi r21, 0x03 ; 3
d26: 88 0f add r24, r24
d28: 99 1f adc r25, r25
d2a: 5a 95 dec r21
d2c: e1 f7 brne .-8 ; 0xd26 <display_character_char+0x62>
d2e: 08 2f mov r16, r24
d30: 00 64 ori r16, 0x40 ; 64
d32: 80 2f mov r24, r16
d34: 99 de rcall .-718 ; 0xa68 <write_left_command>
write_left_command(0xb8|line);
d36: 1f 2d mov r17, r15
d38: 18 6b ori r17, 0xB8 ; 184
d3a: 81 2f mov r24, r17
d3c: 95 de rcall .-726 ; 0xa68 <write_left_command>
write_right_command(0x40|(tier*8));//设置列
d3e: 80 2f mov r24, r16
d40: a3 de rcall .-698 ; 0xa88 <write_right_command>
write_right_command(0xb8|line);
d42: 81 2f mov r24, r17
d44: a1 de rcall .-702 ; 0xa88 <write_right_command>
d46: 43 e0 ldi r20, 0x03 ; 3
d48: e4 2e mov r14, r20
for(loop2=0;loop2<4;loop2++)
{
write_left_data((unsigned char)pgm_read_word_near(ptr));
d4a: fe 01 movw r30, r28
d4c: 05 91 lpm r16, Z+
d4e: 14 91 lpm r17, Z
d50: 80 2f mov r24, r16
d52: 99 27 eor r25, r25
d54: a9 de rcall .-686 ; 0xaa8 <write_left_data>
write_left_data((unsigned char)(pgm_read_word_near(ptr)>>8));
d56: 81 2f mov r24, r17
d58: 99 27 eor r25, r25
d5a: 99 27 eor r25, r25
d5c: a5 de rcall .-694 ; 0xaa8 <write_left_data>
ptr++;
d5e: 22 96 adiw r28, 0x02 ; 2
d60: ea 94 dec r14
d62: e7 fe sbrs r14, 7
d64: f2 cf rjmp .-28 ; 0xd4a <display_character_char+0x86>
}
line++;
d66: f3 94 inc r15
d68: c3 94 inc r12
d6a: 81 e0 ldi r24, 0x01 ; 1
d6c: 8c 15 cp r24, r12
d6e: c0 f6 brcc .-80 ; 0xd20 <display_character_char+0x5c>
d70: 2b c0 rjmp .+86 ; 0xdc8 <display_character_char+0x104>
}
}
else
{
tier = tier - 8;
d72: 88 ef ldi r24, 0xF8 ; 248
d74: d8 0e add r13, r24
for(loop1=0;loop1<2;loop1++)
d76: cc 24 eor r12, r12
{
write_left_command(0x40|(tier*8));//设置列
d78: 8d 2d mov r24, r13
d7a: 99 27 eor r25, r25
d7c: 23 e0 ldi r18, 0x03 ; 3
d7e: 88 0f add r24, r24
d80: 99 1f adc r25, r25
d82: 2a 95 dec r18
d84: e1 f7 brne .-8 ; 0xd7e <display_character_char+0xba>
d86: 08 2f mov r16, r24
d88: 00 64 ori r16, 0x40 ; 64
d8a: 80 2f mov r24, r16
d8c: 6d de rcall .-806 ; 0xa68 <write_left_command>
write_left_command(0xb8|line);
d8e: 1f 2d mov r17, r15
d90: 18 6b ori r17, 0xB8 ; 184
d92: 81 2f mov r24, r17
d94: 69 de rcall .-814 ; 0xa68 <write_left_command>
write_right_command(0x40|(tier*8));//设置列
d96: 80 2f mov r24, r16
d98: 77 de rcall .-786 ; 0xa88 <write_right_command>
write_right_command(0xb8|line);
d9a: 81 2f mov r24, r17
d9c: 75 de rcall .-790 ; 0xa88 <write_right_command>
d9e: 93 e0 ldi r25, 0x03 ; 3
da0: e9 2e mov r14, r25
for(loop2=0;loop2<4;loop2++)
{
write_right_data((unsigned char)pgm_read_word_near(ptr));
da2: fe 01 movw r30, r28
da4: 05 91 lpm r16, Z+
da6: 14 91 lpm r17, Z
da8: 80 2f mov r24, r16
daa: 99 27 eor r25, r25
dac: 90 de rcall .-736 ; 0xace <write_right_data>
write_right_data((unsigned char)(pgm_read_word_near(ptr)>>8));
dae: 81 2f mov r24, r17
db0: 99 27 eor r25, r25
db2: 99 27 eor r25, r25
db4: 8c de rcall .-744 ; 0xace <write_right_data>
ptr++;
db6: 22 96 adiw r28, 0x02 ; 2
db8: ea 94 dec r14
dba: e7 fe sbrs r14, 7
dbc: f2 cf rjmp .-28 ; 0xda2 <display_character_char+0xde>
}
line++;
dbe: f3 94 inc r15
dc0: c3 94 inc r12
dc2: 81 e0 ldi r24, 0x01 ; 1
dc4: 8c 15 cp r24, r12
dc6: c0 f6 brcc .-80 ; 0xd78 <display_character_char+0xb4>
}
}
return 0;
dc8: 80 e0 ldi r24, 0x00 ; 0
dca: 90 e0 ldi r25, 0x00 ; 0
dcc: df 91 pop r29
dce: cf 91 pop r28
dd0: 1f 91 pop r17
dd2: 0f 91 pop r16
dd4: ff 90 pop r15
dd6: ef 90 pop r14
dd8: df 90 pop r13
dda: cf 90 pop r12
ddc: bf 90 pop r11
dde: 08 95 ret
00000de0 <init_lcd>:
}
/*******************************************/
void init_lcd(void)
{
colse_back_light();//关闭液晶背光
de0: 43 98 cbi 0x08, 3 ; 8
reset_lcd();//复位液晶
de2: 44 98 cbi 0x08, 4 ; 8
double __tmp = ((F_CPU) / 4e3) * __ms;
if (__tmp < 1.0)
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
de4: 80 e0 ldi r24, 0x00 ; 0
de6: 90 e0 ldi r25, 0x00 ; 0
de8: 01 97 sbiw r24, 0x01 ; 1
dea: f1 f7 brne .-4 ; 0xde8 <init_lcd+0x8>
dec: 44 9a sbi 0x08, 4 ; 8
write_left_command(0x3f);//打开显示
dee: 8f e3 ldi r24, 0x3F ; 63
df0: 3b de rcall .-906 ; 0xa68 <write_left_command>
write_right_command(0x3f);
df2: 8f e3 ldi r24, 0x3F ; 63
df4: 49 de rcall .-878 ; 0xa88 <write_right_command>
write_left_command(0xc0);//显示起始行设置为1行
df6: 80 ec ldi r24, 0xC0 ; 192
df8: 37 de rcall .-914 ; 0xa68 <write_left_command>
write_right_command(0xc0);
dfa: 80 ec ldi r24, 0xC0 ; 192
dfc: 45 de rcall .-886 ; 0xa88 <write_right_command>
write_left_command(0xb8);//页面地址设置为0
dfe: 88 eb ldi r24, 0xB8 ; 184
e00: 33 de rcall .-922 ; 0xa68 <write_left_command>
write_right_command(0xb8);
e02: 88 eb ldi r24, 0xB8 ; 184
e04: 41 de rcall .-894 ; 0xa88 <write_right_command>
write_left_command(0x40);//列地址设置为0
e06: 80 e4 ldi r24, 0x40 ; 64
e08: 2f de rcall .-930 ; 0xa68 <write_left_command>
write_right_command(0x40);
e0a: 80 e4 ldi r24, 0x40 ; 64
e0c: 3d de rcall .-902 ; 0xa88 <write_right_command>
clear_lcd();
e0e: ae de rcall .-676 ; 0xb6c <clear_lcd>
double __tmp = ((F_CPU) / 4e3) * __ms;
if (__tmp < 1.0)
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
e10: 80 e0 ldi r24, 0x00 ; 0
e12: 90 e0 ldi r25, 0x00 ; 0
e14: 01 97 sbiw r24, 0x01 ; 1
e16: f1 f7 brne .-4 ; 0xe14 <init_lcd+0x34>
_delay_ms(1000);
open_back_light();
e18: 43 9a sbi 0x08, 3 ; 8
e1a: 08 95 ret
00000e1c <open_adc>:
unsigned int adc_data;
unsigned char adc_mark;
/*****************************************************/
void open_adc(unsigned char channel)
{
e1c: 98 2f mov r25, r24
if((channel<1)&&(channel>6))return;//超出通道范围则退出
ADCSRA = channel | 0x88;//使能ADC,开ADC结束中断,选择通道
e1e: 88 68 ori r24, 0x88 ; 136
e20: 80 93 7a 00 sts 0x007A, r24
ADMUX = 0x00;//选择ADC0通道,结果右对齐
e24: 10 92 7c 00 sts 0x007C, r1
DIDR0 = 0x01<<(channel - 1);//禁止数字缓冲器
e28: 29 2f mov r18, r25
e2a: 33 27 eor r19, r19
e2c: 21 50 subi r18, 0x01 ; 1
e2e: 30 40 sbci r19, 0x00 ; 0
e30: 81 e0 ldi r24, 0x01 ; 1
e32: 90 e0 ldi r25, 0x00 ; 0
e34: 02 c0 rjmp .+4 ; 0xe3a <open_adc+0x1e>
e36: 88 0f add r24, r24
e38: 99 1f adc r25, r25
e3a: 2a 95 dec r18
e3c: e2 f7 brpl .-8 ; 0xe36 <open_adc+0x1a>
e3e: 80 93 7e 00 sts 0x007E, r24
ADCSRA = ADCSRA | 0x40;//开始转换
e42: 80 91 7a 00 lds r24, 0x007A
e46: 80 64 ori r24, 0x40 ; 64
e48: 80 93 7a 00 sts 0x007A, r24
e4c: 08 95 ret
00000e4e <__vector_21>:
}
/*****************************************************/
ISR(ADC_vect)
{
e4e: 1f 92 push r1
e50: 0f 92 push r0
e52: 0f b6 in r0, 0x3f ; 63
e54: 0f 92 push r0
e56: 11 24 eor r1, r1
e58: 2f 93 push r18
e5a: 8f 93 push r24
e5c: 9f 93 push r25
unsigned char buffer1;
unsigned char buffer2;
buffer1 = ADCH;
e5e: 80 91 79 00 lds r24, 0x0079
buffer2 = ADCL;
e62: 20 91 78 00 lds r18, 0x0078
adc_data = (buffer1<<8)+buffer2;
e66: 99 27 eor r25, r25
e68: 98 2f mov r25, r24
e6a: 88 27 eor r24, r24
e6c: 82 0f add r24, r18
e6e: 91 1d adc r25, r1
e70: 90 93 04 01 sts 0x0104, r25
e74: 80 93 03 01 sts 0x0103, r24
adc_mark = 1;
e78: 81 e0 ldi r24, 0x01 ; 1
e7a: 80 93 02 01 sts 0x0102, r24
e7e: 9f 91 pop r25
e80: 8f 91 pop r24
e82: 2f 91 pop r18
e84: 0f 90 pop r0
e86: 0f be out 0x3f, r0 ; 63
e88: 0f 90 pop r0
e8a: 1f 90 pop r1
e8c: 18 95 reti
00000e8e <init_usart>:
unsigned char rs232writeP = 0;
/*****************************************************/
void init_usart(void)
{
UBRR0H = 0;
e8e: 10 92 c5 00 sts 0x00C5, r1
UBRR0L = 51;//8M晶体
e92: 83 e3 ldi r24, 0x33 ; 51
e94: 80 93 c4 00 sts 0x00C4, r24
UCSR0C = 0x06;//数据位8位
e98: 86 e0 ldi r24, 0x06 ; 6
e9a: 80 93 c2 00 sts 0x00C2, r24
UCSR0A = 0x00;
e9e: 10 92 c0 00 sts 0x00C0, r1
UCSR0B = 0x90;//使能接收
ea2: 80 e9 ldi r24, 0x90 ; 144
ea4: 80 93 c1 00 sts 0x00C1, r24
ea8: 08 95 ret
00000eaa <__vector_18>:
}
/*****************************************************/
ISR(USART_RX_vect)
{
eaa: 1f 92 push r1
eac: 0f 92 push r0
eae: 0f b6 in r0, 0x3f ; 63
eb0: 0f 92 push r0
eb2: 11 24 eor r1, r1
eb4: 8f 93 push r24
eb6: 9f 93 push r25
eb8: ef 93 push r30
eba: ff 93 push r31
rs232revbuf[rs232writeP]=UDR0;
ebc: 90 91 00 01 lds r25, 0x0100
ec0: e9 2f mov r30, r25
ec2: ff 27 eor r31, r31
ec4: eb 5f subi r30, 0xFB ; 251
ec6: fe 4f sbci r31, 0xFE ; 254
ec8: 80 91 c6 00 lds r24, 0x00C6
ecc: 80 83 st Z, r24
if(rs232writeP >= RSrevmax)rs232writeP = 0;
ece: 9a 30 cpi r25, 0x0A ; 10
ed0: 18 f0 brcs .+6 ; 0xed8 <__vector_18+0x2e>
ed2: 10 92 00 01 sts 0x0100, r1
ed6: 03 c0 rjmp .+6 ; 0xede <__vector_18+0x34>
else rs232writeP++;
ed8: 9f 5f subi r25, 0xFF ; 255
eda: 90 93 00 01 sts 0x0100, r25
ede: ff 91 pop r31
ee0: ef 91 pop r30
ee2: 9f 91 pop r25
ee4: 8f 91 pop r24
ee6: 0f 90 pop r0
ee8: 0f be out 0x3f, r0 ; 63
eea: 0f 90 pop r0
eec: 1f 90 pop r1
eee: 18 95 reti
00000ef0 <__vector_20>:
}
/*****************************************************/
ISR(USART_TX_vect)
{
ef0: 1f 92 push r1
ef2: 0f 92 push r0
ef4: 0f b6 in r0, 0x3f ; 63
ef6: 0f 92 push r0
ef8: 11 24 eor r1, r1
efa: 0f 90 pop r0
efc: 0f be out 0x3f, r0 ; 63
efe: 0f 90 pop r0
f00: 1f 90 pop r1
f02: 18 95 reti
00000f04 <send_com>:
}
/*****************************************************/
void send_com(unsigned char data)
{
UDR0 = data;
f04: 80 93 c6 00 sts 0x00C6, r24
UCSR0B = UCSR0B | 0x08;//发送数据
f08: 80 91 c1 00 lds r24, 0x00C1
f0c: 88 60 ori r24, 0x08 ; 8
f0e: 80 93 c1 00 sts 0x00C1, r24
f12: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -