📄 yejing.lis
字号:
.module yejing.c
.area text(rom, con, rel)
0000 .dbfile E:\训练\1602液晶\yejing.c
.area code(ram, con, rel)
0000 .dbfile E:\训练\1602液晶\yejing.c
.area lit(rom, con, rel)
0000 _table1::
0000 20202057656C636F6D20746F00 .byte 32,32,32,'W,'e,'l,'c,'o,'m,32,'t,'o,0
000D .dbsym e table1 _table1 A[13:13]kc
000D _table2::
000D 7777772E717573742E6564752E636E00 .byte 'w,'w,'w,46,'q,'u,'s,'t,46,'e,'d,'u,46,'c,'n,0
001D .dbsym e table2 _table2 A[16:16]kc
.area text(rom, con, rel)
0000 .dbfile E:\训练\1602液晶\yejing.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_xgsetF000
0004 .dbline -1
0004 .dbline 9
0004 ; #include<iom16v.h>
0004 ; #include<macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; #pragma data:code
0004 ; const uchar table1[]=" Welcom to"; //双引号将字符转换位ANSIC码
0004 ; const uchar table2[]="www.qust.edu.cn";
0004 ; void delay(uint ms)//毫秒级延时程序
0004 ; {
0004 .dbline 11
0004 ; uint i,j;
0004 ; for(i=0;i<ms;i++)
0004 4427 clr R20
0006 5527 clr R21
0008 0BC0 xjmp L5
000A L2:
000A .dbline 12
000A ; for(j=0;j<1141;j++);
000A 6627 clr R22
000C 7727 clr R23
000E 02C0 xjmp L9
0010 L6:
0010 .dbline 12
0010 L7:
0010 .dbline 12
0010 6F5F subi R22,255 ; offset = 1
0012 7F4F sbci R23,255
0014 L9:
0014 .dbline 12
0014 6537 cpi R22,117
0016 E4E0 ldi R30,4
0018 7E07 cpc R23,R30
001A D0F3 brlo L6
001C X0:
001C L3:
001C .dbline 11
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L5:
0020 .dbline 11
0020 4017 cp R20,R16
0022 5107 cpc R21,R17
0024 90F3 brlo L2
0026 X1:
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0C940000 xjmp pop_xgsetF000
002A .dbsym r i 20 i
002A .dbsym r j 22 i
002A .dbsym r ms 16 i
002A .dbend
002A .dbfunc e write_com _write_com fV
002A ; com -> R10
.even
002A _write_com::
002A AA92 st -y,R10
002C A02E mov R10,R16
002E .dbline -1
002E .dbline 16
002E ; }
002E ;
002E ; void write_com(uchar com)//写指令
002E ; {
002E .dbline 17
002E ; PORTA&=~BIT(5);
002E DD98 cbi 0x1b,5
0030 .dbline 18
0030 ; PORTA&=~BIT(6);
0030 DE98 cbi 0x1b,6
0032 .dbline 19
0032 ; PORTB=com;
0032 A8BA out 0x18,R10
0034 .dbline 20
0034 ; PORTA|=BIT(7);
0034 DF9A sbi 0x1b,7
0036 .dbline 21
0036 ; delay(1);
0036 01E0 ldi R16,1
0038 10E0 ldi R17,0
003A E2DF xcall _delay
003C .dbline 22
003C ; PORTA&=~BIT(7);
003C DF98 cbi 0x1b,7
003E .dbline -2
003E L10:
003E .dbline 0 ; func end
003E A990 ld R10,y+
0040 0895 ret
0042 .dbsym r com 10 c
0042 .dbend
0042 .dbfunc e write_dat _write_dat fV
0042 ; dat -> R10
.even
0042 _write_dat::
0042 AA92 st -y,R10
0044 A02E mov R10,R16
0046 .dbline -1
0046 .dbline 26
0046 ; }
0046 ;
0046 ; void write_dat(uchar dat)//写数据
0046 ; {
0046 .dbline 27
0046 ; PORTA|=BIT(5);
0046 DD9A sbi 0x1b,5
0048 .dbline 28
0048 ; PORTA&=~BIT(6);
0048 DE98 cbi 0x1b,6
004A .dbline 29
004A ; PORTB=dat;
004A A8BA out 0x18,R10
004C .dbline 30
004C ; PORTA|=BIT(7);
004C DF9A sbi 0x1b,7
004E .dbline 31
004E ; delay(1);
004E 01E0 ldi R16,1
0050 10E0 ldi R17,0
0052 D6DF xcall _delay
0054 .dbline 32
0054 ; PORTA&=~BIT(7);
0054 DF98 cbi 0x1b,7
0056 .dbline -2
0056 L11:
0056 .dbline 0 ; func end
0056 A990 ld R10,y+
0058 0895 ret
005A .dbsym r dat 10 c
005A .dbend
005A .dbfunc e main _main fV
005A ; i -> R20
.even
005A _main::
005A .dbline -1
005A .dbline 36
005A ; }
005A ;
005A ; void main()
005A ; {
005A .dbline 38
005A ; uchar i;
005A ; DDRB=0XFF;
005A 8FEF ldi R24,255
005C 87BB out 0x17,R24
005E .dbline 39
005E ; DDRA|=BIT(5)|BIT(6)|BIT(7);
005E 8AB3 in R24,0x1a
0060 806E ori R24,224
0062 8ABB out 0x1a,R24
0064 .dbline 40
0064 ; PORTA&=~BIT(7);
0064 DF98 cbi 0x1b,7
0066 .dbline 41
0066 ; write_com(0x38);//显示模式设置
0066 08E3 ldi R16,56
0068 E0DF xcall _write_com
006A .dbline 42
006A ; delay(5);
006A 05E0 ldi R16,5
006C 10E0 ldi R17,0
006E C8DF xcall _delay
0070 .dbline 43
0070 ; write_com(0x01);//清屏,很重要!
0070 01E0 ldi R16,1
0072 DBDF xcall _write_com
0074 .dbline 44
0074 ; delay(5);
0074 05E0 ldi R16,5
0076 10E0 ldi R17,0
0078 C3DF xcall _delay
007A .dbline 46
007A ; //write_com(0x0f);//显示光标并闪烁
007A ; write_com(0x0c);//不显示光标
007A 0CE0 ldi R16,12
007C D6DF xcall _write_com
007E .dbline 47
007E ; delay(5);
007E 05E0 ldi R16,5
0080 10E0 ldi R17,0
0082 BEDF xcall _delay
0084 .dbline 48
0084 ; write_com(0x06);//显示光标移动设置
0084 06E0 ldi R16,6
0086 D1DF xcall _write_com
0088 .dbline 49
0088 ; delay(5);
0088 05E0 ldi R16,5
008A 10E0 ldi R17,0
008C B9DF xcall _delay
008E .dbline 50
008E ; write_com(0x80+0x10);
008E 00E9 ldi R16,144
0090 CCDF xcall _write_com
0092 .dbline 51
0092 ; delay(5);
0092 05E0 ldi R16,5
0094 10E0 ldi R17,0
0096 B4DF xcall _delay
0098 .dbline 52
0098 ; for(i=0;i<12;i++)//第一行显示
0098 4427 clr R20
009A 0CC0 xjmp L16
009C L13:
009C .dbline 53
009C ; {
009C .dbline 54
009C ; write_dat(table1[i]);
009C 80E0 ldi R24,<_table1
009E 90E0 ldi R25,>_table1
00A0 E42F mov R30,R20
00A2 FF27 clr R31
00A4 E80F add R30,R24
00A6 F91F adc R31,R25
00A8 0491 lpm R16,Z
00AA CBDF xcall _write_dat
00AC .dbline 55
00AC ; delay(5);
00AC 05E0 ldi R16,5
00AE 10E0 ldi R17,0
00B0 A7DF xcall _delay
00B2 .dbline 56
00B2 ; }
00B2 L14:
00B2 .dbline 52
00B2 4395 inc R20
00B4 L16:
00B4 .dbline 52
00B4 4C30 cpi R20,12
00B6 90F3 brlo L13
00B8 X2:
00B8 .dbline 57
00B8 ; write_com(0x80+0x50);//第二行显示
00B8 00ED ldi R16,208
00BA B7DF xcall _write_com
00BC .dbline 58
00BC ; delay(5);
00BC 05E0 ldi R16,5
00BE 10E0 ldi R17,0
00C0 9FDF xcall _delay
00C2 .dbline 59
00C2 ; for(i=0;i<15;i++)
00C2 4427 clr R20
00C4 0CC0 xjmp L20
00C6 L17:
00C6 .dbline 60
00C6 ; {
00C6 .dbline 61
00C6 ; write_dat(table2[i]);
00C6 80E0 ldi R24,<_table2
00C8 90E0 ldi R25,>_table2
00CA E42F mov R30,R20
00CC FF27 clr R31
00CE E80F add R30,R24
00D0 F91F adc R31,R25
00D2 0491 lpm R16,Z
00D4 B6DF xcall _write_dat
00D6 .dbline 62
00D6 ; delay(5);
00D6 05E0 ldi R16,5
00D8 10E0 ldi R17,0
00DA 92DF xcall _delay
00DC .dbline 63
00DC ; }
00DC L18:
00DC .dbline 59
00DC 4395 inc R20
00DE L20:
00DE .dbline 59
00DE 4F30 cpi R20,15
00E0 90F3 brlo L17
00E2 X3:
00E2 .dbline 64
00E2 ; for(i=0;i<16;i++)
00E2 4427 clr R20
00E4 06C0 xjmp L24
00E6 L21:
00E6 .dbline 65
00E6 ; {
00E6 .dbline 66
00E6 ; write_com(0x1c);//从左到右移动显示屏
00E6 0CE1 ldi R16,28
00E8 A0DF xcall _write_com
00EA .dbline 67
00EA ; delay(230);
00EA 06EE ldi R16,230
00EC 10E0 ldi R17,0
00EE 88DF xcall _delay
00F0 .dbline 68
00F0 ; }
00F0 L22:
00F0 .dbline 64
00F0 4395 inc R20
00F2 L24:
00F2 .dbline 64
00F2 4031 cpi R20,16
00F4 C0F3 brlo L21
00F6 X4:
00F6 .dbline -2
00F6 L12:
00F6 .dbline 0 ; func end
00F6 0895 ret
00F8 .dbsym r i 20 c
00F8 .dbend
00F8 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -