找回密码
 立即注册
楼主: 电子DIY小家

《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套

   火... [复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-06-28 10:06:21
已绑定手机

1

主题

32

回帖

111

积分

注册会员

积分
111
发表于 2025-6-19 01:30:29 | 显示全部楼层
打卡
第三课创建工程
打开keil-->>project-->>new project-->>选择保存的位置-->>选择STC MCU database-->>AI-->>”AI051U-32bit series”

创建main.c并添加到工程
配置工程:
Cpu mode:c251
内存模式:small
Code Rom尺寸:large 64K
勾选4Byte中断框架尺寸
勾选创建hex文件,并选择HEX-80    如果程序空间大于64k就需要选择HEX-386
在stc-isp中吧头文件放到自己的工程目录中,添加到工程
Main.c
#include "ai8051u.h"

void main(){
        P2M0 = 0x00;   // 设置P2口为通用I/O口
        P2M1 = 0x00;   // 设置P2口为通用I/O口
        P2 = 0x0f;           // 设置P2口初始状态
while(1){}
}

8051u中的端口模式由M0 M1组合设置
p0m0=0; p0m1=0 开漏输出

回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-06-28 10:06:21
已绑定手机

1

主题

32

回帖

111

积分

注册会员

积分
111
发表于 2025-6-19 01:32:13 | 显示全部楼层
打卡
第四课:usb不停电下载
深圳国芯人工智能有限公司-库函数
下载usb库文件

#include "ai8051u.h"
#include "ai_usb.h"

void main()
{
        P_SW2 |= 0x80; // 打开扩展寄存器访问
        P2M0 = 0x00;   // 设置P2口为通用I/O口
        P2M1 = 0x00;   // 设置P2口为通用I/O口
        P2 = 0x0f;           // 设置P2口初始状态
        usb_init();           // 初始化USB
        EA = 1;                   // 允许总中断
        while (1)
        {
                if (bUsbOutReady)  //检查Usb是否准备好
                {
                        USB_SendData(UsbOutBuffer, OutNumber);
                        // printf_usb("1. Read Num:%d\n", OutNumber);
                        // printf_usb("2. Read Num:%d\n", OutNumber);
                        // printf_usb("3. Read Num:%d\n", OutNumber);
                        // printf_usb("4. Read Num:%d\n", OutNumber);

                        usb_OUT_done();
                }
        }
}
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:109
  • 最近打卡:2025-06-27 07:23:42
已绑定手机

0

主题

34

回帖

310

积分

中级会员

积分
310
发表于 2025-6-19 07:26:02 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:63
  • 最近打卡:2025-06-28 08:13:26
已绑定手机

0

主题

58

回帖

182

积分

注册会员

积分
182
发表于 2025-6-19 09:14:32 | 显示全部楼层
学习
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:63
  • 最近打卡:2025-06-28 08:13:26
已绑定手机

0

主题

58

回帖

182

积分

注册会员

积分
182
发表于 2025-6-19 09:14:45 | 显示全部楼层
学习
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-06-27 09:52:45
已绑定手机

1

主题

21

回帖

221

积分

中级会员

积分
221
发表于 2025-6-19 09:39:06 | 显示全部楼层
每天进步一点点。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2025-06-25 08:53:58
已绑定手机

3

主题

26

回帖

151

积分

注册会员

积分
151
发表于 2025-6-19 14:43:39 | 显示全部楼层
努力学习
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-06-19 16:35:51
已绑定手机

0

主题

1

回帖

6

积分

新手上路

积分
6
发表于 2025-6-19 16:35:51 | 显示全部楼层
大力支持!!!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-06-28 10:06:21
已绑定手机

1

主题

32

回帖

111

积分

注册会员

积分
111
发表于 2025-6-20 01:38:15 | 显示全部楼层
打卡
第五课 C语言基础语法 运算符  略
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-06-28 10:06:21
已绑定手机

1

主题

32

回帖

111

积分

注册会员

积分
111
发表于 2025-6-20 01:41:13 | 显示全部楼层
打卡
第六课 gpio
高电平  接近VCC的电压
低电平 接近 GND的电压
接口可以承受的电压位位vcc+0.3V
如果单片机使用5V电压,那么gpio端口可以接受的对打电压就是5+0.3=5.3V
如果VCC是3.0v那么gpio最大就是3+.3=3.3V
所有GPIO在复位后默认都是打开施密特触发器的
例: VCC=3.3V  高电>=1.18v  低电平<=0.99
其他电器限制如下图:
图片1.png

P0M0与P0M1一起决定gpio的4种工作模式
M0=0  M1=0    弱上拉
M0=1  M1=0    推挽输出
M0=0  M1=1    高阻态
M0=1  M1=1    开漏模式
#include "ai8051u.h"
#include "ai_usb.h"
bit p32_status = 0;  // 初始化状态
bit p33_status = 0;  // 初始化状态
void Delay20ms(void) //@40.000MHz
{
    unsigned long edata i;

    _nop_();
    _nop_();
    i = 199998UL;
    while (i)
        i--;
}

void main()
{
    WTST = 0;  // 设置程序指令延时参数
    EAXFR = 1; // 设置EAXFR位为1,允许访问扩展寄存器
    CKCON = 0; // 提高访问xram速度

    P2M0 = 0x00;                                // 设置P2口为通用I/O口
    P2M1 = 0x00;                                // 设置P2口为通用I/O口
    P2 = 0x0f;                                  // 设置P2口初始状态
    usb_init();                                 // 初始化USB
    EA = 1;                                     // 允许总中断
    printf_usb("P32: %d, P33: %d\n", P32, P33); // 打印P32和P33的状态
    while (1)
    {
        if (bUsbOutReady) // 检查Usb是否准备好
        {
            USB_SendData(UsbOutBuffer, OutNumber);
            // printf_usb("1. Read Num:%d\n", OutNumber);
            // printf_usb("2. Read Num:%d\n", OutNumber);
            // printf_usb("3. Read Num:%d\n", OutNumber);
            // printf_usb("4. Read Num:%d\n", OutNumber);

            usb_OUT_done();
        }

        if (P32 == 0)
        {
            Delay20ms(); // 延时20ms
            if (P32 == 0)
            {
                p32_status = !p32_status; // 切换状态
                P20 = p32_status;         // 设置P2.0为高电平
                while (P32 == 0)
                    ;
                printf("P32 pressed, status: %d\n", p32_status);
            }
        }
        if (P33 == 0)
        {
            Delay20ms(); // 延时20ms
            if (P33 == 0)
            {
                p33_status = !p33_status; // 切换状态
                P21 = p33_status;         // 设置P2.0为高电平
                while (P32 == 0)
                    ;
                printf("P33 pressed, status: %d\n", p33_status);
            }
        }
    }
}
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-28 13:18 , Processed in 0.453257 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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