📄 1602b_lcd_test.lis
字号:
.module _1602B_LCD_TEST.c
.area lit(rom, con, rel)
0000 _table::
0000 3031323334353637383900 .byte 48,49,50,51,52,53,54,55,56,57,0
000B .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
000B .dbsym e table _table A[11:11]kc
000B _love::
000B 49204C6F766520552C4D65694D656921 .byte 'I,32,'L,'o,'v,'e,32,'U,44,'M,'e,'i,'M,'e,'i,33
001B 00 .byte 0
001C .dbsym e love _love A[17:17]kc
.area data(ram, con, rel)
0000 .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
0000 _h::
0000 .blkb 1
.area idata
0000 0A .byte 10
.area data(ram, con, rel)
0001 .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
0001 .dbsym e h _h c
0001 _m::
0001 .blkb 1
.area idata
0001 28 .byte 40
.area data(ram, con, rel)
0002 .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
0002 .dbsym e m _m c
0002 _s::
0002 .blkb 1
.area idata
0002 20 .byte 32
.area data(ram, con, rel)
0003 .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
0003 .dbsym e s _s c
0003 _ch1::
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
0004 .dbsym e ch1 _ch1 c
.area text(rom, con, rel)
0000 .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
0000 .dbfunc e timer1_init _timer1_init fV
.even
0000 _timer1_init::
0000 .dbline -1
0000 .dbline 15
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include <math.h>
0000 ; #include "1602LCD.h"
0000 ; const unsigned char table[]="0123456789";
0000 ; const unsigned char love[]="I Love U,MeiMei!";
0000 ; unsigned char h=0x0A,m=0x28,s=0x20,temp1;
0000 ; unsigned char ch,ch1=0;
0000 ;
0000 ; //TIMER1 initialize - prescale:1024
0000 ; // WGM: 0) Normal, TOP=0xFFFF
0000 ; // desired value: 1Hz
0000 ; // actual value: 1.000Hz (0.0%)
0000 ; void timer1_init(void)
0000 ; {
0000 .dbline 16
0000 ; TCCR1B = 0x00; //stop
0000 2224 clr R2
0002 2EBC out 0x2e,R2
0004 .dbline 17
0004 ; TCNT1H = 0xF0; //setup
0004 80EF ldi R24,240
0006 8DBD out 0x2d,R24
0008 .dbline 18
0008 ; TCNT1L = 0xBE;
0008 8EEB ldi R24,190
000A 8CBD out 0x2c,R24
000C .dbline 19
000C ; OCR1AH = 0x0F;
000C 8FE0 ldi R24,15
000E 8BBD out 0x2b,R24
0010 .dbline 20
0010 ; OCR1AL = 0x42;
0010 82E4 ldi R24,66
0012 8ABD out 0x2a,R24
0014 .dbline 21
0014 ; OCR1BH = 0x0F;
0014 8FE0 ldi R24,15
0016 89BD out 0x29,R24
0018 .dbline 22
0018 ; OCR1BL = 0x42;
0018 82E4 ldi R24,66
001A 88BD out 0x28,R24
001C .dbline 23
001C ; ICR1H = 0x0F;
001C 8FE0 ldi R24,15
001E 87BD out 0x27,R24
0020 .dbline 24
0020 ; ICR1L = 0x42;
0020 82E4 ldi R24,66
0022 86BD out 0x26,R24
0024 .dbline 25
0024 ; TCCR1A = 0x00;
0024 2FBC out 0x2f,R2
0026 .dbline 26
0026 ; TCCR1B = 0x04; //start Timer
0026 84E0 ldi R24,4
0028 8EBD out 0x2e,R24
002A .dbline -2
002A L1:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
.area vector(rom, abs)
.org 16
0010 16C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
002C .dbfile I:\AVR\1602\MEGA8-1602\CLOCKA~1\test6\1602B_LCD_TEST.c
002C .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
002C _timer1_ovf_isr::
002C 00D0 rcall push_lset
002E 2297 sbiw R28,2
0030 .dbline -1
0030 .dbline 31
0030 ; }
0030 ;
0030 ; #pragma interrupt_handler timer1_ovf_isr:9
0030 ; void timer1_ovf_isr(void)
0030 ; {
0030 .dbline 33
0030 ; //TIMER1 has overflowed
0030 ; TCNT1H = 0xF0; //reload counter high value
0030 80EF ldi R24,240
0032 8DBD out 0x2d,R24
0034 .dbline 34
0034 ; TCNT1L = 0xBE; //reload counter low value
0034 8EEB ldi R24,190
0036 8CBD out 0x2c,R24
0038 .dbline 35
0038 ; s++;
0038 80910200 lds R24,_s
003C 8F5F subi R24,255 ; addi 1
003E 80930200 sts _s,R24
0042 .dbline 36
0042 ; if(s>0x3B)
0042 8BE3 ldi R24,59
0044 20900200 lds R2,_s
0048 8215 cp R24,R2
004A 40F4 brsh L3
004C .dbline 37
004C ; {s=0x0;
004C .dbline 37
004C 2224 clr R2
004E 20920200 sts _s,R2
0052 .dbline 38
0052 ; m++;}
0052 80910100 lds R24,_m
0056 8F5F subi R24,255 ; addi 1
0058 80930100 sts _m,R24
005C .dbline 38
005C L3:
005C .dbline 39
005C ; if(m>0x3B)
005C 8BE3 ldi R24,59
005E 20900100 lds R2,_m
0062 8215 cp R24,R2
0064 40F4 brsh L5
0066 .dbline 40
0066 ; {m=0x0;
0066 .dbline 40
0066 2224 clr R2
0068 20920100 sts _m,R2
006C .dbline 41
006C ; h++;}
006C 80910000 lds R24,_h
0070 8F5F subi R24,255 ; addi 1
0072 80930000 sts _h,R24
0076 .dbline 41
0076 L5:
0076 .dbline 42
0076 ; if(h>0x0C)
0076 8CE0 ldi R24,12
0078 20900000 lds R2,_h
007C 8215 cp R24,R2
007E 18F4 brsh L7
0080 .dbline 43
0080 ; {h=0x0;}
0080 .dbline 43
0080 2224 clr R2
0082 20920000 sts _h,R2
0086 .dbline 43
0086 L7:
0086 .dbline 45
0086 ;
0086 ; write_s(s);
0086 00910200 lds R16,_s
008A 1127 clr R17
008C 95D0 rcall _write_s
008E .dbline 46
008E ; write_m(m);
008E 00910100 lds R16,_m
0092 1127 clr R17
0094 66D0 rcall _write_m
0096 .dbline 47
0096 ; write_h(h);
0096 00910000 lds R16,_h
009A 1127 clr R17
009C 37D0 rcall _write_h
009E .dbline 48
009E ; LCD_set_xy(ch,1);
009E 21E0 ldi R18,1
00A0 00910000 lds R16,_ch
00A4 00D0 rcall _LCD_set_xy
00A6 .dbline 49
00A6 ; LCD_write_char(0,love[ch1]);
00A6 80E0 ldi R24,<_love
00A8 90E0 ldi R25,>_love
00AA E0910300 lds R30,_ch1
00AE FF27 clr R31
00B0 E80F add R30,R24
00B2 F91F adc R31,R25
00B4 2491 lpm R18,Z
00B6 3327 clr R19
00B8 0027 clr R16
00BA 1127 clr R17
00BC 00D0 rcall _LCD_write_char
00BE .dbline 50
00BE ; ch++;
00BE 80910000 lds R24,_ch
00C2 8F5F subi R24,255 ; addi 1
00C4 80930000 sts _ch,R24
00C8 .dbline 51
00C8 ; ch1++;
00C8 80910300 lds R24,_ch1
00CC 8F5F subi R24,255 ; addi 1
00CE 80930300 sts _ch1,R24
00D2 .dbline 52
00D2 ; if(ch>15)
00D2 8FE0 ldi R24,15
00D4 20900000 lds R2,_ch
00D8 8215 cp R24,R2
00DA 20F4 brsh L9
00DC .dbline 53
00DC ; {ch=ch-16;
00DC .dbline 53
00DC 822D mov R24,R2
00DE 8051 subi R24,16
00E0 80930000 sts _ch,R24
00E4 .dbline 54
00E4 ; }
00E4 L9:
00E4 .dbline 55
00E4 80E1 ldi R24,16
00E6 20900300 lds R2,_ch1
00EA 8215 cp R24,R2
00EC 60F4 brsh L11
00EE .dbline 56
00EE .dbline 56
00EE 2224 clr R2
00F0 20920300 sts _ch1,R2
00F4 .dbline 57
00F4 20920000 sts _ch,R2
00F8 .dbline 58
00F8 80E0 ldi R24,<L13
00FA 90E0 ldi R25,>L13
00FC 9983 std y+1,R25
00FE 8883 std y+0,R24
0100 21E0 ldi R18,1
0102 0027 clr R16
0104 00D0 rcall _LCD_write_string
0106 .dbline 58
0106 L11:
0106 .dbline -2
0106 L2:
0106 2296 adiw R28,2
0108 00D0 rcall pop_lset
010A .dbline 0 ; func end
010A 1895 reti
010C .dbend
010C .dbfunc e write_h _write_h fV
010C ; temp -> R20
010C ; h -> R22
.even
010C _write_h::
010C 00D0 rcall push_gset2
010E 602F mov R22,R16
0110 .dbline -1
0110 .dbline 61
0110 ; if(ch1>16)
0110 ; {ch1=0;
0110 ; ch=0;
0110 ; LCD_write_string(0,1," ");}
0110 ; }
0110 ; void write_h(unsigned char h)
0110 ; { unsigned char temp=0;
0110 .dbline 61
0110 4427 clr R20
0112 .dbline 62
0112 ; LCD_set_xy(0,0);
0112 2227 clr R18
0114 0027 clr R16
0116 00D0 rcall _LCD_set_xy
0118 .dbline 63
0118 ; temp=h/10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -