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

📄 feedis_flash.lis

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 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 + -