芯芯向荣up 发表于 2025-6-9 15:13:24

一起学 AiCube之AI8H8K64U应用, printf_usb("Hello World !\r\n");

一起学AiCube之STC8H8K64U自动辅助开发,程序自动生成
STC8H8K64U 三个超简单的USB通信实验, 及USB不停电下载
实验一:直接输出,printf_usb("Hello World !\r\n")
实验二:查询方式,查询到电脑命令后,
            printf_usb("Hello World !\r\n")或其他
实验三:中断方式,单片机USB中断接收服务函数收到命令后,
            printf_usb("Hello World !\r\n")或其他
视频如下:



部分手敲代码可从下面直接拷贝
https://www.stcaimcu.com/data/attachment/forum/202506/09/101035xugbwmtmb9dxgbwf.jpg
https://www.stcaimcu.com/data/attachment/forum/202506/09/101615sgggvg22a7vc2hju.jpg
#include"ai8051u.h"      //头文件不分大小写,但关键字分大小写
#include"ai_usb.h"      //USB库和USB虚拟设备的头文件

voidmain(void)
{
      EAXFR = 1;       //允许访问扩展的特殊寄存器,XFR
      WTST = 0;       //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
      CKCON = 0;   //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间

      P0M0 = 0x00; P0M1 = 0x00;      //初始化P0口为准双向口模式
      P1M0 = 0x00; P1M1 = 0x00;         //初始化P1口为准双向口模式
      P2M0 = 0x00; P2M1 = 0x00;         //初始化P2口为准双向口模式
      P3M0 = 0x00; P3M1 = 0x00;         //初始化P3口为准双向口模式
      P4M0 = 0x00; P4M1 = 0x00;         //初始化P4口为准双向口模式
      P5M0 = 0x00; P5M1 = 0x00;         //初始化P5口为准双向口模式

      usb_init();
      //初始化USB模块,并且会将【P3.0,P3.1】初始化为高阻输入,不影响USB【D-,D+】通讯
      EA = 1;                //使能总中断

      while (1)
      {
                printf_usb("Hello World !\r\n");
                //\r是回车,并跳到行首,\n是换行,就是换到下一行;\r\n不要交换次序
      }
}
https://www.stcaimcu.com/data/attachment/forum/202506/09/101709bhwlxflcwlxwhsjs.jpg
#include "ai8051u.h"
#include "ai_usb.h"

void main(void)
{
      EAXFR = 1;               //允许访问扩展的特殊寄存器,XFR
      WTST = 0;                //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
      CKCON = 0;            //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间

    P0M0 = 0x00; P0M1 = 0x00;         //初始化P0口为准双向口模式
    P1M0 = 0x00; P1M1 = 0x00;         //初始化P1口为准双向口模式
    P2M0 = 0x00; P2M1 = 0x00;         //初始化P2口为准双向口模式
    P3M0 = 0x00; P3M1 = 0x00;         //初始化P3口为准双向口模式
    P4M0 = 0x00; P4M1 = 0x00;         //初始化P4口为准双向口模式
    P5M0 = 0x00; P5M1 = 0x00;         //初始化P5口为准双向口模式
    P6M0 = 0x00; P6M1 = 0x00;         //初始化P6口为准双向口模式
    P7M0 = 0x00; P7M1 = 0x00;         //初始化P7口为准双向口模式
   
    usb_init();                         //初始化USB模块
    EA = 1;                           //使能全局中断

    while (1)
    {
      if (bUsbOutReady)               //查询是否有接收到数据
      {
                        if (UsbOutBuffer == 6)
                              printf_usb("Hello World !\r\n");
                        else if (UsbOutBuffer == 7)
                              printf_usb("China !\r\n");
                        

                        usb_OUT_done();             //当前包的数据处理完成
      }
    }
}
https://www.stcaimcu.com/data/attachment/forum/202506/09/100955kq0xx1xx31xstsyr.jpg
#include "ai8051u.h"
#include "ai_usb.h"
////////////////////////////////////////
// USB设备接收数据中断回调程序
////////////////////////////////////////
void USBLIB_OUT_Callback(void)
{
    if (UsbOutBuffer == 6)
      printf_usb("Hello World !\r\n");      //接收到数据6后打印“Hello World !”
    else if (UsbOutBuffer == 7)
      printf_usb("China !\r\n");                //接收到数据7后打印“China !”
}

void main(void)
{
      EAXFR = 1;                              //允许访问扩展的特殊寄存器,XFR
      WTST = 0;                           //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
      CKCON = 0;                        //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间

    P0M0 = 0x00; P0M1 = 0x00;         //初始化P0口为准双向口模式
    P1M0 = 0x00; P1M1 = 0x00;         //初始化P1口为准双向口模式
    P2M0 = 0x00; P2M1 = 0x00;         //初始化P2口为准双向口模式
    P3M0 = 0x00; P3M1 = 0x00;         //初始化P3口为准双向口模式
    P4M0 = 0x00; P4M1 = 0x00;         //初始化P4口为准双向口模式
    P5M0 = 0x00; P5M1 = 0x00;         //初始化P5口为准双向口模式
    P6M0 = 0x00; P6M1 = 0x00;         //初始化P6口为准双向口模式
    P7M0 = 0x00; P7M1 = 0x00;         //初始化P7口为准双向口模式
   
    usb_init();                         //初始化USB模块
    set_usb_OUT_callback(USBLIB_OUT_Callback);//设置USB中断回调函数
    EA = 1;                           //使能全局中断

    while (1);
}





页: [1]
查看完整版本: 一起学 AiCube之AI8H8K64U应用, printf_usb("Hello World !\r\n");