📄 reclama_fct3.lis
字号:
.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 + -