📄 lcd-picture.lis
字号:
.module lcd-picture.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\lcd-picture.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20
0000 ; t -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 11
0004 ; #include <iom128v.h>
0004 ;
0004 ; #define req asm("sbi 0x03,6")
0004 ; #define cl_req asm("cbi 0x03,6")
0004 ; #define dat asm("sbi 0x18,0")
0004 ; #define cl_dat asm("cbi 0x18,0")
0004 ; #define cl_reset asm("cbi 0x15,3")
0004 ; #define set_reset asm("sbi 0x15,3")
0004 ; #define LCD 0x9000
0004 ; void delay (unsigned int t)
0004 ; {
0004 .dbline 13
0004 41E0 ldi R20,1
0006 01C0 xjmp L5
0008 L2:
0008 .dbline 13
0008 L3:
0008 .dbline 13
0008 4395 inc R20
000A L5:
000A .dbline 13
000A ; unsigned char i;
000A ; for (i=1;i<t;i++);
000A 242E mov R2,R20
000C 3324 clr R3
000E 2016 cp R2,R16
0010 3106 cpc R3,R17
0012 D0F3 brlo L2
0014 .dbline -2
0014 L1:
0014 0E940000 xcall pop_gset1
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r i 20 c
001A .dbsym r t 16 i
001A .dbend
001A .dbfunc e delay_1ms _delay_1ms fV
001A ; i -> R16,R17
.even
001A _delay_1ms::
001A .dbline -1
001A .dbline 16
001A ; }
001A ; void delay_1ms(void)
001A ; {
001A .dbline 18
001A 0027 clr R16
001C 1127 clr R17
001E 02C0 xjmp L10
0020 L7:
0020 .dbline 18
0020 L8:
0020 .dbline 18
0020 0F5F subi R16,255 ; offset = 1
0022 1F4F sbci R17,255
0024 L10:
0024 .dbline 18
0024 ; unsigned int i;
0024 ; for (i=0;i<2286;i++);
0024 0E3E cpi R16,238
0026 E8E0 ldi R30,8
0028 1E07 cpc R17,R30
002A D0F3 brlo L7
002C .dbline -2
002C L6:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r i 16 i
002E .dbend
002E .dbfunc e delay_nms _delay_nms fV
002E ; i -> R20,R21
002E ; n -> R22,R23
.even
002E _delay_nms::
002E 0E940000 xcall push_gset2
0032 B801 movw R22,R16
0034 .dbline -1
0034 .dbline 21
0034 ; }
0034 ; void delay_nms(unsigned int n)
0034 ; {
0034 .dbline 22
0034 ; unsigned int i=0;
0034 4427 clr R20
0036 5527 clr R21
0038 .dbline 23
0038 ; for (i=0;i<n;i++)
0038 03C0 xjmp L15
003A L12:
003A .dbline 24
003A EFDF xcall _delay_1ms
003C L13:
003C .dbline 23
003C 4F5F subi R20,255 ; offset = 1
003E 5F4F sbci R21,255
0040 L15:
0040 .dbline 23
0040 4617 cp R20,R22
0042 5707 cpc R21,R23
0044 D0F3 brlo L12
0046 .dbline -2
0046 L11:
0046 0E940000 xcall pop_gset2
004A .dbline 0 ; func end
004A 0895 ret
004C .dbsym r i 20 i
004C .dbsym r n 22 i
004C .dbend
004C .dbfunc e lcd_w _lcd_w fV
004C ; p -> R20,R21
004C ; data -> R16
.even
004C _lcd_w::
004C 0E940000 xcall push_gset1
0050 .dbline -1
0050 .dbline 29
0050 ; delay_1ms();
0050 ; }
0050 ;
0050 ;
0050 ; void lcd_w(unsigned char data)
0050 ; {
0050 .dbline 30
0050 ; unsigned char *p=(unsigned char *)(LCD);
0050 40E0 ldi R20,36864
0052 50E9 ldi R21,144
0054 L17:
0054 .dbline 32
0054 L18:
0054 .dbline 31
0054 ; while((PINE&0x80)!=0x00)
0054 81B1 in R24,0x1
0056 8078 andi R24,128
0058 E9F7 brne L17
005A .dbline 33
005A ; ;
005A ; dat;
005A C09A sbi 0x18,0
005C .dbline 34
005C ; *p=data;
005C FA01 movw R30,R20
005E 0083 std z+0,R16
0060 .dbline 35
0060 ; cl_dat;
0060 C098 cbi 0x18,0
0062 .dbline 36
0062 ; ;;
0062 .dbline 36
0062 .dbline 37
0062 ; req;
0062 1E9A sbi 0x03,6
0064 .dbline 38
0064 ; ;;
0064 .dbline 38
0064 L20:
0064 .dbline 40
0064 L21:
0064 .dbline 39
0064 ; while((PINE&0x80)==0x00)
0064 81B1 in R24,0x1
0066 8078 andi R24,128
0068 E9F3 breq L20
006A .dbline 41
006A ; ;
006A ; cl_req;
006A 1E98 cbi 0x03,6
006C .dbline -2
006C L16:
006C 0E940000 xcall pop_gset1
0070 .dbline 0 ; func end
0070 0895 ret
0072 .dbsym r p 20 pc
0072 .dbsym r data 16 c
0072 .dbend
0072 .dbfunc e lcd_init _lcd_init fV
.even
0072 _lcd_init::
0072 .dbline -1
0072 .dbline 44
0072 ; }
0072 ; void lcd_init (void)
0072 ; {
0072 .dbline 45
0072 ; MCUCR=MCUCR|0x80;
0072 85B7 in R24,0x35
0074 8068 ori R24,128
0076 85BF out 0x35,R24
0078 .dbline 46
0078 ; DDRB|=0x01;
0078 B89A sbi 0x17,0
007A .dbline 47
007A ; PORTB&=0xfe;
007A 88B3 in R24,0x18
007C 8E7F andi R24,254
007E 88BB out 0x18,R24
0080 .dbline 48
0080 ; DDRE=0x40;
0080 80E4 ldi R24,64
0082 82B9 out 0x2,R24
0084 .dbline 49
0084 ; PORTE=0xff;
0084 8FEF ldi R24,255
0086 83B9 out 0x3,R24
0088 .dbline 50
0088 ; cl_reset;
0088 AB98 cbi 0x15,3
008A .dbline 51
008A ; delay(10);
008A 0AE0 ldi R16,10
008C 10E0 ldi R17,0
008E B8DF xcall _delay
0090 .dbline 52
0090 ; set_reset;
0090 AB9A sbi 0x15,3
0092 .dbline 53
0092 ; delay(10);
0092 0AE0 ldi R16,10
0094 10E0 ldi R17,0
0096 B4DF xcall _delay
0098 .dbline 54
0098 ; cl_req;
0098 1E98 cbi 0x03,6
009A .dbline 55
009A ; delay(10);
009A 0AE0 ldi R16,10
009C 10E0 ldi R17,0
009E B0DF xcall _delay
00A0 .dbline -2
00A0 L23:
00A0 .dbline 0 ; func end
00A0 0895 ret
00A2 .dbend
00A2 .dbfunc e lcd_clear _lcd_clear fV
.even
00A2 _lcd_clear::
00A2 .dbline -1
00A2 .dbline 58
00A2 ; }
00A2 ; void lcd_clear (void)
00A2 ; {
00A2 .dbline 59
00A2 ; lcd_w(0xf4);
00A2 04EF ldi R16,244
00A4 D3DF xcall _lcd_w
00A6 .dbline -2
00A6 L24:
00A6 .dbline 0 ; func end
00A6 0895 ret
00A8 .dbend
00A8 .dbfunc e lcd_putsc _lcd_putsc fV
00A8 ; i -> R20,R21
00A8 ; ch -> R22,R23
00A8 ; y -> R10
00A8 ; x -> R12
.even
00A8 _lcd_putsc::
00A8 0E940000 xcall push_gset4
00AC A22E mov R10,R18
00AE C02E mov R12,R16
00B0 6885 ldd R22,y+8
00B2 7985 ldd R23,y+9
00B4 .dbline -1
00B4 .dbline 63
00B4 ; }
00B4 ;
00B4 ; void lcd_putsc (unsigned char x,unsigned char y,unsigned char *ch)
00B4 ; { unsigned int i;
00B4 .dbline 64
00B4 ; x+=2;
00B4 8C2D mov R24,R12
00B6 8E5F subi R24,254 ; addi 2
00B8 C82E mov R12,R24
00BA 23C0 xjmp L27
00BC L26:
00BC .dbline 66
00BC ; while (*ch!=0)
00BC ; {
00BC .dbline 67
00BC ; lcd_w(0xf0);
00BC 00EF ldi R16,240
00BE C6DF xcall _lcd_w
00C0 .dbline 68
00C0 ; lcd_w(x);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -