[讨论] 【R7F0C809】按键功能

强仔00001   2015-10-17 00:36 楼主
上一次用到引脚外部中断实现按键的功能,在R7F0C809专门有个按键中断的功能,从手册中可以知道3个寄存器控制。分别是:
键返回控制寄存器 ( KRCTL
键返回模式寄存器 ( KRM0
键返回标志寄存器 ( KRF
我们可以设置这三个寄存器就可以实现按键的功能。
QQ截图20151016225902.jpg
KRCTL只有最低位和最高位配置,如上图,可以通过这两位组成4种功能。
QQ截图20151016225919.jpg
这个寄存器就是设置是否检测键中断信号的。
QQ截图20151016225932.jpg
上图就是键返回标志的寄存器,如果按键一旦按下,对应的KRFn就会置一,这个需要手动用软件清除。
以下就是按键中断功能的示意图:
QQ截图20151016225947.jpg QQ截图20151016225957.jpg
今天就利用了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效果图:
VID_20151017_000253.mp4_1445011569.gif
源代码:
Workspace.zip (83.95 KB)
(下载次数: 4, 2015-10-17 00:36 上传)


Workspace.zip (83.95 KB)
(下载次数: 4, 2015-10-17 00:36 上传)



回复评论 (10)

  不懂  帮顶。。。
分享铸就美好未来。。。
点赞  2015-10-17 07:30
不错
觉得键中断是这块片子最有特色的地方
So TM what......?
点赞  2015-10-17 13:08
引用: ljj3166 发表于 2015-10-17 13:08
不错
觉得键中断是这块片子最有特色的地方

不过我打开键中断,实际上没有进入中断,郁闷
点赞  2015-10-17 23:21
引用: 574433742 发表于 2015-10-17 07:30
不懂  帮顶。。。

你谦虚了
点赞  2015-10-17 23:21
不懂  帮顶。。。
点赞  2015-10-20 16:06
引用: 数码小叶 发表于 2015-10-20 16:06
不懂  帮顶。。。

你在装X
点赞  2015-10-21 23:03

真心不懂,太菜了
点赞  2015-10-22 08:12
引用: 数码小叶 发表于 2015-10-22 08:12
真心不懂,太菜了

我看你在其他地方很牛B呀
点赞  2015-10-22 23:09
引用: 强仔00001 发表于 2015-10-22 23:09
我看你在其他地方很牛B呀

你绝对认错人了,瑞萨好难玩
点赞  2015-10-23 10:31
引用: 数码小叶 发表于 2015-10-23 10:31
你绝对认错人了,瑞萨好难玩

认错人了,瑞莎还好吧,不是很难
点赞  2015-10-25 11:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复