[PIC®/AVR®/dsPIC®产品] PIC18F16Q41单片机使用按键控制LED闪烁频率示例

[复制链接]
 楼主| gaoyang9992006 发表于 2021-9-17 19:50 | 显示全部楼层 |阅读模式
思路:
设置一个IO为带弱上拉的输入模式,用于实现按键功能
设置一个IO为输出模式,用于驱动LED开关状态;
在主循环函数进行LED闪烁操作,即翻转后执行一个带传入参数的延时函数;
然后执行按键扫描程序,当按键被按下,按键函数修改延时函数的参数。
通过MCC创建工程,按键和LED的端口配置如下所示:

点击Generate生产工程代码,然后完善main.c文件如下:

  1. #include "mcc_generated_files/mcc.h"

  2. void get_button(int *i)
  3. {
  4.     __delay_ms(5);
  5.     if(BUTTON_GetValue()==0)
  6.     {
  7.         while(BUTTON_GetValue()==0);
  8.         (*i)--;
  9.         if(*i<=0) *i=10;
  10.     }
  11. }

  12. void main(void)
  13. {
  14.     int t=10;
  15.     int i=0;
  16.     SYSTEM_Initialize();

  17.     while (1)
  18.     {
  19.         LED_Toggle();
  20.         get_button(&t);
  21.         for(i=0;i<t;i++)
  22.             __delay_ms(50);        
  23.     }
  24. }
编译,烧录,LED刚开始以1Hz闪烁,每按一下快一点,当最快到10Hz时候,再按下就回到了1Hz的频率。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2021-9-17 22:14 | 显示全部楼层
本帖最后由 gaoyang9992006 于 2021-9-17 22:27 编辑

https://www.bilibili.com/video/BV1zb4y1y7ZG/
视频地址工程文件





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
小明的同学 发表于 2021-9-21 23:24 | 显示全部楼层
上拉电阻用外部的应该也是可以的吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2045

主题

16350

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部