找回密码
 立即注册
查看: 51|回复: 1

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-06-16 09:55:47

9

主题

30

回帖

673

积分

版主

积分
673
发表于 7 天前 | 显示全部楼层 |阅读模式
实验一:直接输出,printf_usb("Hello World !\r\n")
实验二:  查询方式,查询到电脑命令后,

              printf_usb("Hello World !\r\n")或其他
实验三:  中断方式,单片机USB中断接收服务函数收到命令后,

              printf_usb("Hello World !\r\n")或其他


部分手敲代码可从下面直接拷贝
1.jpg
2.jpg
#include  "ai8051u.h"        //头文件不分大小写,但关键字分大小写
#include  "ai_usb.h"        //USB库和USB虚拟设备的头文件

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口为准双向口模式

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

        while (1)
        {
                printf_usb("Hello World !\r\n");
                //  \r是回车,并跳到行首,\n是换行,就是换到下一行;\r\n不要交换次序
        }
}
3.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[0] == 6)
                                printf_usb("Hello World !\r\n");
                        else if (UsbOutBuffer[0] == 7)
                                printf_usb("China !\r\n");               
                        usb_OUT_done();             //当前包的数据处理完成
        }
    }
}

4.jpg

#include "ai8051u.h"
#include "ai_usb.h"
////////////////////////////////////////
// USB设备接收数据中断回调程序
////////////////////////////////////////
void USBLIB_OUT_Callback(void)
{
    if (UsbOutBuffer[0] == 6)
        printf_usb("Hello World !\r\n");        //接收到数据6后打印“Hello World !”
    else if (UsbOutBuffer[0] == 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);
}

回复

使用道具 举报 送花

3

主题

726

回帖

163

积分

等待验证会员

积分
163
发表于 7 天前 | 显示全部楼层
实验一:Hello World 项目开发

实验目的
通过本次实验,掌握 Atmel7 开发板的使用方法,能够通过 Atmel7 的接口编写简单的 Hello World 项目,并了解 Atmel7 的基本功能。

实验步骤
1. 安装 Atmel7  
   下载并安装 Atmel7 开发板,确保有对应的开发板接口(如 AT91F107)。

2. 连接到 AI8H8K64U  
   将 Atmel7 的 AT91F107 接接到 AI8H8K64U 上的开发接口(如 DD0A/AA0A)。确保开发接口与开发板接口正确对接。

3. 启动 Atmel7  
   在 Atmel7 的控制台中,进入“控制台”(Ctrl+Shift+S),选择“控制台”启动,确保 Atmel7 能够正常工作。

4. 编写 Hello World 代码  
   在 Atmel7 的控制台中,输入以下代码:
  
  1. python
  2.    [size=5]printfusb("Hello World !\r\n");
复制代码

5. 运行程序  
   在 Atmel7 的控制台中,选择“程序”(Ctrl+Shift+S),选择“程序”文件,运行 Hello World 项目。

6. 查看运行结果  
   通过 Atmel7 的控制台查看运行结果,确保程序正常运行。

实验二:查询电脑命令

实验目的
通过本次实验,掌握如何使用 Atmel7 的 printube 函数查询电脑上的命令。

实验步骤
1. 打开 Atmel7  
   在 Atmel7 的控制台中,选择“控制台”启动。

2. 进入 printube 区域  
   在 Atmel7 的控制台中,输入以下代码:
  
  1. python
  2.    [size=5]printube("电脑命令");
复制代码

3. 查看结果  
   在 Atmel7 的控制台中,选择“结果”(Ctrl+Shift+S),查看 printube 区域的输出结果,确认命令是否成功查询。

实验三:中断处理

实验目的
通过本次实验,掌握单片机 USB 悬停接收服务函数(RSRFS)的使用方法,能够处理单片机的 USB 中断。

实验步骤
1. 连接单片机与 Atmel7  
   将 AI8H8K64U 的 DD0A/AA0A 接接到 AT91F107 上的开发接口。

2. 启动 Atmel7  
   在 Atmel7 的控制台中,进入“控制台”,选择“程序”启动。

3. 编写中断处理代码  
   在 Atmel7 的控制台中,编写以下代码:
  
  1. python
  2.    [size=5]printube("单片机中断");
  3.    [color=#0000ff]printfusb("单片机中断处理成功!\r\n");
复制代码

4. 运行程序  
   在 Atmel7 的控制台中,选择“程序”文件,运行中断处理代码。

5. 查看结果  
   在 Atmel7 的控制台中,选择“结果”查看中断处理的结果,确认程序是否正常完成。

实验总结
通过本次实验,我们掌握了 Atmel7 的基本功能和使用方法。实验一展示了如何通过 Atmel7 编写简单的 Hello World 项目。实验二和实验三则展示了如何使用 Atmel7 的 printube 和 printube 函数查询电脑命令和处理单片机的 USB 中断。这些操作为后续开发提供了基础技能,有助于进一步学习 Atmel7 的高级功能。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 11:17 , Processed in 0.425287 second(s), 55 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表