/* CH375中断服务程序,使用寄存器组1 */ void mCh375Interrupt( void ) //interrupt 0 using 1 { unsigned char InterruptStatus; unsigned char i, length; //unsigned char data buffer[ 64 ]; unsigned char buffer[ 64 ]; unsigned char Lenth[ 60 ]; //a++; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 获取中断状态并取消中断请求 */ InterruptStatus = CH375_RD_DAT_PORT( ); /* 获取中断状态 */ switch ( InterruptStatus ) { /* 分析中断状态处理 */ case USB_INT_EP2_OUT: { /* 批量端点下传成功 */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 从当前USB中断的端点缓冲区读取数据块,并释放缓冲区 */ CH375_RD_DAT_PORT( ); length = RD_DATA; /* 首先读取后续数据长度 */ for ( i = 0; i < length; i ++ ) { CH375_RD_DAT_PORT( ); buffer[ i ] = RD_DATA; /* 接收数据包 */ } CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 ); /* 向USB端点2的发送缓冲区写入数据块 */ CH375_WR_DAT_PORT( length ); /* 首先写入后续数据长度,回传刚接收到的数据长度 */ for ( i = 0; i { buffer[ i ] = ~buffer[ i ] ; CH375_WR_DAT_PORT( buffer[ i ] ); /* 数据取反后返回,由计算机应用程序测试数据是否正确 */ } break; } case USB_INT_EP2_IN: { /* 批量数据发送成功 */ CH375_WR_CMD_PORT( CMD_UNLOCK_USB ); /* 释放当前USB缓冲区 */ PTCD_PTCD5 = 0; break; } default: { /* 其它中断,未用到,解锁后退出即可 */ CH375_WR_CMD_PORT( CMD_UNLOCK_USB ); /* 释放当前USB缓冲区 */ break; } } }
void main(void) {
MCUinit(); port_init(); Delay50ms( ); /* 延时等待CH375初始化完成,如果单片机由CH375提供复位信号则不必延时 */ CH375_Init( ); /* 初始化CH375 */ while ( 1 ) /* 以下指令开始工作循环,等待PC机命令进行操作 */ { if(!CH375_INT) { mCh375Interrupt(); } } }