?? 8880.lis
字號:
.module _8880.c
.area text(rom, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\8880.c
.area data(ram, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\8880.c
0000 _noresponse::
0000 .blkw 1
.area idata
0000 6100 .word L1
.area data(ram, con, rel)
0002 .dbfile E:\Shuaihu\AVR\8880\8880.c
0002 .dbsym e noresponse _noresponse pc
0002 _handdown::
0002 .blkw 1
.area idata
0002 5700 .word L2
.area data(ram, con, rel)
0004 .dbfile E:\Shuaihu\AVR\8880\8880.c
0004 .dbsym e handdown _handdown pc
0004 _c_ok::
0004 .blkw 1
.area idata
0004 5300 .word L3
.area data(ram, con, rel)
0006 .dbfile E:\Shuaihu\AVR\8880\8880.c
0006 .dbsym e c_ok _c_ok pc
0006 _c_error::
0006 .blkw 1
.area idata
0006 4C00 .word L4
.area data(ram, con, rel)
0008 .dbfile E:\Shuaihu\AVR\8880\8880.c
0008 .dbsym e c_error _c_error pc
0008 _c_busying::
0008 .blkw 1
.area idata
0008 4300 .word L5
.area data(ram, con, rel)
000A .dbfile E:\Shuaihu\AVR\8880\8880.c
000A .dbsym e c_busying _c_busying pc
000A _calling::
000A .blkw 1
.area idata
000A 3A00 .word L6
.area data(ram, con, rel)
000C .dbfile E:\Shuaihu\AVR\8880\8880.c
000C .dbsym e calling _calling pc
000C _answering::
000C .blkw 1
.area idata
000C 2F00 .word L7
.area data(ram, con, rel)
000E .dbfile E:\Shuaihu\AVR\8880\8880.c
000E .dbsym e answering _answering pc
.area text(rom, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\8880.c
0000 .dbfunc e M8880_WriteChar _M8880_WriteChar fV
0000 ; c -> R16
.even
0000 _M8880_WriteChar::
0000 .dbline -1
0000 .dbline 18
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "8880.h"
0000 ; #include "serial.h"
0000 ; #include "main.h"
0000 ; #include "timer.h"
0000 ; char sendbuf[M8880_SEND_BUFSIZE];
0000 ; char recvbuf[M8880_RECV_BUFSIZE];
0000 ; M8880_STATE M8880_State;
0000 ; char *noresponse="noresponse\n";
0000 ; char *handdown="handdown\n";
0000 ; char *c_ok="ok\n";
0000 ; char *c_error="error\n";
0000 ; char *c_busying="busying\n";
0000 ; char *calling="calling\n";
0000 ; char *answering="answering\n";
0000 ; void M8880_WriteChar(char c)
0000 ; {
0000 .dbline 19
0000 ; M8880_DataPort&=0xf0; //CLR low 4bit
0000 85B3 in R24,0x15
0002 807F andi R24,240
0004 85BB out 0x15,R24
0006 .dbline 20
0006 ; M8880_CtrlPort&=~(M8880_CS|M8880_RW|M8880_RS); //CLR CS RW RS hold CLK
0006 82B3 in R24,0x12
0008 8F74 andi R24,79
000A 82BB out 0x12,R24
000C .dbline 21
000C ; M8880_DataPort|=(c&0xf); //Write Data
000C 802F mov R24,R16
000E 8F70 andi R24,15
0010 25B2 in R2,0x15
0012 282A or R2,R24
0014 25BA out 0x15,R2
0016 .dbline 22
0016 ; M8880_CtrlPort&=~M8880_CLK; //CLR CLK
0016 9698 cbi 0x12,6
0018 .dbline 23
0018 ; NOP(); //wait a few time
0018 0000 nop
001A .dbline 24
001A ; NOP();
001A 0000 nop
001C .dbline 25
001C ; M8880_CtrlPort|=M8880_CS|M8880_RW|M8880_CLK|M8880_RS; //set CS RW CLK RS
001C 82B3 in R24,0x12
001E 806F ori R24,240
0020 82BB out 0x12,R24
0022 .dbline -2
0022 L8:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbsym r c 16 c
0024 .dbend
0024 .dbfunc e M8880_ReadChar _M8880_ReadChar fc
0024 ; c -> R16
.even
0024 _M8880_ReadChar::
0024 .dbline -1
0024 .dbline 28
0024 ; }
0024 ; char M8880_ReadChar()
0024 ; {
0024 .dbline 30
0024 ; char c;
0024 ; M8880_DataDDR&=0xf0; //set direction to input
0024 84B3 in R24,0x14
0026 807F andi R24,240
0028 84BB out 0x14,R24
002A .dbline 31
002A ; M8880_CtrlPort&=~(M8880_CS|M8880_RS); //CLR CS RS hold RW CLK
002A 82B3 in R24,0x12
002C 8F75 andi R24,95
002E 82BB out 0x12,R24
0030 .dbline 32
0030 ; M8880_CtrlPort&=~M8880_CLK; //CLR CLK
0030 9698 cbi 0x12,6
0032 .dbline 33
0032 ; NOP(); //waite a few time
0032 0000 nop
0034 .dbline 34
0034 ; NOP();
0034 0000 nop
0036 .dbline 35
0036 ; c=M8880_DataPIN&0xf; //ReadData
0036 03B3 in R16,0x13
0038 0F70 andi R16,15
003A .dbline 36
003A ; M8880_CtrlPort|=M8880_CS|M8880_RW|M8880_CLK|M8880_RS; //set CS RW CLK RS
003A 82B3 in R24,0x12
003C 806F ori R24,240
003E 82BB out 0x12,R24
0040 .dbline 37
0040 ; M8880_DataDDR|=0X0F; //restore direction
0040 84B3 in R24,0x14
0042 8F60 ori R24,15
0044 84BB out 0x14,R24
0046 .dbline 38
0046 ; return c;
0046 .dbline -2
0046 L9:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbsym r c 16 c
0048 .dbend
0048 .dbfunc e M8880_WriteCtrl _M8880_WriteCtrl fV
0048 ; flag -> R18
0048 ; c -> R16
.even
0048 _M8880_WriteCtrl::
0048 .dbline -1
0048 .dbline 41
0048 ; }
0048 ; void M8880_WriteCtrl(char c,char flag)
0048 ; {
0048 .dbline 42
0048 ; M8880_DataPort&=0xf0; //clear low 4bit
0048 85B3 in R24,0x15
004A 807F andi R24,240
004C 85BB out 0x15,R24
004E .dbline 43
004E ; M8880_CtrlPort&=~(M8880_CS|M8880_RW); //CLR CS RW HOLD RS CLK
004E 82B3 in R24,0x12
0050 8F7C andi R24,207
0052 82BB out 0x12,R24
0054 .dbline 44
0054 ; if (flag) //if we need to write CRB
0054 2223 tst R18
0056 39F0 breq L11
0058 X0:
0058 .dbline 45
0058 ; M8880_DataPort|=((c&0xf)|M8880_BIT3); //so we need to set bit3
0058 802F mov R24,R16
005A 8F70 andi R24,15
005C 8860 ori R24,8
005E 25B2 in R2,0x15
0060 282A or R2,R24
0062 25BA out 0x15,R2
0064 05C0 rjmp L12
0066 L11:
0066 .dbline 47
0066 ; else //else
0066 ; M8880_DataPort|=(c&(0xf&(~M8880_BIT3))); //we need to clear bit3
0066 802F mov R24,R16
0068 8770 andi R24,7
006A 25B2 in R2,0x15
006C 282A or R2,R24
006E 25BA out 0x15,R2
0070 L12:
0070 .dbline 48
0070 ; M8880_CtrlPort&=~M8880_CLK; //CLR CLK
0070 9698 cbi 0x12,6
0072 .dbline 49
0072 ; NOP(); //wait a few time
0072 0000 nop
0074 .dbline 50
0074 ; NOP();
0074 0000 nop
0076 .dbline 51
0076 ; M8880_CtrlPort|=M8880_CS|M8880_RW|M8880_CLK|M8880_RS; //set CS RW CLK RS
0076 82B3 in R24,0x12
0078 806F ori R24,240
007A 82BB out 0x12,R24
007C .dbline 52
007C ; if (flag){ //if we need to write CRB ...
007C 2223 tst R18
007E 91F0 breq L13
0080 X1:
0080 .dbline 52
0080 .dbline 53
0080 ; M8880_DataPort&=0xf0;
0080 85B3 in R24,0x15
0082 807F andi R24,240
0084 85BB out 0x15,R24
0086 .dbline 54
0086 ; M8880_CtrlPort&=~(M8880_CS|M8880_RW);
0086 82B3 in R24,0x12
0088 8F7C andi R24,207
008A 82BB out 0x12,R24
008C .dbline 55
008C ; M8880_DataPort|=(c>>4);
008C 802F mov R24,R16
008E 8295 swap R24
0090 8F70 andi R24,#0x0F
0092 25B2 in R2,0x15
0094 282A or R2,R24
0096 25BA out 0x15,R2
0098 .dbline 56
0098 ; M8880_CtrlPort&=~M8880_CLK;
0098 9698 cbi 0x12,6
009A .dbline 57
009A ; NOP();
009A 0000 nop
009C .dbline 58
009C ; NOP();
009C 0000 nop
009E .dbline 59
009E ; M8880_CtrlPort|=M8880_CS|M8880_RW|M8880_CLK|M8880_RS; //set CS RW CLK
009E 82B3 in R24,0x12
00A0 806F ori R24,240
00A2 82BB out 0x12,R24
00A4 .dbline 60
00A4 ; }
00A4 L13:
00A4 .dbline -2
00A4 L10:
00A4 .dbline 0 ; func end
00A4 0895 ret
00A6 .dbsym r flag 18 c
00A6 .dbsym r c 16 c
00A6 .dbend
00A6 .dbfunc e M8880_ReadState _M8880_ReadState fc
00A6 ; c -> R16
.even
00A6 _M8880_ReadState::
00A6 .dbline -1
00A6 .dbline 63
00A6 ; }
00A6 ; char M8880_ReadState(void)
00A6 ; {
00A6 .dbline 65
00A6 ; char c;
00A6 ; M8880_DataDDR&=0xf0;
00A6 84B3 in R24,0x14
00A8 807F andi R24,240
00AA 84BB out 0x14,R24
00AC .dbline 66
00AC ; M8880_CtrlPort&=~(M8880_CS);
00AC 9598 cbi 0x12,5
00AE .dbline 67
00AE ; M8880_CtrlPort&=~M8880_CLK;
00AE 9698 cbi 0x12,6
00B0 .dbline 68
00B0 ; NOP();
00B0 0000 nop
00B2 .dbline 69
00B2 ; NOP();
00B2 0000 nop
00B4 .dbline 70
00B4 ; c=M8880_DataPIN&0xf;
00B4 03B3 in R16,0x13
00B6 0F70 andi R16,15
00B8 .dbline 71
00B8 ; M8880_CtrlPort|=M8880_CS|M8880_RW|M8880_CLK|M8880_RS; //set CS RW CLK
00B8 82B3 in R24,0x12
00BA 806F ori R24,240
00BC 82BB out 0x12,R24
00BE .dbline 72
00BE ; M8880_DataDDR|=0X0F;
00BE 84B3 in R24,0x14
00C0 8F60 ori R24,15
00C2 84BB out 0x14,R24
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -