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

跟着冲哥学单片机

[复制链接]

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-8-23 09:29:46 | 显示全部楼层
本帖最后由 williamj 于 2023-8-23 09:55 编辑

函数使用:
模块化编程中函数使用有3步:
第一:定义
返回值 函数名称(入口参数)//没有返回值就是 void;函数名称避免关键词和特殊字符;入口参数:类型+名称,多个用","分开,空的话就写“void”
{
    函数执行的功能
}
第二: 声明
返回值 函数名称(入口参数);
第三: 函数调用
函数名称(入口参数);
//////////////////////////
新建XXX.c和xxx.h文件,代表一个功能模块。
xxx.h格式:
#ifndef_xxx_H
#define _xxx_H
调用头文件
函数声明...
#endif

xxx.c格式
#include“xxx.h”
函数定义

添加文件一定要记得引用路径和添加到工程里
回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-8-24 13:44:50 | 显示全部楼层
本帖最后由 williamj 于 2023-8-24 15:10 编辑

按键:
延时判断,delay_ms;
do...while
while() {}//没有大括号后面要有“;”
还有大小写,英文状态下写代码。
调试过程中需要细心和耐心去观察和分析现象,找到原因修改测试。
#define key1  P33
  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[8]= {0xFE,0XFE,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F };
                                    while(key1 == 0){}
                                        P2=LED_DataTab[num];delay_ms(500);
                                        num++;
                                        if(num>=8) num=0;
//采用标志符号  ,状态判断  实现蜂鸣器和模式状态
至此实现了单片机的初步入门,学习了IO控制, 输入(按键)和输出(LED);
delay_ms(500);可以实现简单的延时,但会影响按键啊灵敏度,是因为占用了CPU的资源,以后用其他是方式实现。




回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-8-24 15:07:18 | 显示全部楼层
数码管的学习
数码管就是多个LED“同时”点亮,
采用之前学习的数组的方式很容易就可以实现,有些细节后期再完善
回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-9-3 10:18:09 | 显示全部楼层
本帖最后由 williamj 于 2023-9-3 10:26 编辑

数码管就是不同的LED“同时”点亮 ,给人视觉上是同时的,有些时间延迟导致延迟的现象。
后面的定时器的应用对此是非常容易的解决办法。
另外配置工具也挺方便使用
截图202309031026137047.jpg

回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-9-3 10:29:19 | 显示全部楼层
分步运行,
归纳总结
动作分解,集合,再优化
不要想一步就实现了,弄得不知道怎么下手
回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-9-3 10:30:46 | 显示全部楼层
本帖最后由 williamj 于 2023-9-3 10:36 编辑

定时器:
加法计数器,达到一定数就溢出,中断
分频:类似于大小齿轮的联动
寄存器配置设定外设的工作模式状态

截图202309031036371590.jpg

回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-9-8 08:03:01 | 显示全部楼层
收到了原厂赠送的工具箱,可以更好的跟冲哥边学习边测试了

1694131229848.png

回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-9-27 18:36:53 | 显示全部楼层
数码管表格公式辅助工具

截图202309271834479979.jpg

截图202309271836445075.jpg

SMG.xlsx

13.99 KB, 下载次数: 109

回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-10-9 17:32:26 | 显示全部楼层
多任务处理:状态机
回复 支持 反对

使用道具 举报 送花

1

主题

23

回帖

137

积分

注册会员

积分
137
发表于 2023-10-10 08:09:14 | 显示全部楼层
编程重点是理清程序的逻辑思路

分析逻辑,实现要实现的功能
规范化编程
截图202310100807592253.jpg

截图202310100809068761.jpg

截图202310100805042472.jpg
截图202310100805256145.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 01:21 , Processed in 0.117454 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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