单片机C语言基础编程源码六则

时间:2023-03-19作者:佚名

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);}

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

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

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

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

6.编写一定时器/计数器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;ET0=1;EA=1;TR0=1;while(1);}

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

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

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

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

{ shi=0;}

相关阅读

钳形电流表六类故障问题及解决办法

本文介绍了钳形电流表的常见故障问题,包括测量电流或电压时一档或数档无指示,电压档指示正常,电流档全部没有指示,或者全部无指示等,来看下钳形电流表六大故障问题的解决...
2024-03-18
钳形电流表六类故障问题及解决办法

10kV开闭所(变电所)的继电保护配置整定方案

大部分工厂企业及居民小区用电是10kV供电,并设置配电房,一般情况下一个配电房安装一台或两台10kV/400V的配电变压器,用380V/220V电压供用户用电,一次系统接线图,如下图。 配电...
2024-08-21
10kV开闭所(变电所)的继电保护配置整定方案

家里停电但邻居有电是什么原因,如何解决

家里突然没电,但邻居家有电?有多种状况,我们逐一分析! 家里突然没电了,大部分原因是家用电器或是家庭线路老化以及电路安装不规范引起的断路、过负荷、漏电等多种原因,碰...
2023-05-21
家里停电但邻居有电是什么原因,如何解决

行车遥控失灵、乱动作?对照这4张图,一次把原理和故障全吃透!

做行车维修的电工,谁没被遥控故障搞崩溃过? 按“上”它往下跑,按“东”没反应,甚至按键失灵、接触器乱跳,轻则卡料停产,重则冲顶、侧滑出事故!很多人只会换遥...
2026-05-25
行车遥控失灵、乱动作?对照这4张图,一次把原理和故障全吃透!

功率变换电路图讲解 简单的功率变换电路及原理说明

有关电子电路的知识,一例功率变换电路,介绍了MOS管的工作原理,常见MOS管的工作原理图,并介绍了推挽式功率变换电路和有驱动变压器的功率变换电路,下面与电工之友小编一起来...
2023-07-21
功率变换电路图讲解 简单的功率变换电路及原理说明

热销商品

国标TRVV高柔性拖链电缆2—48芯0.3 0.5 1 1.5 2.5平方耐弯折软线

国标TRVV高柔性拖链电缆,专为满足严苛工况下的动态传输需求而设计。该电缆具有2至48芯多种配置,适用于0.3、0.5、1.5、2.5平方等多种截面积选择,灵活满足不同设备的...
¥ 1.24

公牛开关插座面板全屋定制全屋配齐家装报价单官方正品付款链接Q9

公牛开关插座面板,为您的全屋定制家装提供一站式解决方案。我们提供全屋配齐的家装报价单,确保您的家装项目完美无缺。所有产品均为官方正品,品质保证,让您用得放心。...
¥ 1

定做定制各类密封条三元乙丙橡胶硅胶PVC防火阻燃EVA氯丁石墨丁晴

本公司专业定做各类定制密封条,涵盖三元乙丙橡胶(EPDM)、硅胶、PVC、EVA、氯丁橡胶、丁腈橡胶及石墨复合等多种材质,满足不同行业对密封、防水、隔音、隔热及防火阻燃...
¥ 1

直销配电箱暗插销铰链门轴CL225插销带螺丝固定铁皮柜弹簧铁铰链

CL225插销式暗铰链专为配电箱、铁皮柜等金属柜体设计,采用优质冷轧钢板经冲压成型,表面镀锌处理,防腐耐用。其内置弹簧结构,确保柜门开合顺畅、自动复位,提升使用便捷...
¥ 0.06

浇铸抛光螺纹钢扭矩扳手 镀锌双头延长杆扳手多功能工具 开口扳手

这款多功能工具集浇铸抛光螺纹钢扭矩扳手、镀锌双头延长杆扳手与开口扳手于一体,采用优质合金钢精密浇铸并经抛光处理,表面镀锌防锈,耐用性强。其双头设计适配多种规...
¥ 0.6

网站栏目