⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c1

📁 多路语音控制及MAC地址加密以供上位机验证
💻 C1
字号:
#include <AT89X52.H> 
#include <string.h> 

sbit sousel    = P1^7;
sbit ch0       = P1^6;
sbit ch1       = P1^5;
sbit ch2       = P1^4;
sbit ch3       = P1^3;
sbit ch4       = P1^2;
sbit ch5       = P1^1;
sbit ch6       = P1^0;
sbit ch7       = P0^0;
sbit ch8       = P0^1;
sbit ch9       = P0^2;
sbit ch10      = P0^3;
sbit jt        = P0^4;
sbit rl0       = P0^5;
sbit rl1       = P0^6;
sbit rl2       = P0^7;
sbit rl3       = P2^0;
sbit rl4       = P2^1;
sbit rl10      = P2^2;
sbit rl9       = P2^3;
sbit rl8       = P2^4;
sbit rl7       = P2^5;
sbit rl6       = P2^6;
sbit rl5       = P2^7;
sbit sou       = P3^6;
sbit s42       = P3^7;


#define INBUF_LEN 22 //数据长度 

unsigned char inbuf1[INBUF_LEN]; 
unsigned char datastart;
unsigned char checksum,count3; 
bit read_flag= 0 ; 
bit incept = 0;
void init_serialcomm( void ) 
{ 
  SCON = 0x50 ;   //SCON: serail mode 1, 8-bit UART, enable ucvr 
  TMOD |= 0x20 ;  //TMOD: timer 1, mode 2, 8-bit reload 
  PCON |= 0x80 ;  //SMOD=1; 
  TH1 = 0xFA ;    //Baud:9600 fosc=11.0592MHz 
  IE |= 0x90 ;    //Enable Serial Interrupt 
  TR1 = 1 ;       // timer 1 run 
  // TI=1; 
} 

//向串口发送一个字符 
void send_char_com( unsigned char ch) 
{ 
  SBUF=ch; 
  while (TI== 0 ); 
    TI= 0 ; 
} 

//向串口发送一个字符串,strlen为该字符串长度 
void send_string_com( unsigned char *str, unsigned int strlen) 
{ 
  unsigned int k= 0 ; 
  do 
  { 
    send_char_com(*(str + k)); 
    k++; 
  } while (k < strlen); 
} 


//串口接收中断函数 
void serial () interrupt 4 using 3 
{ 
  unsigned char i;
  if (RI) 
  { 
    unsigned char ch; 
    RI = 0 ; 
    ch=SBUF; 
    if (ch == 0x55 ) 
    { 
      incept = 1; 
      count3 = 0;
      for(i = 0; i < 7; i ++)
        inbuf1[i] = 0x00;
    }
    if(incept)
    { 
      inbuf1[count3]=ch; 
      count3++; 
    }
    if (count3 == 7) 
    { 
      read_flag= 1 ; //如果串口接收的数据达到INBUF_LEN个,且校验没错, 
      incept = 0; 
      count3 = 0;
    } 
  } 
} 

void delay(unsigned char x)
{
  while(x --);
}
unsigned char decode(voi)
{
  unsigned char chansel = 0xff;
  if(read_flag)
  {
    if(inbuf1[3] &0x10)  //位7
      chansel &= 0x7f;
    else
      chansel |= 0x80;
      
    if(inbuf1[3] &0x01)  //位6
      chansel &= 0xbf;
    else
      chansel |= 0x04;
      
    if(inbuf1[4] &0x10)  //位5
      chansel &=0xdf;
    else
      chansel |= 0x20;
      
    if(inbuf1[4] &0x01)  //位4
      chansel &=0xef;
    else
      chansel |= 0x10;
      
    if(inbuf1[5] &0x10)  //位3
      chansel &=0xf7;
    else
      chansel |= 0x08;
      
    if(inbuf1[5] &0x01)  //位2
      chansel &=0xfb;
    else
      chansel |= 0x04;
      
    if(inbuf1[6] &0x10)  //位1
      chansel &=0xfd;
    else
      chansel |= 0x02;
      
    if(inbuf1[6] &0x01)  //位0
      chansel &=0xfe;
    else
      chansel |= 0x01;
      
    return(chansel);
  } 
}
void main(void) 
{ 
  init_serialcomm(); //初始化串口 
  while ( 1 ) 
  { 
    P1 = decode();
  } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -