📄 disp.lss
字号:
168: 1f 91 pop r17
16a: 08 95 ret
0000016c <disp_init>:
}
void disp_init(void)
{
16c: cf 93 push r28
16e: df 93 push r29
170: cd b7 in r28, 0x3d ; 61
172: de b7 in r29, 0x3e ; 62
174: 21 97 sbiw r28, 0x01 ; 1
176: 0f b6 in r0, 0x3f ; 63
178: f8 94 cli
17a: de bf out 0x3e, r29 ; 62
17c: 0f be out 0x3f, r0 ; 63
17e: cd bf out 0x3d, r28 ; 61
volatile unsigned char i;
SENDCOMA(0X0a); /*禁止WDT溢出标志输出*/
180: 8a e0 ldi r24, 0x0A ; 10
182: 0e 94 9b 00 call 0x136
SENDCOMA(0X52); //设置偏压,背极数 定义1/3 偏压4背极
186: 82 e5 ldi r24, 0x52 ; 82
188: 0e 94 9b 00 call 0x136
SENDCOMA(0X30); //*使用内部256KRC 振荡器*
18c: 80 e3 ldi r24, 0x30 ; 48
18e: 0e 94 9b 00 call 0x136
SENDCOMA(0X02); //*启动振荡器*
192: 82 e0 ldi r24, 0x02 ; 2
194: 0e 94 9b 00 call 0x136
SENDCOMA(0X06); //LCDON
198: 86 e0 ldi r24, 0x06 ; 6
19a: 0e 94 9b 00 call 0x136
SENDCOMA(0X08);//timer dis
19e: 88 e0 ldi r24, 0x08 ; 8
1a0: 0e 94 9b 00 call 0x136
SENDCOMB(0x00); //*把数据指针指回0 接着写入数据*
1a4: 80 e0 ldi r24, 0x00 ; 0
1a6: 0e 94 a8 00 call 0x150
for(i=0;i<15;i++) /*写入16 字节数据*/
1aa: 19 82 std Y+1, r1 ; 0x01
1ac: 89 81 ldd r24, Y+1 ; 0x01
1ae: 8f 30 cpi r24, 0x0F ; 15
1b0: 48 f4 brcc .+18 ; 0x1c4
{
SendByte(0x0); /*写入数据*/
1b2: 80 e0 ldi r24, 0x00 ; 0
1b4: 0e 94 97 00 call 0x12e
1b8: 89 81 ldd r24, Y+1 ; 0x01
1ba: 8f 5f subi r24, 0xFF ; 255
1bc: 89 83 std Y+1, r24 ; 0x01
1be: 89 81 ldd r24, Y+1 ; 0x01
1c0: 8f 30 cpi r24, 0x0F ; 15
1c2: b8 f3 brcs .-18 ; 0x1b2
1c4: 21 96 adiw r28, 0x01 ; 1
1c6: 0f b6 in r0, 0x3f ; 63
1c8: f8 94 cli
1ca: de bf out 0x3e, r29 ; 62
1cc: 0f be out 0x3f, r0 ; 63
1ce: cd bf out 0x3d, r28 ; 61
1d0: df 91 pop r29
1d2: cf 91 pop r28
1d4: 08 95 ret
000001d6 <disp_off>:
}
}
void disp_off(void)
{
SENDCOMA(0X04);//lcdoff
1d6: 84 e0 ldi r24, 0x04 ; 4
1d8: 0e 94 9b 00 call 0x136
SENDCOMA(0X00);//sys dis
1dc: 80 e0 ldi r24, 0x00 ; 0
1de: 0e 94 9b 00 call 0x136
1e2: 08 95 ret
000001e4 <disp>:
}
void disp(unsigned char add,unsigned char dat)
{
1e4: cf 93 push r28
1e6: c6 2f mov r28, r22
switch(add)
1e8: 99 27 eor r25, r25
1ea: 85 30 cpi r24, 0x05 ; 5
1ec: 91 05 cpc r25, r1
1ee: 31 f1 breq .+76 ; 0x23c
1f0: 86 30 cpi r24, 0x06 ; 6
1f2: 91 05 cpc r25, r1
1f4: 7c f4 brge .+30 ; 0x214
1f6: 82 30 cpi r24, 0x02 ; 2
1f8: 91 05 cpc r25, r1
1fa: d1 f0 breq .+52 ; 0x230
1fc: 83 30 cpi r24, 0x03 ; 3
1fe: 91 05 cpc r25, r1
200: 1c f4 brge .+6 ; 0x208
202: 01 97 sbiw r24, 0x01 ; 1
204: 99 f0 breq .+38 ; 0x22c
206: 2c c0 rjmp .+88 ; 0x260
208: 83 30 cpi r24, 0x03 ; 3
20a: 91 05 cpc r25, r1
20c: 99 f0 breq .+38 ; 0x234
20e: 04 97 sbiw r24, 0x04 ; 4
210: 99 f0 breq .+38 ; 0x238
212: 26 c0 rjmp .+76 ; 0x260
214: 87 30 cpi r24, 0x07 ; 7
216: 91 05 cpc r25, r1
218: a9 f0 breq .+42 ; 0x244
21a: 87 30 cpi r24, 0x07 ; 7
21c: 91 05 cpc r25, r1
21e: 84 f0 brlt .+32 ; 0x240
220: 88 30 cpi r24, 0x08 ; 8
222: 91 05 cpc r25, r1
224: 89 f0 breq .+34 ; 0x248
226: 09 97 sbiw r24, 0x09 ; 9
228: 89 f0 breq .+34 ; 0x24c
22a: 1a c0 rjmp .+52 ; 0x260
{
case 1: add=a1;break;
22c: 84 e0 ldi r24, 0x04 ; 4
22e: 0f c0 rjmp .+30 ; 0x24e
case 2: add=a2;break;
230: 8c e0 ldi r24, 0x0C ; 12
232: 0d c0 rjmp .+26 ; 0x24e
case 3: add=a3;break;
234: 84 e1 ldi r24, 0x14 ; 20
236: 0b c0 rjmp .+22 ; 0x24e
case 4: add=a4;break;
238: 8c e1 ldi r24, 0x1C ; 28
23a: 09 c0 rjmp .+18 ; 0x24e
case 5: add=a5;break;
23c: 84 e2 ldi r24, 0x24 ; 36
23e: 07 c0 rjmp .+14 ; 0x24e
case 6: add=a6;break;
240: 8c e2 ldi r24, 0x2C ; 44
242: 05 c0 rjmp .+10 ; 0x24e
case 7: add=a7;break;
244: 84 e3 ldi r24, 0x34 ; 52
246: 03 c0 rjmp .+6 ; 0x24e
case 8: add=a8;break;
248: 8c e3 ldi r24, 0x3C ; 60
24a: 01 c0 rjmp .+2 ; 0x24e
case 9: add=a9;break;
24c: 84 e4 ldi r24, 0x44 ; 68
//default: add=a1;break;
default: goto nodisp;
}
SENDCOMB(add); //write address
24e: 0e 94 a8 00 call 0x150
SendByte(pgm_read_byte(S+dat)); //write data
252: ec 2f mov r30, r28
254: ff 27 eor r31, r31
256: ec 5a subi r30, 0xAC ; 172
258: ff 4f sbci r31, 0xFF ; 255
25a: 84 91 lpm r24, Z
25c: 0e 94 97 00 call 0x12e
260: cf 91 pop r28
262: 08 95 ret
00000264 <__vector_8>:
nodisp:return;
}
SIGNAL(SIG_OVERFLOW1)
{
264: 1f 92 push r1
266: 0f 92 push r0
268: 0f b6 in r0, 0x3f ; 63
26a: 0f 92 push r0
26c: 11 24 eor r1, r1
26e: 2f 93 push r18
270: 3f 93 push r19
272: 4f 93 push r20
274: 5f 93 push r21
276: 6f 93 push r22
278: 7f 93 push r23
27a: 8f 93 push r24
27c: 9f 93 push r25
27e: af 93 push r26
280: bf 93 push r27
282: ef 93 push r30
284: ff 93 push r31
TCNT1H=0xc2;
286: 82 ec ldi r24, 0xC2 ; 194
288: 8d bd out 0x2d, r24 ; 45
TCNT1L=0xf7;
28a: 87 ef ldi r24, 0xF7 ; 247
28c: 8c bd out 0x2c, r24 ; 44
TCCR1B=0x04;
28e: 84 e0 ldi r24, 0x04 ; 4
290: 8e bd out 0x2e, r24 ; 46
disp(k,j);
292: 60 91 60 00 lds r22, 0x0060
296: 80 91 61 00 lds r24, 0x0061
29a: 0e 94 f2 00 call 0x1e4
if(k>9)
29e: 80 91 61 00 lds r24, 0x0061
2a2: 8a 30 cpi r24, 0x0A ; 10
2a4: 40 f0 brcs .+16 ; 0x2b6
{
k=1;
2a6: 81 e0 ldi r24, 0x01 ; 1
2a8: 80 93 61 00 sts 0x0061, r24
j=1;
2ac: 80 93 60 00 sts 0x0060, r24
disp_init();
2b0: 0e 94 b6 00 call 0x16c
2b4: 08 c0 rjmp .+16 ; 0x2c6
}
else
{
k++;
2b6: 8f 5f subi r24, 0xFF ; 255
2b8: 80 93 61 00 sts 0x0061, r24
j++;
2bc: 80 91 60 00 lds r24, 0x0060
2c0: 8f 5f subi r24, 0xFF ; 255
2c2: 80 93 60 00 sts 0x0060, r24
2c6: ff 91 pop r31
2c8: ef 91 pop r30
2ca: bf 91 pop r27
2cc: af 91 pop r26
2ce: 9f 91 pop r25
2d0: 8f 91 pop r24
2d2: 7f 91 pop r23
2d4: 6f 91 pop r22
2d6: 5f 91 pop r21
2d8: 4f 91 pop r20
2da: 3f 91 pop r19
2dc: 2f 91 pop r18
2de: 0f 90 pop r0
2e0: 0f be out 0x3f, r0 ; 63
2e2: 0f 90 pop r0
2e4: 1f 90 pop r1
2e6: 18 95 reti
000002e8 <start_t1>:
}
}
void start_t1(void)
{
TCNT1H=0xc2;
2e8: 82 ec ldi r24, 0xC2 ; 194
2ea: 8d bd out 0x2d, r24 ; 45
TCNT1L=0xf7; //设初值
2ec: 87 ef ldi r24, 0xF7 ; 247
2ee: 8c bd out 0x2c, r24 ; 44
TCCR1B=0X05; //启动定时器1,采用1024分频
2f0: 85 e0 ldi r24, 0x05 ; 5
2f2: 8e bd out 0x2e, r24 ; 46
TIMSK|=(1<<TOIE1);
2f4: 89 b7 in r24, 0x39 ; 57
2f6: 84 60 ori r24, 0x04 ; 4
2f8: 89 bf out 0x39, r24 ; 57
sei();
2fa: 78 94 sei
2fc: 08 95 ret
000002fe <main>:
}
int main(void)
{
2fe: cf e5 ldi r28, 0x5F ; 95
300: d4 e0 ldi r29, 0x04 ; 4
302: de bf out 0x3e, r29 ; 62
304: cd bf out 0x3d, r28 ; 61
//char k,j;
port_init();
306: 0e 94 4d 00 call 0x9a
disp_init();
30a: 0e 94 b6 00 call 0x16c
//for(k=1,j=9;k<10;k++,j--) disp(k,j);
start_t1();
30e: 0e 94 74 01 call 0x2e8
//timer_enable_int(BV(TOIE1)); /*允许TIMER1溢出中断*/
//sei(); /*打开全局中断允许*/
while(1)
{
delay_ms(100);
312: 84 e6 ldi r24, 0x64 ; 100
314: 90 e0 ldi r25, 0x00 ; 0
316: 0e 94 5b 00 call 0xb6
31a: fb cf rjmp .-10 ; 0x312
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -