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

AI8051U重温8051之学习打卡

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

积分
18316
发表于 2025-7-12 16:40:48 | 显示全部楼层
没看到楼主自己用 擎天柱-AI8051U 做 USB不停电下载的 视频啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-07-29 07:24:22
已绑定手机

2

主题

16

回帖

98

积分

注册会员

积分
98
发表于 2025-7-18 13:07:48 | 显示全部楼层
今天学习将拿到的擎天柱板子来学习,首先拿出老古董51单片机开发箱,
并将擎天柱板子替换原来的89C52RC这个芯片,做几个实验拍几个视频大家相互学习。
IMG_20250718_125712.jpg IMG_20250718_125659.jpg
原来51开发箱
安装了擎天柱的板子,刚好可以替换上,运行正常。
IMG_20250718_125815.jpg IMG_20250718_125838.jpg
,再上个视频

IMG_20250718_125729.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-07-29 07:24:22
已绑定手机

2

主题

16

回帖

98

积分

注册会员

积分
98
发表于 2025-7-18 16:35:01 | 显示全部楼层
神*** 发表于 2025-7-12 16:40
没看到楼主自己用 擎天柱-AI8051U 做 USB不停电下载的 视频啊

使用擎天柱核心板做不停电设置下载的简单过程,还有下载了内置USB直接仿真流水灯点灯过程的亮灯视频,一起发上来,拍的不是很专业不停电下载程序再不停电下载后程序自动运行,很方便。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-07-29 07:24:22
已绑定手机

2

主题

16

回帖

98

积分

注册会员

积分
98
发表于 2025-7-22 00:16:56 | 显示全部楼层
继续学习和实验中,今天学习I/O口的输入输出,使用擎天柱核心板来实现,同时学习冲哥的第六集视频, IO.jpg 22.jpg ,实验程序使用擎天柱专区的代码来测试IO口 3.jpg ,USB不断电下载 4.jpg ,测试实验正常,对IO口输入输入的使用有了更新的认识,下次试验箱到了再做冲哥的实验例程,加油继续。[apoyl_multivideo]


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-07-29 07:24:22
已绑定手机

2

主题

16

回帖

98

积分

注册会员

积分
98
发表于 2025-7-22 01:03:42 | 显示全部楼层
使用擎天柱核心转化版学习定时器的使用。

需要擎天柱核心板的可以到以下去免费领取:擎天柱Ai8051U转89C52核心功能实验板, 更多的官方安排的 配套测试代码:
https://www.stcaimcu.com/forum.p ... id=12839&pid=130776

继续学习, QTZ1.jpg QTZ2.jpg 定时器5.jpg 继续跟着冲哥做实验 定时器6.jpg 定时器1.jpg 定时器2.jpg 定时器3.jpg 定时器4.jpg 视频学习实验同步练习中,定时器的使用更加熟悉了,上视频大家一起来学。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-07-29 07:24:22
已绑定手机

2

主题

16

回帖

98

积分

注册会员

积分
98
发表于 2025-7-22 01:04:51 | 显示全部楼层
定时器实验视频上传中。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-07-29 07:24:22
已绑定手机

2

主题

16

回帖

98

积分

注册会员

积分
98
发表于 2025-7-22 20:11:25 | 显示全部楼层
今天学习定时器周期性调度任务视频,首先讲解到KEIL编译出错的一些问题点和怎么排错,要注意英文大小写,标点符号,括号的成对等问题 定时器周期性调度1.jpg 定时器周期性调度2.jpg 定时器周期性调度3.jpg 定时器周期性调度4.jpg 定时器周期性调度5.jpg 定时器周期性调度6.jpg 定时器周期性调度7.jpg 定时器周期性调度8.jpg 定时器周期性调度9.jpg 定时器周期性调度10.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

积分
18316
发表于 2025-7-22 21:03:05 | 显示全部楼层

这有在 深圳大学,教学改革用的 实验 实战程序
截图202507222101485804.jpg

深圳国芯人工智能有限公司-工具软件
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

积分
18316
发表于 2025-7-22 21:03:40 | 显示全部楼层
#include <AI8051U.H>                        //AI8051U的通用头文件,头文件不分大小写
#include  "ai_usb.h"                        //USB库和USB虚拟设备的头文件
                                                                //由于在USB库函数的代码中已经定义了,不停电ISP下载命令字”@STCISP#”,
                                                                //只需要在下载软件的“收到用户命令后复位到ISP监控程序区”选项卡中进行相应的设置,
                                                                //即可实现USB不停电ISP下载功能,或串口不停电ISP下载功能。

bit t0_flag = 0;                                //定义1个位变量,T0事件位变量标志,记录定时器0已产生中断
// 供主循环查询定时器0是否已产生中断,在主循环中处理定时器0的中断事件任务,不堵塞其他中断
bit t1_flag = 0;                                //定义1个位变量,T1事件位变量标志,记录定时器1已产生中断
// 供主循环查询定时器1是否已产生中断,在主循环中处理定时器1的中断事件任务,不堵塞其他中断

void Timer0_Isr(void) interrupt TMR0_VECTOR                //定时器0中断服务程序
{
        P00 = ~P00;                                        //P00灯闪烁,中断服务程序中尽量少执行长的任务,防止堵塞其他中断
        //以上程序代表部分需特急处理的中断事件,可在中断服务程序中直接处理
        //但时间不要太长,否则会影响其他中断事件的实时响应速度
        t0_flag = 1;                                // t0_flag置1是通知主循环处理部分T0中断事件不需要特急处理的任务
                                                                //置1,记录定时器0已产生中断,供主循环查询判断有无需处理的定时器0任务
}
//定时器0中断服务程序,TMR0_VECTOR在AI8051U.H头文件中已宏定义为1
void Timer0_Init(void)                        //定时器0初始化,2秒@40.000MHz
{
        TM0PS = 0x65;                                //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0x7F;                                //定时器时钟12T模式
        TMOD &= 0xF0;                                //设置定时器模式
        TL0 = 0xB1;                                        //设置定时初始值
        TH0 = 0x00;                                        //设置定时初始值
        TF0 = 0;                                        //清除TF0标志
        TR0 = 1;                                        //定时器0开始计时
        ET0 = 1;                                        //使能定时器0中断
}

void  Timer1_Isr(void)  interrupt  TMR1_VECTOR  
{
        P07 = ~P07;                                        //P07灯闪烁,中断服务程序中尽量少执行长的任务,防止堵塞其他中断
        //以上程序代表部分需特急处理的中断事件,可在中断服务程序中直接处理
        //但时间不要太长,否则会影响其他中断事件的实时响应速度
        t1_flag = 1;                                // t1_flag置1是通知主循环处理部分T1中断事件不需要特急处理的任务
                                                                //置1,记录定时器1已产生中断,供主循环查询判断有无需处理的定时器1任务
}
//定时器1中断服务程序,TMR1_VECTOR在AI8051U.H头文件中已宏定义为3
void Timer1_Init(void)                        //定时器1初始化,500毫秒@40.000MHz
{
        TM1PS = 0x19;                                //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0xBF;                                //定时器时钟12T模式
        TMOD &= 0x0F;                                //设置定时器模式
        TL1 = 0x99;                                        //设置定时初始值
        TH1 = 0x05;                                        //设置定时初始值
        TF1 = 0;                                        //清除TF1标志
        TR1 = 1;                                        //定时器1开始计时
        ET1 = 1;                                        //使能定时器1中断
}

void  sys_init(void)                        //系统初始化
{
        EAXFR = 1;                                        //允许访问扩展的特殊寄存器,XFR
        WTST = 0;                                        //设置取程序代码等待时间,赋值为0表示不等待,程序以最快速度运行
        CKCON = 0;                                        //设置访问片内的xdata速度,赋值为0表示用最快速度访问,不增加额外的等待时间

        P0M0 = 0x00; P0M1 = 0x00;         //设置 P0 口为准双向口模式
        P1M0 = 0x00; P1M1 = 0x00;         //设置 P1 口为准双向口模式
        P2M0 = 0x00; P2M1 = 0x00;         //设置 P2 口为准双向口模式
        P3M0 = 0x00; P3M1 = 0x00;         //设置 P3 口为准双向口模式
        P4M0 = 0x00; P4M1 = 0x00;         //设置 P4 口为准双向口模式
        P5M0 = 0x00; P5M1 = 0x00;         //设置 P5 口为准双向口模式
        P6M0 = 0x00; P6M1 = 0x00;         //设置 P6 口为准双向口模式
        P7M0 = 0x00; P7M1 = 0x00;         //设置 P7 口为准双向口模式
}

void  main(void)
{
        sys_init();                                        //调用系统初始化函数
        usb_init();                                        //调用USB初始化函数,不需要立即判断电脑已正确识别到USB从设备
        /* USB型单片机从设备,如需要主动向电脑发送数据,
        在执行USB_SendData( )函数和printf_usb( )函数时,
        这两个函数已增加了判断电脑是否已正确识别到USB从设备的程序。
        如果电脑要主动发送数据给USB从设备,电脑自己会主动判断与USB从设备是否已正确连接。
        */
        EA = 1;                                                //总中断允许位打开

        Timer0_Init();                                //调用定时器0初始化函数
        Timer1_Init();                                //调用定时器1初始化函数

        P40 = 0;                                        //给LED灯供电
        while(1)                                          //主循环中查询需要处理的各种事件,如T0/T1中断事件,并打印输出状态
        {
                if(t0_flag)                                //主循环中查询,定时器0是否已产生中断,是否有需要处理的定时器0事件
                {
                        t0_flag = 0;                //清0,T0事件位变量标志
                        printf_usb("Timer0!\r\n");
                                                                //向电脑USB-CDC串口助手输出“Timer0!”字符串,代表主循环在处理T0不急的任务
                }
                if(t1_flag)                                //主循环中查询,定时器1是否已产生中断,是否有需要处理的定时器1事件
                {
                        t1_flag = 0;                //清0,T1事件位变量标志
                        printf_usb("Timer1!\r\n");
                                                                //向电脑USB-CDC串口助手输出“Timer1!”字符串,代表主循环在处理T1不急的任务
                }
        }
}


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-07-29 07:24:22
已绑定手机

2

主题

16

回帖

98

积分

注册会员

积分
98
发表于 2025-7-23 21:53:18 | 显示全部楼层
定时器周期性调度任务学习例程,使用擎天柱核心板实现不断电在线烧录,真实太方便了,运行视频。
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11902
定时器周期性调度11.jpg



回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-1 19:56 , Processed in 2.516331 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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