要 尝试 AiCube 图形化自动配置生成程序工具;
推荐优先看的:
printf_usb("Hello World !\r\n")及
USB不停电下载, 演示视频链接:
https://www.stcaimcu.com/thread-19077-1-1.html
下载 最新的 AiCube-ISP-V6.96T 或以上版本软件 !
深圳国芯人工智能有限公司-工具软件
下载 最新的 USB库函数,永远用最新的 USB库函数 !
深圳国芯人工智能有限公司-库函数
下载 最新的 用户手册 !
下载 最新的 上机实践指导书 !
下载 最新的 Ai8051U 用户手册
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf
下载 最新的 Ai8051U 实验指导书,
有 AiCube 图形化自动配置生成程序工具使用说明
https://www.stcaimcu.com/data/do ... %AF%BC%E4%B9%A6.pdf
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接
https://v.stcai.com/sv/1c5eec2-197fcd9b766/1c5eec2-197fcd9b766.mp4
https://v.stcai.com/sv/1fce8086-197cf2b9dd4/1fce8086-197cf2b9dd4.mp4
今天来学习第七课:定时器中断
这节课对我来讲是最难的一课,记得上次学习冲哥的《STC32位8051单片机原理及应用》时就卡在这里了。这次好好来学习一下。
1、定时器的前言简介:这里用一个故事来侧面介绍为什么要加入定时器这个功能
2、定时器的摘要
A.定时器的介绍
B.定时器的应用
C.函数的定义、声明、调用
3、这里是先示例编辑一个无定时器代码
4、演示这个代码有多任务运行时会出现的问题,按键不准,卡顿等问题出现
5、关于定时器的介绍
6、关于定时器的应用,并实现任务1
7、首先用ISP工具生成一个定时器代码
8、定时器代码生成过程,需要按图中进行设置
9、复制定时器代码,粘贴到KEIL中
10、在KEIL中写入定时器初始化代码
11、粘贴定时器中断函数代码
12、按键代码部分编写
13、下面用实验来验证任务一代码,成功
14、关于KEIL软件中0XFD的问题的说明
15、关于KEIL软件中0XFD的问题解决办法,就是在“数”等文字后面加“XFD”即可
16、定时器的知识点介绍:8位预分频寄存器
17、定时器的知识点介绍:辅助寄存器
18、定时器的知识点介绍:模式寄存器1
19、定时器的知识点介绍:模式寄存器2
20、定时器的知识点介绍:16位重装载模式
21、定时器的知识点介绍:中断请求寄存器
22、定时器的知识点介绍:定时计算公式
23、函数的声明、定义和调用格式介绍1
24、函数的声明、定义和调用格式介绍2
25、任务2:按键后灯亮3秒后熄灭
25、任务2:按键后灯亮3秒后熄灭,代码部分
26、任务2:按键后灯亮3秒后熄灭,实验结果成功
27、任务3:救护车灯控制器,按下报警按钮,红蓝交替闪烁(LED1和LED2 表示红和蓝灯),再按一下报警按钮,红蓝灯停止
总结:这节课主要引入定时器中断函数,实际代码应用中由于多任务时系统出现问题,需要中断函数来解决。故这节课主要讲了中断函数的参数设置及用法。
学完了定时器这一课,疑问骤然而生:
/*----任务3:救护车灯控制器,按下报警按钮,红蓝交替闪烁(LED1和LED2表示红和蓝灯),再按一下报警按钮,红蓝灯停止------*/
#if 1
if(P32==0)
{
Delay20ms();
if(P32==0)
{
RUN_state=!RUN_state;
if(RUN_state==1) //如果状态为1,运行状态
{
Timer0_Init(); //定时器初始化,并开始计时
}
else
{
TR0=0; //定时器0停止计时。
P00=1;
P01=1;
}
while(P32==0);
}
}
#endif
}
}
void Timer0_Isr(void) interrupt 1 //0.5秒执行一次
{
P00=state;
P01=!state;
state=!state;
}
在这段代码中,这里有个疑问,TR0=0定时器停止计时后,再按P32为什么定时器仍然能初始化并开始计时。而不需要先把TR0改成1。苦于手中没有实验箱,也无法进一步验证实验的准确性。
第七课已经学完,希望论坛能早点送一个AI8051实验箱,纸上谈兵终觉浅,验证还需实验箱!
再次感谢国芯论坛各位大佬管理员们,感谢AI8051U厂家,感谢冲哥! 下面来学习一下“”USB不停电下载“的第二个实验:查询方式,查询到电脑命令后printf_usb("Hello World !\r\n")及其它
1、首先第一步,同实验一,依然是下载最新STC-ISP下载程序,然后选择”添加型号和头文件到KEIL“中
2、在ISP软件顶部,打开AICUBE功能
3、点击左上角,新建
4、在弹出窗口中进行文件名和路径等设置
5、设置完确定后弹出项目配置窗口
5、图形时钟设置,可以默认
6、USB串行总线配置
7、配置完成,点击顶部图标打开KEIL进行代码编写
8、再回到ISP工具中,选择范例程序
9、在范例程序中截取关键部分代码,并复制
10、代码粘贴到KEIL程序代码中
11、保存并编译完代码,准备下载
12、接收实验1,成功
13、接收实验2,成功
至此,任务二之查询方式打印实例,学习完毕!
下面来学习一下“”USB不停电下载“的第三个实验:中断方式,单片机接收到中断函数命令后printf_usb("Hello World !\r\n")及其它
1、打开AICUBE
2、新建一个文件
3、按图进行文件名等设置
4、设置好文件名,确定弹出配置窗口,按下图进行参数配置
5、配置完后开始从ISP工具软件复制代码,选择代码出现位置
6、选择性代码复制
7、在KEIL中粘贴关键代码
8、编译好代码准备下载到单片机
9、中断模式,实验一:成功
9、中断模式,实验二:成功
至此,USB不停电的3个小节已经全部学习完毕! 今天来学习第八课,感觉这节课的干货不少,知识点非常丰富。难怪总时长都快一个半小时了。学这节课也没有一次学完,断续花了2天的空闲时间。但是还是在最后一个知识点这里被难住了,周期性任务调度。多学几遍,才能顺利掌握。
1、周期性任务的摘要
2、通过任务一介绍周期性任务的一种解决办法
3、任务一的第一种办法实现代码
4、第一种方法测试视频
5、任务一引入数组概念
6、数组概念代码
7、周期性任务二,实现流水灯
8、任务二程序代码
9、任务二实验视频展示
10、周期性任务三,实验按键移动灯
11、周期性任务三代码实现
12、任务三程序实验视频展示
13、.C和.H文件的创建
13-1、创建步骤1
13-2、创建步骤2
13-3、创建步骤3
13-4、创建步骤4
13-5、创建步骤5
13-6、创建步骤6
14、结构体数组的周期性任务调度(重难点来了)
14-1、结构体数组代码方法
14-2、代码下载
14-3、实验验证:成功!
至此,第八课学完。
页:
1
[2]