英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4753|回复: 2
打印 上一主题 下一主题

16F887 基于CCS的通信程序

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-21 17:55:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用CCS 写了简单的通讯程序

#include <16F887.h>
#device ADC = 10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=16000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,stream=MYPC)
#define RD0 PIN_D0
#define RD2 PIN_D2
#define RD3 PIN_D3

#include <string.h>

void LED_Running()
{
output_low(RD0);
delay_ms(100);
output_high(RD0);
delay_ms(100);
}
void RAD_VOLT(TD)
{
   //define the value for variable;
   
   int8   M_Volt[10];
   float  Value;
   
   setup_port_a( ALL_ANALOG | VSS_VDD );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel(TD);
   delay_us(50);
   value = Read_ADC();
   delay_us(50);
   setup_adc(ADC_OFF);
   delay_us(50);
   value = 5.0*value/1023;   // Measurement volatge
   sprintf(M_Volt, "%1.3fV \n\r",value);
   printf(M_Volt);
   
//  return(M_Volt);
}
void init_io()
{
SET_TRIS_A(0x0F);
output_B(0x00);
output_C(0x00);
output_D(0x00);
}
void main()
{
int8 RC_flag;
unsigned int8 RC_CMD[8];
char ptRCi;
char DATA;
int8 value;
char tmpch;
long tttlong;
char bKb;
int TD;
char PD;
//int8 string[20];
ptRCi=0;
tttlong=0;
init_io();
Loop:
while(1)
{//LED Running
   tttlong ++;
   if (tttlong > 20000)
   {output_low(RD0);}
   if (tttlong > 50000)
   {  output_high(RD0);
      tttlong =0;
   }
   
   bKb = kbhit();
   if (bKb)
   {
      tmpch = getc();
       if (tmpch == '#')
      {
         ptRCi=0;
      }
      
      RC_CMD[ptRCi]=tmpch;
     
      ptRCi ++;
      ptRCi %= 8;
     
      if (tmpch == '$')
      {  
      // reading adc
         if ( (RC_CMD[0]=='#') && (RC_CMD[1]=='R') && (RC_CMD[2]=='A') && (RC_CMD[3]=='D') && (RC_CMD[4]<='7') && (RC_CMD[5]=='$') && (ptRCi==6))
         {
          switch(RC_CMD[4])
         
            { case '0': TD=0; break;
              case '1': TD=1; break;
              case '2': TD=2; break;
              case '3': TD=3; break;
              case '4': TD=4; break;
              case '5': TD=5; break;
              case '6': TD=6; break;
              case '7': TD=7; break;
            
          }
         RAD_VOLT(TD);
         goto Loop;
         }
         
         //== i/o control for port D by line
         if((RC_CMD[0]=='#') && (RC_CMD[1]=='S') && (RC_CMD[2]=='P') &&(RC_CMD[3]<='D') && (RC_CMD[4]<='7') && (RC_CMD[5]=='$') && (ptRCi==6))
         {
          switch(RC_CMD[4])
            { case '0'D=PIN_D0;break;
              case '1'D=PIN_D1;break;
              case '2'D=PIN_D2;break;
              case '3'D=PIN_D3;break;
              case '4'D=PIN_D4;break;
              case '5'D=PIN_D5;break;
              case '6'D=PIN_D6;break;
              case '7'D=PIN_D7;break;  
          }
         
         output_high(PD);
         goto Loop;
         }
         
          //== i/o control for port D release by line
         if((RC_CMD[0]=='#') && (RC_CMD[1]=='R') && (RC_CMD[2]=='P') &&(RC_CMD[3]<='D') && (RC_CMD[4]<='7') && (RC_CMD[5]=='$') && (ptRCi==6))
         {
          switch(RC_CMD[4])
            { case '0'D=PIN_D0;break;
              case '1'D=PIN_D1;break;
              case '2':PD=PIN_D2;break;
              case '3':PD=PIN_D3;break;
              case '4':PD=PIN_D4;break;
              case '5':PD=PIN_D5;break;
              case '6':PD=PIN_D6;break;
              case '7':PD=PIN_D7;break;  
          }
         
         output_low(PD);
         goto Loop;
         }
         
         else
         {printf("%S \n\r","unknowen Command, Please check");}
      }
      
   
   }  
   
   
}
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-4-20 05:10 , Processed in 0.055232 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表