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

📄 reclama_fct3.lis

📁 a ICCAVR source code for a small led matrix it uses atmega8 at 8 mhz
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module reclama_fct3.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\tempAVR\RECLAM~1\reclama_fct3.c
 0000                   .dbfunc e send_octetA _send_octetA fV
 0000                   .dbstruct 0 8 octet
 0000                   .dbfield 0 a A[8:8]c
 0000                   .dbend
 0000           ;              i -> R20
 0000           ;            oct -> R10,R11
                        .even
 0000           _send_octetA::
 0000 00D0              rcall push_xgset300C
 0002 5801              movw R10,R16
 0004                   .dbline -1
 0004                   .dbline 12
 0004           ; #include <string.h>
 0004           ; #include <iom8v.h>
 0004           ; #include <EEPROM.h>
 0004           ; #include "reclama_fct3.h"
 0004           ; #include "delay_fct3.h"
 0004           ; #define zero 0x00
 0004           ; #define unu 0x01
 0004           ; #define doi 0x02
 0004           ; #define trei 0x03
 0004           ; 
 0004           ; /* **********************  */ 
 0004           ; void send_octetA(struct octet oct){
 0004                   .dbline 14
 0004           ;       uc_8 i;
 0004           ;       for(i=0;i<8;i++) send_bitA(oct.a[i]);
 0004 4427              clr R20
 0006 07C0              rjmp L5
 0008           L2:
 0008                   .dbline 14
 0008 E42F              mov R30,R20
 000A FF27              clr R31
 000C EA0D              add R30,R10
 000E FB1D              adc R31,R11
 0010 0081              ldd R16,z+0
 0012 53D0              rcall _send_bitA
 0014           L3:
 0014                   .dbline 14
 0014 4395              inc R20
 0016           L5:
 0016                   .dbline 14
 0016 4830              cpi R20,8
 0018 B8F3              brlo L2
 001A           X0:
 001A                   .dbline -2
 001A           L1:
 001A                   .dbline 0 ; func end
 001A 00C0              rjmp pop_xgset300C
 001C                   .dbsym r i 20 c
 001C                   .dbsym r oct 10 pS[octet]
 001C                   .dbend
 001C                   .dbfunc e send_octetB _send_octetB fV
 001C           ;              i -> R20
 001C           ;            oct -> R10,R11
                        .even
 001C           _send_octetB::
 001C 00D0              rcall push_xgset300C
 001E 5801              movw R10,R16
 0020                   .dbline -1
 0020                   .dbline 17
 0020           ;       }
 0020           ; /* **********************  */ 
 0020           ; void send_octetB(struct octet oct){
 0020                   .dbline 19
 0020           ;       uc_8 i;
 0020           ;       for(i=0;i<8;i++) send_bitB(oct.a[i]);
 0020 4427              clr R20
 0022 07C0              rjmp L10
 0024           L7:
 0024                   .dbline 19
 0024 E42F              mov R30,R20
 0026 FF27              clr R31
 0028 EA0D              add R30,R10
 002A FB1D              adc R31,R11
 002C 0081              ldd R16,z+0
 002E 5CD0              rcall _send_bitB
 0030           L8:
 0030                   .dbline 19
 0030 4395              inc R20
 0032           L10:
 0032                   .dbline 19
 0032 4830              cpi R20,8
 0034 B8F3              brlo L7
 0036           X1:
 0036                   .dbline -2
 0036           L6:
 0036                   .dbline 0 ; func end
 0036 00C0              rjmp pop_xgset300C
 0038                   .dbsym r i 20 c
 0038                   .dbsym r oct 10 pS[octet]
 0038                   .dbend
 0038                   .dbfunc e send_octetAB _send_octetAB fV
 0038           ;              i -> <dead>
 0038           ;              h -> R14
 0038           ;              g -> R20
 0038           ;              f -> R22
 0038           ;              e -> R12
 0038           ;              d -> R10
 0038           ;              c -> y+2
 0038           ;              b -> y+1
 0038           ;              a -> y+0
 0038           ;            oct -> R14,R15
                        .even
 0038           _send_octetAB::
 0038 00D0              rcall push_xgsetF0FC
 003A 7801              movw R14,R16
 003C 2397              sbiw R28,3
 003E                   .dbline -1
 003E                   .dbline 22
 003E           ;       }
 003E           ; /* **********************  */ 
 003E           ; void send_octetAB(struct octet oct){
 003E                   .dbline 25
 003E           ;       uc_8 a,b,c,d,e,f,g,h,i;
 003E           ;       
 003E           ;       a=oct.a[0];b=oct.a[1];c=oct.a[2];d=oct.a[3];
 003E F701              movw R30,R14
 0040 2080              ldd R2,z+0
 0042 2882              std y+0,R2
 0044                   .dbline 25
 0044 2180              ldd R2,z+1
 0046 2982              std y+1,R2
 0048                   .dbline 25
 0048 2280              ldd R2,z+2
 004A 2A82              std y+2,R2
 004C                   .dbline 25
 004C A380              ldd R10,z+3
 004E                   .dbline 26
 004E           ;       e=oct.a[4];f=oct.a[5];g=oct.a[6];h=oct.a[7];
 004E C480              ldd R12,z+4
 0050                   .dbline 26
 0050 6581              ldd R22,z+5
 0052                   .dbline 26
 0052 4681              ldd R20,z+6
 0054                   .dbline 26
 0054 E780              ldd R14,z+7
 0056                   .dbline 28
 0056           ;       
 0056           ; send_bitAB(a,a);
 0056 2881              ldd R18,y+0
 0058 022F              mov R16,R18
 005A 5DD0              rcall _send_bitAB
 005C                   .dbline 29
 005C           ; send_bitAB(c,g);
 005C 242F              mov R18,R20
 005E 0A81              ldd R16,y+2
 0060 5AD0              rcall _send_bitAB
 0062                   .dbline 30
 0062           ; send_bitAB(d,g);
 0062 242F              mov R18,R20
 0064 0A2D              mov R16,R10
 0066 57D0              rcall _send_bitAB
 0068                   .dbline 31
 0068           ; send_bitAB(d,f);
 0068 262F              mov R18,R22
 006A 0A2D              mov R16,R10
 006C 54D0              rcall _send_bitAB
 006E                   .dbline 32
 006E           ; send_bitAB(f,e);
 006E 2C2D              mov R18,R12
 0070 062F              mov R16,R22
 0072 51D0              rcall _send_bitAB
 0074                   .dbline 33
 0074           ; send_bitAB(c,h);
 0074 2E2D              mov R18,R14
 0076 0A81              ldd R16,y+2
 0078 4ED0              rcall _send_bitAB
 007A                   .dbline 34
 007A           ; send_bitAB(b,h);
 007A 2E2D              mov R18,R14
 007C 0981              ldd R16,y+1
 007E 4BD0              rcall _send_bitAB
 0080                   .dbline 35
 0080           ; send_bitAB(b,e);
 0080 2C2D              mov R18,R12
 0082 0981              ldd R16,y+1
 0084 48D0              rcall _send_bitAB
 0086                   .dbline 36
 0086           ; send_bitAB(a,a);
 0086 2881              ldd R18,y+0
 0088 022F              mov R16,R18
 008A 45D0              rcall _send_bitAB
 008C                   .dbline 37
 008C           ; send_bitAB(c,g);
 008C 242F              mov R18,R20
 008E 0A81              ldd R16,y+2
 0090 42D0              rcall _send_bitAB
 0092                   .dbline 38
 0092           ; send_bitAB(d,g);
 0092 242F              mov R18,R20
 0094 0A2D              mov R16,R10
 0096 3FD0              rcall _send_bitAB
 0098                   .dbline 39
 0098           ; send_bitAB(d,f);
 0098 262F              mov R18,R22
 009A 0A2D              mov R16,R10
 009C 3CD0              rcall _send_bitAB
 009E                   .dbline 40
 009E           ; send_bitAB(f,e);
 009E 2C2D              mov R18,R12
 00A0 062F              mov R16,R22
 00A2 39D0              rcall _send_bitAB
 00A4                   .dbline 41
 00A4           ; send_bitAB(c,h);
 00A4 2E2D              mov R18,R14
 00A6 0A81              ldd R16,y+2
 00A8 36D0              rcall _send_bitAB
 00AA                   .dbline 42
 00AA           ; send_bitAB(b,h);
 00AA 2E2D              mov R18,R14
 00AC 0981              ldd R16,y+1
 00AE 33D0              rcall _send_bitAB
 00B0                   .dbline 43
 00B0           ; send_bitAB(b,e);
 00B0 2C2D              mov R18,R12
 00B2 0981              ldd R16,y+1
 00B4 30D0              rcall _send_bitAB
 00B6                   .dbline -2
 00B6           L11:
 00B6                   .dbline 0 ; func end
 00B6 2396              adiw R28,3
 00B8 00C0              rjmp pop_xgsetF0FC
 00BA                   .dbsym l i 1 c
 00BA                   .dbsym r h 14 c
 00BA                   .dbsym r g 20 c
 00BA                   .dbsym r f 22 c
 00BA                   .dbsym r e 12 c
 00BA                   .dbsym r d 10 c
 00BA                   .dbsym l c 2 c
 00BA                   .dbsym l b 1 c
 00BA                   .dbsym l a 0 c
 00BA                   .dbsym r oct 14 pS[octet]
 00BA                   .dbend
 00BA                   .dbfunc e send_bitA _send_bitA fV
 00BA           ;              b -> R10
                        .even
 00BA           _send_bitA::
 00BA 00D0              rcall push_xgset300C
 00BC A02E              mov R10,R16
 00BE                   .dbline -1
 00BE                   .dbline 47
 00BE           ;       
 00BE           ;       }
 00BE           ; /* **********************  */ 
 00BE           ; void send_bitA(uc_8 b){
 00BE                   .dbline 48
 00BE           ;    switch(b){
 00BE 4A2D              mov R20,R10
 00C0 5527              clr R21
 00C2 4030              cpi R20,0
 00C4 4507              cpc R20,R21
 00C6 29F0              breq L16
 00C8           X2:
 00C8 4130              cpi R20,1
 00CA E0E0              ldi R30,0
 00CC 5E07              cpc R21,R30
 00CE 41F0              breq L17
 00D0           X3:
 00D0 0AC0              rjmp L13
 00D2           L16:
 00D2                   .dbline 49
 00D2           ;     case 0: PORTB|=(0<<PORTB0);clock();PORTB&=~(0<<PORTB0);break;//clock(); break;
 00D2 28B2              in R2,0x18
 00D4 28BA              out 0x18,R2
 00D6                   .dbline 49
 00D6 00D0              rcall _clock
 00D8                   .dbline 49
 00D8 88B3              in R24,0x18
 00DA 8F7F              andi R24,255
 00DC 88BB              out 0x18,R24
 00DE                   .dbline 49
 00DE 03C0              rjmp L14
 00E0           L17:
 00E0                   .dbline 50
 00E0           ;       case 1: PORTB|=(1<<PORTB0);clock();PORTB&=~(1<<PORTB0);break;
 00E0 C09A              sbi 0x18,0
 00E2                   .dbline 50
 00E2 00D0              rcall _clock
 00E4                   .dbline 50
 00E4 C098              cbi 0x18,0
 00E6                   .dbline 50
 00E6           L13:
 00E6           L14:
 00E6                   .dbline -2
 00E6           L12:
 00E6                   .dbline 0 ; func end
 00E6 00C0              rjmp pop_xgset300C
 00E8                   .dbsym r b 10 c
 00E8                   .dbend
 00E8                   .dbfunc e send_bitB _send_bitB fV
 00E8           ;              b -> R10
                        .even
 00E8           _send_bitB::
 00E8 00D0              rcall push_xgset300C
 00EA A02E              mov R10,R16
 00EC                   .dbline -1
 00EC                   .dbline 54
 00EC           ;       }
 00EC           ;    }
 00EC           ; /* **********************  */ 
 00EC           ; void send_bitB(uc_8 b){
 00EC                   .dbline 55
 00EC           ;    switch(b){
 00EC 4A2D              mov R20,R10
 00EE 5527              clr R21
 00F0 4030              cpi R20,0
 00F2 4507              cpc R20,R21
 00F4 29F0              breq L22
 00F6           X4:
 00F6 4130              cpi R20,1
 00F8 E0E0              ldi R30,0
 00FA 5E07              cpc R21,R30
 00FC 41F0              breq L23
 00FE           X5:
 00FE 0AC0              rjmp L19
 0100           L22:
 0100                   .dbline 56
 0100           ;     case 0: PORTB|=(0<<PORTB1);clock();PORTB&=~(0<<PORTB1);break;//clock(); break;
 0100 28B2              in R2,0x18
 0102 28BA              out 0x18,R2
 0104                   .dbline 56
 0104 00D0              rcall _clock
 0106                   .dbline 56
 0106 88B3              in R24,0x18
 0108 8F7F              andi R24,255
 010A 88BB              out 0x18,R24
 010C                   .dbline 56
 010C 03C0              rjmp L20
 010E           L23:
 010E                   .dbline 57
 010E           ;       case 1: PORTB|=(1<<PORTB1);clock();PORTB&=~(1<<PORTB1);break;
 010E C19A              sbi 0x18,1
 0110                   .dbline 57
 0110 00D0              rcall _clock
 0112                   .dbline 57
 0112 C198              cbi 0x18,1
 0114                   .dbline 57
 0114           L19:
 0114           L20:
 0114                   .dbline -2
 0114           L18:
 0114                   .dbline 0 ; func end
 0114 00C0              rjmp pop_xgset300C
 0116                   .dbsym r b 10 c
 0116                   .dbend
 0116                   .dbfunc e send_bitAB _send_bitAB fV
 0116           ;              b -> R20
 0116           ;              a -> R22
                        .even
 0116           _send_bitAB::
 0116 00D0              rcall push_xgsetF03C
 0118 422F              mov R20,R18
 011A 602F              mov R22,R16
 011C                   .dbline -1
 011C                   .dbline 61
 011C           ;       }
 011C           ;    }
 011C           ; /* **********************  */
 011C           ; void send_bitAB(uc_8 a,uc_8 b){
 011C                   .dbline 63
 011C           ;   
 011C           ;       if(a==0&b==0)    {PORTB|=zero;clock();PORTB&=~zero;}
 011C 6623              tst R22
 011E 21F4              brne L27
 0120           X6:
 0120 81E0              ldi R24,1
 0122 90E0              ldi R25,0
 0124 6C01              movw R12,R24
 0126 02C0              rjmp L28
 0128           L27:
 0128 CC24              clr R12
 012A DD24              clr R13
 012C           L28:
 012C 4423              tst R20
 012E 21F4              brne L29
 0130           X7:
 0130 81E0              ldi R24,1
 0132 90E0              ldi R25,0
 0134 5C01              movw R10,R24
 0136 02C0              rjmp L30
 0138           L29:
 0138 AA24              clr R10
 013A BB24              clr R11
 013C           L30:
 013C 1601              movw R2,R12
 013E 2A20              and R2,R10
 0140 3B20              and R3,R11
 0142 2220              tst R2
 0144 11F4              brne X8
 0146 3320              tst R3
 0148 31F0              breq L25

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -