- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第5章第三讲2与第四与第五讲
一个简单的数码管设计 下图中的8个数码管依次显示0,1,…,7的程序。 实验内容及步骤 1、编辑和调试一个将50H~59H单元中的数据从小到大排列的数据排列程序; 2、编辑和调试找最大数程序;找最大数程序要求:将实验的数据表存入60H单元开始的内部RAM区,该表的长度存入70H单元,找出最大数并存在71H单元中,最大数的地址存在72H中。 2)由src所指内存区域复制count个字节到dest所指 内存区域。 memcpy 原型:extern void *memcpy(void *dest, void *src, unsigned int count); 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。 举例: #include string.h main() { char *s=Golden Global View; char d[20]; memcpy(d,s,strlen(s)); d[strlen(s)]=0; printf(%s,d); getchar(); return 0; } 3)由src所指内存区域复制count个字节到dest所指内存区域 原型:extern void *memmove(void *dest, const void *src, unsigned int count); 说明:与memcpy工作方式相同,但src和dest所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针。 #i nclude string.h#i nclude stdio.h int main(){?? int i = 0; ??? int a[10]; ? for(i; i 10; i++) ? { ????? a[i] = i; } memcpy(a[4], a, sizeof(int)*6);for(i = 0; i 10; i++) {?????? printf(%d ,a[i]); } ?? printf(\n);?? return 0;} 结果为:0 1 2 3 0 1 2 3 4 5 4)比较内存区域buf1和buf2的前count个字节 原型:extern int memcmp(void *buf1, void *buf2, unsigned int count); #includestring.h main( ) { char *s1=“Hello,programmers!”; char * s2=“Hello,programmers!”; int r; r=memcmp(s1,s2,strlen(s1)); if(!r) printf(“s1 and s2 sre identical”); else if(r0) printf(“s1 less than s2”); else printf(“s1 greater than s2”); getchar( ); return 0; } 例如 #includeabsacc.h #includereg52.h #define COM8255 XBYTE[0X007F] #define PA8255 XBYTE[0X007C] #define PB8255 XBYTE[0X007D] #define PC8255 XBYTE[0X007E] void v_func(uchar *p){ …… While((0x80PC8255)!=0); PA8255=*P; COM8255=0X00; COM8255=0X01; ……; } ……; 3. 使用C51扩展关键字 _at_ 使用_at_对指定的存储器空间的绝对地址进行定位,一般格式如下: [存储器类型] 数据类型 标识符 _at_ 常数 uchar xdata xram[0x8000] _at_ 0x0000; /*在外部RAM空间0000H处定义了一个一维数组 例如 使用_at_定义的变量只能为全局变量。 例:分别使用三种方法编写以下三个函数。 (1)将起始地址为1000H的片外RAM的16B内容送入起始地址为2000H片外RAM中。 (2)将起始地址为3000H的片外RAM的16B内容送入起始地址为50H片内RAM中。 (3)将起始地址为800H的片外RAM的16B内容送入起始地址为80H片内RAM中。 #includereg52.h #includeabsacc.h #define uch
文档评论(0)