找回密码
 立即注册
楼主: mutuka

8051U深度入门到32位51大型实战教学视频打卡笔记

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 5 天前 | 显示全部楼层
继续 printf_usb
实验3
在中断响应里面读usb data 再反馈


// 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 表示用最快速度访问,不增加额外的等待时间
        usb_init(); //初始化 USB 模块 //初始化 USB 模块,并且会将【P3.0, P3.1】初始化为高阻输入,不影响 USB【D-, D+】通讯
        set_usb_OUT_callback(USBLIB_OUT_Callback); //设置 USB 中断服务程序可以调用的回调函数
        //此处 USBLIB_OUT_Callback 是前面用户自己编写的任务函数的函数名/地址,供 USB 库函数回调
        EA = 1; //总中断允许位打开
        while (1);
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 5 天前 | 显示全部楼层
姚爷的入门课程毕业。
继续冲爷的连载课程。
第二集。
硬件环境准备全靠试验箱。
试验箱的板子很大,内容足够丰富,
入门实验所需的东西想要的不想要的全都有,只多不少。
连BNC插座都有,真是开天辟地。

软件环境准备
在之前姚爷的入门课里面已经做过了
安装 C251,  安装aiapp-isp,导入库文件,安中断插件。
冲爷开课时版本还是6.94,现在已经6.95了。

资料就靠
试验箱代码包,试验箱手册。

还有
最新《单片机原理及应用@Ai8051U》,电子版教材
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf
这个,幼儿园保姆式的详细教材

烧跑马灯hex进去, 接usb线,按住p32重启板子就进入下载模式。 频率选择要看hex的源码里面指定的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 5 天前 | 显示全部楼层
第三集
点亮第一颗LED

#include “ai8051u.h"

void main(void){
while(1){
}
}
简单粗暴

有一点麻烦是 教材更新了。

冲爷用的是这个。


我下载来的已经改版了。
老师说,现在请大家翻开教材第99页,看第二张图。
我举手说老师我这书第99页没有图,全是字。




截图202506241657595367.jpg
截图202506241658581587.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-06-29 00:35:48

741

主题

1万

回帖

1万

积分

管理员

积分
17188
发表于 5 天前 | 显示全部楼层
永远用 最新版本软件 学习,使用上强大的 AiCube 来学习
截图202506241854135188.jpg

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


截图202506241857375491.jpg
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-06-29 00:35:48

741

主题

1万

回帖

1万

积分

管理员

积分
17188
发表于 5 天前 | 显示全部楼层
截图202506241902089735.jpg


截图202506241903041624.jpg

截图202506241903476717.jpg


#include <AI8051U.H>                //包含AI8051U的头文件

void main(void)
{
    EAXFR = 1;                      //允许访问扩展的特殊寄存器,XFR
                                    //(32位模式请使用这句,注释下一句)
//  P_SW2 |= 0x80;                  //允许访问扩展的特殊寄存器,XFR
                                    //(8位模式请使用这句,注释上一句)。
    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口为准双向口模式
                                    //上面的将所有I/O口都初始化为准双向口工作模式的程序,
                                    //可以使用AIapp-ISP软件的“I/O口配置工具”来生成。
    P40 = 0;                        //打开LED部分的供电
    while(1)
    {                               //LED点亮部分
        P0 = 0;                     //对P0端口置0,点亮整组LED
//      P00 = 0;                   //对单个端口置0,点亮单个LED,这个点亮的是LED00
//      P01 = 0;                   //对单个端口置0,点亮单个LED,这个点亮的是LED01
    }
}


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 5 天前 | 显示全部楼层
感谢管大帮忙补充。
之前点灯的不小心发出去又不小心重复编辑了,没弄完。
点灯实验就是把IO口电位拉低,点亮led。
主要是学习设置IO口工作模式。
用PxM0 与 PxM1 组合来控制。
0  , 0  是准双向
1  , 0  推完输出
0  , 1  高阻输入
1  , 1  开漏
课程里是设置成准双向。 然后拉低。
逐个拉低就是跑马灯。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 5 天前 | 显示全部楼层
第4集 usb 不停电下载

这个功能是要加载 usb lib, 并且在程序里初始化usb, 才能使用。
逻辑肯定是通顺的, 毕竟不使用USB的也没必要用它下载了。
实验需要加载 USB 库函数,
在这里下载。
这步已经在 姚爷的入门课 printf_usb里面做过了。
程序里必须得有
#include "ai_usb.h"

usb_init();

冲爷还在用 stc32_stc8_usb.h
我们已经开始用 ai_usb.h了。
就不需要再自己定义  USER_DEVICEDESC,USER_PRODUCTDESC,USER_STCISPCMD 这几个了。


然后在aiapp_isp 里面设置
截图202506242045002688.jpg

截图202506242047086035.jpg

USB-CDC 和 USB-HID 按实际使用的选择。

编译器重新编译后,自动下载这个功能我估计我用不上。
我习惯随时编译拿编译器当错误提示器, 并不需要每次都下载
所以还是真的需要 【每次手动点击下载时,都自动装载目标文件】适合学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 4 天前 | 显示全部楼层
第5集
C语言基础

#define 好认的名字  实际的名字
冲爷用的是 stc32的样例。  define printf printf_hid
大家现在用printf_usb了。
printf("string:%s decimal:%d, "zifuchuang", 8888);
数字格式  0x 是16位 ,10位的是正常数字, 1位的只有 0和1
32位桌面系统默认整型是32位长度,但是MCU这里还保持着50年前的传统用16位整型, 32位的是long, 用64位数据需要加 #pragma float64
运算符里面 % 不是太常用,求余。
等于不等于大于小于的运算符不会有人用错。
与或非也不会出问题
左移<<  右移 >> & ^ 这些位操作用的少,不熟练,容易出错。
条件运算符用的不多,但是好像倒是不容易混淆。 bit _b_result = (num0 > num1)? 1:0
-> 这是C最帅的符号
& 取地址     
* 是指针

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 4 天前 | 显示全部楼层
第6集 IO输入输出

GPIO 4种状态
准双向, 灌电流大, 拉电流小。 灌电流就是倒灌电流 吸收电流。 拉电流就是流出电流
推挽
高阻
开漏 , 应该只能用来低电平吸收电流用

大约低于1V的是低电平, 1V以上都是高电平

P40 =0;   //试验箱的P0灯的上端控制在 P40,需要先设置

if(0== P32){
P00=0;
}else{
P00==1;
}

后面是按键防抖。 软件防抖延时20ms再检测。  

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-29 12:23:16
已绑定手机

1

主题

24

回帖

89

积分

注册会员

积分
89
发表于 4 天前 | 显示全部楼层
第7集 定时器中断

截图202506251351016726.jpg

用isp工具给带的定时器代码生成器。

截图202506251354131605.jpg

使能定时器中断就给出中断回调函数模板

中文0xfFD问题, 遇到带0xfd的汉字,需要给他后面再加一个0xfd。

TL 和 TH 是定时器初始值
TF 是溢出中断标志
TR 是定时器是否工作, TR0=1 就是工作, TR0=0 就停下
ET 是中断使能

多个定时器就多个中断响应函数, 每个定时器有自己的响应函数
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-29 15:46 , Processed in 0.210373 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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