#include<.h>#XBYTE[0x07ff]//为地址为07FFH的外部RAM或I/O口rval=CBTYE[0x0006];//读程序存储区地址0006H的字节内容(字符型)rval=XWORD[0x0002];//读外部数据存储区地址0004H的字内容(int型)//.h中的关键字DBYTE[0x0002]=5;//向内部数据存储区地址0002H写入字节5(字符型)PWORD[0x0002]=57;//向pdata存储区地址0004H写入字57(int型)//.h中的关键字XWORD[0]=0x9988;//将9988H送外部RAM的0和1地址(int型)XBYTE[0xefff]=0x10;//将10H输出到地址为EFFFH的外部RAM或接口3、I/O口的C51定义C51编程时,片内I/O口与片外扩展I/O口可在头文件中定义。也可在程序起始部分中定义片内I/O口关键字为sfr例如sfrP1=0x90;//定义P1口地址80H片外扩展I/O口的硬件译码地址,当成片外数据存储器地址看待格式:#define例如#include<.h>//头文件中定义的宏可用来访问绝对地址#definePORTAxbyte(0xffc);//将PORTA定义为外部I/O口,地址为//0FFCH,其内容为8位头文件或程序中定义了I/O口地址后,在程序中就可使用这些片内、外的I/O例1函数调用先定义函数,再调用,无需说明。先调用,再定义函数,无需说明。intfun(a,b)intfun1(a,b);inta,b{main(){intc;intd,u=3,v=2;c=a+b;d=2*fun1(u,v)return(c);}}intfun1(a,b)main(){inta,b;intd,u=3,v=2;{intc;d=2*fun(u,v);c=a+b;}return(c);}例2将片外RAM的000EH单元和000FH的内容交换数。#include<.h>main(){charc;for(;;){c=XBYTE[14];//死循环XBYTE[14]=XBYTE[15];XBYTE[15]=c;}}例3找出片内RAM的0004H和0028H单元中存放的整型数的最大值。#include<>//定义特殊功能寄存器的头文件#include<.h>//指向不同存储区首地址指针的头文件intmax(intx,inty);//函数说明voidmain(void){intdataa,b,c;a=DWORD[0x02];//用关键字DWORD访问存储器时,地址为[]中值乘2b=DWORD[0x14];c=max(a,b);//调用比较大小数的函数,实参while(1);//用while(1)函数保证程序的运行}intmax(intx,inty){//比较大小数的函数,形参intdataz;if(x>y)z=xelsez=y;return(z);},。要求判断开关S的状态,开关打开时,二极管不亮,开关闭合时,二极管亮。#include<reg51.
第7章-c语言程序设计 来自淘豆网www.taodocs.com转载请标明出处.