3676|5

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

提一个关于C8051f系列中断借口设置的问题 [复制链接]

在C8051f020中,为INT0和INT1分配了端口之后,程序中除了对XBR1进行设置外还需要设置写什么?谢谢

最新回复

管脚的输入输出方式也是要设置的,数字输入,开漏输出  详情 回复 发表于 2010-3-22 09:37
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
设置外部中断INT0和INT1的触发方式;
使能INT0和INT1中断;
使能系统总中断

  1. //-----------------------------------------------------------------------------
  2. // F02x_External_Interrupts.c
  3. //-----------------------------------------------------------------------------
  4. // Copyright 2007 Silicon Laboratories, Inc.
  5. // http://www.silabs.com
  6. //
  7. // Program Description:
  8. //
  9. // This software shows the necessary configuration to use External Interrupt 0
  10. // (/INT0) or External Interrupt 1 (/INT1) as an interrupt source.  The code
  11. // executes the initialization routines and then spins in an infinite while()
  12. // loop.  If the button P3.7 (on the target board) is pressed, then the
  13. // edge-triggered /INT0 input on P0.0 will cause an interrupt and toggle the
  14. // LED.
  15. //
  16. // Pinout:
  17. //
  18. // P0.0 - /INT0
  19. // P0.1 - /INT1
  20. //
  21. // P1.6 - LED
  22. //
  23. // P3.7 - SWITCH
  24. //
  25. // How To Test:
  26. //
  27. // 1) Compile and download code to a 'F02x target board.
  28. // 2) On the target board, connect the switch side of J1 to either P0.0 for
  29. //    /INT0 or P0.1 for /INT1.
  30. // 3) Verify the J3 jumper is in place.
  31. // 4) Verify the J6 and J9 jumpers are removed.
  32. // 5) Press the P3.7 switch.  Every time the switch is pressed, the P1.6 LED
  33. //    should toggle.
  34. //
  35. // Target:         C8051F02x
  36. // Tool chain:     Keil C51 7.50 / Keil EVAL C51
  37. // Command Line:   None
  38. //
  39. //
  40. // Release 1.0
  41. //    -Initial Revision (SM)
  42. //    -19 JUN 2007
  43. //

  44. //-----------------------------------------------------------------------------
  45. // Include Files
  46. //-----------------------------------------------------------------------------

  47. #include

  48. //-----------------------------------------------------------------------------
  49. // Global Constants
  50. //-----------------------------------------------------------------------------

  51. #define SYSCLK       (22118400L)

  52. sbit LED    = P1^6;                    // Green Led
  53. sbit SWITCH = P3^7;                    // Push-button switch on board

  54. //-----------------------------------------------------------------------------
  55. // Function Prototypes
  56. //-----------------------------------------------------------------------------

  57. void Oscillator_Init (void);           // Configure the system clock
  58. void Port_Init (void);                 // Configure the Crossbar and GPIO
  59. void Ext_Interrupt_Init (void);        // Configure External Interrupts (/INT0
  60.                                        // and /INT1)

  61. //-----------------------------------------------------------------------------
  62. // MAIN Routine
  63. //-----------------------------------------------------------------------------
  64. void main (void)
  65. {
  66.    WDTCN = 0xDE;                       // Disable Watchdog timer
  67.    WDTCN = 0xAD;

  68.    Oscillator_Init();                  // Initialize the system clock
  69.    Port_Init ();                       // Initialize crossbar and GPIO
  70.    Ext_Interrupt_Init();               // Initialize External Interrupts

  71.    EA = 1;

  72.    while(1);                           // Infinite while loop waiting for
  73.                                        // an interrupt from /INT0 or /INT1
  74. }

  75. //-----------------------------------------------------------------------------
  76. // Initialization Subroutines
  77. //-----------------------------------------------------------------------------

  78. //-----------------------------------------------------------------------------
  79. // OSCILLATOR_Init
  80. //-----------------------------------------------------------------------------
  81. //
  82. // Return Value : None
  83. // Parameters   : None
  84. //
  85. // This function initializes the system clock to use the  external 22.1184MHz
  86. // crystal.
  87. //
  88. //-----------------------------------------------------------------------------
  89. void OSCILLATOR_Init (void)
  90. {
  91.    int i;                              // Software timer

  92.    OSCICN |= 0x80;                     // Enable the missing clock detector

  93.    // Initialize external crystal oscillator to use 22.1184 MHz crystal

  94.    OSCXCN = 0x67;                      // Enable external crystal osc.
  95.    for (i=0; i < 256; i++);            // Wait at least 1ms
  96.    while (!(OSCXCN & 0x80));           // Wait for crystal osc to settle
  97.    OSCICN |= 0x08;                     // Select external clock source
  98.    OSCICN &= ~0x04;                    // Disable the internal osc.
  99. }


  100. //-----------------------------------------------------------------------------
  101. // Port_Init
  102. //-----------------------------------------------------------------------------
  103. //
  104. // Return Value : None
  105. // Parameters   : None
  106. //
  107. // This function configures the crossbar and GPIO ports.
  108. //
  109. // Pinout:
  110. //
  111. // P0.0 - digital   open-drain  /INT0
  112. // P0.1 - digital   open-drain  /INT1
  113. //
  114. // P1.6 - digital   push-pull   LED
  115. //
  116. // P3.7 - digital   open-drain  SWITCH
  117. //
  118. //-----------------------------------------------------------------------------
  119. void Port_Init (void)
  120. {
  121.    XBR0     = 0x00;
  122.    XBR1     = 0x14;                    // No peripherals selected
  123.    XBR2     = 0x40;                    // Enable crossbar and weak pullups

  124.    P1MDOUT  = 0x40;                    // LED is push-pull a output

  125. }

  126. //-----------------------------------------------------------------------------
  127. // Ext_Interrupt_Init
  128. //-----------------------------------------------------------------------------
  129. //
  130. // Return Value : None
  131. // Parameters   : None
  132. //
  133. // This function configures and enables /INT0 and /INT1 (External Interrupts)
  134. // as negative edge-triggered.
  135. //
  136. //-----------------------------------------------------------------------------
  137. void Ext_Interrupt_Init (void)
  138. {
  139.    TCON = 0x05;                        // /INT 0 and /INT 1 are falling edge
  140.                                        // triggered

  141.    EX0 = 1;                            // Enable /INT0 interrupts
  142.    EX1 = 1;                            // Enable /INT1 interrupts

  143. }

  144. //-----------------------------------------------------------------------------
  145. // Interrupt Service Routines
  146. //-----------------------------------------------------------------------------

  147. //-----------------------------------------------------------------------------
  148. // /INT0 ISR
  149. //-----------------------------------------------------------------------------
  150. //
  151. // Whenever a negative edge appears on P0.0, the LED is toggled.
  152. // The interrupt pending flag is automatically cleared by vectoring to the ISR
  153. //
  154. //-----------------------------------------------------------------------------
  155. void INT0_ISR (void) interrupt 0
  156. {
  157.    LED = !LED;
  158. }

  159. //-----------------------------------------------------------------------------
  160. // /INT1 ISR
  161. //-----------------------------------------------------------------------------
  162. //
  163. // Whenever a negative edge appears on P0.1, the LED is toggled.
  164. // The interrupt pending flag is automatically cleared by vectoring to the ISR
  165. //
  166. //-----------------------------------------------------------------------------
  167. void INT1_ISR (void) interrupt 2
  168. {
  169.    LED = !LED;
  170. }

  171. //-----------------------------------------------------------------------------
  172. // End Of File
  173. //-----------------------------------------------------------------------------

复制代码
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这是软件自带的关于外部中断的例程,lz可以参考呀
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
我也来学习一下啦
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

5
 
中断向量使能,中断优先级设置
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
管脚的输入输出方式也是要设置的,数字输入,开漏输出
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表