本帖最后由 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//////////////////////////////
|