📄 test.lis
字号:
.module Test.c
.area text(rom, con, rel)
0000 .dbfile F:\单片机编程\ICCAVR\7289prog\Test.c
0000 .dbfunc e SETB _SETB fV
0000 ; k -> R20
.even
0000 _SETB::
0000 0E940000 xcall push_gset1
0004 402F mov R20,R16
0006 .dbline -1
0006 .dbline 8
0006 ; #include <iom16v.h>
0006 ; #define CS 0
0006 ; #define CLK 1
0006 ; #define DIO 2
0006 ; #define KEY 3
0006 ;
0006 ; void SETB(unsigned char k)
0006 ; {//这里的PORTB根据自己的程序修改
0006 .dbline 9
0006 ; PORTB=PORTB|(1<<k);
0006 01E0 ldi R16,1
0008 142F mov R17,R20
000A 0E940000 xcall lsl8
000E 28B2 in R2,0x18
0010 202A or R2,R16
0012 28BA out 0x18,R2
0014 .dbline -2
0014 L1:
0014 0E940000 xcall pop_gset1
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r k 20 c
001A .dbend
001A .dbfunc e CLRS _CLRS fV
001A ; l -> R20
.even
001A _CLRS::
001A 0E940000 xcall push_gset1
001E 402F mov R20,R16
0020 .dbline -1
0020 .dbline 13
0020 ; }
0020 ;
0020 ; void CLRS(unsigned char l)
0020 ; {//这里的PORTB根据自己的程序修改
0020 .dbline 14
0020 ; PORTB=PORTB&~(1<<l);
0020 01E0 ldi R16,1
0022 142F mov R17,R20
0024 0E940000 xcall lsl8
0028 202E mov R2,R16
002A 2094 com R2
002C 38B2 in R3,0x18
002E 3220 and R3,R2
0030 38BA out 0x18,R3
0032 .dbline -2
0032 L2:
0032 0E940000 xcall pop_gset1
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym r l 20 c
0038 .dbend
0038 .dbfunc e Display _Display fV
0038 ; DataPos -> y+1
0038 ; datanum -> R14
0038 ; cToDIO -> R20
0038 ; iToDIO -> R10,R11
0038 ; num -> y+0
0038 ; transdata -> R22,R23
0038 ; wait -> R12
0038 ; position -> y+14
0038 ; Data -> y+12
.even
0038 _Display::
0038 0E940000 xcall push_arg4
003C 0E940000 xcall push_gset5
0040 2297 sbiw R28,2
0042 .dbline -1
0042 .dbline 22
0042 ; }
0042 ;
0042 ; //初始化显示时Data=0xA4,position=0xFF
0042 ; //Data为显示数据,position为数据显示位置
0042 ; //Data为10进制或16进制数,只能一位一位发送
0042 ; //position为1-8的数字
0042 ; void Display(unsigned char Data,unsigned char position)
0042 ; {
0042 .dbline 23
0042 ; unsigned char DataPos=~0;
0042 8FEF ldi R24,255
0044 8983 std y+1,R24
0046 .dbline 24
0046 ; unsigned char num=~0;
0046 8883 std y+0,R24
0048 .dbline 25
0048 ; unsigned char wait=~0;
0048 C82E mov R12,R24
004A .dbline 26
004A ; unsigned char datanum=~0;
004A .dbline 27
004A ; unsigned int transdata=~0;
004A 6FEF ldi R22,-1
004C 7FEF ldi R23,-1
004E .dbline 28
004E ; unsigned int iToDIO=~0;
004E 8FEF ldi R24,-1
0050 9FEF ldi R25,-1
0052 5C01 movw R10,R24
0054 .dbline 29
0054 ; unsigned char cToDIO=~0;
0054 4FEF ldi R20,255
0056 .dbline 30
0056 ; DDRB=0xFF;
0056 A7BA out 0x17,R10
0058 .dbline 31
0058 ; SETB(KEY);
0058 03E0 ldi R16,3
005A D2DF xcall _SETB
005C .dbline 32
005C ; SETB(CS);
005C 0027 clr R16
005E D0DF xcall _SETB
0060 .dbline 33
0060 ; SETB(DIO);
0060 02E0 ldi R16,2
0062 CEDF xcall _SETB
0064 .dbline 34
0064 ; datanum=2;
0064 82E0 ldi R24,2
0066 E82E mov R14,R24
0068 .dbline 35
0068 ; CLRS(CS);
0068 0027 clr R16
006A D7DF xcall _CLRS
006C .dbline 36
006C ; if(Data!=0xA4)
006C 8C85 ldd R24,y+12
006E 843A cpi R24,164
0070 09F4 brne X1
0072 4CC0 xjmp L4
0074 X1:
0074 .dbline 37
0074 ; {
0074 .dbline 38
0074 ; DataPos=0xC8+position-1;
0074 8E85 ldd R24,y+14
0076 8853 subi R24,56 ; addi 200
0078 8150 subi R24,1
007A 8983 std y+1,R24
007C .dbline 39
007C ; transdata=DataPos;
007C 682F mov R22,R24
007E 7727 clr R23
0080 .dbline 40
0080 ; transdata=transdata<<8;
0080 762F mov R23,R22
0082 6627 clr R22
0084 .dbline 41
0084 ; transdata=transdata+Data;
0084 2C84 ldd R2,y+12
0086 3324 clr R3
0088 620D add R22,R2
008A 731D adc R23,R3
008C 36C0 xjmp L7
008E L6:
008E .dbline 43
008E ; while(datanum--)
008E ; {
008E .dbline 44
008E ; wait=25;
008E 89E1 ldi R24,25
0090 C82E mov R12,R24
0092 L9:
0092 .dbline 46
0092 .dbline 46
0092 .dbline 46
0092 L10:
0092 .dbline 45
0092 ; while(wait--)
0092 2C2C mov R2,R12
0094 3324 clr R3
0096 822D mov R24,R2
0098 8150 subi R24,1
009A C82E mov R12,R24
009C 2220 tst R2
009E C9F7 brne L9
00A0 .dbline 47
00A0 ; {;}
00A0 ; for(num=0;num<8;num++)
00A0 0024 clr R0
00A2 0882 std y+0,R0
00A4 27C0 xjmp L15
00A6 L12:
00A6 .dbline 48
00A6 ; {
00A6 .dbline 49
00A6 ; iToDIO=transdata&0x8000;
00A6 CB01 movw R24,R22
00A8 8070 andi R24,0
00AA 9078 andi R25,128
00AC 5C01 movw R10,R24
00AE .dbline 50
00AE ; transdata=transdata<<1;
00AE 660F lsl R22
00B0 771F rol R23
00B2 .dbline 51
00B2 ; if(iToDIO==0x0000)
00B2 8030 cpi R24,0
00B4 8907 cpc R24,R25
00B6 19F4 brne L16
00B8 X0:
00B8 .dbline 52
00B8 ; {
00B8 .dbline 53
00B8 ; CLRS(DIO);
00B8 02E0 ldi R16,2
00BA AFDF xcall _CLRS
00BC .dbline 54
00BC ; }
00BC 02C0 xjmp L17
00BE L16:
00BE .dbline 56
00BE ; else
00BE ; {
00BE .dbline 57
00BE ; SETB(DIO);
00BE 02E0 ldi R16,2
00C0 9FDF xcall _SETB
00C2 .dbline 58
00C2 ; }
00C2 L17:
00C2 .dbline 59
00C2 ; SETB(CLK);
00C2 01E0 ldi R16,1
00C4 9DDF xcall _SETB
00C6 .dbline 60
00C6 ; wait=4;
00C6 84E0 ldi R24,4
00C8 C82E mov R12,R24
00CA L18:
00CA .dbline 62
00CA .dbline 62
00CA .dbline 62
00CA L19:
00CA .dbline 61
00CA ; while(wait--)
00CA 2C2C mov R2,R12
00CC 3324 clr R3
00CE 822D mov R24,R2
00D0 8150 subi R24,1
00D2 C82E mov R12,R24
00D4 2220 tst R2
00D6 C9F7 brne L18
00D8 .dbline 63
00D8 ; {;}
00D8 ; CLRS(CLK);
00D8 01E0 ldi R16,1
00DA 9FDF xcall _CLRS
00DC .dbline 64
00DC ; wait=4;
00DC 84E0 ldi R24,4
00DE C82E mov R12,R24
00E0 L21:
00E0 .dbline 66
00E0 .dbline 66
00E0 .dbline 66
00E0 L22:
00E0 .dbline 65
00E0 2C2C mov R2,R12
00E2 3324 clr R3
00E4 822D mov R24,R2
00E6 8150 subi R24,1
00E8 C82E mov R12,R24
00EA 2220 tst R2
00EC C9F7 brne L21
00EE .dbline 67
00EE L13:
00EE .dbline 47
00EE 0880 ldd R0,y+0
00F0 0394 inc R0
00F2 0882 std y+0,R0
00F4 L15:
00F4 .dbline 47
00F4 8881 ldd R24,y+0
00F6 8830 cpi R24,8
00F8 B0F2 brlo L12
00FA .dbline 68
00FA L7:
00FA .dbline 42
00FA 2E2C mov R2,R14
00FC 3324 clr R3
00FE 822D mov R24,R2
0100 8150 subi R24,1
0102 E82E mov R14,R24
0104 2220 tst R2
0106 09F0 breq X2
0108 C2CF xjmp L6
010A X2:
010A .dbline 69
010A ; while(wait--)
010A ; {;}
010A ; }
010A ; }
010A ; }
010A 34C0 xjmp L5
010C L4:
010C .dbline 71
010C ; else
010C ; {
010C .dbline 72
010C ; wait=25;
010C 89E1 ldi R24,25
010E C82E mov R12,R24
0110 L24:
0110 .dbline 73
0110 L25:
0110 .dbline 73
0110 ; while(wait--);
0110 2C2C mov R2,R12
0112 3324 clr R3
0114 822D mov R24,R2
0116 8150 subi R24,1
0118 C82E mov R12,R24
011A 2220 tst R2
011C C9F7 brne L24
011E .dbline 74
011E ; for(num=0;num<8;num++)
011E 0024 clr R0
0120 0882 std y+0,R0
0122 25C0 xjmp L30
0124 L27:
0124 .dbline 75
0124 ; {
0124 .dbline 76
0124 ; cToDIO=Data&0x80;
0124 4C85 ldd R20,y+12
0126 4078 andi R20,128
0128 .dbline 77
0128 ; Data=Data<<1;
0128 2C84 ldd R2,y+12
012A 220C lsl R2
012C 2C86 std y+12,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -