Funcpack活动 第7期 基于DM164137的按键和串口实验
使用DM164137实现按键的识别,串口打印按键和电位计信息
标签
嵌入式系统
小芳说
更新2021-04-22
591

本期Funpack活动选用的板卡:

Microchip的8位PIC MCU开发板DM164137,其芯片为PIC16F18446。

本期任务:

通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)

程序流程:

当按键按下时,使用定时器开始计数,松开时判断按下的时间,跳转到不同的按键事件,执行不同的串口打印和LED状态翻转。

部分代码:

#include <xc.h>
#include "mcu.h"
#include "key.h"
#define _XTAL_FREQ 16000000


void __interrupt() Int(void) 
{
    unsigned int temp,cTemp;
    static unsigned int cnt;
    
    if((PIR0bits.TMR0IF == 1)&&(PIE0bits.TMR0IE == 1))
    {
        PIR0bits.TMR0IF = 0;
        if(cnt <500)
            cnt++;
        else
        {
            cnt = 0;// 100毫秒一次
            keyScan();
//            LED4_STATE ^=1;
//            LED5_STATE ^=1;
//            LED6_STATE ^=1;
            //LED7_STATE ^=1;
         }
    }
}


void main(void) 
{
    unsigned char t,buff[10]={0};
    initOSC();
    initIO();
    initAD();
    initUart();
    initTimer0();
    initInterrupt();
    
    while(1)
    {
        t = getAD();
        buff[0] = 'A';
        buff[1] = 'D';
        buff[2] = '=';
        buff[3] = t/100+0x30;
        buff[4] = t%100/10+0x30;
        buff[5] = t%10+0x30;
        buff[6] = '\r';
        buff[7] = '\n';
        putString(buff);
        __delay_ms(500);
        CLRWDT();
    }
    return;
}
附件下载
keyWork.X.zip
程序源码
团队介绍
山东科创工作室
团队成员
小芳说
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号