📄 键盘.lis
字号:
.module _键盘.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\键盘\键盘.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 ; #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 ;
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 l_delay _l_delay fV
004C ; i -> R16
.even
004C _l_delay::
004C .dbline -1
004C .dbline 28
004C ; delay_1ms();
004C ; }
004C ;
004C ; void l_delay() /* 延时 */
004C ; {
004C .dbline 29
004C ; unsigned char i=33;
004C 01E2 ldi R16,33
004E 01C0 xjmp L18
0050 L17:
0050 .dbline 32
0050 .dbline 33
0050 0A95 dec R16
0052 .dbline 34
0052 L18:
0052 .dbline 31
0052 ;
0052 ; while(i!=0)
0052 0023 tst R16
0054 E9F7 brne L17
0056 .dbline -2
0056 L16:
0056 .dbline 0 ; func end
0056 0895 ret
0058 .dbsym r i 16 c
0058 .dbend
0058 .dbfunc e s_delay _s_delay fV
0058 ; i -> R16
.even
0058 _s_delay::
0058 .dbline -1
0058 .dbline 38
0058 ; {
0058 ; i--;
0058 ; }
0058 ; }
0058 ;
0058 ; void s_delay() /* 延时 */
0058 ; {
0058 .dbline 39
0058 ; unsigned char i=11;
0058 0BE0 ldi R16,11
005A 01C0 xjmp L22
005C L21:
005C .dbline 42
005C .dbline 43
005C 0A95 dec R16
005E .dbline 44
005E L22:
005E .dbline 41
005E ;
005E ; while(i!=0)
005E 0023 tst R16
0060 E9F7 brne L21
0062 .dbline -2
0062 L20:
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbsym r i 16 c
0064 .dbend
0064 .dbfunc e move _move fV
0064 ; i -> R20,R21
.even
0064 _move::
0064 0E940000 xcall push_gset1
0068 .dbline -1
0068 .dbline 48
0068 ; {
0068 ; i--;
0068 ; }
0068 ; }
0068 ;
0068 ; void move()
0068 ; {int i;
0068 .dbline 49
0068 ; for(i=0;i<128;i++)
0068 4427 clr R20
006A 5527 clr R21
006C L25:
006C .dbline 50
006C .dbline 50
006C 08EF ldi R16,248
006E 10E0 ldi R17,0
0070 1FD0 xcall _lcd_w
0072 .dbline 51
0072 02E0 ldi R16,2
0074 10E0 ldi R17,0
0076 DBDF xcall _delay_nms
0078 .dbline 51
0078 L26:
0078 .dbline 49
0078 4F5F subi R20,255 ; offset = 1
007A 5F4F sbci R21,255
007C .dbline 49
007C 4038 cpi R20,128
007E E0E0 ldi R30,0
0080 5E07 cpc R21,R30
0082 A4F3 brlt L25
0084 .dbline -2
0084 L24:
0084 0E940000 xcall pop_gset1
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym r i 20 I
008A .dbend
008A .dbfunc e move1 _move1 fV
008A ; i -> R20,R21
.even
008A _move1::
008A 0E940000 xcall push_gset1
008E .dbline -1
008E .dbline 55
008E ; {lcd_w(0xf8);
008E ; delay_nms(2);}
008E ; }
008E ;
008E ; void move1()
008E ; {int i;
008E .dbline 56
008E ; for(i=0;i<64;i++)
008E 4427 clr R20
0090 5527 clr R21
0092 L30:
0092 .dbline 57
0092 .dbline 57
0092 06EF ldi R16,246
0094 10E0 ldi R17,0
0096 0CD0 xcall _lcd_w
0098 .dbline 58
0098 02E0 ldi R16,2
009A 10E0 ldi R17,0
009C C8DF xcall _delay_nms
009E .dbline 58
009E L31:
009E .dbline 56
009E 4F5F subi R20,255 ; offset = 1
00A0 5F4F sbci R21,255
00A2 .dbline 56
00A2 4034 cpi R20,64
00A4 E0E0 ldi R30,0
00A6 5E07 cpc R21,R30
00A8 A4F3 brlt L30
00AA .dbline -2
00AA L29:
00AA 0E940000 xcall pop_gset1
00AE .dbline 0 ; func end
00AE 0895 ret
00B0 .dbsym r i 20 I
00B0 .dbend
00B0 .dbfunc e lcd_w _lcd_w fV
00B0 ; p -> R20,R21
00B0 ; data -> R16
.even
00B0 _lcd_w::
00B0 0E940000 xcall push_gset1
00B4 .dbline -1
00B4 .dbline 61
00B4 ; {lcd_w(0xf6);
00B4 ; delay_nms(2);}
00B4 ; }
00B4 ; void lcd_w(unsigned char data)
00B4 ; {unsigned char *p=(unsigned char *)(LCD);
00B4 .dbline 61
00B4 40E0 ldi R20,36864
00B6 50E9 ldi R21,144
00B8 L35:
00B8 .dbline 62
00B8 L36:
00B8 .dbline 62
00B8 ; while((PINE&0x80)!=0x00);
00B8 81B1 in R24,0x1
00BA 8078 andi R24,128
00BC E9F7 brne L35
00BE .dbline 63
00BE ; dat;
00BE C09A sbi 0x18,0
00C0 .dbline 64
00C0 ; *p=data;
00C0 FA01 movw R30,R20
00C2 0083 std z+0,R16
00C4 .dbline 65
00C4 ; cl_dat;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -