描述

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

#include #define DAC0832 XBYTE[0x7FFF] void san(unsigned char max1,unsigned char zhou1)

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

{ for(i=0;i0,i——)

{ DAC0832=i;for(j=0;j1,j——)

{ for(i=0;i*(ptr+i+1))

{ temp=*(ptr+i+1);*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;} *ptr1=*(ptr+20/2);}

3.在数字滤波中有一种叫做“去极值平均滤波”技术,就是对采集的数据按照从大到小或者从小到大进行排序,然后去掉相同数目的极大值和极小值,对中间部分数据求算术平均值作为采样值。试编写一函数,对存放在片外数据存储器中从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*(ptr+i+1))

{ temp=*(ptr+i+1);*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;} temp=0;for(i=0;i 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++;}

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

include void main()

{ unsigned char xdata *xdpt;unsigned char i=0,temp;xdpt=0x240;while(1)

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

break;*(xdpt+i)=temp;i++;}

6.利用库函数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++;}

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

include void main()

{ unsigned char xdata *xdpt;unsigned char i=0;xdpt=0x100;while(*(xdpt+i)!=0x0d)

{ printf(“%c”,*(xdpt+i));i++;}

8.编写一定时器/计数器0定时100ms中断处理函数,使函数实现时钟的功能,即产生时钟的秒、分钟和小时。设定时初值的高、低字节分别为TIMER_H和TIMER_L.设fosc=6mhz #include sfr TIMER_H=0x8b;sfr TIMER_L=0x8a;unsigned char data shi,fen,miao,bfm;

void main()

{ TMOD=0x01;TIMER_H=15536/16;TIMER_L=15536%16;ET0=1;EA=1;TR0=1;while(1);}

void time0_int() interrupt 1 { TIMER_H=15536/16;TIMER_L=15536%16;bfm++;if(bfm==10)

{ bfm=0;miao++;} if(miao==60)

{ miao=0;fen++;} if(fen==60)

{ fen=0;shi++;} if(shi==24)

{ shi=0;}

来源:EEFOCUS

打开APP精彩内容

点击阅读全文

单片机C语言编程实例分析详解,单片机C语言编程的八个基本规则解析相关推荐

  1. C语言return的用法详解,C语言函数返回值详解。 (本次转载仅供学习,感谢原创!!转发自C语言中文网,如有侵权请私信本人删除)

    C语言return的用法详解,C语言函数返回值详解 转载:http://c.biancheng.net/view/1855.html 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这 ...

  2. php周签到功能思路,php实现签到功能的方法实例分析详解

    这篇文章主要介绍了php实现签到功能的方法,结合实例形式分析了php基于数据库及时间判断操作实现签到功能的相关技巧,需要的朋友可以参考下 本文实例讲述了php实现签到功能的方法.分享给大家供大家参考, ...

  3. 算法之高精度(含实例与详解)C语言

    一.什么是高精度 高精度本质上是一种计算,由于int型和long long型的存储的数据大小有限.在有符号定义的情况下,int型为2的31次方减1:在无符号定义的情况下,lint型为2的32次方.因此 ...

  4. python网络编程讲解_详解Python Socket网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  5. C语言return的用法详解,C语言函数返回值详解

    函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回. return 语句的一般形式为: return 表达式; 或者: return (表达式); 有 ...

  6. c语言中常量有何作用,C语言const的用法详解,C语言常量定义详解

    有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小.为了满足这一要求,可以使用const关键字对变量加以限定: co ...

  7. 第十章 结构体_C语言const的用法详解,C语言常量定义详解

    有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小.为了满足这一要求,可以使用const关键字对变量加以限定: 这样 ...

  8. linux Shell(脚本)编程入门实例讲解详解

    linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...

  9. c语言菜单选择如何用字符形式,【创客天地】计算机二级C语言、VB考试详解分析...

    原标题:[创客天地]计算机二级C语言.VB考试详解分析 01 马上就要迎来计算机二级考试了,你准备好了吗?今天助手君准备了一点C语言干货,希望对即将考试的你有所帮助.(上期刚刚推了office,有需要 ...

  10. R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析详解实战:拟合连续性自变量和事件风险之间的关系:基于survival包lung数据

    R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析详解实战:拟合连续性自变量和事件风险之间的关系:基于survival包lung数据 目录

最新文章

  1. Flink在美团的实践与应用
  2. 别再说自己不会了!最新高频Java笔试题分享
  3. UITextView 用法小结
  4. 不一致的国际数据隐私法
  5. 使用存储过程的优点.
  6. 2017年天津市大学生数学竞赛试题 (理工类)
  7. Leetcode: Median of Two Sorted Arrays
  8. hjimce算法类博文目录
  9. ElasticSearch破解x-pack 6.0+和更新许可证(License)
  10. pytorch根据特征图训练LSTM Stacked AutoEncoder
  11. 【以太坊源码】交易(一)
  12. 做图软件matlab,Matlab 生物节律作图软件
  13. Apache日志配置详解(rotatelogs LogFormat)
  14. ASP.NET文件上传的三种基本方法
  15. 青岛农业大学计算机分数线,青岛农业大学录取分数线2021是多少分(附历年录取分数线)...
  16. TransactNamedPipe函数
  17. 解决Windows10无法卸载Edge浏览器,亲测有效
  18. 扩展卡尔曼滤波(EKF)
  19. Spring之Bean后处理器——InstantiationAwareBeanPostProcessor的使用与源码解析
  20. (一)大数据学习引言——大数据概述

热门文章

  1. 一个exfat U盘引起的systen crash
  2. 在线预览 PDF 文档插件 PDFObject.js
  3. 【视频编码格式】全面解析
  4. DW1820A/BCM94350ZAE/BCM94356ZEPA50DX插入的正确姿势
  5. 利用高德制作GIS热力图
  6. N1烧USB供电跳线修复方法
  7. 「Java代码审计」Java代码审计基础知识「一」
  8. 人脸识别数据集建立及应用
  9. svm 10折交叉验证 matlab,怎么用10折交叉验证程序?
  10. Godot3游戏引擎入门之十:介绍一些常用的节点并开发一个小游戏(中)