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

📄 flash.c

📁 HC12DG128A FLASH eeprom汇编写入程序
💻 C
字号:
unsigned char data[1280];
unsigned char times;
unsigned char counter;
unsigned char error=0;
void flash(void)
{asm{start:movb #$8F,COPCTL;
           ldx #$00;
           ldaa #$1;
     data_load:staa data,x;
               inca;
               inx;
               cmpa #!65;
               bne data_load;
               movb #$01,MISC;
               movb #$01,PPAGE;
               ldaa #$01;
               staa FEEMCR;
               ldx #$8002;
               jsr flasherase;
               ldx #$8040;
               ldy #data;
               jsr progrow;
               ldaa #$01;
               staa FEEMCR;
     verify://movb #!32,counter;//此指令在该情况下不能正常工作
            ldaa #32;
            staa counter;			  
            ldy  #data;
            ldx  #$8040;
     verifyloop:ldd  0,x;
                 cpd  0,y;
                 bne error;
                 dec counter;
                 inx;
                 inx;
                 iny;
                 iny;
                 bra verifyloop;
      error:ldaa #$01;
      done:bra done;
      flasherase:sei;
                 ldaa #$02;
                 staa FEECTL;
                 std  0,x;
                 ldaa #$14;
                 dbne A,*;
                 ldaa #$0F;
                 staa FEECTL;
                 movb #!8,times;
                 jsr ms_delay;
                 ldaa #$80;
                 staa FEECTL;
                 ldd #$0C8;
                 dbne D,*;
                 ldaa #$00;
                 staa FEECTL;
                 ldaa #$02;
                 dbne a,*;
                 cli;
                 rts;
     progrow:sei;
              ldaa #$01;
              staa FEECTL;
              std  0,X;
    		  ldaa #$14;
              dbne A,*;
              ldaa #$09;
              staa FEECTL;
              ldaa #$0A;
              dbne A,*;
              //movb #!32,counter;
              ldaa #32;
              staa counter;
     copy_loop:movw 0,y,0,x;
               inx;
               inx;
               iny;
               iny;
               ldaa #$39;
               dbne A,*;
               dec counter;
               bne copy_loop;
               ldaa #$80;
               staa FEECTL;
               ldaa #$0A;
               dbne A,*;
               ldaa #$00;
               staa FEECTL;
               ldaa #$02;
               dbne A,*;      
               cli;  
               rts;
     ms_delay:ldaa #$4AD;
     ms_loop:subd #$01;
             bne ms_loop;
             tst times;
             nop;
             dec times;
             bne ms_delay;
             rts;
	   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -