函数使用:
模块化编程中函数使用有3步:
第一:定义
返回值 函数名称(入口参数)//没有返回值就是 void;函数名称避免关键词和特殊字符;入口参数:类型+名称,多个用","分开,空的话就写“void”
{
函数执行的功能
}
第二: 声明
返回值 函数名称(入口参数);
第三: 函数调用
函数名称(入口参数);
//////////////////////////
新建XXX.c和xxx.h文件,代表一个功能模块。
xxx.h格式:
#ifndef_xxx_H
#define _xxx_H
调用头文件
函数声明...
#endif
xxx.c格式
#include“xxx.h”
函数定义
添加文件一定要记得引用路径和添加到工程里
本帖最后由 williamj 于 2023-8-24 15:10 编辑
按键:
延时判断,delay_ms;
do...while
while() {}//没有大括号后面要有“;”
还有大小写,英文状态下写代码。
调试过程中需要细心和耐心去观察和分析现象,找到原因修改测试。
#define key1P33
if (key1 == 0)
{
delay_ms(10);
{
if(key1 == 0 )
{
printf("P33按键按下\n");
// sosled();
// P22=!P22;
P2=((P2<<1)+1);
if(P2==0xFF)
P2=0xFE;
while(key1 == 0){}
}
}
}
数组的使用:
1,定义
类型 名称[长度]={数值}
2,使用
赋值: 名称[索引]=数值
u8 num=0;
u8 LED_Data = 0xFE;
u8 LED_DataTab= {0xFE,0XFE,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F };
while(key1 == 0){}
P2=LED_DataTab;delay_ms(500);
num++;
if(num>=8) num=0;
//采用标志符号,状态判断实现蜂鸣器和模式状态
至此实现了单片机的初步入门,学习了IO控制, 输入(按键)和输出(LED);
delay_ms(500);可以实现简单的延时,但会影响按键啊灵敏度,是因为占用了CPU的资源,以后用其他是方式实现。
数码管的学习
数码管就是多个LED“同时”点亮,
采用之前学习的数组的方式很容易就可以实现,有些细节后期再完善 本帖最后由 williamj 于 2023-9-3 10:26 编辑
数码管就是不同的LED“同时”点亮 ,给人视觉上是同时的,有些时间延迟导致延迟的现象。
后面的定时器的应用对此是非常容易的解决办法。
另外配置工具也挺方便使用
分步运行,
归纳总结
动作分解,集合,再优化
不要想一步就实现了,弄得不知道怎么下手 本帖最后由 williamj 于 2023-9-3 10:36 编辑
定时器:
加法计数器,达到一定数就溢出,中断
分频:类似于大小齿轮的联动
寄存器配置设定外设的工作模式状态
收到了原厂赠送的工具箱,可以更好的跟冲哥边学习边测试了{:lol:}
数码管表格公式辅助工具
多任务处理:状态机 编程重点是理清程序的逻辑思路
分析逻辑,实现要实现的功能
规范化编程
页:
1
[2]