📄 1602.lis
字号:
00A8 .dbend
00A8 .dbfunc e locate _locate fV
00A8 ; x -> R20
00A8 ; b -> R22
00A8 ; a -> R10
.even
00A8 _locate::
00A8 00D0 rcall push_xgsetF00C
00AA 622F mov R22,R18
00AC A02E mov R10,R16
00AE .dbline -1
00AE .dbline 97
00AE ; }
00AE ;
00AE ; //定位指令函数
00AE ; void locate(uchar a,uchar b)
00AE ; {
00AE .dbline 99
00AE ; uchar x;
00AE ; if(a==1)
00AE 8A2D mov R24,R10
00B0 8130 cpi R24,1
00B2 19F4 brne L19
00B4 X3:
00B4 .dbline 100
00B4 ; x=0x80+b-1;
00B4 462F mov R20,R22
00B6 4058 subi R20,128 ; addi 128
00B8 4150 subi R20,1
00BA L19:
00BA .dbline 101
00BA ; if(a==2)
00BA 8A2D mov R24,R10
00BC 8230 cpi R24,2
00BE 19F4 brne L21
00C0 X4:
00C0 .dbline 102
00C0 ; x=0xC0+b-1;
00C0 462F mov R20,R22
00C2 4054 subi R20,64 ; addi 192
00C4 4150 subi R20,1
00C6 L21:
00C6 .dbline 103
00C6 ; lcd_comm(x);
00C6 042F mov R16,R20
00C8 C8DF rcall _lcd_comm
00CA .dbline 104
00CA ; delay_ms(1);
00CA 01E0 ldi R16,1
00CC 10E0 ldi R17,0
00CE A1DF rcall _delay_ms
00D0 .dbline -2
00D0 L18:
00D0 .dbline 0 ; func end
00D0 00C0 rjmp pop_xgsetF00C
00D2 .dbsym r x 20 c
00D2 .dbsym r b 22 c
00D2 .dbsym r a 10 c
00D2 .dbend
00D2 .dbfunc e lcd_init _lcd_init fV
.even
00D2 _lcd_init::
00D2 .dbline -1
00D2 .dbline 109
00D2 ; }
00D2 ;
00D2 ; //LCD初始化函数
00D2 ; void lcd_init(void)
00D2 ; {
00D2 .dbline 110
00D2 ; lcd_comm(0x38); //写指令:8位数据、2行显示、5*8点阵
00D2 08E3 ldi R16,56
00D4 C2DF rcall _lcd_comm
00D6 .dbline 111
00D6 ; delay_ms(5);
00D6 05E0 ldi R16,5
00D8 10E0 ldi R17,0
00DA 9BDF rcall _delay_ms
00DC .dbline 112
00DC ; lcd_comm(0x06); //写指令:自左向右显示
00DC 06E0 ldi R16,6
00DE BDDF rcall _lcd_comm
00E0 .dbline 113
00E0 ; delay_ms(5);
00E0 05E0 ldi R16,5
00E2 10E0 ldi R17,0
00E4 96DF rcall _delay_ms
00E6 .dbline 114
00E6 ; lcd_comm(0x0C); //写指令:显示开
00E6 0CE0 ldi R16,12
00E8 B8DF rcall _lcd_comm
00EA .dbline 115
00EA ; delay_ms(5);
00EA 05E0 ldi R16,5
00EC 10E0 ldi R17,0
00EE 91DF rcall _delay_ms
00F0 .dbline 118
00F0 ; // lcd_comm(0x80); //写指令:第1行地址
00F0 ; // delay_ms(5);
00F0 ; lcd_comm(0x01); //写指令:CLS
00F0 01E0 ldi R16,1
00F2 B3DF rcall _lcd_comm
00F4 .dbline -2
00F4 L23:
00F4 .dbline 0 ; func end
00F4 0895 ret
00F6 .dbend
00F6 .dbfunc e main _main fV
00F6 ; i -> R20
.even
00F6 _main::
00F6 .dbline -1
00F6 .dbline 123
00F6 ; }
00F6 ;
00F6 ; //主函数
00F6 ; void main(void)
00F6 ; {
00F6 .dbline 126
00F6 ; uchar i;
00F6 ;
00F6 ; port_init(); //端口初始化
00F6 84DF rcall _port_init
00F8 .dbline 127
00F8 ; delay_ms(50); //延时500ms
00F8 02E3 ldi R16,50
00FA 10E0 ldi R17,0
00FC 8ADF rcall _delay_ms
00FE .dbline 128
00FE ; lcd_init(); //LCD初始化
00FE E9DF rcall _lcd_init
0100 .dbline 130
0100 ;
0100 ; delay_ms(50);
0100 02E3 ldi R16,50
0102 10E0 ldi R17,0
0104 86DF rcall _delay_ms
0106 .dbline 131
0106 ; locate(1,5); //第一行显示位置
0106 25E0 ldi R18,5
0108 01E0 ldi R16,1
010A CEDF rcall _locate
010C .dbline 132
010C ; lcd("Velcome!"); //第一行显示内容
010C 00E0 ldi R16,<L25
010E 10E0 ldi R17,>L25
0110 B5DF rcall _lcd
0112 .dbline 133
0112 ; locate(2,2); //第二行显示位置
0112 22E0 ldi R18,2
0114 02E0 ldi R16,2
0116 C8DF rcall _locate
0118 .dbline 134
0118 ; lcd("www.iccavr.com"); //第二行显示内容
0118 00E0 ldi R16,<L26
011A 10E0 ldi R17,>L26
011C AFDF rcall _lcd
011E .dbline 136
011E ;
011E ; for(i=5;i;i--) //先右移5位
011E 45E0 ldi R20,5
0120 06C0 rjmp L30
0122 L27:
0122 .dbline 137
0122 ; {
0122 .dbline 138
0122 ; lcd_comm(0x1C);
0122 0CE1 ldi R16,28
0124 9ADF rcall _lcd_comm
0126 .dbline 139
0126 ; delay_ms(100);
0126 04E6 ldi R16,100
0128 10E0 ldi R17,0
012A 73DF rcall _delay_ms
012C .dbline 140
012C ; }
012C L28:
012C .dbline 136
012C 4A95 dec R20
012E L30:
012E .dbline 136
012E 4423 tst R20
0130 C1F7 brne L27
0132 X5:
0132 1EC0 rjmp L32
0134 L31:
0134 .dbline 143
0134 ;
0134 ; while (1)
0134 ; {
0134 .dbline 144
0134 ; for(i=10;i;i--) //左移10位
0134 4AE0 ldi R20,10
0136 0BC0 rjmp L37
0138 L34:
0138 .dbline 145
0138 ; {
0138 .dbline 146
0138 ; lcd_comm(0x18);
0138 08E1 ldi R16,24
013A 8FDF rcall _lcd_comm
013C .dbline 147
013C ; if(i==6)delay_ms(2000); //移到中间暂停2秒
013C 4630 cpi R20,6
013E 19F4 brne L38
0140 X6:
0140 .dbline 147
0140 00ED ldi R16,2000
0142 17E0 ldi R17,7
0144 66DF rcall _delay_ms
0146 L38:
0146 .dbline 148
0146 ; delay_ms(400);
0146 00E9 ldi R16,400
0148 11E0 ldi R17,1
014A 63DF rcall _delay_ms
014C .dbline 149
014C ; }
014C L35:
014C .dbline 144
014C 4A95 dec R20
014E L37:
014E .dbline 144
014E 4423 tst R20
0150 99F7 brne L34
0152 X7:
0152 .dbline 150
0152 ; for(i=10;i;i--) //右移10位
0152 4AE0 ldi R20,10
0154 0BC0 rjmp L43
0156 L40:
0156 .dbline 151
0156 ; {
0156 .dbline 152
0156 ; lcd_comm(0x1C);
0156 0CE1 ldi R16,28
0158 80DF rcall _lcd_comm
015A .dbline 153
015A ; if(i==6)delay_ms(2000);
015A 4630 cpi R20,6
015C 19F4 brne L44
015E X8:
015E .dbline 153
015E 00ED ldi R16,2000
0160 17E0 ldi R17,7
0162 57DF rcall _delay_ms
0164 L44:
0164 .dbline 154
0164 ; delay_ms(400);
0164 00E9 ldi R16,400
0166 11E0 ldi R17,1
0168 54DF rcall _delay_ms
016A .dbline 155
016A ; }
016A L41:
016A .dbline 150
016A 4A95 dec R20
016C L43:
016C .dbline 150
016C 4423 tst R20
016E 99F7 brne L40
0170 X9:
0170 .dbline 156
0170 ; }
0170 L32:
0170 .dbline 142
0170 E1CF rjmp L31
0172 X10:
0172 .dbline -2
0172 L24:
0172 .dbline 0 ; func end
0172 0895 ret
0174 .dbsym r i 20 c
0174 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\我的文档\MYDESI~1\1602\1602.c
0000 L26:
0000 .blkb 15
.area idata
0000 7777772E6963636176722E636F6D00 .byte 'w,'w,'w,46,'i,'c,'c,'a,'v,'r,46,'c,'o,'m,0
.area data(ram, con, rel)
000F .dbfile D:\我的文档\MYDESI~1\1602\1602.c
000F L25:
000F .blkb 9
.area idata
000F 56656C636F6D652100 .byte 'V,'e,'l,'c,'o,'m,'e,33,0
.area data(ram, con, rel)
0018 .dbfile D:\我的文档\MYDESI~1\1602\1602.c
0018 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -