当前位置:首页 > (完整版)单片机原理及应用——基于Proteus和Keil_C 林立_张俊亮毕业论文
即不能在一个函数内定义另一个函数,而且“{”前不应有分号 作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体
cgar i;
字符型应该是unsigned char
for(i=O; i<=255; ”++”); ”++”应改成i++
}
主函数没有结束,缺”}”
5.定义变量a,b,c,其中a为内部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型变量,c为指向 int 型 xdata 区的指针。 答: char bdata a;
float xdata b; int xdata *c;
6.编程将8051的内部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中(任意位置)。 解:方法一:用嵌入式汇编语言实现 #include #pragma asm MOV A,20H MOV B,35H MUL AB MOV DPTR,#1234H MOVX @DPTR,A INC DPTR MOV A,B MOVX @DPTR,A } #pragma endasm 方法二:单用C语言编程实现 #include unsigned int xdata x; unsigned char *ptr,a,b; ptr=0x25; a=*ptr; ptr=0x30; b=*ptr; x=a*b; } 7.8051的片内数据存储器25H单元中存放有一个0~10的整数,编程求其平方根(精确到5位有效数字),将平方根放到30H单元为首址的内存中。 解:方法一:用C语言与汇编语言混合编程实现 用C语言编写的主函数MAIN.C #include char a=0x25,c; float f; c=getdata(a); f=sqrt(c); } ;用汇编语言编写的取数据子函数,只有一个地址参数在R7中,返回值为指定地址单元中的内容,用R7返回主函数。 PUBLIC _GETDATA DE SEGMENT CODE RSEG DE _GETDATA: MOV MOV MOV MOV RET END A,R7 ;取地址参数 R0,A R7,A ;返回地址单元中的内容 EXIT: 方法二:单用C语言编程实现 MAIN.C #include char n; char *ptr; float *ptr2; float f; ptr=0x25; n=*ptr; f=sqrt(n); ptr2=0x30; *ptr2=f; } 8.将外部RAM 10H~15H单元的内容传送到内部RAM 10H~15H单元。 解:方法一:采用C语言与汇编语言混合编程 用C语言编写的主函数MAIN.C #include char a=0x10,b=0x06; movdata(a,b); } ;用汇编语言编写的移动数据子函数MOVDATA,其中第一个参数在R7中为首地址,第二个参数在R5中为字节数 PUBLIC _MOVDATA DE SEGMENT CODE RSEG DE _MOVDATA: MOV MOV A,R7 ;取参数 R0,A LOOP: MOVX MOV @R0,A DJNZ R5,LOOP EXIT: RET END 方法二:单用C语言编程实现 MAIN.C #include char n=6;
共分享92篇相关文档