完整的单片机AD采样程序_第1页
完整的单片机AD采样程序_第2页
完整的单片机AD采样程序_第3页
完整的单片机AD采样程序_第4页
完整的单片机AD采样程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#包括#包括#包括/* - */#定义uint无符号整数#定义uchar无符号字符#定义adcom xbyte0x 4000/ad 574启动地址*/# definedadhixbyte0x 4002/ad 574高8位地址*/# defineda lo x byte0x 4003/ad 574低4位地址*/uchar代码slave_addr4=00,01,02,255 ;/*从机地址*/* - */void ini _ ad(void);/*初始化硬件功能*/void average_send(无效);/*平均和发送功能*/void check _ addr(void);/*地址检查*/* - */uint * data _ ad _ ori _ pt/*数据保存指针*/uint data _ ad _ ori16;/* - */uchar bdata sample_s,test_s0,test _ s1/*不得使用test_s0、test_s1。这是一个测试位*/sbit sample_permit=sample_s0;sbit average_permit=sample_s1;sbit address_true=sample_s2;sbit empty_pin=sample_s3;sbit cmd_in_permit=sample_s4;/*允许主机命令输入标志位*/sbit test_bit1=sample_s5;/*P1.0、P1.1、P1.2已用作硬件上的AD输入线路选择端口*/sbit p1_3=p13;/*作为串口输出信号的使能端口,当P1_0=0时连接串口,输出信号*/sbit p3_4=p34;/*测试位,可选*/sbit wd=p17;/*看门狗*/uchar数据j,k,data _ avr _ nouchar key_in,done _ no/*使用了done _ no */样品号,成品号;/*事实上,采样时间和广告完成时间可以以uchar格式记录*/main()P1=0x F9;/*采样通道设置为1通道*/WD=1;/* Watchdog最初为1,水平反转以喂狗*/test _ s0=0;test _ S1=0;data _ ad _ ori _ pt=data _ ad _ ori/*数组指针*/样本_ s=0;/*一点定义重复?*/sample _ permit=0;/*不允许取样标志*/average _ permit=0;/*不允许使用平均标志*/address _ true=0;empty _ pin=0;cmd _ in _ permit=0;test _ bit 1=0;P1 _ 3=1;/*启动时关闭串口发送功能,必要时打开*/P3 _ 4=0;done _ no=0;样本号=1;/*所需样本数量*/成品号=0;/*AD完成采样的次数*/data _ AVR _ no=0;j=0;k=0;对于(j=0;j=15j)data _ ad _ orij=0x 00;data _ ad _ ori0=0x 00;/*这一步有些重复*/j=0;ini _ ad();做if(address_true=1)address _ true=0;check _ addr();而(sample_permit=1)if(average_permit=1)average _ send();如果(成品数量=样品数量)成品号=0;sample _ permit=0;/*仅在数据传输完成后返回多机模式,SM2=1*/SM2=1;data _ ad _ ori _ pt=data _ ad _ oriaverage _ permit=0;否则if(average_permit!=1)/这里有问题吗?ADCOM=0;WD=!WD;/*MAX813喂食狗*/而(1);无效中断服务子程序*/key _ in=0;如果(国际)键入=SBUFRI=0;如果(SM2=1)/*中断*/*SM2=1,多机模式,接收主机地址*/*接收的字节是地址*/*将接收到的地址与本地地址进行比较,以确定其是否一致*/if(key_in=slave_addr0)/*确认地址,设置SM2=0,进入独立模式*/SM2=0;address _ true=1;if (SM2=0) (RB8=0)/*SM2=0、RB8=1或RB8=0串行端口中断*/*SM2=0,独立模式,接收主机数据*/*接收的字节是数据*/*从主机收到命令后,从机必须在返回多机模式前完成任务。设定SM2=1*/if(key_in=0xff)SM2=1;/*接收主命令,将从机设置为多机模式*/if (key_in=0xfe)/*接收主机命令,从从机开始采样*/cmd _ in _ permit=1;if(cmd _ in _ permit=1)(key _ in=0x de)/*从主机接收命令,从从机开始采样*/cmd _ in _ permit=0;sample _ permit=1;WD=!WD;/*MAX813喂食狗*/Void interint0 (void)中断0using1/*外部中断0服务子程序*/uint ad_hl,k0;ad _ HL=(uint)(ADHI4)(ADLO4);* data _ ad _ ori _ pt=(ad _ hl0x 0 fff);data _ ad _ ori _ pt对于(k0=0;k0=100k0) _ nop _();/*定义采样间隔?微秒*/data _ avr _ noif(data_avr_no=11)data _ AVR _ no=0;average _ permit=1;WD=!WD;/*MAX813喂食狗*/无效平均值_发送(无效)uchar j1,average_no,I;uint ad_hl、ad_h、ad_l、avg、sumuint * pt3平均值_ no=10/*要平均的AD采样数据数量*/sum=0;对于(J1=1;j1=10j1)/*求和程序*/ad _ hl=* pt3sum=sum ad _ hlpt3/*求和程序*/avg=总和/平均值_否;ad _ h=(uchar)(avg 8);ad _ l=(uchar)(avg0x 00 ff);test _ s0=ad _ h;test _ S1=ad _ l;pt3=data _ ad _ oriP1 _ 3=0;对于(I=0;i=20I) _ nop _();SBUF=ad _ h;做时(TI=0);TI=0;SBUF=ad _ l;做时(TI=0);TI=0;P1 _ 3=1;对于(I=0;i=20I) _ nop _();成品号;WD=!WD;/*MAX813喂食狗*/void check_addr(void)uchar I=0;P1 _ 3=0;对于(I=0;i=20I) _ nop _();SBUF=从机地址0;/*发送地址检查成功,向主机发送从机地址*/做时(TI=0);TI=0;P1 _ 3=1;对于(I=0;i=20I) _ nop _();WD=!WD;/*MAX813喂食狗*/void ini_ad(void)TMOD=0x 21;/*T0设置为模式1,16位;T1设置为模式2,8位,常量自动加载*/TH1=0xfd。/*TH1用于设置波特率,9.6千字节/秒*/TL1=0xfd。/*TL1用于设置波特率,9.6千字节/秒*/PCON=0x 00;/*波特率没有翻倍*/SCON=0xd 0;/*SCON工作模式3,允许发送*/SM2=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论