srkxrolz 发表于 前天 01:30

打卡
第三课创建工程
打开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 开漏输出

srkxrolz 发表于 前天 01:32

打卡
第四课: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();
                }
        }
}

禁止发言 发表于 前天 07:26

{:4_165:}

fs_ajin 发表于 前天 09:14

学习

fs_ajin 发表于 前天 09:14

学习

dcc20250218 发表于 前天 09:39

每天进步一点点。

red枫叶 发表于 前天 14:43

努力学习

heceer 发表于 前天 16:35

大力支持!!!

srkxrolz 发表于 昨天 01:38

打卡
第五课 C语言基础语法 运算符略

srkxrolz 发表于 昨天 01:41

打卡
第六课 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
其他电器限制如下图:


P0M0与P0M1一起决定gpio的4种工作模式
M0=0M1=0    弱上拉
M0=1M1=0    推挽输出
M0=0M1=1    高阻态
M0=1M1=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);
            }
      }
    }
}
页: 153 154 155 156 157 158 159 160 161 162 [163] 164
查看完整版本: 《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套