找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2976|回复: 2
收起左侧

帮忙看一下这个keil单片机程序编译错误,求帮助

[复制链接]
ID:202598 发表于 2018-8-7 11:32 | 显示全部楼层 |阅读模式
帮忙看一下哪里错了,单片机用的是stc89c52,下面是错误代码:
compiling mian.c...
MIAN.C(45): error C202: 'P0M0': undefined identifier
MIAN.C(46): error C202: 'P0M1': undefined identifier
MIAN.C(48): error C202: 'P1M0': undefined identifier
MIAN.C(49): error C202: 'P1M1': undefined identifier
MIAN.C(51): error C202: 'P2M0': undefined identifier
MIAN.C(52): error C202: 'P2M1': undefined identifier
MIAN.C(54): error C202: 'P3M0': undefined identifier
MIAN.C(55): error C202: 'P3M1': undefined identifier
MIAN.C(57): error C202: 'P4M0': undefined identifier
MIAN.C(58): error C202: 'P4M1': undefined identifier
MIAN.C(63): error C202: 'S2CON': undefined identifier
MIAN.C(64): error C202: 'AUXR': undefined identifier
MIAN.C(66): error C202: 'T2L': undefined identifier
MIAN.C(67): error C202: 'T2H': undefined identifier
MIAN.C(69): error C202: 'AUXR': undefined identifier
MIAN.C(75): error C202: 'S2BUF': undefined identifier
MIAN.C(76): error C202: 'S2CON': undefined identifier
MIAN.C(77): error C202: 'S2CON': undefined identifier
MIAN.C(83): error C202: 'IE2': undefined identifier
MIAN.C(88): error C202: 'IE2': undefined identifier
MIAN.C(95): error C202: 'IE2': undefined identifier
MIAN.C(96): error C202: 'S2CON': undefined identifier
MIAN.C(98): error C202: 'S2CON': undefined identifier
MIAN.C(99): error C202: 'S2BUF': undefined identifier
MIAN.C(103): error C202: 'S2CON': undefined identifier
MIAN.C(105): error C202: 'S2CON': undefined identifier
MIAN.C(107): error C202: 'IE2': undefined identifier
mian.c - 27 Error(s), 0 Warning(s).



源程序:
/**********类型定义**************/
#include "reg52.h"
#include <String.h>

#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
#define code const
#define tbuf 50
/***********IO定义***************/
sbit  LED=P2^4;         


u8 xdata RX_buffer[tbuf];

u8 RX_num;

u8 code esp_at[]="AT\r\n";
u8 code esp_cwmode[]="AT+CWMODE=1\r\n";            
u8 code esp_cwjap[]="AT+CWJAP=\"NXP\",\"123456789\"\r\n";                  
u8 code esp_cifsr[]="AT+CIFSR\r\n";
u8 code esp_cipsta[]="AT+CIPSTART=\"TCP\",\"192.168.0.149\",6000\r\n";
u8 code esp_cipsend[]="AT+CIPSEND=5\r\n";
u8 code esp_DuoLianjie []="AT+CIPMUX=1\r\n";        
u8 code esp_Port []="AT+CIPSERVER=1,3122\r\n";      
u8 code esp_IP []="AT+CIFSR\r\n";                  
u8 code esp_Woshou []=":test";           
u8 code esp_test_LED []=":LED";            
u8 code esp_LED_ON []=":LED ON";         
u8 code esp_LED_OFF []=":LED OFF";         
u8 code esp_Rst []="AT+RST\r\n";            
u8 code esp_DATA []="AT+CIPSEND=1024\r\n";  


u8 Data_compare(u8 *p)
{
    if(strstr(RX_buffer,p)!=NULL)
        return 1;
    else
        return 0;
}

void IO_init(void)
{
  P0M0 = 0X00;
  P0M1 = 0X00;

  P1M0 = 0X00;
  P1M1 = 0X00;

  P2M0 = 0X00;
  P2M1 = 0X00;

  P3M0 = 0X00;
  P3M1 = 0X00;

  P4M0 = 0X00;
  P4M1 = 0X00;  
}

void UartInit(void)     
{      
    S2CON = 0x50;       //8位数据,可变波特率
    AUXR |= 0x04;       //定时器2时钟1为FOSC,即1T

    T2L=(65536-(11059200/4/115200));    //设置定时初值
    T2H=(65536-(11059200/4/115200))>>8; //设置定时初值

    AUXR |= 0x10;       //启动定时器2      
}


void Uart2SendByte(u8 ch)
{
    S2BUF = ch;                 //写数据到UART2数据寄存器
    while(!(S2CON&S2TI));   
    S2CON&=~S2TI;
}


void Uart2SendStr(u8 *s)
{
IE2 = 0x00;
    while (*s)                  //检测字符串结束标志
    {
       Uart2SendByte(*s++);     //发送当前字符
    }
IE2 = 0x01;
}

//串口2中断
void Uart2() interrupt 8 using 1
{

        IE2 = 0x00;       //关闭串口2中断
    if (S2CON & S2RI)
    {
        S2CON &= ~S2RI;         
                RX_buffer[RX_num] = S2BUF;
                RX_num++;               
                if(RX_num>tbuf) RX_num = 0;  
    }
    if (S2CON & S2TI)
    {
        S2CON &= ~S2TI;            
    }
        IE2 = 0x01;     //开启串口2中断

}

mian()
{
        // 1 发送AT 进行握手
    while(1)
    {
     Uart2SendStr(esp_at);     //串口2对wifi模块发送握手指令 即AT
     if(Data_compare("OK"))break;
     else  Uart1SendStr("ERROR1,some problems with ESP8266 \r\n");
     delay1ms(600);
    }
     Uart1SendStr("OK,mcu connection success with ESP8266! \r\n");
     memset(RX_buffer, 0, tbuf);//清缓存数据
     RX_num=0;                 //接收计数变量清0

    while(1)
    {
     Uart2SendStr(esp_cwmode);     //串口2对wifi模块工作模式进行设置  
     if(Data_compare("OK")||Data_compare("no change"))break;
     delay1ms(600);
    }
     memset(RX_buffer, 0, tbuf);//清缓存数据
     RX_num=0;                 //接收计数变量清0




    while(1)
    {
     Uart2SendStr(esp_cwjap);      //串口2发送 指点wifi名 密码 等待模块连接
     if(Data_compare("OK"))break;
     delay1ms(3000);
    }
    memset(RX_buffer, 0, tbuf);//清缓存数据
    RX_num=0;                  //接收计数变量清0

    while(1)
    {
         Uart2SendStr(esp_DuoLianjie);              //设置多链接
         if(Data_compare("OK"))break;
         delay1ms(3000);
    }
    memset(RX_buffer, 0, tbuf);//清缓存数据
    RX_num=0;                  //接收计数变量清0


    while(1)
    {
         Uart2SendStr(esp_Port);                //设置端口号
         if(Data_compare("OK"))
         {
            delay1ms(3000);
            break;
         }
         delay1ms(3000);
    }
    Uart1SendStr("OK,Succeed esp_Port\r\n");   
    memset(RX_buffer, 0, tbuf);//清缓存数据
    RX_num=0;                  //接收计数变量清0
}

回复

使用道具 举报

ID:360020 发表于 2018-8-7 14:38 | 显示全部楼层
stc89c52的单片机根本没有这些寄存器
附REG52.H
/*--------------------------------------------------------------------------
REG52.H

Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __REG52_H__
#define __REG52_H__

/*  BYTE Registers  */
sfr P0    = 0x80;
sfr P1    = 0x90;
sfr P2    = 0xA0;
sfr P3    = 0xB0;
sfr PSW   = 0xD0;
sfr ACC   = 0xE0;
sfr B     = 0xF0;
sfr SP    = 0x81;
sfr DPL   = 0x82;
sfr DPH   = 0x83;
sfr PCON  = 0x87;
sfr TCON  = 0x88;
sfr TMOD  = 0x89;
sfr TL0   = 0x8A;
sfr TL1   = 0x8B;
sfr TH0   = 0x8C;
sfr TH1   = 0x8D;
sfr IE    = 0xA8;
sfr IP    = 0xB8;
sfr SCON  = 0x98;
sfr SBUF  = 0x99;

/*  8052 Extensions  */
sfr T2CON  = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2    = 0xCC;
sfr TH2    = 0xCD;


/*  BIT Registers  */
/*  PSW  */
sbit CY    = PSW^7;
sbit AC    = PSW^6;
sbit F0    = PSW^5;
sbit RS1   = PSW^4;
sbit RS0   = PSW^3;
sbit OV    = PSW^2;
sbit P     = PSW^0; //8052 only

/*  TCON  */
sbit TF1   = TCON^7;
sbit TR1   = TCON^6;
sbit TF0   = TCON^5;
sbit TR0   = TCON^4;
sbit IE1   = TCON^3;
sbit IT1   = TCON^2;
sbit IE0   = TCON^1;
sbit IT0   = TCON^0;

/*  IE  */
sbit EA    = IE^7;
sbit ET2   = IE^5; //8052 only
sbit ES    = IE^4;
sbit ET1   = IE^3;
sbit EX1   = IE^2;
sbit ET0   = IE^1;
sbit EX0   = IE^0;

/*  IP  */
sbit PT2   = IP^5;
sbit PS    = IP^4;
sbit PT1   = IP^3;
sbit PX1   = IP^2;
sbit PT0   = IP^1;
sbit PX0   = IP^0;

/*  P3  */
sbit RD    = P3^7;
sbit WR    = P3^6;
sbit T1    = P3^5;
sbit T0    = P3^4;
sbit INT1  = P3^3;
sbit INT0  = P3^2;
sbit TXD   = P3^1;
sbit RXD   = P3^0;

/*  SCON  */
sbit SM0   = SCON^7;
sbit SM1   = SCON^6;
sbit SM2   = SCON^5;
sbit REN   = SCON^4;
sbit TB8   = SCON^3;
sbit RB8   = SCON^2;
sbit TI    = SCON^1;
sbit RI    = SCON^0;

/*  P1  */
sbit T2EX  = P1^1; // 8052 only
sbit T2    = P1^0; // 8052 only
            
/*  T2CON  */
sbit TF2    = T2CON^7;
sbit EXF2   = T2CON^6;
sbit RCLK   = T2CON^5;
sbit TCLK   = T2CON^4;
sbit EXEN2  = T2CON^3;
sbit TR2    = T2CON^2;
sbit C_T2   = T2CON^1;
sbit CP_RL2 = T2CON^0;

#endif

评分

参与人数 1黑币 +5 收起 理由
多德 + 5 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2018-8-7 17:17 | 显示全部楼层
不要重复发帖,此贴先转到无人区了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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