找回密码
 立即注册
查看: 139|回复: 9

AI8051U

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 10:22:44 | 显示全部楼层 |阅读模式
AI8051U 功能强大,今天开始学习评估

截图202601131022105529.jpg


车规级工作温度
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 10:24:55 | 显示全部楼层
车规级工作温度
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:61
  • 最近打卡:2026-02-07 11:52:53
已绑定手机

14

主题

125

回帖

924

积分

版主

积分
924
发表于 2026-1-13 10:41:40 | 显示全部楼层
要 做到 USB不停电下载
要 尝试 AiCube 图形化自动配置生成程序工具
推荐优先看的:  
printf_usb("Hello World !\r\n")
USB不停电下载, 演示视频链接:
https://www.stcaimcu.com/thread-19077-1-1.html

下载 最新的 AiCube-ISP-V6.96O 或以上版本软件 !

深圳国芯人工智能有限公司-工具软件

下载 最新的 USB库函数,永远用最新的 USB库函数 !
深圳国芯人工智能有限公司-库函数
下载 最新的 用户手册 !
下载 最新的 上机实践指导书 !

下载 最新的 Ai8051U 用户手册
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf

下载 最新的 Ai8051U 实验指导书,
AiCube 图形化自动配置生成程序工具使用说明
https://www.stcaimcu.com/data/do ... %AF%BC%E4%B9%A6.pdf


推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接



回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 14:07:20 | 显示全部楼层
CNU*** 发表于 2026-1-13 10:24
车规级工作温度

第一集 序言

AI8051U 优势
1、LCD 显示和Video 播放(Flash 编程)
2、IIS 录放音
3、PWM DMA
4、频谱分析
5、计算器
6、QSPI,PWM 移相,硬件乘除,单精度浮点
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 14:21:24 | 显示全部楼层
CNU*** 发表于 2026-1-13 10:24
车规级工作温度

第二集  开发板(工具箱硬件配置)
截图202601131421169563.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 14:54:45 | 显示全部楼层
CNU*** 发表于 2026-1-13 14:21
第二集  开发板(工具箱硬件配置)

第三集 点亮LED

经典程序 ,温故知新
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 15:05:26 | 显示全部楼层
CNU*** 发表于 2026-1-13 14:54
第三集 点亮LED

经典程序 ,温故知新

第四集 USB 不断电下载

1、传统方式 在代码重编译后生成HEX 文件,需要每次断电-->上电进入下载模式,操作费时
2、用USB 不断电下载,非常方便
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 15:12:15 | 显示全部楼层
CNU*** 发表于 2026-1-13 15:05
第四集 USB 不断电下载

1、传统方式 在代码重编译后生成HEX 文件,需要每次断电-->上电进入下载模式,操 ...

第五集 C 语言基础


C 语言基础核心总结
一、程序基本结构(入门基石)
  • 核心组成:C 程序以main()函数为唯一入口,整体结构为:预处理指令 → 全局声明 → 主函数 → 自定义函数。c


    运行







    #include <stdio.h>  // 预处理指令:引入头文件int main() {        // 主函数:程序入口,int表示返回整型    // 核心代码逻辑    printf("Hello C\n");  // 功能语句:分号结尾    return 0;             // 返回值:0表示程序正常结束}





  • 关键规则:所有语句以;结尾;注释分单行//和多行/* ... */;代码区分大小写。

二、数据处理基础(变量 / 常量 / 类型)
  • 核心数据类型(强类型语言,变量必须先定义后使用):

    类型
    用途
    格式化符
    示例

    int存储整数%dint age=18;
    float单精度小数(精度低)%ffloat score=95.5;
    double双精度小数(常用)%lfdouble pi=3.14159;
    char单个字符(单引号)%cchar ch='A';
    bool布尔值(需<stdbool.h>)%dbool flag=true;


  • 变量与常量:

    • 变量:值可修改,定义格式类型 变量名 = 初始值;(如int num=10;);
    • 常量:值不可改,两种定义方式:
      • #define 常量名 值(无类型,预处理替换,如#define PI 3.14);
      • const 类型 常量名 = 值(有类型,编译限制,如const int MAX=100;)。



  • 输入输出:

    • 输出:printf("格式化字符串", 变量),核心格式化符见上表;
    • 输入:scanf("格式化字符串", &变量),注意&取地址符(字符串数组名无需加&)。



三、运算符(程序运算核心)
按用途分类,核心常用运算符:

类别
核心运算符
说明

算术运算+、-、*、/、%%仅用于整数取余
赋值运算=、+=、-=、*=a+=5等价于a=a+5
关系运算>、<、>=、<=、==、!=返回 1(真)/0(假)
逻辑运算`&&(与)、(或)、!(非)`短路求值(一假则与运算结束)


四、流程控制(程序逻辑分支)
  • 分支结构:

    • if-else:处理复杂条件(如范围判断),格式:c


      运行







      if (条件) { 语句1; } else if (条件2) { 语句2; } else { 语句3; }





    • switch:处理固定值匹配(如菜单选择),格式:c


      运行







      switch (表达式) {    case 常量1: 语句1; break; // break避免穿透    case 常量2: 语句2; break;    default: 语句3;}







  • 循环结构:

    • for:已知循环次数(如遍历 1-100),格式:for(初始化; 条件; 步长) { 循环体; };
    • while:未知循环次数(如用户输入正确值为止),格式:while(条件) { 循环体; };
    • do-while:至少执行一次循环,格式:do { 循环体; } while(条件);;
    • 循环控制:break终止整个循环,continue跳过本次循环剩余语句。



五、数组(批量存储同类型数据)
  • 一维数组:定义类型 数组名[长度];(如int arr[5] = {1,2,3,4,5};),通过下标访问(下标从 0 开始);
  • 字符数组:存储字符串,以\0结尾(如char name[20] = "Tom";),可通过%s整体输入输出。

六、函数(代码复用核心)
  • 基本格式:返回值类型 函数名(参数列表) { 函数体; return 返回值; };
    • 无返回值用void,无参数可写void;
    • 示例:int add(int a, int b) { return a+b; }。

  • 调用规则:函数需先声明(或定义)后调用,声明格式:返回值类型 函数名(参数类型列表);(如int add(int, int);)。

总结
  • C 语言是结构化、强类型语言,程序入口固定为main()函数,语句必须以分号结尾;
  • 数据处理核心是「类型 + 变量 / 常量」,输入输出依赖printf/scanf,需匹配对应格式化符;
  • 程序逻辑由「分支(if/switch)+ 循环(for/while)」控制,函数是代码复用的核心方式。

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 15:16:13 | 显示全部楼层
CNU*** 发表于 2026-1-13 15:12
第五集 C 语言基础

第六集 GPIO


1、GPIO 定义 (gernral purpose IO Ports ),通用输入/输出端口
2、典型例程:
// 8051寄存器定义头文件,不同编译器(如Keil C51)需确保该头文件存在#include <reg52.h>  // 引脚定义:简化代码可读性sbit LED = P1^0;    // 定义P1.0为LED控制引脚sbit KEY = P3^2;    // 定义P3.2为按键输入引脚// 延时函数:软件延时,约100ms(晶振11.0592MHz)void delay_100ms(void) {    unsigned int i, j;    for(i = 1000; i > 0; i--)        for(j = 110; j > 0; j--);}// 主函数:程序入口void main(void) {    LED = 1;        // 初始化LED为熄灭状态(假设LED共阳接法,高电平灭)    while(1) {      // 死循环,程序持续运行        // 检测按键是否按下(按键低电平有效)        if(KEY == 0) {            delay_100ms();  // 消抖:延时避开按键机械抖动            if(KEY == 0) {  // 再次确认按键按下                LED = 1;    // 强制熄灭LED                // 等待按键松开                while(KEY == 0);            }        } else {            // 按键未按下,LED正常闪烁            LED = ~LED;     // 翻转LED状态(亮→灭/灭→亮)            delay_100ms();  // 延时,控制闪烁频率        }    }}
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-13 09:48:59
已绑定手机

1

主题

8

回帖

21

积分

新手上路

积分
21
发表于 2026-1-13 15:19:53 | 显示全部楼层

第七集 定时器中断
AI8051U 完全兼容传统 8051 的定时器 / 中断架构,核心差异仅在于晶振配置或寄存器地址(实际开发中基本通用),下面以定时器 0 工作在模式 1(16 位定时器) 为例,实现 LED 每 1 秒精准闪烁
例程
// AI8051U寄存器头文件(兼容reg52.h,无差异可直接使用)#include <reg52.h>  // 引脚定义:P1.0控制LEDsbit LED = P1^0;   // 全局变量:中断计数(定时器0每10ms中断1次,累计100次即为1秒)unsigned int interrupt_cnt = 0;  // 定时器0初始化函数:配置16位定时器,11.0592MHz晶振,定时10msvoid Timer0_Init(void) {    // 1. 配置定时器模式:模式1(16位定时器/计数器)    TMOD &= 0xF0;  // 清空定时器0的模式位(低4位)    TMOD |= 0x01;  // 设置定时器0为模式1(M1=0, M0=1)        // 2. 设置定时器初值:11.0592MHz晶振,定时10ms    // 计数周期 = 1/11059200 * 12 = 1.085μs/个机器周期    // 10ms需要计数次数:10000μs / 1.085μs ≈ 9216 次    // 16位定时器最大值65536,初值 = 65536 - 9216 = 56320 = 0xDC00    TH0 = 0xDC;    // 高8位初值    TL0 = 0x00;    // 低8位初值        // 3. 开启定时器中断和总中断    ET0 = 1;       // 使能定时器0中断    EA = 1;        // 使能总中断(8051核心,所有中断必须开总中断)        // 4. 启动定时器0    TR0 = 1;       // 定时器0开始运行}// 定时器0中断服务函数(固定函数名,不可修改)void Timer0_ISR(void) interrupt 1 {    // 重新加载初值:模式1无自动重装,需手动补初值避免定时误差    TH0 = 0xDC;    TL0 = 0x00;        // 中断计数:每10ms中断1次,累计100次=1秒    interrupt_cnt++;    if(interrupt_cnt >= 100) {        interrupt_cnt = 0;    // 重置计数        LED = ~LED;           // 翻转LED状态(1秒闪烁1次)    }}// 主函数:程序入口void main(void) {    LED = 1;            // 初始化LED熄灭(共阳接法)    Timer0_Init();      // 初始化定时器0    while(1) {          // 死循环,程序后台靠中断运行        // 主循环可执行其他任务,不影响定时器中断    }}




回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-2-12 18:02 , Processed in 0.122320 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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