一起学AiCube之STC8H8K64U自动开发, 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://v.stcai.com/sv/61b39596-197624e4e06/61b39596-197624e4e06.mp4
https://v.stcai.com/sv/5806c211-1975d931472/5806c211-1975d931472.mp4
最新 ISP软件下载:
深圳国芯人工智能有限公司-工具软件
最新数据手册下载:
深圳国芯人工智能有限公司-产品_STC8H系列
可以拷贝过来,简单修改就能使用的参考程序
#include"ai8051u.h" //头文件不分大小写,但关键字分大小写
#include"ai_usb.h" //USB库和USB虚拟设备的头文件
voidmain(void)
{
/*
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR, 用于STC32G/AI8051U-32Bit等32位8051单片机
WTST = 0; //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
CKCON = 0; //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间
*/
P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能, 用于STC8H/AI8H系列8位 1T 8051单片机
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不要交换次序
}
}
可以拷贝过来,简单修改就能使用的参考程序
#include "ai8051u.h"
#include "ai_usb.h"
void main(void)
{
/*
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR, 用于STC32G/AI8051U-32Bit等32位8051单片机
WTST = 0; //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
CKCON = 0; //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间
*/
P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能, 用于STC8H/AI8H系列8位 1T 8051单片机
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(); //当前包的数据处理完成
}
}
}
可以拷贝过来,简单修改就能使用的参考程序
#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, 用于STC32G/AI8051U-32Bit等32位8051单片机
WTST = 0; //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
CKCON = 0; //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间
*/
P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能, 用于STC8H/AI8H系列8位 1T 8051单片机
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);
}
好好学习,天天向上,,声音真好听{:4_174:} 学习ing{:jie:}跟着视频一把过~~~~~~
查询中断两个例子一开始发送6、7没有返回,
仔细看视频画面发现我的ISP发送默认没有勾选HEX。
勾上之后立马顺利发送接收~
另外AiCube的关联printf选项好方便,printf_usb()和printf都能直接用了。
{:qiang:}
页:
[1]