📄 feedis_flash.lis
字号:
.module feedis_flash.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_flash.c
0000 .dbfunc e flash_read _flash_read fV
0000 ; num -> R20,R21
0000 ; temp -> R22
0000 ; temp1 -> R12
0000 ; fors -> y+10
0000 ; length -> R10,R11
0000 ; page -> R20,R21
0000 ; column -> R22
.even
0000 _flash_read::
0000 0E940000 xcall push_gset4
0004 A901 movw R20,R18
0006 602F mov R22,R16
0008 A884 ldd R10,y+8
000A B984 ldd R11,y+9
000C .dbline -1
000C .dbline 4
000C ; #include <include.h>
000C ; uchar hantemp[32];
000C ; void flash_read(uchar column,uint page,uint length,uchar fors) //fors 表示是第一或者第二区段
000C ; {
000C .dbline 7
000C ; uchar temp,temp1;
000C ; uint num;
000C ; DDRA = 0xff; //PORTA 变成输出口
000C 8FEF ldi R24,255
000E 8ABB out 0x1a,R24
0010 .dbline 9
0010 ; // P1.4 ;RB置高
0010 ; SETBIT(PORTF, RW_4245_1);
0010 80916200 lds R24,98
0014 8160 ori R24,1
0016 80936200 sts 98,R24
001A .dbline 11
001A ; //RW_4245_1 = 1; //设置第一个4245方向为写
001A ; CLEARBIT(PORTF, OE_4245_1);
001A 80916200 lds R24,98
001E 8B7F andi R24,251
0020 80936200 sts 98,R24
0024 .dbline 13
0024 ; //OE_4245_1 = 0; //第一个4245使能输出
0024 ; SETBIT(PORTF, RW_4245_2 );
0024 80916200 lds R24,98
0028 8260 ori R24,2
002A 80936200 sts 98,R24
002E .dbline 15
002E ; //RW_4245_2 = 1; //设置第二个4245方向为写
002E ; CLEARBIT(PORTF, OE_4245_2);
002E 80916200 lds R24,98
0032 877F andi R24,247
0034 80936200 sts 98,R24
0038 .dbline 17
0038 ; //OE_4245_2 = 0; //第二个4245使能输出
0038 ; SETBIT(PORTE, RE_4245);
0038 1D9A sbi 0x3,5
003A .dbline 19
003A ; //RE_4245 = 1; //RE置高
003A ; CLEARBIT(PORTE, ALE_4245);
003A 1B98 cbi 0x3,3
003C .dbline 21
003C ; //ALE_4245 = 0; //ALE置低
003C ; CLEARBIT(PORTE, WE_4245);
003C 1C98 cbi 0x3,4
003E .dbline 23
003E ; //WE_4245 = 0; //WE置低
003E ; SETBIT(PORTE, CLE_4245);
003E 1A9A sbi 0x3,2
0040 .dbline 25
0040 ; //CLE_4245 = 1; //CLE置高
0040 ; PORTA = fors;
0040 0A84 ldd R0,y+10
0042 0BBA out 0x1b,R0
0044 .dbline 27
0044 ; //P0 = fors; //命令字,'00'从前面为读 '01'从后面读
0044 ; SETBIT(PORTE, WE_4245);
0044 1C9A sbi 0x3,4
0046 .dbline 29
0046 ; //WE_4245 = 1; //WE置高
0046 ; CLEARBIT(PORTE, CLE_4245);
0046 1A98 cbi 0x3,2
0048 .dbline 31
0048 ; //CLE_4245 = 0; //CLE置低
0048 ; SETBIT(PORTE, ALE_4245);
0048 1B9A sbi 0x3,3
004A .dbline 33
004A ; //ALE_4245 = 1; //ALE置高
004A ; CLEARBIT(PORTE, WE_4245);
004A 1C98 cbi 0x3,4
004C .dbline 35
004C ; //WE_4245 = 0; //WE置低
004C ; PORTA = column;
004C 6BBB out 0x1b,R22
004E .dbline 37
004E ; //P0 = column; //地址0-7位
004E ; SETBIT(PORTE, WE_4245);
004E 1C9A sbi 0x3,4
0050 .dbline 39
0050 ; //WE_4245 = 1; //WE置高
0050 ; CLEARBIT(PORTE, WE_4245);
0050 1C98 cbi 0x3,4
0052 .dbline 41
0052 ; //WE_4245 = 0; //WE置低
0052 ; temp = (uchar)((page>>1) & 0x00ff);
0052 BA01 movw R22,R20
0054 7695 lsr R23
0056 6795 ror R22
0058 7070 andi R23,0
005A .dbline 42
005A ; PORTA = temp;
005A 6BBB out 0x1b,R22
005C .dbline 44
005C ; //P0 = temp; //地址8-15位
005C ; SETBIT(PORTE, WE_4245);
005C 1C9A sbi 0x3,4
005E .dbline 46
005E ; //WE_4245 = 1; //WE置高
005E ; CLEARBIT(PORTE, WE_4245);
005E 1C98 cbi 0x3,4
0060 .dbline 48
0060 ; //WE_4245 = 0; //WE置低
0060 ; temp = (uchar)((page>>9) & 0x00ff);
0060 29E0 ldi R18,9
0062 30E0 ldi R19,0
0064 8A01 movw R16,R20
0066 0E940000 xcall lsr16
006A 602F mov R22,R16
006C 7070 andi R23,0
006E .dbline 49
006E ; PORTA = temp;
006E 6BBB out 0x1b,R22
0070 .dbline 51
0070 ; //P0 = temp; //地址16-23位
0070 ; SETBIT(PORTE, WE_4245);
0070 1C9A sbi 0x3,4
0072 .dbline 53
0072 ; //WE_4245 = 1; //WE置高
0072 ; CLEARBIT(PORTE, ALE_4245);
0072 1B98 cbi 0x3,3
0074 .dbline 55
0074 ; //ALE_4245 = 0; //ALE置低
0074 ; for(temp = 0;temp < 20;temp++)
0074 6627 clr R22
0076 02C0 xjmp L6
0078 L3:
0078 .dbline 56
0078 0000 nop
007A L4:
007A .dbline 55
007A 6395 inc R22
007C L6:
007C .dbline 55
007C 6431 cpi R22,20
007E E0F3 brlo L3
0080 .dbline 95
0080 ; NOP();
0080 ; /*
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();
0080 ; _nop_();*/
0080 ;
0080 ; CLEARBIT(PORTF, RW_4245_1);
0080 80916200 lds R24,98
0084 8E7F andi R24,254
0086 80936200 sts 98,R24
008A .dbline 97
008A ; //RW_4245_1 = 0; //设置第一个4245方向为读l
008A ; PORTA = 0XFF;
008A 8FEF ldi R24,255
008C 8BBB out 0x1b,R24
008E .dbline 98
008E ; DDRA = 0x00; //PORTA 变成输入口
008E 2224 clr R2
0090 2ABA out 0x1a,R2
0092 .dbline 100
0092 ; //P0 = 0xff; //清理P0口
0092 ; for(num = 1;num <= length; num++)
0092 41E0 ldi R20,1
0094 50E0 ldi R21,0
0096 1DC0 xjmp L10
0098 L7:
0098 .dbline 101
0098 ; {
0098 .dbline 102
0098 ; CLEARBIT(PORTE, RE_4245);
0098 1D98 cbi 0x3,5
009A .dbline 104
009A ; //RE_4245 = 0;
009A ; SETBIT(PORTE, RE_4245);
009A 1D9A sbi 0x3,5
009C .dbline 106
009C ; //RE_4245 = 1;
009C ; temp = PINA;
009C 69B3 in R22,0x19
009E .dbline 107
009E ; hantemp[num-1] = temp;
009E 80E0 ldi R24,<_hantemp
00A0 90E0 ldi R25,>_hantemp
00A2 FA01 movw R30,R20
00A4 3197 sbiw R30,1
00A6 E80F add R30,R24
00A8 F91F adc R31,R25
00AA 6083 std z+0,R22
00AC .dbline 109
00AC ; // ramadd++;
00AC ; WDR();
00AC A895 wdr
00AE .dbline 111
00AE ; //WDOG;
00AE ; if((num % 512) == 0)
00AE CA01 movw R24,R20
00B0 9170 andi R25,1
00B2 8030 cpi R24,0
00B4 8907 cpc R24,R25
00B6 59F4 brne L11
00B8 X0:
00B8 .dbline 112
00B8 ; {
00B8 .dbline 113
00B8 ; for(temp1 = 0;temp1 <16;temp1++ )
00B8 CC24 clr R12
00BA 04C0 xjmp L16
00BC L13:
00BC .dbline 114
00BC .dbline 116
00BC A895 wdr
00BE .dbline 117
00BE 1D98 cbi 0x3,5
00C0 .dbline 119
00C0 1D9A sbi 0x3,5
00C2 .dbline 121
00C2 L14:
00C2 .dbline 113
00C2 C394 inc R12
00C4 L16:
00C4 .dbline 113
00C4 8C2D mov R24,R12
00C6 8031 cpi R24,16
00C8 C8F3 brlo L13
00CA .dbline 124
00CA ; {
00CA ; //WDOG;
00CA ; WDR();
00CA ; CLEARBIT(PORTE, RE_4245);
00CA ; //RE_4245 = 0;
00CA ; SETBIT(PORTE, RE_4245);
00CA ; //RE_4245 = 1;
00CA ; }
00CA ; // page +=2;
00CA ; // column = 0x00;
00CA ; PORTA = 0XFF;
00CA 8FEF ldi R24,255
00CC 8BBB out 0x1b,R24
00CE .dbline 127
00CE ; //P0 = 0xff;
00CE ;
00CE ; }
00CE L11:
00CE .dbline 129
00CE L8:
00CE .dbline 100
00CE 4F5F subi R20,255 ; offset = 1
00D0 5F4F sbci R21,255
00D2 L10:
00D2 .dbline 100
00D2 A416 cp R10,R20
00D4 B506 cpc R11,R21
00D6 00F7 brsh L7
00D8 .dbline -2
00D8 L2:
00D8 0E940000 xcall pop_gset4
00DC .dbline 0 ; func end
00DC 0895 ret
00DE .dbsym r num 20 i
00DE .dbsym r temp 22 c
00DE .dbsym r temp1 12 c
00DE .dbsym l fors 10 c
00DE .dbsym r length 10 i
00DE .dbsym r page 20 i
00DE .dbsym r column 22 c
00DE .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_flash.c
0000 _hantemp::
0000 .blkb 32
0020 .dbsym e hantemp _hantemp A[32:32]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -