[DemoCode下载] 普通IO中断实现

[复制链接]
209|7
 楼主 | 2019-8-31 23:50 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Website: http://www.nuvoton.com
  8. //  E-Mail : MicroC-8bit@nuvoton.com
  9. //***********************************************************************************************************

  10. //***********************************************************************************************************
  11. //  File Function: ML51 pin interrupt demo code
  12. //***********************************************************************************************************

  13. #include "ML51.h"

  14. /**
  15. * [url=home.php?mod=space&uid=247401]@brief[/url]       Port0~5 Interrupt Subroutine
  16. * @param       None
  17. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  18. * [url=home.php?mod=space&uid=1543424]@Details[/url]     PIF 0~7 declair in GPIO_EnableInt interrupt.
  19. */
  20. void PinInterrupt_ISR (void) interrupt 7
  21. {
  22.     if ((PIF&SET_BIT0)==SET_BIT0)
  23.     {
  24.       PIF&=CLR_BIT0;
  25.       P30 = ~P30;
  26.       printf ("\n PIT0 INT");
  27.     }
  28.     else if ((PIF&SET_BIT3)==SET_BIT3)
  29.     {
  30.       PIF&=CLR_BIT3;
  31.       P30 = ~P30;
  32.       printf ("\n PIT3 INT");
  33.     }
  34. }


  35. void main (void)
  36. {                             
  37. /* Setting Multi function pin setting for GPIO toggle
  38.    * include gipo.c in Library for GPIO mode setting
  39. */
  40.     MFP_P30_GPIO;
  41.     P30_PUSHPULL_MODE;                            /* set P1.2 as PushPull output mode */
  42.   /*
  43. For UART0 P3.1 as TXD output setting use VCOM function.
  44. * include uart.c in Library Setting for UART0
  45. */
  46.     MFP_P31_UART0_TXD;                            /* UART0 TXD use P31 */
  47.     P31_QUASI_MODE;                               /* set P3.1 Quasi mode for UART0 trasnfer */
  48.     UART_Open(24000000,UART0_Timer1,115200);      /* Open UART0 use timer1 as baudrate generate and baud rate = 115200 */
  49.     ENABLE_UART0_PRINTF;                                   /* to use printf function, need set TI first. */

  50. /* Setting Pin interrupt initial
  51.    * include pinint.c in Library for GPIO mode setting
  52. */
  53.     MFP_P25_GPIO;
  54.     P25_INPUT_MODE;                               /* set P2.5 as input output mode */
  55.     GPIO_Pull_Enable(Port2,SET_BIT5,PullUp);
  56.     GPIO_EnableInt(PIT0,FALLING,EDGE,2,5);         /* Setting pin intterrupt channel 0 as P2.5 falling edge trigger. */
  57.     MFP_P32_GPIO;
  58.     P32_INPUT_MODE;                               /* set P3.2 as input output mode */
  59.     GPIO_Pull_Enable(Port3,SET_BIT2,PullDown);
  60.     GPIO_EnableInt(PIT3,RISING,EDGE,3,2);          /* Setting pin intterrupt channel 3 as P3.2 rising edge trigger. */
  61.     ENABLE_GLOBAL_INTERRUPT;

  62.     while(1);
  63. }



复制代码


使用特权

评论回复
 楼主 | 2019-8-31 23:51 | 显示全部楼层
确实没有传统中断的独立入口那种操作简单,响应快

使用特权

评论回复
| 2019-9-4 08:46 | 显示全部楼层
普通的基本上所有IO都可以

使用特权

评论回复
| 2019-9-4 21:30 | 显示全部楼层
这都是从ARM单片机借鉴过来的

使用特权

评论回复
| 2019-9-4 23:23 | 显示全部楼层
那些特别寄存器操作还保留了。

使用特权

评论回复
| 2019-9-4 23:52 | 显示全部楼层
这种用宏表示方式非常容易阅读

使用特权

评论回复
| 2019-9-5 15:06 | 显示全部楼层
好像所有的IO端口都可以实现

使用特权

评论回复
| 2019-9-5 15:28 | 显示全部楼层
使能全局中断,51的特有风格

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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