b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

tms320f2812_tms320f2812有哪些外设_tms320f2812的并行机制(11)

电脑杂谈  发布时间:2017-04-03 05:09:36  来源:网络整理

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

//***************************************************************


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-39167-11.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...