📄 main.lss
字号:
1d4: 1f 93 push r17
unsigned char hex_h;
unsigned char hex_l;
hex_h=hex/16;
1d6: 18 2f mov r17, r24
1d8: 12 95 swap r17
1da: 1f 70 andi r17, 0x0F ; 15
hex_l=hex%16;
1dc: 08 2f mov r16, r24
1de: 0f 70 andi r16, 0x0F ; 15
WriteData('0');
1e0: 80 e3 ldi r24, 0x30 ; 48
1e2: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
WriteData('x');
1e6: 88 e7 ldi r24, 0x78 ; 120
1e8: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
if(hex_h>=10) hex_h=hex_h-10+'A';
1ec: 1a 30 cpi r17, 0x0A ; 10
1ee: 18 f0 brcs .+6 ; 0x1f6 <DispHex+0x24>
1f0: 81 2f mov r24, r17
1f2: 89 5c subi r24, 0xC9 ; 201
1f4: 02 c0 rjmp .+4 ; 0x1fa <DispHex+0x28>
else hex_h+=0x30;
1f6: 81 2f mov r24, r17
1f8: 80 5d subi r24, 0xD0 ; 208
WriteData(hex_h);
1fa: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
if(hex_l>=10) hex_l=hex_l-10+'A';
1fe: 0a 30 cpi r16, 0x0A ; 10
200: 18 f0 brcs .+6 ; 0x208 <DispHex+0x36>
202: 80 2f mov r24, r16
204: 89 5c subi r24, 0xC9 ; 201
206: 02 c0 rjmp .+4 ; 0x20c <DispHex+0x3a>
else hex_l+=0x30;
208: 80 2f mov r24, r16
20a: 80 5d subi r24, 0xD0 ; 208
WriteData(hex_l);
20c: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
210: 1f 91 pop r17
212: 0f 91 pop r16
214: 08 95 ret
00000216 <XYHex>:
}
/************************
* 在(x,y)位置显示十六进制
* x,y: 位置
* hex: 要显示的数,为十进制数 0~255
************************/
void XYHex(unsigned char x,unsigned char y,unsigned char hex)
{
216: 1f 93 push r17
218: 14 2f mov r17, r20
Locate_xy(x,y);
21a: 0e 94 a8 00 call 0x150 ; 0x150 <Locate_xy>
DispHex(hex);
21e: 81 2f mov r24, r17
220: 0e 94 e9 00 call 0x1d2 ; 0x1d2 <DispHex>
224: 1f 91 pop r17
226: 08 95 ret
00000228 <DispInit>:
}
/************************
* 在(x,y)位置显示5位数字
* x,y: 位置
* data: 5位数字
* dot: 小数点位置
************************/
void DispInit(unsigned char x,unsigned char y,unsigned int data,unsigned char dot)
{
228: 7f 92 push r7
22a: 8f 92 push r8
22c: 9f 92 push r9
22e: af 92 push r10
230: bf 92 push r11
232: cf 92 push r12
234: df 92 push r13
236: ef 92 push r14
238: ff 92 push r15
23a: 0f 93 push r16
23c: 1f 93 push r17
23e: cf 93 push r28
240: df 93 push r29
242: 8a 01 movw r16, r20
244: b2 2e mov r11, r18
unsigned char bcd0;
unsigned char bcd1;
unsigned char bcd2;
unsigned char bcd3;
unsigned char bcd4;
Locate_xy(x,y);
246: 0e 94 a8 00 call 0x150 ; 0x150 <Locate_xy>
bcd4=(data/10000);
24a: c8 01 movw r24, r16
24c: 60 e1 ldi r22, 0x10 ; 16
24e: 77 e2 ldi r23, 0x27 ; 39
250: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
254: 9b 01 movw r18, r22
bcd3=(data%10000)/1000;
256: c8 01 movw r24, r16
258: 60 e1 ldi r22, 0x10 ; 16
25a: 77 e2 ldi r23, 0x27 ; 39
25c: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
260: 68 ee ldi r22, 0xE8 ; 232
262: 73 e0 ldi r23, 0x03 ; 3
264: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
268: eb 01 movw r28, r22
26a: 76 2e mov r7, r22
bcd2=(data%1000)/100;
26c: c8 01 movw r24, r16
26e: 68 ee ldi r22, 0xE8 ; 232
270: 73 e0 ldi r23, 0x03 ; 3
272: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
276: 64 e6 ldi r22, 0x64 ; 100
278: 70 e0 ldi r23, 0x00 ; 0
27a: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
27e: 7b 01 movw r14, r22
280: 96 2e mov r9, r22
bcd1=(data%100)/10;
282: c8 01 movw r24, r16
284: 64 e6 ldi r22, 0x64 ; 100
286: 70 e0 ldi r23, 0x00 ; 0
288: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
28c: 6a e0 ldi r22, 0x0A ; 10
28e: 70 e0 ldi r23, 0x00 ; 0
290: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
294: 6b 01 movw r12, r22
296: a6 2e mov r10, r22
bcd0=data%10;
298: c8 01 movw r24, r16
29a: 6a e0 ldi r22, 0x0A ; 10
29c: 70 e0 ldi r23, 0x00 ; 0
29e: 0e 94 13 02 call 0x426 ; 0x426 <__udivmodhi4>
2a2: 8c 01 movw r16, r24
2a4: 88 2e mov r8, r24
if(dot==4)
2a6: 84 e0 ldi r24, 0x04 ; 4
2a8: b8 16 cp r11, r24
2aa: 39 f4 brne .+14 ; 0x2ba <DispInit+0x92>
{
DispNum(bcd4);
2ac: 82 2f mov r24, r18
2ae: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
WriteData('.');
2b2: 8e e2 ldi r24, 0x2E ; 46
2b4: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
2b8: 42 c0 rjmp .+132 ; 0x33e <DispInit+0x116>
DispNum(bcd3);
DispNum(bcd2);
DispNum(bcd1);
DispNum(bcd0);
}
else if(dot==3)
2ba: 83 e0 ldi r24, 0x03 ; 3
2bc: b8 16 cp r11, r24
2be: 61 f4 brne .+24 ; 0x2d8 <DispInit+0xb0>
{
if(bcd4!=0) DispNum(bcd4); //为0时不显示
2c0: 22 23 and r18, r18
2c2: 19 f0 breq .+6 ; 0x2ca <DispInit+0xa2>
2c4: 82 2f mov r24, r18
2c6: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
DispNum(bcd3);
2ca: 8c 2f mov r24, r28
2cc: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
WriteData('.');
2d0: 8e e2 ldi r24, 0x2E ; 46
2d2: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
2d6: 36 c0 rjmp .+108 ; 0x344 <DispInit+0x11c>
DispNum(bcd2);
DispNum(bcd1);
DispNum(bcd0);
}
else if(dot==2)
2d8: 82 e0 ldi r24, 0x02 ; 2
2da: b8 16 cp r11, r24
2dc: a9 f4 brne .+42 ; 0x308 <DispInit+0xe0>
{
if(bcd4!=0) DispNum(bcd4); //为0时不显示
2de: 22 23 and r18, r18
2e0: 21 f0 breq .+8 ; 0x2ea <DispInit+0xc2>
2e2: 82 2f mov r24, r18
2e4: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
2e8: 02 c0 rjmp .+4 ; 0x2ee <DispInit+0xc6>
if((bcd4!=0)||((bcd4==0)&&(bcd3!=0))) DispNum(bcd3);
2ea: cc 23 and r28, r28
2ec: 19 f0 breq .+6 ; 0x2f4 <DispInit+0xcc>
2ee: 87 2d mov r24, r7
2f0: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
DispNum(bcd2);
2f4: 89 2d mov r24, r9
2f6: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
WriteData('.');
2fa: 8e e2 ldi r24, 0x2E ; 46
2fc: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
DispNum(bcd1);
300: 8a 2d mov r24, r10
302: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
306: 16 c0 rjmp .+44 ; 0x334 <DispInit+0x10c>
DispNum(bcd0);
}
else if(dot==1)
308: 81 e0 ldi r24, 0x01 ; 1
30a: b8 16 cp r11, r24
30c: a9 f4 brne .+42 ; 0x338 <DispInit+0x110>
{
if(bcd4!=0) DispNum(bcd4); //为0时不显示
30e: 22 23 and r18, r18
310: 21 f0 breq .+8 ; 0x31a <DispInit+0xf2>
312: 82 2f mov r24, r18
314: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
318: 1f c0 rjmp .+62 ; 0x358 <DispInit+0x130>
if((bcd4!=0)||((bcd4==0)&&(bcd3!=0))) DispNum(bcd3);
31a: cc 23 and r28, r28
31c: e9 f4 brne .+58 ; 0x358 <DispInit+0x130>
if((bcd4!=0)||((bcd4==0)&&(bcd3!=0))||((bcd4==0)&&(bcd3==0)&&(bcd2!=0))) DispNum(bcd2);
31e: ee 20 and r14, r14
320: 19 f0 breq .+6 ; 0x328 <DispInit+0x100>
322: 89 2d mov r24, r9
324: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
DispNum(bcd1);
328: 8a 2d mov r24, r10
32a: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
WriteData('.');
32e: 8e e2 ldi r24, 0x2E ; 46
330: 0e 94 87 00 call 0x10e ; 0x10e <WriteData>
DispNum(bcd0);
334: 88 2d mov r24, r8
336: 0d c0 rjmp .+26 ; 0x352 <DispInit+0x12a>
}
else
{
DispNum(bcd4);
338: 82 2f mov r24, r18
33a: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
DispNum(bcd3);
33e: 8c 2f mov r24, r28
340: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
DispNum(bcd2);
344: 8e 2d mov r24, r14
346: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
DispNum(bcd1);
34a: 8c 2d mov r24, r12
34c: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
DispNum(bcd0);
350: 80 2f mov r24, r16
352: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
356: 04 c0 rjmp .+8 ; 0x360 <DispInit+0x138>
358: 8c 2f mov r24, r28
35a: 0e 94 db 00 call 0x1b6 ; 0x1b6 <DispNum>
35e: e1 cf rjmp .-62 ; 0x322 <DispInit+0xfa>
360: df 91 pop r29
362: cf 91 pop r28
364: 1f 91 pop r17
366: 0f 91 pop r16
368: ff 90 pop r15
36a: ef 90 pop r14
36c: df 90 pop r13
36e: cf 90 pop r12
370: bf 90 pop r11
372: af 90 pop r10
374: 9f 90 pop r9
376: 8f 90 pop r8
378: 7f 90 pop r7
37a: 08 95 ret
0000037c <LCD_Init>:
}
}
/************************
* 液晶初始化
************************/
void LCD_Init(void)
{
37c: 80 e3 ldi r24, 0x30 ; 48
37e: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x30);
WriteComand(0x30);
382: 80 e3 ldi r24, 0x30 ; 48
384: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x30);
388: 80 e3 ldi r24, 0x30 ; 48
38a: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x02);
38e: 82 e0 ldi r24, 0x02 ; 2
390: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x28);/*4位总线....*/
394: 88 e2 ldi r24, 0x28 ; 40
396: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x01);/*清屏*/
39a: 81 e0 ldi r24, 0x01 ; 1
39c: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x02);/*归位*/
3a0: 82 e0 ldi r24, 0x02 ; 2
3a2: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x0c);/*显示开,光标开,闪烁开*/
3a6: 8c e0 ldi r24, 0x0C ; 12
3a8: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x06);/*光标自动右移,显示文字不动*/
3ac: 86 e0 ldi r24, 0x06 ; 6
3ae: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
WriteComand(0x80);/*设置显示地址*/
3b2: 80 e8 ldi r24, 0x80 ; 128
3b4: 0e 94 66 00 call 0xcc ; 0xcc <WriteComand>
3b8: 08 95 ret
000003ba <main>:
#include"delay.h"
#include"LCD1602.h"
int main(void)
{
3ba: 0e 94 be 01 call 0x37c ; 0x37c <LCD_Init>
LCD_Init();
//WriteComand(0x80);
//XYHex(0,0,255);
//Locate_xy(0,0);
//DispString("bjj9217@163.com");
//XYString(0,0,"Char vol:");
XYString(0,0,"U:");
3be: 40 e6 ldi r20, 0x60 ; 96
3c0: 50 e0 ldi r21, 0x00 ; 0
3c2: 60 e0 ldi r22, 0x00 ; 0
3c4: 80 e0 ldi r24, 0x00 ; 0
3c6: 0e 94 c8 00 call 0x190 ; 0x190 <XYString>
DispInit(2,0,1280,2);
3ca: 22 e0 ldi r18, 0x02 ; 2
3cc: 40 e0 ldi r20, 0x00 ; 0
3ce: 55 e0 ldi r21, 0x05 ; 5
3d0: 60 e0 ldi r22, 0x00 ; 0
3d2: 82 e0 ldi r24, 0x02 ; 2
3d4: 0e 94 14 01 call 0x228 ; 0x228 <DispInit>
XYString(7,0,"v");
3d8: 43 e6 ldi r20, 0x63 ; 99
3da: 50 e0 ldi r21, 0x00 ; 0
3dc: 60 e0 ldi r22, 0x00 ; 0
3de: 87 e0 ldi r24, 0x07 ; 7
3e0: 0e 94 c8 00 call 0x190 ; 0x190 <XYString>
XYString(0,1,"I:");
3e4: 45 e6 ldi r20, 0x65 ; 101
3e6: 50 e0 ldi r21, 0x00 ; 0
3e8: 61 e0 ldi r22, 0x01 ; 1
3ea: 80 e0 ldi r24, 0x00 ; 0
3ec: 0e 94 c8 00 call 0x190 ; 0x190 <XYString>
DispInit(2,1,900,2);
3f0: 22 e0 ldi r18, 0x02 ; 2
3f2: 44 e8 ldi r20, 0x84 ; 132
3f4: 53 e0 ldi r21, 0x03 ; 3
3f6: 61 e0 ldi r22, 0x01 ; 1
3f8: 82 e0 ldi r24, 0x02 ; 2
3fa: 0e 94 14 01 call 0x228 ; 0x228 <DispInit>
XYString(7,1,"A");
3fe: 48 e6 ldi r20, 0x68 ; 104
400: 50 e0 ldi r21, 0x00 ; 0
402: 61 e0 ldi r22, 0x01 ; 1
404: 87 e0 ldi r24, 0x07 ; 7
406: 0e 94 c8 00 call 0x190 ; 0x190 <XYString>
40a: ff cf rjmp .-2 ; 0x40a <main+0x50>
0000040c <delay_us>:
#include<avr/delay.h>
#define FREQ 4 /*4MHZ*/
void delay_us(unsigned int us)
{
40c: 9c 01 movw r18, r24
40e: e1 e0 ldi r30, 0x01 ; 1
410: f0 e0 ldi r31, 0x00 ; 0
412: 05 c0 rjmp .+10 ; 0x41e <delay_us+0x12>
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
414: cf 01 movw r24, r30
416: 01 97 sbiw r24, 0x01 ; 1
418: f1 f7 brne .-4 ; 0x416 <delay_us+0xa>
#define FREQ 4 /*4MHZ*/
void delay_us(unsigned int us)
{
for(;us>0;us--)
41a: 21 50 subi r18, 0x01 ; 1
41c: 30 40 sbci r19, 0x00 ; 0
41e: 21 15 cp r18, r1
420: 31 05 cpc r19, r1
422: c1 f7 brne .-16 ; 0x414 <delay_us+0x8>
424: 08 95 ret
00000426 <__udivmodhi4>:
426: aa 1b sub r26, r26
428: bb 1b sub r27, r27
42a: 51 e1 ldi r21, 0x11 ; 17
42c: 07 c0 rjmp .+14 ; 0x43c <__udivmodhi4_ep>
0000042e <__udivmodhi4_loop>:
42e: aa 1f adc r26, r26
430: bb 1f adc r27, r27
432: a6 17 cp r26, r22
434: b7 07 cpc r27, r23
436: 10 f0 brcs .+4 ; 0x43c <__udivmodhi4_ep>
438: a6 1b sub r26, r22
43a: b7 0b sbc r27, r23
0000043c <__udivmodhi4_ep>:
43c: 88 1f adc r24, r24
43e: 99 1f adc r25, r25
440: 5a 95 dec r21
442: a9 f7 brne .-22 ; 0x42e <__udivmodhi4_loop>
444: 80 95 com r24
446: 90 95 com r25
448: bc 01 movw r22, r24
44a: cd 01 movw r24, r26
44c: 08 95 ret
0000044e <_exit>:
44e: ff cf rjmp .-2 ; 0x44e <_exit>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -