⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.lis

📁 ZLG7289测试程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -