网站建设的大公司有哪些,辽宁东方建设工程有限公司网站,股权分配系统建设网站,济南seo网站建站一、实验目的#xff1a;
1.掌握C51编程基础#xff0c;C51程序结构。
2.掌握C51数据类型、函数设计。
3.掌握C51程序的编辑、编译、调试和运行 二、编程提示
编程将片外8000H单元开始的10字节的内容移至8100H开始的各单元中。8000H单元开始的10字节内容用编程方式赋值。…一、实验目的
1.掌握C51编程基础C51程序结构。
2.掌握C51数据类型、函数设计。
3.掌握C51程序的编辑、编译、调试和运行 二、编程提示
编程将片外8000H单元开始的10字节的内容移至8100H开始的各单元中。8000H单元开始的10字节内容用编程方式赋值。编程将片内50H单元开始10字节的内容初始化为09然后移至55H开始的各单元中。在片外RAM的2000~200FH中查找零把零的个数放在2010H中。Number单元是字数据单元将其拆分成十进制数, 存入 Result 数组。Number单元地址为片内0x30。三、流程图实验内容1程序流程 实验内容3程序流程 四、每小题代码及流程图
编程将片外8000H单元开始的10字节的内容移至8100H开始的各单元中。8000H单元开始的10字节内容用编程方式赋值
代码
#includeabsacc.h
#includereg51.h
#define uchar unsigned char
void main(void)
{ uchar xdata *xdp1; uchar xdata *xdp2; uchar data i; xdp10x8000; xdp20x8100; for(i0;i9;i) { *(xdp1i)10i; } for(i0;i9;i) { *(xdp2i)*(xdp1i); }
}
#includereg51.h
#define uchar unsigned char
xdata uchar rom8000[10] _at_ 0x8000;
xdata uchar rom8100[10] _at_ 0x8100;
void main(void)
{ uchar data i; for(i0;i9;i) { rom8000[i]i; } for(i0;i9;i) {rom8100[i]rom8000[i]; }}
结果 分析
1.用for循环给片外8000H赋值值从0A开始
2.再把8000H的值传给8100H 2、编程将片内50H单元开始10字节的内容初始化为09然后移至55H开始的各单元中。
代码
#includeabsacc.h
#includereg51.h
#define uchar unsigned char
void main(void)
{ uchar data *dp1; uchar data *dp2; uchar data i; dp10x50; dp20x5e; for(i0;i9;i) { *(dp1i)i; } for(i0;i10;i) { *(dp2-i)*(dp1-i9); }
}
结果 分析
1.用for循环给片内50H开始赋值值开始为0赋值10个数一直到59H单元
2.用59H开始将其单元的内容值赋给5e结束的单元最后变为55-5E单元的内容分别为50-59H单元的内容 3、在片外RAM的2000~200FH中查找零把零的个数放在2010H中
代码
#includeabsacc.h
#includereg51.h
#define uchar unsigned char
void main(void)
{ uchar xdata *xdp1; uchar xdata *xdp2; uchar data i; xdp10x2000; xdp20x2010; *xdp20x00; for(i0;i16;i) { if(i%20) *(xdp1i)0; else *(xdp1i)i; } for(i0;i16;i) { if(*(xdp1i)0) *xdp2*xdp21; }
}
#includereg51.h
#define uchar unsigned char
xdata uchar rom2000[16] _at_ 0x2000;
xdata uchar rom2010 _at_ 0x2010;
void main(void)
{ uchar data i;
rom20100; for(i0;i16;i) { if(i%20) rom2000[i]0; else rom2000[i]i; } for(i0;i16;i) { if(rom2000[i]0) rom2010rom20101; }}
结果 分析
用i是否整除2判断存到片外2000H-200F内存单元能整出为0不能整除为i最后统计为8个0
4、Number单元是字数据单元将其拆分成十进制数, 存入 Result 数组。Number单元地址为片内0x30
代码
#includeabsacc.h
#includereg51.h
#define uint unsigned int
#define uchar unsigned char
void main(void)
{uint data *Number; uchar data Result[2],c[5]; uchar data i,j; Number0x30; *Number23456; c[0]*Number/100000; c[1]*Number%100000/10000; c[2]*Number%10000/1000; c[3]*Number%1000/100; c[4]*Number%100/10; c[5]*Number%10; for(i0,j0;i5,j3;ii2,j) {Result[j]c[i]*(0x10)c[i1];}}
#includeabsacc.h
#includereg51.h
#define uint unsigned int
#define uchar unsigned char
data uint number _at_ 0x30;
data uchar result[2] _at_ 0x40;
void main(void)
{ uchar data c[5]; uchar data i,j; number23456; c[0]number/100000; c[1]number%100000/10000; c[2]number%10000/1000; c[3]number%1000/100; c[4]number%100/10; c[5]number%10; for(i0,j0;i5,j3;ii2,j) { result[j]c[i]*(0x10)c[i1]; }
}
结果 分析
在Number单元是字数据单元存的内容为23456十六制为5BA0H变化之后为00,02,03,04,05,06两个数存到Result 数组的一个内存单元最后值为02,34,56存储类型默认为AUTO,存储模式为small模式,存储器类型为data,则Number单元、Result 单元分配之后会出现覆盖情况