zfx168 发表于 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 返回值

zfx168 发表于 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不要交换次序
        }

2、查询方式
代码

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


3、中断方式

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




zfx168 发表于 2025-11-13 10:31:54

今天收到了陆娟小姐安排的实验箱,感谢!

这是上次兑换的IC

zfx168 发表于 2025-11-13 21:23:37

<p>第八课,定时器周期性调度任务(产品化专业化)</p>
<p>1、创建程序文件 三步,把硬件需要的初始化弄一个config.c</p>
<p>新建文件并保存</p>
<p>添加到工程</p>
<p>添加引用路径</p>
<p>一般一个.c和一个.h文件 执行一个外设或者一个任务或功能,这样可以让代码看起来简洁明了。</p>
<p>新建xxx.c和xxx.h文件(不要用特殊字符) ,代表一个功能块</p>
<p>xxx.h格式</p>
<p>#ifndef__XXX _H</p>
<p>#define _XXX _H</p>
<p>调用头文件</p>
<p>函数声明</p>
<p>#endif</p>
<p>xxx.c格式</p>
<p>#include &quot;xxx.h&quot;</p>
<p>函数定义</p>
<p>添加 文件 一定要记得引用路径和添加到工程里。</p>
<p>2、结构体数组的周期性任务调度</p>
<p>LED1 0.3闪一次,LED2 0.6秒闪一次,LED3 0.9秒闪一次</p>
<p>a、都 有一个定时器1ms加的变量</p>
<p>b、都 有一个设定的计数目标</p>
<p>c、都 有需要执行的功能</p>
<p>d、定时时间到了才能执行</p>
<p>tyedef struct</p>
<p>{</p>
<p>u8 Run;</p>
<p>u16 TIMCount;</p>
<p>u16 TRITime;</p>
<p>void(*TaskHook)(void);//</p>
<p>}TASK_COMPONENTS;</p>
<p>TASK_COMPONENTS Task_comps[] =</p>
<p>{</p>
<p>};</p>

zfx168 发表于 2025-11-16 18:46:29

第九课数码管
1、原理
attach://121312.jpg
2、代码
attach://121313.jpg
3、虚拟显示
attach://121314.jpg
页: 1 [2]
查看完整版本: 冲哥《Ai8051U教学视频》学习感悟-打卡