打印

求大大来看看Keil错误,看不懂什么意思

[复制链接]
2177|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hceng|  楼主 | 2013-12-2 15:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hceng 于 2013-12-2 16:11 编辑

Build target 'Target 1'
assembling STARTUP.A51...
compiling Key.c...
compiling PDIUSBD12.c...
UART.H(9): error C129: missing ';' before 'void'
compiling UART.c...
compiling System.c...
USBCORDE.H(15): error C129: missing ';' before 'void'
compiling UsbCorde.c...
UART.H(9): error C129: missing ';' before 'void'
Target not created

main.c文件
#include <AT89X52.H>  //头文件
#include "Key.h"
#include "Led.h"
#include "UART.h"
#include "PDIUSBD12.H"
#include "UsbCorde.h"
#include "config.h"

void main(void)  //主函数
{

uchar8 interruptsource;
//EA=1; //打开中断
InitKeyboard(); //初始化按键
InitUART();  //初始化串口
UsbDisconnect();
UsbConnect();

while(1)
        {
        if(D12GetIntPin()==0)
                {
                D12WriteCommand(D12_READ_INTERRUPT_REGISTER_COMMAND);
                interruptsource=D12ReadByte();
                if(interruptsource&0x80)UsbBusSuspend();
                if(interruptsource&0x40)UsbBusReset();
                if(interruptsource&0x01)UsbEp0Out();
                if(interruptsource&0x02)UsbEp0In();
                if(interruptsource&0x04)UsbEp1Out();
                if(interruptsource&0x08)UsbEp1In();
                if(interruptsource&0x10)UsbEp2Out();
                if(interruptsource&0x20)UsbEp2In();
                }
        }
}
uart.c文件
#include <AT89x52.H>
#include "UART.h"
#include "MyType.h"
#include "config.h"

volatile uchar8 Sending;

/********************************************************************
函数功能:串口初始化。
入口参数:无。
返    回:无。
备    注:无。
********************************************************************/
void InitUART(void)
{
EA=0; //暂时关闭中断
TMOD&=0x0F;  //定时器1模式控制在高4位
TMOD|=0x20;    //定时器1工作在模式2,自动重装模式
SCON=0x50;     //串口工作在模式1
TH1=256-Fclk/(BitRate*12*16);  //计算定时器重装值
TL1=256-Fclk/(BitRate*12*16);
PCON|=0x80;    //串口波特率加倍
ES=1;         //串行中断允许
TR1=1;        //启动定时器1
REN=1;        //允许接收
EA=1;         //允许中断
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:串口中断处理。
入口参数:无。
返    回:无。
备    注:无。
********************************************************************/
void UartISR(void) interrupt 4
{
if(RI)    //收到数据
  {
   RI=0;   //清中断请求
  }
else      //发送完一字节数据
  {
   TI=0;
   Sending=0;  //清正在发送标志
  }
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:往串口发送一字节数据。
入口参数:d: 要发送的字节数据。
返    回:无。
备    注:无。
********************************************************************/
void UartPutChar(uchar8 d)
{
SBUF=d; //将数据写入到串口缓冲
Sending=1;         //设置发送标志
while(Sending); //等待发送完毕
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:发送一个字符串。
入口参数:pd:要发送的字符串指针。
返    回:无。
备    注:无。
********************************************************************/
void Prints(uchar8 * pd)
{
while((*pd)!='\0') //发送字符串,直到遇到0才结束
  {
   UartPutChar(*pd); //发送一个字符
   pd++;  //移动到下一个字符
  }
}
////////////////////////End of function//////////////////////////////

UART.h文件
#ifndef __UART_H__
#define __UART_H__
#include "MyType.h"
void InitUART(void);
void UartPutChar(uchar8);
void Prints(uchar8 *pd);
#endif
PDIUSBD12.c文件
#include <AT89x52.H>
#include "MyType.h"
#include "PDIUSBD12.H"        
//#include "UART.h"
//#include "config.h"
/********************************************************************
函数功能:D12写命令。
入口参数:Command:一字节命令。
返    回:无。
备    注:无。
********************************************************************/
void D12WriteCommand(uchar8 Command)
{
D12SetCommandAddr();  //设置为命令地址
D12ClrWr(); //WR置低
D12SetPortWrite(); //将数据口设置为输出状态(注意这里为空宏,移植时可能有用)
D12SendData(Command);  //输出命令到数据口上
D12SetWr(); //WR置高
D12SetPortRead(); //将数据口设置为输入状态,以备后面输入使用
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:读一字节D12数据到MCU。
入口参数:无。
返    回:读回的一字节。
备    注:无。
********************************************************************/
uchar8 D12ReadByte(void)
{
uchar8 temp;
D12SetDataAddr(); //设置为数据地址
D12ClrRd(); //RD置低
temp=D12GetData(); //读回数据
D12SetRd(); //RD置高
return temp; //返回读到数据
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:从MCU写1字节数据到D12
入口参数:value 1字节数据
返    回:
备    注:
********************************************************************/
void D12WriteByte(uchar8 temp)
{
D12SetDataAddr();
D12ClrWr();
D12SetPortWrite();
D12SendData(temp);
D12SetWr();
D12SetPortRead();
}
////////////////////////End of function//////////////////////////////

PDIUSBD12.h文件
#ifndef __PDIUSBD12_H__
#define __PDIUSBD12_H__
#include <at89x52.h>
#include "MyType.h"
//PDIUSBD12芯片连接引脚
#define D12_DATA                  P0
#define D12_A0                    P3_5
#define D12_WR                    P3_6
#define D12_RD                    P3_7
#define D12_INT                   P3_2
#define D12_COMMAND_ADD           1        //命令地址和数据地址
#define D12_DATA_ADD              0
#define D12_READ_INTERRUPT_REGISTER_COMMAND 0xf4//读中断寄存器命令  
//#define D12_READ_BUFFER_COMMAND 0xf0//读缓冲区命令
//#define D12_CLEAR_BUFFER_COMMAND 0xf2//清理缓冲区命令
//#define D12_ACKNOWLEDGE_SETUP_COMMAND 0xf1//建立过程应答
#define D12GetIntPin() D12_INT
#define D12SetCommandAddr() D12_A0=D12_COMMAND_ADD//选择命令或数据地址
#define D12SetDataAddr()    D12_A0=D12_DATA_ADD
#define D12ClrWr() D12_WR=0//WR控制
#define D12SetWr() D12_WR=1
#define D12ClrRd() D12_RD=0//RD控制
#define D12SetRd() D12_RD=1
#define D12GetIntPing()  D12_INT//获取中断状态
#define D12GetData() D12_DATA//读写数据
#define D12SendData(Value) D12_DATA=(Value)
#define D12SetPortRead() D12_DATA=0xFF//将数据口设置为输入状态,51单片机端口写1就是为输入状态
#define D12SetPortWrite()//将数据口设置为输出状态,由于51单片机是准双向IO口,所以不用切换,为空宏
//#define Read_ID                  0xFD//D12的读ID命令
void D12WriteCommand(uchar8);//给D12写入命令字符
uchar8 D12ReadByte(void);//从D12读入一个字节的数据
void D12WriteByte(uchar8);//给D12写入一个数据
#endif
UsbCorde.c文件
#include <AT89x52.H>
#include "UsbCorde.h"
#include "MyType.h"
#include "PDIUSBD12.H"
#include "UART.h"
#include "config.h"

//idata uchar8 Buffer[16];//MCU中读端点0用的缓冲区
/********************************************************************
函数功能:延迟Xms
入口参数:X,X是延迟时间
返    回:
备    注:
********************************************************************/
static void DelayXms(uint16 x)
{
uint16 i;
uint16 j;
for(i=0;i<x;i++)
        for(j=0;j<227;j++);
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:usb断开链接函数
入口参数:
返    回:
备    注:
********************************************************************/
void UsbDisconnect(void)
{

#ifdef DEBUG0
Prints("usb链接断开。\r\n");
#endif
D12WriteCommand(D12_SET_MODE_COMMAND);
D12WriteByte(USB_DISCONNECT_COMMAND);
D12WriteByte(USB_CLOCK_COMMAND);
DelayXms(1000);
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:usb链接上函数
入口参数:无
返    回:无
备    注:无
********************************************************************/
void UsbConnect(void)
{
#ifdef DEBUG0
Prints("usb链接上。\r\n");
#endif
D12WriteCommand(D12_SET_MODE_COMMAND);
D12WriteByte(USB_CONNECT_COMMAND);
D12WriteByte(USB_CLOCK_COMMAND);
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:总线挂起中断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbBusSuspend(void)
{
#ifdef DEBUG0
Prints("总线挂起。\r\n");
#endif
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:总线复位中断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbBusReset(void)
{
#ifdef DEBUG0
Prints("总线复位。\r\n");
#endif
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:端点0输出中断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbEp0Out(void)
{
#ifdef DEBUG0
Prints("USB端点0输出中断。\r\n");
#endif

}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:端点0输入断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbEp0In(void)
{
#ifdef DEBUG0
Prints("USB端点0输入中断。\r\n");
#endif
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:端点1输出中断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbEp1Out(void)
{
#ifdef DEBUG0
Prints("USB端点输出中断。\r\n");
#endif
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:端点1输入中断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbEp1In(void)
{
#ifdef DEBUG0
Prints("USB端点1输入中断。\r\n");
#endif
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:端点2输出中断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbEp2Out(void)
{
#ifdef DEBUG0
Prints("USB端点2输出中断。\r\n");
#endif
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:端点2输入中断服务程序
入口参数:
返    回:
备    注:
********************************************************************/
void UsbEp2In(void)
{
#ifdef DEBUG0
Prints("USB端点2输入中断。\r\n");
#endif
}
////////////////////////End of function//////////////////////////////

UsbCorde.h文件

#ifndef __USBCORDE_H__
#define __USBCORDE_H__
#define D12_SET_MODE_COMMAND         0xf3 //设置模式命令
#define USB_DISCONNECT_COMMAND         0x16//usb断开链接命令
#define USB_CONNECT_COMMAND                0x06//usb接上链接命令
#define USB_CLOCK_COMMAND        0x47//usb模式命令第2字节命令
void UsbDisconnect(void);//usb断开链接
void UsbConnect(void);//usb接通
void UsbBusSuspend(void);//总线挂起中断服务程序   对pc机来说的输出和输入
void UsbBusReset(void);//总线复位中断服务程序
void UsbEp0Out(void);//端点0输出中断服务程序
void UsbEp0In(void);//端点0输入断服务程序
void UsbEp1Out(void);//端点1输出中断服务程序
void UsbEp1In(void);//端点1输入中断服务程序
void UsbEp2Out(void);//端点2输出中断服务程序
void UsbEp2In(void);//端点2输入中断服务程序
#endif
////////////////////////End of head//////////////////////////////

相关帖子

沙发
ayb_ice| | 2013-12-2 15:26 | 只看该作者
忘了;号

使用特权

评论回复
板凳
hceng|  楼主 | 2013-12-2 15:31 | 只看该作者
绝对不是分号的问题

使用特权

评论回复
地板
huangxz| | 2013-12-2 15:44 | 只看该作者
类型定义可能有问题

使用特权

评论回复
5
xjfeng0224| | 2013-12-2 16:01 | 只看该作者
void main(void)  //主函数
{

下面没有对应的 }

使用特权

评论回复
6
hceng|  楼主 | 2013-12-2 16:11 | 只看该作者
xjfeng0224 发表于 2013-12-2 16:01
void main(void)  //主函数
{

有忘了复制了

使用特权

评论回复
7
dirtwillfly| | 2013-12-2 17:09 | 只看该作者

使用特权

评论回复
8
限量_个性。| | 2013-12-2 20:54 | 只看该作者
上传工程看看吧

使用特权

评论回复
9
hceng|  楼主 | 2013-12-2 23:56 | 只看该作者
上传了

UsbMouse.rar

48.92 KB

使用特权

评论回复
10
hceng|  楼主 | 2013-12-2 23:57 | 只看该作者
限量_个性。 发表于 2013-12-2 20:54
上传工程看看吧

上传了

使用特权

评论回复
11
linqing171| | 2013-12-3 12:29 | 只看该作者
哈哈,键盘一不小心多按了个   u

使用特权

评论回复
12
限量_个性。| | 2013-12-3 12:43 | 只看该作者
晕死啊。。我也看了半天。我建议楼主,文件不要重复包含,每个.c里需要的.h用一个includes.h包含就好,看起来会很清晰明了的~

使用特权

评论回复
13
Regsen| | 2013-12-3 13:04 | 只看该作者
书写,copy时候疏忽啦。

使用特权

评论回复
14
hceng|  楼主 | 2013-12-3 13:37 | 只看该作者
dwh000 发表于 2013-12-3 12:20
在这里,不是那个文件!
那个小写的U是怎么回事!

使用特权

评论回复
15
bluecup| | 2013-12-3 15:57 | 只看该作者
代码书写规范漂亮,赞一个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

48

帖子

0

粉丝