资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
#include#include#define unchar unsigned char#define uint unsigned int#define ADCOM XBYTE0xff7c#define ADLO XBYTE0xff7F#define ADHI XBYTE0xff7dsfr p1=0x90;sfr p3=0xb0;sbit P10=p10;sbit P11=p11;sbit P12=p12;sbit P13=p13;sbit P14=p14;sbit P15=p15;sbit P16=p16;sbit P17=p17;sbit r=p37;sbit w=p36;char idata sendbuf15; char idata receivebuf3;char idata databuf22;void reset() /*小车复位程序*/ while(P13=0) P15=1; /*延时等待触到限位开关*/P15=0; /*曲柄滑块机构电机停止*/void senddata() /*单片机发送数据至PC子程序*/uint data i;unsigned int data sum=0;sendbuf0=0xff; /*设置识别的包头*/sendbuf1=(P1&0xf0)4; /*P1口值的情况赋给控制位*/sum=sendbuf1; for(i=2;i14;i+) /*计算校验位的累加和*/ sum=sum+sendbufi; sendbuf14=sum&0x01; /*将累加值赋给待发送的位*/SBUF=sendbuf0; while(TI=0); /*等待发送完毕*/ TI=0;for(i=1;i15;i+) /*发送数据包*/ SBUF=sendbufi; while(TI=0); /*等待发送完毕*/ TI=0; uint ad574() /*启动A/D转换*/unsigned int data i;unsigned int data j; unsigned int data k; r=0;w=0;P11=1;P12=1;ADCOM=0; /*启动转换*/k=2;for(i=0;i2;i+) /*循环采集A574各通道信号*/ P12=!P12; for(j=0;j4); /*采集A/D转换的高八位中的前四位存入数组*/ sendbufk+1=(ADHI&0x0f); /*采集A/D转换的高八位中的后四位存入数组*/ sendbufk+2=(ADLO&0x0f); /*采集A/D转换的低四位*/ databufij=(uint)(ADHI2458) P14=0; /*判断温度是否大于60*/ else P14=1; /*启动电热丝*/ senddata(); /*关闭电热丝*/receive() /*接受子函数*/unsigned char data recei;unsigned char data a=0;recei=0;do while(RI=0); /*等待接收一帧完毕*/ RI=0; a=SBUF; if(a=0xff) /*判断是否为包头,握手*/ receivebuf0=a; for(recei=1;recei2458) P14=0; /*判断温度是否大于60*/ else P14=1;startup() /*等待PC机发送启动信号*/while(receivebuf1!=3)receive(); /*等待开始信号*/keep(); /*开始保温*/main () reset(); /*小车回到其始位置*/TMOD=0x21; /*定时器1工作在方式2,定时器0工作在方式1*/TL1=0xfd; /*设置9600波特率*/TH1=0xfd; /*设置自动重新装入的初始值*/ TCON=0x01; /*设置外部中断1方式为下降沿触发*/SCON=0xd8; /*设置串行口工作在方式3*/ PCON=0x00; /*设置SMOD串行口波特率倍增位为0*/ IE=0x83; /*允许T/C0和外部中断0开放中断开放中断*/ IP=0x01;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号