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

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

?? [單片機]volatile 實例講解(原創).c

?? 單片機C語言編程中volatile使用示范
?? C
字號:
[單片機]volatile 實例講解(原創)(li3)
[日期:2005-12-31] 來源:水影的筆記  作者:水影 [字體:大 中 小]  

 


volatile的本意是一般有兩種說法--1.“暫態的”;2.“易變的”。 
這兩種說法都有可行。但是究竟volatile是什么意思,現舉例說明(以Keil-c與a51為例 例子來自Keil FQA),看完例子后你應該明白volatile的意思了,如果還不明白,那只好 再看一遍了。 

例1. 

void main (void) 
{ 
volatile int i; 
int j; 

i = 1;  //1  不被優化 i=1 
i = 2;  //2  不被優化 i=1 
i = 3;  //3  不被優化 i=1 

j = 1;  //4  被優化 
j = 2;  //5  被優化 
j = 3;  //6  j = 3 
} 
--------------------------------------------------------------------- 
例2. 

函數: 

void func (void) 
{ 
unsigned char xdata xdata_junk; 
unsigned char xdata *p = &xdata_junk; 
unsigned char t1, t2; 

t1 = *p; 
t2 = *p; 
} 

編譯的匯編為: 

0000 7E00    R     MOV     R6,#HIGH xdata_junk 
0002 7F00    R     MOV     R7,#LOW xdata_junk 
;---- Variable ’p’ assigned to Register ’R6/R7’ ---- 

0004 8F82          MOV     DPL,R7 
0006 8E83          MOV     DPH,R6 

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 注意 
0008 E0            MOVX    A,@DPTR 
0009 F500    R     MOV     t1,A 

000B F500    R     MOV     t2,A 
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
000D 22            RET      

將函數變為: 
void func (void) 
{ 
volatile unsigned char xdata xdata_junk; 
volatile unsigned char xdata *p = &xdata_junk; 
unsigned char t1, t2; 

t1 = *p; 
t2 = *p; 
} 

編譯的匯編為: 
0000 7E00    R     MOV     R6,#HIGH xdata_junk 
0002 7F00    R     MOV     R7,#LOW xdata_junk 
;---- Variable ’p’ assigned to Register ’R6/R7’ ---- 

0004 8F82          MOV     DPL,R7 
0006 8E83          MOV     DPH,R6 

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
0008 E0            MOVX    A,@DPTR 
0009 F500    R     MOV     t1,A        ;a處 

000B E0            MOVX    A,@DPTR 
000C F500    R     MOV     t2,A 
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

000E 22            RET      


比較結果可以看出來,未用volatile關鍵字時,只從*p所指的地址讀一次 
如在a處*p的內容有變化,則t2得到的則不是真正*p的內容。 

--------------------------------------------------------------------- 
例3 


volatile unsigned char bdata var;  // use volatile keyword here 
sbit var_0 = var^0; 
sbit var_1 = var^1; 
unsigned char xdata values[10]; 

void main (void)  { 
  unsigned char i; 

  for (i = 0; i < sizeof (values); i++)  { 
    var = values[i]; 
    if (var_0)  { 
      var_1 = 1; //a處 
        
      values[i] = var;  // without the volatile keyword, the compiler 
                        // assumes that ’var’ is unmodified and does not 
                        // reload the variable content. 
    } 
  } 
} 


在此例中,如在a處到下一句運行前,var如有變化則不會,如var=0xff; 則在 
values[i] = var;得到的還是values[i] = 1; 

--------------------------------------------------------------------- 
應用舉例: 

例1. 
#define DBYTE ((unsigned char volatile data  *) 0) 

說明:此處不用volatile關鍵字,可能得不到真正的內容。 
--------------------------------------------------------------------- 

例2. 


#define TEST_VOLATILE_C  

//*************************************************************** 
// verwendete Include Dateien 
//*************************************************************** 
#if __C51__ < 600 
  #error: !! Keil 版本不正確 
#endif 

//*************************************************************** 
// 函數 void v_IntOccured(void) 
//*************************************************************** 
extern void v_IntOccured(void); 

//*************************************************************** 
// 變量定義 
//*************************************************************** 
char xdata cValue1;          //全局xdata 
char volatile xdata cValue2; //全局xdata 

//*************************************************************** 
// 函數: v_ExtInt0() 
// 版本: 
// 參數: 
// 用途:cValue1++,cValue2++ 
//*************************************************************** 
void v_ExtInt0(void) interrupt 0 { 
  cValue1++; 
  cValue2++;  
}  

//*************************************************************** 
// 函數: main() 
// 版本: 
// 參數: 
// 用途:測試volatile 
//*************************************************************** 

void main() { 
char cErg; 

//1. 使cErg=cValue1; 
cErg = cValue1; 

//2. 在此處仿真時手動產生中斷INT0,使cValue1++; cValue2++ 
if (cValue1 != cErg) 
  v_IntOccured(); 

//3. 使cErg=cValue2; 
cErg = cValue2; 

//4. 在此處仿真時手動產生中斷INT0,使cValue1++; cValue2++ 
if (cValue2 != cErg) 
  v_IntOccured(); 
   
//5. 完成 
  while (1); 
} 

//*************************************************************** 
// 函數: v_IntOccured() 
// 版本: 
// 參數: 
// 用途: 死循環 
//*************************************************************** 
void v_IntOccured() { 
  while(1); 
} 

仿真可以看出,在沒有用volatile時,即2處,程序不能進入v_IntOccured(); 
但在4處可以進入v_IntOccured();  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女脱光内衣内裤视频久久影院| 欧美国产一区二区| 亚洲国产一区二区三区| 欧美视频一区二区三区| 亚洲综合在线免费观看| 欧美在线999| 日本人妖一区二区| 日韩一级片网站| 国产在线不卡视频| 欧美国产精品中文字幕| 色综合天天狠狠| 亚洲福利视频一区| 日韩视频免费观看高清完整版| 麻豆成人在线观看| 国产精品水嫩水嫩| 在线欧美小视频| 老司机精品视频线观看86| 亚洲国产精华液网站w | 成人午夜碰碰视频| ...xxx性欧美| 欧美一区二区三区男人的天堂| 激情综合网激情| ...av二区三区久久精品| 7777精品伊人久久久大香线蕉| 久久精品国产99| 日韩久久一区二区| 欧美精品777| 福利一区二区在线| 亚洲国产精品久久一线不卡| 蜜桃一区二区三区四区| 欧美一级爆毛片| 精品一区二区国语对白| 国产精品女主播在线观看| 91成人看片片| 国产一区二区美女诱惑| 一级女性全黄久久生活片免费| 亚洲黄色性网站| 欧美成人video| 色综合久久久久| 激情综合五月天| 亚洲高清久久久| 国产精品女同一区二区三区| 在线成人免费视频| 99久久精品免费精品国产| 免费在线观看视频一区| 专区另类欧美日韩| 精品国产精品网麻豆系列| 欧美午夜电影网| 成人高清视频免费观看| 久久成人综合网| 亚洲大片在线观看| 国产精品剧情在线亚洲| 欧美成人一级视频| 欧美三级中文字| 99天天综合性| 国产91精品在线观看| 日本不卡不码高清免费观看| 亚洲夂夂婷婷色拍ww47| 国产精品成人免费在线| 精品日韩av一区二区| 欧美一级免费观看| 欧美日韩一区国产| 一本色道久久综合亚洲精品按摩| 不卡一二三区首页| 国产激情精品久久久第一区二区 | 欧美午夜一区二区三区免费大片| 成人网页在线观看| 国产精品一区二区三区乱码| 麻豆精品国产传媒mv男同| 亚洲福利一区二区| 亚洲高清不卡在线| 亚洲电影中文字幕在线观看| 成人av动漫网站| 国产99久久久国产精品潘金 | 欧美女孩性生活视频| 色婷婷av一区二区| 欧美亚洲高清一区| 欧美性三三影院| 欧美另类z0zxhd电影| 欧美日韩国产经典色站一区二区三区| 色综合色综合色综合| 色视频成人在线观看免| 91丝袜国产在线播放| 色狠狠一区二区| 欧美亚洲高清一区| 538prom精品视频线放| 欧美日韩国产经典色站一区二区三区| 欧美日韩一区不卡| 欧美一区二区三区免费观看视频 | 在线免费视频一区二区| 色网站国产精品| 欧美日韩亚洲综合一区| 日韩一区二区三区三四区视频在线观看| 欧美日韩五月天| 欧美一区二区成人6969| 日韩精品一区二区在线| 国产三级一区二区| 亚洲人成亚洲人成在线观看图片| 一区二区三区毛片| 蜜臀久久99精品久久久画质超高清| 日本伊人精品一区二区三区观看方式 | 亚洲天堂久久久久久久| 亚洲宅男天堂在线观看无病毒| 香蕉成人伊视频在线观看| 日日摸夜夜添夜夜添国产精品| 捆绑调教美女网站视频一区| 国产精品12区| 91久久久免费一区二区| 日韩精品综合一本久道在线视频| 国产偷v国产偷v亚洲高清| 亚洲日本一区二区三区| 青青草原综合久久大伊人精品优势| 精品一区二区在线视频| 成人av电影免费观看| 欧美伊人久久久久久午夜久久久久| 欧美久久久影院| 久久美女高清视频| 亚洲国产日韩一区二区| 国产一区二区免费看| 欧美综合一区二区三区| 欧美精品一区二区久久久| 亚洲婷婷在线视频| 日韩**一区毛片| 成人h动漫精品一区二区| 欧美日韩国产综合一区二区| 国产亚洲综合性久久久影院| 伊人夜夜躁av伊人久久| 国产在线一区二区综合免费视频| 99视频有精品| 精品日韩一区二区三区免费视频| 一区二区三区四区乱视频| 麻豆精品一二三| 欧美亚洲禁片免费| 国产精品久久久久影院| 精品一区二区三区不卡| 欧美日韩精品一二三区| 国产精品天美传媒沈樵| 青青青伊人色综合久久| 在线视频国产一区| 国产精品乱码妇女bbbb| 久久精品久久精品| 欧美三级视频在线| 1000精品久久久久久久久| 韩国av一区二区三区四区| 在线电影一区二区三区| 夜夜精品浪潮av一区二区三区 | 成人深夜在线观看| 精品国产乱码久久久久久老虎| 亚洲国产精品久久久久婷婷884 | 盗摄精品av一区二区三区| 日韩一区二区在线看| 亚洲国产美女搞黄色| 成人ar影院免费观看视频| 99久久99久久精品国产片果冻 | 一区二区三区四区在线播放| av在线不卡免费看| 国产精品狼人久久影院观看方式| 国产乱码精品一区二区三区忘忧草 | 国产日韩综合av| 精品一区二区三区视频在线观看| 91精品国产综合久久香蕉麻豆| 午夜精品视频在线观看| 欧美一区二区三区日韩| 国产精品羞羞答答xxdd| 欧美极品另类videosde| 色噜噜狠狠色综合中国| 手机精品视频在线观看| 久久五月婷婷丁香社区| 高清在线不卡av| 午夜久久久久久| 日韩欧美国产三级| 男人的天堂久久精品| 精品视频一区二区三区免费| 丝袜脚交一区二区| 国产精品久久久久久久久搜平片 | 国产一区二区三区不卡在线观看| 国产精品入口麻豆九色| 欧美年轻男男videosbes| 成人av在线资源网站| 亚洲日本一区二区| 亚洲日本乱码在线观看| 国产精品性做久久久久久| 91精品国产免费| 国产午夜精品久久久久久免费视 | 国产精品久久久久久久久晋中 | 亚洲人成网站色在线观看| 99热这里都是精品| 一区二区三国产精华液| 在线成人av网站| 免费美女久久99| 久久先锋资源网| 91蜜桃视频在线| 五月综合激情网| 久久蜜桃香蕉精品一区二区三区| 成人国产精品免费观看| 亚洲成av人在线观看| 欧美电影免费观看高清完整版在线| 国产精品伊人色| 亚洲激情综合网| 日韩欧美一级特黄在线播放|