云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 周国运版51单片机课后习题答案资料

周国运版51单片机课后习题答案资料

  • 62 次阅读
  • 3 次下载
  • 2025/5/24 6:04:11

21.编写一C51函数,使用专用指针,把片外数据存储器中从0x100开始的30个字节数据,传送到片内从0x40开始的区域中。 void main() {

unsigned char data i,*dpt; unsigned char xdata *xdpt; dpt=0x40; xdpt=0x100;

for(i=0;i<30;i++)

*(dpt+i)=*(xdpt+i); }

22.编写一C51程序,实现从P1口输出产生的流水灯,要求用汇编语言函数实现数据左移或右移。 #pragma src

#include void main() {

unsigned char temp,i; while(1) {

temp=0x55; P1=temp; delay();

#pragma asm MOV A,temp RR A

MOV temp,A #pragma endasm

P1=temp; delay(); } }

23.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直到0,然后再从0逐渐增大,一直这样输出。试编写一函数,使从P2口输出的值产生三角波,并且使三角波的周期和最大值通过入口参数能够改变。 #include #define DAC0832 XBYTE[0x7FFF]

void san(unsigned char max1,unsigned char zhou1) {

13

unsigned char i,j,max,zhou; max=max1; zhou=zhou1; while(1) {

for(i=0;i<=max,i++) {

DAC0832=i;

for(j=0;j

}

for(i=max-1;i>0,i--) {

DAC0832=i;

for(j=0;j

}

}

24.在数字滤波中有一种叫做“中值滤波”技术,就是对采集的数据按照从大到小或者从小到大进行排序,然后取其中在中间位置的数作为采样值。试编写一函数,对存放在片内数据存储器中从0x50开始的20个单元的采样数据用冒泡法排序进行中值滤波,把得到的采样数据存放到0x4f单元中。 void midf() {

unsigned char data temp,i,j,*ptr,*ptr1; ptr=0x50;

ptr1=0x4f;

for(j=20;j>1,j--)

{

for(i=0;i

if(*(ptr+i)>*(ptr+i+1)) {

temp=*(ptr+i+1); *(ptr+i+1)=*(ptr+i); *(ptr+i)=temp;

}

} }

*ptr1=*(ptr+20/2); }

25.在数字滤波中有一种叫做“去极值平均滤波”技术,就是对采集的数据按照

14

从大到小或者从小到大进行排序,然后去掉相同数目的极大值和极小值,对中间部分数据求算术平均值作为采样值。试编写一函数,对存放在片外数据存储器中从0x150开始的16个单元的采样数据,用选择法进行“去极值平均滤波”,把得到的采样数据存放到0x14f单元中。 void teaf() {

unsigned char xdata *ptr;

unsigned char data temp,i,j,*ptr1; ptr=0x150;

ptr1=0x4f;

for(j=16;j>1,j--)

{

for(i=0;i

if(*(ptr+i)>*(ptr+i+1)) {

temp=*(ptr+i+1); *(ptr+i+1)=*(ptr+i); *(ptr+i)=temp;

}

} }

temp=0;

for(i=0;i<16-2;i++)

temp=temp+*(ptr+i+1);

*ptr1=temp/(16-2); } 26.利用库函数_getkey编写一函数,实现从单片机串行口接收数据的C51程序,把接收的数据存放在片内数据存储器从0x40开始的区域,遇到回车符CR(ASCII码是0x0d)结束。 include void main() {

unsigned char data *dpt; unsigned char i=0,temp; dpt=0x40;

while(1) {

temp=_getchar(); if(temp==0x0d)

break;

*(dpt+i)=temp; i++;

15

}

}

27.利用库函数scanf编写一函数,实现从单片机串行口接收数据的C51程序,把接收的数据存放在片外数据存储器从0x240开始的区域,遇到回车符CR(ASCII码是0x0d)结束。 include void main() {

unsigned char xdata *xdpt; unsigned char i=0,temp; xdpt=0x240;

while(1) {

scanf(“%c”,&temp); if(temp==0x0d)

break;

*(xdpt+i)=temp; i++; } } 28.利用库函数putchar编写一函数,实现从单片机串行口发送数据的C51程序,发送的数据存放在片内数据存储器从0x50开始的区域,遇到回车符CR(ASCII码是0x0d)结束。 include void main() {

unsigned char data *dpt; unsigned char i=0; dpt=0x50;

while(*(dpt+i)!=0x0d) {

putchar(*(dpt+i)); i++; } } 29.利用库函数printf编写一函数,实现从单片机串行口发送数据的C51程序,发送的数据存放在片外数据存储器从0x100开始的区域,遇到回车符CR(ASCII码是0x0d)结束。 include void main() {

16

搜索更多关于: 周国运版51单片机课后习题答案资料 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

21.编写一C51函数,使用专用指针,把片外数据存储器中从0x100开始的30个字节数据,传送到片内从0x40开始的区域中。 void main() { unsigned char data i,*dpt; unsigned char xdata *xdpt; dpt=0x40; xdpt=0x100; for(i=0;i<30;i++) *(dpt+i)=*(xdpt+i); } 22.编写一C51程序,实现从P1口输出产生的流水灯,要求用汇编语言函数实现数据左移或右移。 #pragma src #include void main() { unsigned char temp,i; while(1) { temp=0x55

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com