TCS230应用程序供参考.docVIP

  • 8
  • 0
  • 约9.41千字
  • 约 12页
  • 2018-04-13 发布于河南
  • 举报
TCS230应用程序供参考

/*-------------------------------------------------------------------------- TCS230.H --------------------------------------------------------------------------*/ #ifndef __TCS230_H__ #define __TCS230_H__ #pragma SAVE #pragma REGPARMS void tcs230_set(uchar channel); void color_set(uchar color); uint readtcs230data(uchar channel,uchar color); bit readtcs230coloranddata(uchar channel,uchar color,uint std,bit mode); #pragma RESTORE #endif ///////////通道设定///////////// void tcs230_set(uchar channel) { channel=0x0f; if(channel7) { U2138=1; U1138=0; } else { U1138=1; U2138=0; } if(channel0x01) A0=1; else A0=0; if(channel0x02) A1=1; else A1=0; if(channel0x04) A2=1; else A2=0; write574(U1,T230); } //////////////颜色设定//////////////// void color_set(uchar color) { if(color==RED_COLOR) { S2=0; S3=0; } else if(color==WHITE_COLOR) { S2=1; S3=0; } else if(color==BLUE_COLOR) { S2=0; S3=1; } else if(color==GREEN_COLOR) { S2=1; S3=1; } write574(U1,T230); } //////在30毫秒内记录 N 通道 M 颜色的脉冲数/////////////////// uint readtcs230data(uchar channel,uchar color) { uint readdata=0; uchar readh,readl; write574(U1,T230=0); //复位所有的颜色传感器 TMOD=0x15; //定时器1 模式1(16位定时方式) 计算器0 模式1(16位计数方式) EA=0; //总中断关 ET0=0; //计算器0中断关 ET1=0; //定时器1中断关 TH1=0x8a; //定时器1 设定定时时间是30毫秒(12兆赫兹的时钟频率) TL1=0xd0; //定时器1 设定定时时间是30毫秒(12兆赫兹的时钟频率) TH0=0; //计算器0 设定初值高八位为0 TL0=0; //计算器0 设定初值低八位为0 EA=1; //总中断开 ET0=1; //计算器0中断开 ET1=0; //定时器1中断关 (采用查询方式检测) color_set(color); //颜色设定 (=0 红色)(=1 白色)(=2 蓝色)(=3 绿色) delay(1); tcs230_set(channel); //通道选择 通道低八位(=0 通道0 =1 通道1 ... =10 通道10 ) delay(1); //所有的准备工作已做完等待测试 TR1=1; //定时器1启动 TR0=1; //计算器0启动 while((TF1==0)); //等待30毫秒时间到 TF1=0; //清定时器1的中断标志 TR0=0; //计算器0关闭计数 TR1=0; //定时器1停止定时 EA=0; //

文档评论(0)

1亿VIP精品文档

相关文档