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

冲哥《Ai8051U教学视频》学习感悟-打卡

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-12-12 00:01:32
已绑定手机

1

主题

11

回帖

284

积分

中级会员

积分
284
发表于 2025-11-8 17:25:43 | 显示全部楼层
第七课,定时器中断

MCU单核,同一时间只能 执行一个事情,没有特殊情况下不能被打断
。所以引入特殊情况,定时器中断。
定时器作用:
1、用于计时系统,可实现软件计时,或乾使用程序每隔一固定时间完成一项操作。
2、替代找时间 的Delay,提高速度 。
生成3秒定时:
void Timer0_Isr(void) interrupt 1  //引入中断
{
}

void Timer0_Init(void)                //3秒@24.000MHz
{
        TM0PS = 0x5B;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0x7F;                        //定时器时钟12T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0x3F;                                //设置定时初始值
        TH0 = 0x01;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
}
3、函数的定义、声明、调用
返回值 函数名(入口参数)

//函数体
//函数执行的代码
Return 返回值
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-12-12 00:01:32
已绑定手机

1

主题

11

回帖

284

积分

中级会员

积分
284
发表于 2025-11-10 14:51:33 | 显示全部楼层
芯*** 发表于 2025-11-5 09:29
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接

不停电下载-演示视频
1、直接输出,Hello World
代码:

while (1)
        {
                printf_usb("Hello World !\r\n");
                //  \r是回车,并跳到行首,\n是换行,就是换到下一行;\r\n不要交换次序
        }
_cgi-bin_mmwebwx-bin_webwxgetmsgimg__&MsgID=4848417599638110423&skey=@crypt_5c78.jpg
2、查询方式
代码

  while (1)
    {
        if (bUsbOutReady)               //查询是否有接收到数据
        {
                        if (UsbOutBuffer[0] == 6)
                                printf_usb("Hello World !\r\n");
                        else if (UsbOutBuffer[0] == 7)
                                printf_usb("China !\r\n");
            usb_OUT_done();             //当前包的数据处理完成
        }
    }
}
截图202511101432513412.jpg 输入6,hello world,输入7,China.


3、中断方式

void USBLIB_OUT_Callback(void)
{
    if (UsbOutBuffer[0] == 6)
        printf_usb("Hello World !\r\n");        //接收到数据6后打印“Hello World !”
    else if (UsbOutBuffer[0] == 7)
        printf_usb("China !\r\n");                //接收到数据7后打印“China !”
}

截图202511101449457580.jpg


回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-12-12 00:01:32
已绑定手机

1

主题

11

回帖

284

积分

中级会员

积分
284
发表于 2025-11-13 10:31:54 | 显示全部楼层
今天收到了陆娟小姐安排的实验箱,感谢!
WechatIMG16449.jpg
这是上次兑换的IC
WechatIMG796.jpg

实验箱

实验箱
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-12-12 00:01:32
已绑定手机

1

主题

11

回帖

284

积分

中级会员

积分
284
发表于 2025-11-13 21:23:37 | 显示全部楼层

第八课,定时器周期性调度任务(产品化专业化)

1、创建程序文件 三步,把硬件需要的初始化弄一个config.c

新建文件并保存

添加到工程

添加引用路径

一般一个.c和一个.h文件 执行一个外设或者一个任务或功能,这样可以让代码看起来简洁明了。

新建xxx.c和xxx.h文件(不要用特殊字符) ,代表一个功能块

xxx.h格式

#ifndef __XXX _H

#define _XXX _H

调用头文件

函数声明

#endif

xxx.c格式

#include "xxx.h"

函数定义

添加 文件 一定要记得引用路径和添加到工程里。

2、结构体数组的周期性任务调度

LED1 0.3闪一次,LED2 0.6秒闪一次,LED3 0.9秒闪一次

a、都 有一个定时器1ms加的变量

b、都 有一个设定的计数目标

c、都 有需要执行的功能

d、定时时间到了才能执行

tyedef struct

{

u8 Run;

u16 TIMCount;

u16 TRITime;

void(*TaskHook)(void);//

}TASK_COMPONENTS;

TASK_COMPONENTS Task_comps[] =

{

};

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-12-12 00:01:32
已绑定手机

1

主题

11

回帖

284

积分

中级会员

积分
284
发表于 2025-11-16 18:46:29 | 显示全部楼层
第九课数码管
1、原理
https://www.stcaimcu.com/forum.php?mod=attachment&aid=MTIxMzEyfDM0MTM2NThlfDE3NjU2MjIxNTV8MHw%3D
2、代码
https://www.stcaimcu.com/forum.php?mod=attachment&aid=MTIxMzEzfGJkMDNkZDZjfDE3NjU2MjIxNTV8MHw%3D
3、虚拟显示
https://www.stcaimcu.com/forum.php?mod=attachment&aid=MTIxMzE0fDcyZDEwZTM2fDE3NjU2MjIxNTV8MHw%3D
截图202511161845398194.jpg
截图202511161845563910.jpg
截图202511161846192641.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-13 18:35 , Processed in 0.106217 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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