📄 8880.lis
字号:
00C4 .dbline 73
00C4 ; return c;
00C4 .dbline -2
00C4 L15:
00C4 .dbline 0 ; func end
00C4 0895 ret
00C6 .dbsym r c 16 c
00C6 .dbend
00C6 .dbfunc e M8880_Init _M8880_Init fV
.even
00C6 _M8880_Init::
00C6 .dbline -1
00C6 .dbline 76
00C6 ; }
00C6 ; void M8880_Init(void)
00C6 ; {
00C6 .dbline 77
00C6 ; M8880_State.SendCount=0;
00C6 2224 clr R2
00C8 20920000 sts _M8880_State,R2
00CC .dbline 78
00CC ; M8880_State.CurSend=sendbuf;
00CC 80E0 ldi R24,<_sendbuf
00CE 90E0 ldi R25,>_sendbuf
00D0 90930200 sts _M8880_State+1+1,R25
00D4 80930100 sts _M8880_State+1,R24
00D8 .dbline 79
00D8 ; M8880_State.Sending=0;
00D8 20920A00 sts _M8880_State+10,R2
00DC .dbline 80
00DC ; M8880_State.RecvIntCount=0;
00DC 20920300 sts _M8880_State+3,R2
00E0 .dbline 81
00E0 ; M8880_State.RecvStartPtr=recvbuf;
00E0 80E0 ldi R24,<_recvbuf
00E2 90E0 ldi R25,>_recvbuf
00E4 90930500 sts _M8880_State+4+1,R25
00E8 80930400 sts _M8880_State+4,R24
00EC .dbline 82
00EC ; M8880_State.RecvEndPtr=recvbuf;
00EC 90930700 sts _M8880_State+6+1,R25
00F0 80930600 sts _M8880_State+6,R24
00F4 .dbline 83
00F4 ; M8880_State.CurRecv=recvbuf;
00F4 90930900 sts _M8880_State+8+1,R25
00F8 80930800 sts _M8880_State+8,R24
00FC .dbline 84
00FC ; M8880_DataDDR|=0xf;
00FC 84B3 in R24,0x14
00FE 8F60 ori R24,15
0100 84BB out 0x14,R24
0102 .dbline 85
0102 ; M8880_DataPort&=~0xf;
0102 85B3 in R24,0x15
0104 807F andi R24,240
0106 85BB out 0x15,R24
0108 .dbline 86
0108 ; M8880_CtrlPort|=M8880_CS|M8880_RW|M8880_CLK|M8880_RS;
0108 82B3 in R24,0x12
010A 806F ori R24,240
010C 82BB out 0x12,R24
010E .dbline 87
010E ; M8880_CtrlDDR|=M8880_CS|M8880_RW|M8880_CLK|M8880_RS;
010E 81B3 in R24,0x11
0110 806F ori R24,240
0112 81BB out 0x11,R24
0114 .dbline 88
0114 ; M8880_ReadState();
0114 C8DF rcall _M8880_ReadState
0116 .dbline 89
0116 ; M8880_WriteCtrl(0x00,0);
0116 2227 clr R18
0118 0027 clr R16
011A 96DF rcall _M8880_WriteCtrl
011C .dbline 90
011C ; M8880_WriteCtrl(0x00,0);
011C 2227 clr R18
011E 0027 clr R16
0120 93DF rcall _M8880_WriteCtrl
0122 .dbline 91
0122 ; M8880_WriteCtrl((M8880_BIT0|M8880_BIT2),-1);
0122 2FEF ldi R18,255
0124 05E0 ldi R16,5
0126 90DF rcall _M8880_WriteCtrl
0128 .dbline 92
0128 ; M8880_ReadState();
0128 BEDF rcall _M8880_ReadState
012A .dbline 101
012A ; #if M8880_INT==1
012A ; PORTD|=0x8;
012A ; DDRD&=~0x8;
012A ; MCUCR&=~((1<<ISC11)|(1<<ISC10));
012A ; MCUCR|=(1<<ISC11);
012A ; GICR|=(1<<INT1);
012A ; GIFR|=(1<<INT1);
012A ; #else
012A ; PORTD|=0x4;
012A 929A sbi 0x12,2
012C .dbline 102
012C ; DDRD&=~0x4;
012C 8A98 cbi 0x11,2
012E .dbline 103
012E ; MCUCR&=~((1<<ISC01)|(1<<ISC00));
012E 85B7 in R24,0x35
0130 8C7F andi R24,252
0132 85BF out 0x35,R24
0134 .dbline 104
0134 ; MCUCR|=(1<<ISC01);
0134 85B7 in R24,0x35
0136 8260 ori R24,2
0138 85BF out 0x35,R24
013A .dbline 105
013A ; GICR|=(1<<INT0);
013A 8BB7 in R24,0x3b
013C 8064 ori R24,64
013E 8BBF out 0x3b,R24
0140 .dbline 106
0140 ; GIFR|=(1<<INT0);
0140 8AB7 in R24,0x3a
0142 8064 ori R24,64
0144 8ABF out 0x3a,R24
0146 .dbline -2
0146 L16:
0146 .dbline 0 ; func end
0146 0895 ret
0148 .dbend
.area data(ram, con, rel)
000E .dbfile E:\Shuaihu\AVR\8880\8880.c
000E _dec::
000E .blkw 1
.area idata
000E 1D00 .word L23
.area data(ram, con, rel)
0010 .dbfile E:\Shuaihu\AVR\8880\8880.c
0010 .dbsym e dec _dec pc
.area vector(rom, abs)
.org 2
0002 A4C0 rjmp _int0_isr
.area data(ram, con, rel)
0010 .dbfile E:\Shuaihu\AVR\8880\8880.c
.area text(rom, con, rel)
0148 .dbfile E:\Shuaihu\AVR\8880\8880.c
0148 .dbfunc e int0_isr _int0_isr fV
0148 ; c -> R10
.even
0148 _int0_isr::
0148 0A92 st -y,R0
014A 1A92 st -y,R1
014C 2A92 st -y,R2
014E 3A92 st -y,R3
0150 4A92 st -y,R4
0152 5A92 st -y,R5
0154 6A92 st -y,R6
0156 7A92 st -y,R7
0158 8A92 st -y,R8
015A 9A92 st -y,R9
015C 0A93 st -y,R16
015E 1A93 st -y,R17
0160 2A93 st -y,R18
0162 3A93 st -y,R19
0164 8A93 st -y,R24
0166 9A93 st -y,R25
0168 AA93 st -y,R26
016A BA93 st -y,R27
016C EA93 st -y,R30
016E FA93 st -y,R31
0170 0FB6 in R0,0x3f
0172 0A92 st -y,R0
0174 AA92 st -y,R10
0176 .dbline -1
0176 .dbline 112
0176 ; #endif
0176 ; }
0176 ; char *dec="01234567890*#abcd";
0176 ; #pragma interrupt_handler int0_isr:iv_INT0
0176 ; void int0_isr(void)
0176 ; {
0176 .dbline 114
0176 ; char c;
0176 ; c=M8880_ReadState();
0176 97DF rcall _M8880_ReadState
0178 A02E mov R10,R16
017A .dbline 115
017A ; if (c&M8880_BIT1){
017A 01FF sbrs R16,1
017C 20C0 rjmp L25
017E X2:
017E .dbline 115
017E .dbline 116
017E ; M8880_State.SendCount--;
017E 80910000 lds R24,_M8880_State
0182 8150 subi R24,1
0184 80930000 sts _M8880_State,R24
0188 .dbline 117
0188 ; if (M8880_State.SendCount>0){
0188 80E0 ldi R24,0
018A 20900000 lds R2,_M8880_State
018E 8215 cp R24,R2
0190 68F4 brsh L27
0192 X3:
0192 .dbline 117
0192 .dbline 118
0192 ; M8880_State.CurSend++;
0192 80910100 lds R24,_M8880_State+1
0196 90910200 lds R25,_M8880_State+1+1
019A 0196 adiw R24,1
019C 90930200 sts _M8880_State+1+1,R25
01A0 80930100 sts _M8880_State+1,R24
01A4 .dbline 119
01A4 ; M8880_WriteChar(*M8880_State.CurSend);
01A4 FC01 movw R30,R24
01A6 0081 ldd R16,z+0
01A8 2BDF rcall _M8880_WriteChar
01AA .dbline 120
01AA ; }else{
01AA 09C0 rjmp L28
01AC L27:
01AC .dbline 120
01AC .dbline 121
01AC ; M8880_State.CurSend=sendbuf;
01AC 80E0 ldi R24,<_sendbuf
01AE 90E0 ldi R25,>_sendbuf
01B0 90930200 sts _M8880_State+1+1,R25
01B4 80930100 sts _M8880_State+1,R24
01B8 .dbline 122
01B8 ; M8880_State.Sending=0;
01B8 2224 clr R2
01BA 20920A00 sts _M8880_State+10,R2
01BE .dbline 123
01BE ; }
01BE L28:
01BE .dbline 124
01BE ; }
01BE L25:
01BE .dbline 125
01BE ; if ((c&M8880_BIT2)&&((c&M8880_BIT3)==0)){
01BE A2FE sbrs R10,2
01C0 35C0 rjmp L33
01C2 X4:
01C2 A3FC sbrc R10,3
01C4 33C0 rjmp L33
01C6 X5:
01C6 .dbline 125
01C6 .dbline 126
01C6 ; if (M8880_State.RecvIntCount>0){
01C6 80E0 ldi R24,0
01C8 20900300 lds R2,_M8880_State+3
01CC 8215 cp R24,R2
01CE 70F5 brsh L35
01D0 X6:
01D0 .dbline 126
01D0 .dbline 127
01D0 ; M8880_State.RecvIntCount--;
01D0 822D mov R24,R2
01D2 8150 subi R24,1
01D4 80930300 sts _M8880_State+3,R24
01D8 .dbline 128
01D8 ; *M8880_State.CurRecv++=dec[M8880_ReadChar()];
01D8 25DF rcall _M8880_ReadChar
01DA 20900E00 lds R2,_dec
01DE 30900F00 lds R3,_dec+1
01E2 E02F mov R30,R16
01E4 FF27 clr R31
01E6 E20D add R30,R2
01E8 F31D adc R31,R3
01EA 2080 ldd R2,z+0
01EC E0910800 lds R30,_M8880_State+8
01F0 F0910900 lds R31,_M8880_State+8+1
01F4 2192 st Z+,R2
01F6 F0930900 sts _M8880_State+8+1,R31
01FA E0930800 sts _M8880_State+8,R30
01FE .dbline 129
01FE ; if (M8880_State.CurRecv==recvbuf+M8880_RECV_BUFSIZE)
01FE 80E0 ldi R24,<_recvbuf+50
0200 90E0 ldi R25,>_recvbuf+50
0202 E817 cp R30,R24
0204 F907 cpc R31,R25
0206 31F4 brne L40
0208 X7:
0208 .dbline 130
0208 ; M8880_State.CurRecv=recvbuf;
0208 80E0 ldi R24,<_recvbuf
020A 90E0 ldi R25,>_recvbuf
020C 90930900 sts _M8880_State+8+1,R25
0210 80930800 sts _M8880_State+8,R24
0214 L40:
0214 .dbline 131
0214 ; if (M8880_State.RecvIntCount==0)
0214 20900300 lds R2,_M8880_State+3
0218 2220 tst R2
021A 41F4 brne L45
021C X8:
021C .dbline 132
021C ; M8880_State.RecvEndPtr=M8880_State.CurRecv;
021C 20900800 lds R2,_M8880_State+8
0220 30900900 lds R3,_M8880_State+8+1
0224 30920700 sts _M8880_State+6+1,R3
0228 20920600 sts _M8880_State+6,R2
022C L45:
022C .dbline 133
022C ; }
022C L35:
022C .dbline 134
022C ; }
022C L33:
022C .dbline -2
022C L24:
022C .dbline 0 ; func end
022C A990 ld R10,y+
022E 0990 ld R0,y+
0230 0FBE out 0x3f,R0
0232 F991 ld R31,y+
0234 E991 ld R30,y+
0236 B991 ld R27,y+
0238 A991 ld R26,y+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -