[KungFu8位 MCU] KF8FXXX中断测试例程

[复制链接]
1088|3
 楼主| 小小少年苦中乐 发表于 2017-11-26 11:59 | 显示全部楼层 |阅读模式
KF8FXXX-INTX_Interrupt_TEST.rar (129.86 KB, 下载次数: 10)
 楼主| 小小少年苦中乐 发表于 2017-11-26 12:01 | 显示全部楼层
  1. /*************************************************************************************
  2. * 项目名: KF8FXXX-INTX_Interrupt_TEST
  3. * 开发环境:ChipON IDE
  4. * 版本:
  5. * 使用芯片:KF8F312  使用于KF8FXXX、KF8SXXXX
  6. * 作者:上海芯旺微电子有限公司
  7. * 功能简述: 芯片外部中断的使用 包括INT0、INT1、INT2
  8. *************************************************************************************/
  9. #include<KF8F312.h>

  10. //#define INT0        // 使能INT0中断
  11. //#define INT1      // 使能INT1中断
  12. //#define INT2      // 使能INT2中断

  13. /*********************宏定义******************************/
  14. #define uchar unsigned char
  15. #define uint  unsigned int
  16. #define LED1  P16                              // 对应Demo板上的D3
  17. /*********************宏定义结束*********************** ***/

  18. /************************
  19. * 函数名     :init_fun
  20. * 函数功能:初始化函数
  21. * 入口参数:无
  22. * 返回          :无
  23. ************************/
  24. void Init_fun()
  25. {
  26.     OSCCTL = 0x60;                           //设置系统时钟为8M

  27.         /*********端口初始化***********/
  28.         TR0 = 0x0c;                                                 //设置P03 P02(INT0) 端口只能设置为输入
  29.         TR1 = 0x0c;                                                 //P12(INT1)/P13(INT2)口为外部中断引脚,需配置为数字输入口设置P1端口为输出
  30.         TR2 = 0x00;                                                 //设置P2端口为输出

  31.         P0 = 0x00;
  32.         P1 = 0x00;
  33.         P2 = 0xF0;

  34.         ANSEL = 0;                               //配置P12口为数字口
  35.         ANSEH = 0;

  36. #ifdef INT0
  37.         INT0IF = 0;   //  清中断标志位
  38.         INT0SE = 0;   //  0 :下降沿             1:上升沿
  39.         INT0IE = 1;   //  使能中断
  40.         PUIE = 0;
  41. #endif

  42. #ifdef INT1
  43.         INT1IF = 0;          //  清中断标志位
  44.         INT1SE = 0;   //  0 :下降沿             1:上升沿
  45.         INT1IE = 1;   //  使能中断
  46.         PUIE = 1;     //  INT1 属于外部中断
  47. #endif

  48. #ifdef INT2
  49.         INT2IF = 0;   //  清中断标志位
  50.         INT2SE = 0;   //  0 :下降沿             1:上升沿
  51.         INT2IE = 1;   //  使能中断
  52.         PUIE = 1;     //  INT2 属于外部中断
  53. #endif

  54.         AIE = 1;      // 使能总中断
  55. }

  56. /************************
  57. * 函数名     :Delay
  58. * 函数功能:短时间延时
  59. * 入口参数:无
  60. * 返回          :无
  61. ************************/
  62. void Delay()
  63. {

  64.         uchar i = 0,j = 0;

  65.         for (i = 0;i < 200;i++)
  66.                 for (j = 0;j < 200;j++);
  67. }

  68. void main()
  69. {
  70.         Init_fun();

  71.         while (1)
  72.         {
  73.                 P11 = !P11;                 //  改变P11口电平
  74.                 Delay();
  75.         }

  76. }
  77. //中断函数
  78. void int_fun() __interrupt
  79. {

  80. #ifdef INT0
  81.         if (INT0IF)
  82.         {
  83.                 INT0IF = 0;                 // 清中断标志
  84.                 LED1 = !LED1;               // 更改 D3 显示状态
  85.         }
  86. #endif

  87. #ifdef INT1
  88.         if (INT1IF)
  89.         {
  90.                 INT1IF = 0;                 // 清中断标志
  91.                 LED1 = !LED1;               // 更改 D3 显示状态
  92.         }
  93. #endif

  94. #ifdef INT2
  95.         if (INT2IF)
  96.         {
  97.                 INT2IF = 0;                 // 清中断标志
  98.                 LED1 = !LED1;               // 更改 D3 显示状态
  99.         }
  100. #endif
  101. }
关小波522 发表于 2017-11-26 14:48 | 显示全部楼层
感觉程序和汇编差不多
雾霾和青山 发表于 2017-11-27 22:02 | 显示全部楼层
好东西,正需要呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

67

帖子

0

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