10
85
976
版主
#include "stc8h.h" //头文件不分大小写,但关键字分大小写 #include "ai_usb.h" //USB 库和 USB 虚拟设备的头文件,需要在项目文件中添加对应的 USB 库 void main(void) { // EAXFR=1;允许访问扩展的特殊寄存器,XFR // WTST = 0;设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行 // CKCON = 0;设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间 P_SW2|=0X80; ////使能可以访问扩展的特殊功能寄存器XFR,没有冲突不用关闭 usb_init(); //初始化 USB 模块,并且会将【P3.0, P3.1】初始化为高阻输入,不影响 USB【D-, D+】通讯 EA=1; //使能总中断 while(1) { printf_usb("Hello World !\r\n");//直接打印输出 “Hello World !” 到主机相应软件的 USB【CDC/HID-串口助手】 // \r 是回车,跳到行首,\n 是换行,就是换到下一行;\r\n 不要交换次序 } }
使用道具 举报 送花
#include "ai8051u.h" //头文件不分大小写,但关键字分大小写 #include "ai_usb.h" //USB 库和 USB 虚拟设备的头文件,需要在项目文件中添加对应的 USB 库 //由于在 USB 库函数的代码中已经定义了,不停电 ISP 下载命令字”@STCISP#”, //只需要在下载软件的“收到用户命令后复位到 ISP 监控程序区”选项卡中进行相应的设置, //即可实现 USB 不停电 ISP 下载功能,或串口不停电 ISP 下载功能。 void main(void) { //EAXFR = 1; //允许访问扩展的特殊寄存器,XFR //WTST = 0; //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行 //CKCON = 0; //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间 P_SW2 |= 0x80; //使能可以访问扩展的特殊功能寄存器XFR,没有冲突不用关闭 usb_init(); //初始化 USB 模块 EA = 1; //使能全局中断 while(1) { if(bUsbOutReady) { //查询方式:USB-Device 单片机查询是否有接收完成的 USB 主机送来的数据包 //“bUsbOutReady”:主机发送给 HID/CDC 设备的数据状态标志。 //USB 库中有定义 bUsbOutReady 位变量,查询方式必须调用一次“usb_OUT_done();” //状态位为 1 表示,主机发送给 HID/CDC 设备数据已完成, //设备已成功接收一包数据,等待对数据继续处理。 if(UsbOutBuffer[0]==7) printf_usb("HelloWorld!\r\n"); //接收到的数据包的第 0 个字节是 7,打印“HelloWorld!” else if(UsbOutBuffer[0]==8) printf_usb("China!\r\n"); //接收到的数据包的第 0 个字节是 8 后,打印“China!” usb_OUT_done(); //USB 查询方式,Device 单片机通知【主机可以发下一个数据包】 //当使用査询方式 if(bUsbOutReady),查询调用 USB 库函数时,在数据处理完成后, //必须调用一次“usb_OUT_done();”,这样才能接收下一包数据。 //如果是使用中断方式调用 USB 库函数,用户程序不需要调用“usb_OUT_done();” //中断方式,USB 库函数内部会自动处理。 } } }
#include "ai8051u.h" //头文件不分大小写,但关键字分大小写 #include "ai_usb.h" //USB 库和 USB 虚拟设备的头文件,需要在项目文件中添加对应的 USB 库 //由于在 USB 库函数的代码中已经定义了,不停电 ISP 下载命令字”@STCISP#”, //只需要在下载软件的“收到用户命令后复位到 ISP 监控程序区”选项卡中进行相应的设置, //即可实现 USB 不停电 ISP 下载功能,或串口不停电 ISP 下载功能。 // USB 接收中断服务程序中,调用用户实际需要执行的服务程序, // 简称回调函数,用户根据实际应用场景需求编写 void USBLIB_OUT_Callback(void) { //用户希望 USB 库函数,中断方式回调执行的用户自己编写的任务函数,简称回调函数 if (UsbOutBuffer[0] == 6) printf_usb("Hello World !\r\n"); //接收到数据 6 后,直接打印输出“Hello World !”到主机相应软件的 USB【CDC/HID-串口助手】 // \r 是回车,跳到行首,\n 是换行,就是换到下一行;\r\n 不要交换次序 else if (UsbOutBuffer[0] == 7) printf_usb("China !\r\n"); //接收到数据 7 后,直接打印输出 “China !” 到主机相应软件的 USB【CDC/HID-串口助手】” } void main(void) { //EAXFR = 1; //允许访问扩展的特殊寄存器,XFR //WTST = 0; //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行 //CKCON = 0; //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间 P_SW2 |= 0x80;//使能可以访问扩展的特殊功能寄存器XFR,没有冲突不用关闭 usb_init(); //初始化 USB 模块 set_usb_OUT_callback(USBLIB_OUT_Callback); //设置 USB 中断服务程序可以调用的回调函数 //此处 USBLIB_OUT_Callback 是前面用户自己编写的任务函数的函数名/地址,供 USB 库函数回调 EA = 1; //使能全局中断 while (1); }
本版积分规则 发表回复 回帖后跳转到最后一页
|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )
GMT+8, 2025-5-1 22:13 , Processed in 0.109635 second(s), 60 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.