USB 学习笔记4:CH372 基本读写程序(51 单片机) USB 学习笔记4:CH372 基本读写程序(51 单片机) CH372 官网上已经给出了CH372 的测试程序,下面是我在官方网站的测试程序的基础上进行整理和梳理。CH375 支持 USB-HOST 主机方式和USB-DEVICE/SLAVE 设备方式。,而 CH375 从设备方式与 CH372 的功能程序是一样的,于是两者作为从机芯片是一样的。 CH372 内置了USB 通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372 自动处理默认端点 0 的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。在外置固件模式下,由外部单片机根据需要自行处理各种 USB 请求,从而可以实现符合各种 USB 类规范的设备。为了简单起见,一般 PC 机与单片机通信使用内置固件模式,下面程序也是基于内置固件模式的。 #pragma NOAREGS //禁止编译器使用绝对寄存器寻址,一定要加上 #include //51 单片机头文件 #include "CH375INC.H" //CH372/CH375 头文件 /////////////////////////////////////////////// //说明: CH372 总线地址,这个是按照学习笔记1 总线扩展方式定的 // 采用别的方式,地址另外设定 /////////////////////////////////////////////// unsigned char volatile xdata CH375_CMD_PORT _at_ 0x03F1; unsigned char volatile xdata CH375_DAT_PORT _at_ 0x03F0; /*********************延时程序********************/ /////////////////////////////////////////////// //函数:delay2us //说明:延时2us //入口:无 //返 回 :无 /////////////////////////////////////////////// void delay2us( ) { unsigned char i; for ( i = 2; i != 0; i -- ); } /////////////////////////////////////////////// //函数:delay50ms //说明:延时50ms //入口:无 //返回:无 /////////////////////////////////////////////// void Delay50ms( ) { unsigned char i, j; for ( i="200"; i!=0; i-- ) for ( j="250"; j!=0; j-- ); } /*********************基本读写程序********************/ /////////////////////////////////////////////// //函数:CH375_WR_CMD_PORT //说明:写USB 命令 //入口:unsigned char cmd:待写入命令 //返回:无 ///////////...