注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
强仔00001的个人空间 https://home.eeworld.com.cn/space-uid-525008.html [收藏] [复制] [分享] [RSS]
日志

【R7F0C809】按键功能

已有 963 次阅读2015-10-17 00:36 |个人分类:我的分享

上一次用到引脚外部中断实现按键的功能,在R7F0C809专门有个按键中断的功能,从手册中可以知道3个寄存器控制。分别是:
键返回控制寄存器 ( KRCTL
键返回模式寄存器 ( KRM0
键返回标志寄存器 ( KRF
我们可以设置这三个寄存器就可以实现按键的功能。
KRCTL只有最低位和最高位配置,如上图,可以通过这两位组成4种功能。
这个寄存器就是设置是否检测键中断信号的。
上图就是键返回标志的寄存器,如果按键一旦按下,对应的KRFn就会置一,这个需要手动用软件清除。
以下就是按键中断功能的示意图:
今天就利用了P1.1的按键功能,P1.1是按键4,所以我们要配置按键4,但奇怪的是我已经开了按键中断,结果还是进不了INTKR中断。不知道大家也是不是这种情况。
源代码:
  1. void Port_Init()
  2. {
  3.        
  4.         KRCTL = 0x80; //Æô¶ˉ¼üÖD¶Ï±êÖ¾
  5.         KRM0 = 0x10;  //Æô¶ˉ¼ì2a¼üÖD¶ÏDÅoÅ
  6.         KRF = 0x00;        //Çå3yÖD¶ÏDÅoÅ
  7.         KRPR0 = 1;      //éèÖÃÖD¶ÏóÅÏ輶
  8.         KRPR1 = 1;
  9.        
  10.         KRIF = 0;        //Çå3y¼üÖD¶Ï±ê־λ
  11.         KRMK = 1;       //¿aÆô¼üÖD¶Ï
  12.        


  13. }
  14. uint8_t Value = 0;


  15. /******************************************************************************
  16. * Function Name: main
  17. * Description : This function implements main function.
  18. * Arguments : none
  19. * Return Value : none
  20. ******************************************************************************/
  21. void main(void)
  22. {
  23.     /* Start user code. Do not edit comment generated here */
  24.     inttm00counter = 0U;                  /* Configuration counter of number of TM00 interrupt */
  25.     g_SW_Counter = 0U;                    /* Initialization counter of SW input */
  26.     g_TDR00_WorkH = g_DTR000_DataH[0U];   /* Set initial interval */
  27.     g_TDR00_WorkL = g_DTR000_DataL[0U];

  28.     //R_INTC0_Start();                      /* Enable INTP0 interrupt */
  29.     //R_TAU0_Channel0_Start();              /* Start TAU0 channel 0 counter */
  30.         Port_Init();
  31.     /* Wait interrupt */
  32.     while (1U)
  33.     {
  34.         //HALT();
  35.         /**/
  36.         //Value = ;Value
  37.             if( (KRF & 0x10) >> 4 )
  38.         {
  39.                 P0 ^= 0b00000010U;
  40.                 while(P1.1 == 0);
  41.                 KRF = 0x00;
  42.         }
  43.        
  44.     }
  45.     /* End user code. Do not edit comment generated here */
  46.    
  47. }
复制代码
醉了,注释居然乱码了
gif效果图:
源代码:





本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章