找回密码
 立即注册
查看: 257|回复: 0

AI8051U学习记录

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-24 21:22:14
已绑定手机

1

主题

2

回帖

15

积分

新手上路

积分
15
发表于 2025-2-25 11:39:52 | 显示全部楼层 |阅读模式
学习心得:Ai8051U单片机实验第一节 Ai8051U简介
在这一节中,我了解了Ai8051U单片机的基本信息和应用场景。Ai8051U支持8位和32位指令集,硬件功能丰富,支持PWM、DMA、硬件浮点运算等,能够应用于多种领域,如音视频处理、频谱分析等。
第二节 实验环境介绍
通过Ai8051U实验箱,配合KeilC251编程环境,我能访问多种硬件资源,包括USB接口、数码管、OLED显示屏、ADC输入等。这一部分让我熟悉了编程环境的配置与硬件连接。
第三节 点亮LED
3.1 实验原理通过设置GPIO端口模式,当P40为低电平时,控制三极管导通,P00为低电平时点亮LED。
3.2 实验代码

#include "ai8051u.h" //引入头文件void main(void) {    P2M1 = 0X00; P2M0 = 0X00; //配置P2端口为准双向模式    //P0M1 = 0X00; P0M0 = 0X00;  //配置P0端口为准双向模式    //P4M1 = 0X00; P4M0 = 0X00;  //配置P4端口为准双向模式    //P40 = 0;  //打开开关三极管    while(1) {        P20 = 0; //低电平输出        //P00 = 0; //点亮LED    }}

3.3 实验结果成功点亮LED,程序能在P2端口输出低电平,LED成功亮起。
第四节 USB不停电下载
4.1 实验原理通过USB进行程序下载而不需要断电,增强调试便捷性。配置USB库文件,设置P_SW2和EA寄存器,使得中断和USB通信功能正常工作。
4.2 实验代码

#include "stc32_stc8_usb.h"#include "ai8051u.h"void usb_Init(void) {    WTST = 0;    EAXFR = 1;    CKCON = 0;    usb_init();  //USB初始化    EA = 1;    while (DeviceState != DEVSTATE_CONFIGURED);  //等待USB配置完成}

4.3 实验结果成功实现通过USB下载程序,并且在不停电状态下调试,USB设备正确识别为CDC接口。
第五节 C语言基础
5.1 printf函数的使用通过使用USB-CDC接口,成功将printf输出重定向到USB,能够实时调试程序。
5.2 实验代码
#define u8 unsigned charvoid main() {    printf("Ai8051U实验开始\r\n");    printf("当前状态: %d\r\n", led_state);}

5.3 实验结果通过printf函数,成功输出调试信息,进一步加深了对printf的使用理解。
第六节 I/O输入输出
6.1 GPIO配置通过配置GPIO口,我能够控制LED和读取按键状态。通过P32、P33判断按键状态,进行对应操作。
6.2 实验代码

void key1_Press(void) {    if (P32 == 0) {  //按键检测        Delay20ms();  //去抖        if (P32 == 0) {            state = !state;            P40 = state;  //切换LED状态            printf("状态: %d\r\n", state);        }        while (P32 == 0);  //等待按键松开    }}

6.3 实验结果按键输入检测成功,能够根据按键状态控制LED并输出状态信息。
第七节 定时器中断
7.1 定时器配置定时器配置使得程序能够定时执行任务,提高了程序的效率,避免了使用延时函数的低效。
7.2 实验代码

void Timer0_Init(void) {    TM0PS = 0x1E;  //设置定时器预分频    AUXR &= 0x7F;  //设置定时器12T模式    TMOD &= 0xF0;  //设置定时器模式    TL0 = 0xFC;    //设置定时初始值    TH0 = 0x03;    //设置定时初始值    TF0 = 0;       //清除定时器溢出标志    TR0 = 1;       //启动定时器    ET0 = 1;       //使能定时器中断    EA = 1;        //使能全局中断}

7.3 实验结果成功实现定时器中断,每1秒钟定时执行任务。

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-30 10:28 , Processed in 0.108787 second(s), 46 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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