亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? flash.s

?? hc08飛思卡爾單片機上實現flash轉換
?? S
字號:
	.module flash.c
	.area text
	.dbfile F:\01科研~1\編著2005\HC08嵌~1\GP32程序\HC08EX~2\C\C06_FL~1\flash.c
	.dbfunc e EarseFlash _EarseFlash fV
;           addr -> 2,X
_EarseFlash::
	.dbline -1
	tsx
	.dbline 30
; /*文件描述:本文件包含的子程序為                       *
; *  1.void EarseFlash(unsigned int addr)               *
; *    Flash擦除子程序                                  *
; *  2.void WriteFlash(unsigned int addr)               *
; *    Flash寫入子程序                                  *
; *說  明:                                              *
; *  1.用來暫存寫入或擦除程序的首末地址的變量pbase,     *
; *    pend;用來暫存待寫入或擦除的Flash首地址faddr;     *
; *    用來存放寫入的數據個數N和寫入的數據data[]必須    *
; *    在main函數中定義,否則將出錯                      *
; *  2.調用擦/寫子程序之前先將待擦/寫頁的后一頁開始的   *
; *       所有區域寫保護                                *
; *-------------《嵌入式應用技術基礎教程》--------------*/
; //[包含頭文件]
; #include "GP32C.h"
; #include <String.h>
; //外部內存變量聲明
; extern unsigned char N,data[]; 
; extern  unsigned int pbase,pend,faddr;
; unsigned char PrgOfRam[]; //存放擦/寫FLASH程序以便執行
; //內部調用函數聲明
; void DoEarseFlash(void); 
; void DoWriteFlash(void);
; /*EarseFlash:擦除指定flash的一頁-----------------------*
; *功  能:擦除以addr為首地址的flash一頁                  *
; *參  數:addr要擦除的首地址                             *
; *返  回:無                                             *
; *-----------------------------------------------------*/
; void EarseFlash(unsigned int addr)
;   { 
	.dbline 31
;     faddr=addr;                   //擦除flash的首地址
	lda 2,X
	sta _faddr
	lda 3,X
	sta _faddr+1
	.dbline 33
;     //將擦除程序從Flash區拷貝到RAM區PrgOfRam
;     asm("ldhx #_DoEarseFlash");   //擦除程序的首地址->HX
	ldhx #_DoEarseFlash
	.dbline 34
;     asm("sthx _pbase");           //HX->內存變量pbase
	sthx _pbase
	.dbline 35
;     asm("ldhx #_EarseFlash_END"); //擦除程序的末地址->HX
	ldhx #_EarseFlash_END
	.dbline 36
;     asm("sthx _pend");            //HX->內存變量pend 
	sthx _pend
	.dbline 37
;     memcpy((void *)PrgOfRam,(void *)pbase,pend-pbase);  
	lda _pend+1
	sub _pbase+1
	sta *__r1
	lda _pend
	sbc _pbase
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	lda _pbase+1
	psha
	lda _pbase
	psha
	lda #<_PrgOfRam
	psha
	lda #>_PrgOfRam
	psha
	jsr _memcpy
	ais #6
	tsx
	.dbline 39
;     //在RAM區執行擦除程序
;     asm("ldhx #_PrgOfRam");	    //擦除程序在RAM區的首地址
	ldhx #_PrgOfRam
	.dbline 40
;     asm("jsr ,X");		        //執行RAM區域的擦除程序
	jsr ,X
	.dbline -2
L1:
	.dbline 0 ; func end
	rts
	.dbsym l addr 2 i
	.dbend
	.dbfunc e DoEarseFlash _DoEarseFlash fV
;              i -> 0,X
_DoEarseFlash::
	.dbline -1
	ais #-1
	tsx
	.dbline 50
;   }
; /*DoEarseFlash:擦除指定flash區-------------------------*
; *功  能: 真正執行擦除addr指向的flash區的操作           *
; *參  數:無                                             *
; *返  回:無                                             *
; *內部調用:延時函數delay1 (用嵌入匯編調用)              *
; *-----------------------------------------------------*/
; void delay1(void);
; void DoEarseFlash(void)
;   {
	.dbline 52
;     unsigned char i;    
;     FLCR=0b00000010;  	   //①1->ERASE,0->MASS(頁擦除)
	lda #2
	sta 0xfe08
	.dbline 53
; 	  i=FLBPR;               //②讀FLBPR	
	lda 0xff7e
	sta ,X
	.dbline 55
; 	                         //③任意數->faddr,選中flash頁
;     *((volatile unsigned char *)faddr)=68;
	lda _faddr+1
	sta *__r1
	lda _faddr
	sta *__r0
	lda #68
	ldhx *__r0
	sta ,x
	tsx
	.dbline 56
;     asm ("bsr _delay1");   //④延時10us
	bsr _delay1
	.dbline 57
;     FLCR=0b00001010;       //⑤1->HVEN (加高壓)
	lda #10
	sta 0xfe08
	.dbline 58
;     asm ("bsr _delay1");   //延時時間必須>1.6ms
	bsr _delay1
	.dbline 59
;     FLCR=0b00001000;	     //⑦0->Erase
	lda #8
	sta 0xfe08
	.dbline 60
;     asm ("bsr _delay1");   //⑧10us
	bsr _delay1
	.dbline 61
;     FLCR=0b00000000;	     //⑨0->HVEN(取消高壓)
	clra
	sta 0xfe08
	.dbline 62
;     asm ("bsr _delay1");   //⑩延時10us
	bsr _delay1
	.dbline -2
L2:
	ais #1
	.dbline 0 ; func end
	rts
	.dbsym l i 0 c
	.dbend
	.dbfunc e delay1 _delay1 fV
;              j -> 0,X
_delay1::
	.dbline -1
	ais #-1
	tsx
	.dbline 65
;   }
; void delay1(void)       //延時一定時間,供上述程序調用
;     { unsigned  char j;
	.dbline 66
	clr ,X
	bra L7
L4:
	.dbline 66
L5:
	.dbline 66
	inc ,X
L7:
	.dbline 66
;       for (j=0;j<10;j++); }    
	lda ,X
	cmp #10
	blo L4
	.dbline -2
L3:
	ais #1
	.dbline 0 ; func end
	rts
	.dbsym l j 0 c
	.dbend
	.dbfunc e EarseFlash_END _EarseFlash_END fV
_EarseFlash_END::
	.dbline -1
	.dbline 68
; void EarseFlash_END(void)  //擦除程序的末地址
;   { }
	.dbline -2
L8:
	.dbline 0 ; func end
	rts
	.dbend
	.dbfunc e WriteFlash _WriteFlash fV
;           addr -> 2,X
_WriteFlash::
	.dbline -1
	tsx
	.dbline 75
; /*WriteFlash:向addr指向的flash區寫入數據---------------*
; *功  能:向指定flash地址寫入數據                        *
; *參  數:addr要寫入的首址                               *
; *返  回:無                                             *
; *-----------------------------------------------------*/
; void WriteFlash(unsigned int addr)
;   {
	.dbline 76
;     faddr=addr;	                 //寫入flash的首地址
	lda 2,X
	sta _faddr
	lda 3,X
	sta _faddr+1
	.dbline 78
;     //將寫入程序從Flash區拷貝到RAM區PrgOfRam
;     asm("ldhx #_DoWriteFlash");  //寫入程序的首地址->HX
	ldhx #_DoWriteFlash
	.dbline 79
;     asm("sthx _pbase");          //HX->內存變量pbase  
	sthx _pbase
	.dbline 80
;     asm("ldhx #_WriteFlash_END");//寫入程序的末地址->HX 
	ldhx #_WriteFlash_END
	.dbline 81
;     asm("sthx _pend");           //HX->內存變量pend
	sthx _pend
	.dbline 83
;     //將寫入程序從Flash區拷貝到RAM區PrgOfRam
;     memcpy((void *)PrgOfRam,(void *)pbase,pend-pbase);
	lda _pend+1
	sub _pbase+1
	sta *__r1
	lda _pend
	sbc _pbase
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	lda _pbase+1
	psha
	lda _pbase
	psha
	lda #<_PrgOfRam
	psha
	lda #>_PrgOfRam
	psha
	jsr _memcpy
	ais #6
	tsx
	.dbline 85
;     //在RAM區執行寫入程序
;     asm("LDHX #_PrgOfRam");    //寫入程序在RAM的首地址 
	LDHX #_PrgOfRam
	.dbline 86
;     asm("jsr ,X");		           //執行RAM區的寫入程序
	jsr ,X
	.dbline -2
L9:
	.dbline 0 ; func end
	rts
	.dbsym l addr 2 i
	.dbend
	.dbfunc e DoWriteFlash _DoWriteFlash fV
;              i -> 0,X
;              j -> 1,X
_DoWriteFlash::
	.dbline -1
	ais #-2
	tsx
	.dbline 96
;   }
; /*DoWriteFlash:實際執行的寫入函數----------------------*
; *功  能:調入內存執行擦除指定flash地址的數據            *
; *參  數:無                                             *
; *返  回:無                                             *
; *內部調用:延時函數delay2(用嵌入匯編調用)               *
; *-----------------------------------------------------*/
; void delay2(void);
; void DoWriteFlash(void)
;   {
	.dbline 99
;     unsigned char i;
;     unsigned char j;    
;     FLCR=0b00000001;  	   //①1->PGM							 
	lda #1
	sta 0xfe08
	.dbline 100
;   	i=FLBPR;               //②讀FLBPR 
	lda 0xff7e
	sta ,X
	.dbline 102
;   	                       //③任意數->faddr,選中flash行
;     *((volatile unsigned char *)faddr)=56; 
	lda _faddr+1
	sta *__r1
	lda _faddr
	sta *__r0
	lda #56
	ldhx *__r0
	sta ,x
	tsx
	.dbline 103
;     asm ("bsr _delay2");   //④延時10us
	bsr _delay2
	.dbline 104
;     FLCR=0b00001001;	     //⑤1->HVEN
	lda #9
	sta 0xfe08
	.dbline 105
;     asm ("bsr _delay2");   //⑥延時10us
	bsr _delay2
	.dbline 107
;     //⑦將數據寫入相應的flash地址		 
;     for(i=0;i<N;i++)
	clr ,X
	bra L14
L11:
	.dbline 108
;       {		                 //數據送入flash地址
	.dbline 109
;   	   *((volatile unsigned char *)faddr+i)=data[i];
	clr *__r0
	lda ,X
	add #<_data
	sta *__r1
	lda *__r0
	adc #>_data
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	clr *__r2
	lda ,X
	add _faddr+1
	sta *__r3
	lda *__r2
	adc _faddr
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 110
	clr 1,X
	bra L18
L15:
	.dbline 110
L16:
	.dbline 110
	inc 1,X
L18:
	.dbline 110
	lda 1,X
	cmp #30
	blo L15
	.dbline 111
L12:
	.dbline 107
	inc ,X
L14:
	.dbline 107
	lda ,X
	cmp _N
	blo L11
	.dbline 112
;   	   for (j=0;j<30;j++); //⑧延時30us,不能調用延時程序
;   	  }   
;     FLCR=0b00001000;	     //⑨0->PGM  
	lda #8
	sta 0xfe08
	.dbline 113
;     asm ("bsr _delay2");   //⑩延時10us
	bsr _delay2
	.dbline 114
;     FLCR=0b00000000;	     //⑾0->HVEN  
	clra
	sta 0xfe08
	.dbline 115
;     asm ("bsr _delay2");   //⑿延時6us
	bsr _delay2
	.dbline -2
L10:
	ais #2
	.dbline 0 ; func end
	rts
	.dbsym l i 0 c
	.dbsym l j 1 c
	.dbend
	.dbfunc e delay2 _delay2 fV
;              j -> 0,X
_delay2::
	.dbline -1
	ais #-1
	tsx
	.dbline 118
;   }
; void delay2(void)  //延時一定時間
;     { unsigned  char j;
	.dbline 119
	clr ,X
	bra L23
L20:
	.dbline 119
L21:
	.dbline 119
	inc ,X
L23:
	.dbline 119
;       for (j=0;j<10;j++); }    
	lda ,X
	cmp #10
	blo L20
	.dbline -2
L19:
	ais #1
	.dbline 0 ; func end
	rts
	.dbsym l j 0 c
	.dbend
	.dbfunc e WriteFlash_END _WriteFlash_END fV
_WriteFlash_END::
	.dbline -1
	.dbline 121
; void WriteFlash_END(void)   //寫入程序的末地址
;   { }
	.dbline -2
L24:
	.dbline 0 ; func end
	rts
	.dbend
	.area bss
	.dbfile F:\01科研~1\編著2005\HC08嵌~1\GP32程序\HC08EX~2\C\C06_FL~1\flash.c
_PrgOfRam::
	.blkb 1
	.dbsym e PrgOfRam _PrgOfRam A[1:1]c

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清视频www夜色资源网| 9191久久久久久久久久久| 欧美一区二区三区在线观看 | www.亚洲精品| 精品国产乱码久久久久久夜甘婷婷| 亚洲国产精品人人做人人爽| 成人午夜又粗又硬又大| 亚洲人成在线观看一区二区| 久久99精品国产91久久来源| 久久网这里都是精品| 不卡大黄网站免费看| 最近日韩中文字幕| 日韩三级免费观看| 国产一区二区三区电影在线观看| 欧美一区二区三区在| 欧美精品电影在线播放| 欧美一区二区三区视频| 国产视频在线观看一区二区三区| 国产精品一区专区| 一二三区精品福利视频| 精品成人一区二区三区| 中文字幕亚洲成人| 日韩视频不卡中文| 精品91自产拍在线观看一区| 国产精品久久久久久亚洲伦| 欧美一区二区久久久| 久久午夜色播影院免费高清| 亚洲人快播电影网| 国产河南妇女毛片精品久久久| 日本成人在线看| 国产精品电影一区二区| 一区二区三区丝袜| 精品一区二区三区免费视频| 色综合中文字幕国产 | 日本一区二区免费在线观看视频| 91麻豆精品在线观看| 99精品欧美一区二区蜜桃免费 | 国产另类ts人妖一区二区| 欧美精品一级二级| 中文字幕在线视频一区| 黄色小说综合网站| 精品一区二区在线免费观看| 欧美丰满美乳xxx高潮www| 亚洲欧美综合在线精品| 精品一区二区三区日韩| 日韩免费一区二区三区在线播放| 91美女在线看| 亚洲国产日韩精品| 欧美亚洲另类激情小说| 欧美色图在线观看| 一区二区在线观看视频在线观看| 中文字幕一区二区三区视频| 国产一区二三区好的| 久久精品亚洲精品国产欧美kt∨| 国内精品国产成人国产三级粉色 | 欧美一级欧美三级| 五月天中文字幕一区二区| 一区二区三区在线免费播放| 国产精品亚洲午夜一区二区三区| 欧美韩国一区二区| 五月天久久比比资源色| 精品乱人伦一区二区三区| 亚洲视频香蕉人妖| 日韩一级完整毛片| 成人av在线播放网址| 日韩和的一区二区| 欧美色男人天堂| 亚洲精品一卡二卡| 久久精品亚洲一区二区三区浴池| 97久久精品人人澡人人爽| 日韩精品一二三区| 中文字幕一区日韩精品欧美| 欧美日韩午夜在线| 欧美在线免费观看视频| 国产精品成人在线观看| 在线观看免费亚洲| 国产永久精品大片wwwapp| 亚洲国产精华液网站w | 精品不卡在线视频| 欧美三级午夜理伦三级中视频| 国产福利视频一区二区三区| 亚洲黄色片在线观看| 日本一区二区三区电影| 欧美v国产在线一区二区三区| 日本道色综合久久| 亚洲成人www| 99vv1com这只有精品| 国产成人在线视频网址| 久久精品国产澳门| 99久久免费视频.com| 日韩成人免费在线| 亚洲男同性视频| 亚洲一二三四区| 欧美日韩国产精选| 777奇米四色成人影色区| 日韩欧美国产一区二区在线播放| 欧美片在线播放| 欧美精品亚洲一区二区在线播放| 欧美综合色免费| 欧美乱妇23p| 日本一区二区视频在线观看| 日本一区二区三区免费乱视频| 中文字幕第一区综合| 欧美国产一区视频在线观看| 中文在线一区二区| 亚洲三级在线免费观看| 麻豆精品国产91久久久久久| 亚洲国产精品99久久久久久久久 | 日韩一卡二卡三卡四卡| 久久婷婷综合激情| 亚洲欧洲精品一区二区精品久久久| 亚洲免费在线播放| 国产精品18久久久久久久久 | 亚洲日本电影在线| 国产精品一区二区视频| 91精品国产综合久久香蕉的特点| 91精品国产色综合久久ai换脸| 精品国产免费视频| 婷婷久久综合九色综合伊人色| 丰满放荡岳乱妇91ww| 久久一区二区三区国产精品| 亚洲成av人片www| 日本伦理一区二区| 国产精品国产三级国产aⅴ原创 | 国产成人av自拍| 69久久夜色精品国产69蝌蚪网| 久久无码av三级| 开心九九激情九九欧美日韩精美视频电影| 色综合色综合色综合 | 国产成人免费在线观看| 精品国产一区二区国模嫣然| 日韩高清在线电影| 欧美精品电影在线播放| 亚洲高清免费在线| 欧美日韩电影一区| 美女视频网站黄色亚洲| 精品久久久久久最新网址| 国产久卡久卡久卡久卡视频精品| 欧美精品在线观看播放| 免费一级片91| 久久嫩草精品久久久久| 国产精品888| 亚洲免费大片在线观看| 成人a免费在线看| 亚洲欧洲综合另类| 91精品国产欧美日韩| 久久99久久99| 国产精品欧美一区二区三区| 色妹子一区二区| 婷婷一区二区三区| 久久麻豆一区二区| 91高清视频在线| 精品亚洲成av人在线观看| 国产精品久久久久久久久动漫 | 欧美日韩一区视频| 免费在线观看不卡| 中文一区在线播放| 欧美日韩一区三区四区| 久久99久久久欧美国产| 亚洲欧美福利一区二区| 日韩视频免费观看高清完整版 | 3d动漫精品啪啪1区2区免费| 国产成人av影院| 五月激情丁香一区二区三区| 亚洲精品一区在线观看| 91免费观看在线| 国内一区二区视频| 美女一区二区在线观看| 亚洲综合在线五月| 欧美区一区二区三区| 懂色一区二区三区免费观看| 免费精品视频在线| 午夜婷婷国产麻豆精品| 亚洲电影一区二区| 一区二区不卡在线播放| 26uuu色噜噜精品一区| 欧美一区二区视频观看视频| 欧美日韩高清一区二区不卡| 不卡一区二区中文字幕| 韩国av一区二区三区| 亚洲高清三级视频| 日韩电影免费在线观看网站| 亚洲激情在线激情| 亚洲综合激情小说| 一区二区国产盗摄色噜噜| 亚洲成人手机在线| 亚洲一二三四在线| 看片网站欧美日韩| 97精品久久久午夜一区二区三区| 91免费看片在线观看| 日本伦理一区二区| 欧美伦理视频网站| 欧美激情资源网| 亚洲精品精品亚洲| 首页国产欧美久久| 久久超级碰视频| 92精品国产成人观看免费| 精品国产免费一区二区三区香蕉| 中文字幕在线不卡| 亚洲国产日韩精品|