第一范文网 - 专业文章范例文档资料分享平台

(完整版)单片机原理及应用——基于Proteus和Keil_C 林立_张俊亮毕业论文

来源:用户分享 时间:2025/7/11 0:31:33 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

即不能在一个函数内定义另一个函数,而且“{”前不应有分号 作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体

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;

(完整版)单片机原理及应用——基于Proteus和Keil_C 林立_张俊亮毕业论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1d4se4dq27721et5ixox47ty70kclt0052d_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top