资源简介

MCGS与单片机通信,实现温度,AD,和红外数据的实时采集。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “ds18b20.h“

#define uchar unsigned char 
#define uint unsigned int 
volatile uchar reve_datarenum=0mend=0nend=0adl=0adh=0;
volatile uchar a1=1a2=1a3=1a4=1a5=1a6=1a7=1a8=1a9=1;
void INT_Init();
#define BAUD 38400 //波特率38.4kbp/s
volatile uchar rx[7]={0x010x040x040x000x000x000x000x000x00};
uchar tx[30];
volatile uchar crcl=0x00crch=0x00;
uchar led=0xff;
void inti_uart(void)//uart 初始化
 { 
   UBRRH = (F_CPU/BAUD/16-1)/256;
   UBRRL = (F_CPU/BAUD/16-1)%256; 
   UCSRC =  0x86;  //8bit data 1bit stop     
   UCSRB = (1< }
//发送字符
void send_char( uchar data )
{
  /* 等待发送缓冲器为空 */
  while ( !( UCSRA & (1<  /* 将数据放入缓冲器,发送数据 */
  UDR = data;
}
//发送字符串
void send_string(uchar *puchar mend)
 {
  uchar k=0;
  for(k=0;k   {
    send_char(*p++);
   }
 }
void inti_port()

        DDRA &= ~(_BV(PA0));
DDRB=0xff;
PORTB=0xff;
DDRC=0xff;
PORTC=0x00;
}

//CRC效验,将结果存储到CRCok变量中。
checkcrc(uchar *quchar nend)
{
  uint wcrc=0xffff;
  int j=0i=0;
  for(i=0;i  {
  wcrc ^= *q++;
  for(j=0;j<8;j++)
  {
  if(wcrc&1)
  {
  wcrc>>=1;
  wcrc ^= 0xa001;
  }
  else
          {
              wcrc>>=1;
  }
  }   
  }
  crcl = wcrc;
  crch = wcrc>>8;
}

int main(void)
{
  inti_uart();
  inti_port();
  INT_Init();
  
  ADMUX=0X00;//外部参考电压,0 通道
  ADCSRA |=_BV(ADEN)|_BV(ADIE)|_BV(ADPS2)|_BV   (ADATE);//使能ADC中断允许自由模式 时钟:     ck/16////自动触发
  ADCSRA |=_BV(ADSC);//自由模式开始转换 
  sei();
  while(1)
  {
   gettemp();
   _delay_ms(1050);
  }
}

SIGNAL(SIG_UART_RECV)

  rx[renum++]=UDR;
  if(renum==8 )
    { 
  renum=0;
  switch(rx[1])
          {
    case 0x01:
       if(!rx[3])
                   {
    tx[0]=rx[0];//leD灯
        tx[1]=rx[1];
        tx[2]=0x01;
    DDRB=0X00;                
        tx[3]=PORTB;
    DDRB=0XFF;
                    checkcrc(tx4);
                        tx[4]=crcl;
                    tx[5]=crch;
                    send_string(tx6);
    break;
   }
                    else
   {
    tx[0]=rx[0];//继电器和蜂鸣器
        tx[1]=rx[1];
        tx[2]=0x01;
    DDRC=0X00;                
        tx[3]=PORTC;
tx[3]>>=7;
    DDRC=0XFF;
                    checkcrc(tx4);
                        tx[4]=crcl;
                    tx[5]=crch;
                    send_string(tx6);
    break;
    
   }
           /* case 0x02:
                  tx[0]=rx[0];
      tx[1]=rx[1];
      tx[2]=rx[5]<<1;
      tx[3]=0x00;
                  tx[4]=teml;
  tx[5]=0x00;
                  tx[6]=temh;
                  checkcrc(txnend=tx[2]+3);
                      tx[tx[2]+3]=crcl;
                  tx[tx[2]+4]=crch;
       

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1672  2010-12-13 12:17  mcgs 通信\default\dep\uart.o.d

     文件       1942  2010-10-23 21:57  mcgs 通信\default\Makefile

     文件         13  2010-12-13 12:17  mcgs 通信\default\uart.eep

     文件      13535  2010-12-13 12:17  mcgs 通信\default\uart.elf

     文件       7402  2010-12-13 12:17  mcgs 通信\default\uart.hex

     文件      62092  2010-12-13 12:17  mcgs 通信\default\uart.lss

     文件      12967  2010-12-13 12:17  mcgs 通信\default\uart.map

     文件      21532  2010-12-13 12:17  mcgs 通信\default\uart.o

     文件       2235  2010-10-08 19:43  mcgs 通信\ds18b20.h

     文件       3859  2010-12-13 12:31  mcgs 通信\uart.aps

     文件        359  2010-12-13 12:31  mcgs 通信\uart.aws

     文件       9845  2010-12-13 12:31  mcgs 通信\uart.c

     目录          0  2011-08-15 09:01  mcgs 通信\default\dep

     目录          0  2011-08-15 09:01  mcgs 通信\default

     目录          0  2011-09-14 13:17  mcgs 通信

----------- ---------  ---------- -----  ----

               137453                    15


评论

共有 条评论