控制cpu内部中断允许触发器的指令是 cpu中断处理过程流程图

\u53ef\u5c4f\u853d\u4e2d\u65ad\u7684\u5c4f\u853d\u901a\u5e38\u53ef\u7531CPU\u5185\u90e8\u7684____\u6765\u63a7\u5236\u3002 A\u3001\u4e2d\u65ad\u8bf7\u6c42\u89e6\u53d1\u5668 B\u3001\u4e2d\u65ad\u5c4f\u853d\u5bc4\u5b58\u5668 C\u3001\u4e2d\u65ad\u5141\u8bb8\u89e6\u53d1\u5668

\u5e94\u8be5\u662fB\u4e86\u3002

1. \u4e2d\u65ad\u6982\u5ff5
\u4e2d\u65ad\u662f\u6307\u7531\u4e8e\u63a5\u6536\u5230\u6765\u81ea\u5916\u56f4\u786c\u4ef6\uff08\u76f8\u5bf9\u4e8e\u4e2d\u592e\u5904\u7406\u5668\u548c\u5185\u5b58\uff09\u7684\u5f02\u6b65\u4fe1\u53f7\u6216\u6765\u81ea\u8f6f\u4ef6\u7684\u540c\u6b65\u4fe1\u53f7\uff0c\u800c\u8fdb\u884c\u76f8\u5e94\u7684\u786c\u4ef6\uff0f\u8f6f\u4ef6\u5904\u7406\u3002\u53d1\u51fa\u8fd9\u6837\u7684\u4fe1\u53f7\u79f0\u4e3a\u8fdb\u884c\u4e2d\u65ad\u8bf7\u6c42\uff08interrupt request\uff0cIRQ\uff09\u3002\u786c\u4ef6\u4e2d\u65ad\u5bfc\u81f4\u5904\u7406\u5668\u901a\u8fc7\u4e00\u4e2a\u4e0a\u4e0b\u6587\u5207\u6362\uff08context switch\uff09\u6765\u4fdd\u5b58\u6267\u884c\u72b6\u6001\uff08\u4ee5\u7a0b\u5e8f\u8ba1\u6570\u5668\u548c\u7a0b\u5e8f\u72b6\u6001\u5b57\u7b49\u5bc4\u5b58\u5668\u4fe1\u606f\u4e3a\u4e3b\uff09\uff1b\u8f6f\u4ef6\u4e2d\u65ad\u5219\u901a\u5e38\u4f5c\u4e3aCPU\u6307\u4ee4\u96c6\u4e2d\u7684\u4e00\u4e2a\u6307\u4ee4\uff0c\u4ee5\u53ef\u7f16\u7a0b\u7684\u65b9\u5f0f\u76f4\u63a5\u6307\u793a\u8fd9\u79cd\u4e0a\u4e0b\u6587\u5207\u6362\uff0c\u5e76\u5c06\u5904\u7406\u5bfc\u5411\u4e00\u6bb5\u4e2d\u65ad\u5904\u7406\u4ee3\u7801\u3002\u4e2d\u65ad\u5728\u8ba1\u7b97\u673a\u591a\u4efb\u52a1\u5904\u7406\uff0c\u5c24\u5176\u662f\u5b9e\u65f6\u7cfb\u7edf\u4e2d\u5c24\u4e3a\u6709\u7528\u3002\u8fd9\u6837\u7684\u7cfb\u7edf\uff0c\u5305\u62ec\u8fd0\u884c\u4e8e\u5176\u4e0a\u7684\u64cd\u4f5c\u7cfb\u7edf\uff0c\u4e5f\u88ab\u79f0\u4e3a\u201c\u4e2d\u65ad\u9a71\u52a8\u7684\u201d\uff08interrupt-driven\uff09\u3002
\u4e2d\u65ad\u662f\u4e00\u79cd\u4f7fCPU\u4e2d\u6b62\u6b63\u5728\u6267\u884c\u7684\u7a0b\u5e8f\u800c\u8f6c\u53bb\u5904\u7406\u7279\u6b8a\u4e8b\u4ef6\u7684\u64cd\u4f5c\uff0c\u8fd9\u4e9b\u5f15\u8d77\u4e2d\u65ad\u7684\u4e8b\u4ef6\u79f0\u4e3a\u4e2d\u65ad\u6e90\uff0c\u5b83\u4eec\u53ef\u80fd\u662f\u6765\u81ea\u5916\u8bbe\u7684\u8f93\u5165\u8f93\u51fa\u8bf7\u6c42\uff0c\u4e5f\u53ef\u80fd\u662f\u8ba1\u7b97\u673a\u7684\u4e00\u4e9b\u5f02\u5e38\u4e8b\u6545\u6216\u5176\u5b83\u5185\u90e8\u539f\u56e0\u3002
\u4e2d\u65ad\uff1a\u5728\u8fd0\u884c\u4e00\u4e2a\u7a0b\u5e8f\u7684\u8fc7\u7a0b\u4e2d\uff0c\u65ad\u7eed\u5730\u4ee5\u201c\u63d2\u5165\u201d\u65b9\u5f0f\u6267\u884c\u4e00\u4e9b\u5b8c\u6210\u7279\u5b9a\u5904\u7406\u529f\u80fd\u7684\u7a0b\u5e8f\u6bb5\uff0c\u8fd9\u79cd\u5904\u7406\u65b9\u5f0f\u79f0\u4e3a\u4e2d\u65ad\u3002
2. \u4e2d\u65ad\u7684\u4f5c\u7528
\u5e76\u884c\u64cd\u4f5c
\u786c\u4ef6\u6545\u969c\u62a5\u8b66\u4e0e\u5904\u7406
\u652f\u6301\u591a\u9053\u7a0b\u5e8f\u5e76\u53d1\u8fd0\u884c\uff0c\u63d0\u9ad8\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u8fd0\u884c\u6548\u7387
\u652f\u6301\u5b9e\u65f6\u5904\u7406\u529f\u80fd
3. \u672f\u8bed
\u6309\u4e2d\u65ad\u6e90\u8fdb\u884c\u5206\u7c7b\uff1a\u53d1\u51fa\u4e2d\u65ad\u8bf7\u6c42\u7684\u8bbe\u5907\u79f0\u4e3a\u4e2d\u65ad\u6e90\u3002\u6309\u4e2d\u65ad\u6e90\u7684\u4e0d\u540c\uff0c\u4e2d\u65ad\u53ef\u5206\u4e3a
\u5185\u4e2d\u65ad\uff1a\u5373\u7a0b\u5e8f\u8fd0\u884c\u9519\u8bef\u5f15\u8d77\u7684\u4e2d\u65ad
\u5916\u4e2d\u65ad\uff1a\u5373\u7531\u5916\u90e8\u8bbe\u5907\u3001\u63a5\u53e3\u5361\u5f15\u8d77\u7684\u4e2d\u65ad
\u8f6f\u4ef6\u4e2d\u65ad\uff1a\u7531\u5199\u5728\u7a0b\u5e8f\u4e2d\u7684\u8bed\u53e5\u5f15\u8d77\u7684\u4e2d\u65ad\u7a0b\u5e8f\u7684\u6267\u884c\uff0c\u79f0\u4e3a\u8f6f\u4ef6\u4e2d\u65ad
\u5141\u8bb8/\u7981\u6b62(\u5f00/\u5173)\u4e2d\u65ad\uff1a CPU\u901a\u8fc7\u6307\u4ee4\u9650\u5236\u67d0\u4e9b\u8bbe\u5907\u53d1\u51fa\u4e2d\u65ad\u8bf7\u6c42\uff0c\u79f0\u4e3a\u5c4f\u853d\u4e2d\u65ad\u3002\u4eceCPU\u8981\u4e0d\u8981\u63a5\u6536\u4e2d\u65ad\u5373\u80fd\u4e0d\u80fd\u9650\u5236\u67d0\u4e9b\u4e2d\u65ad\u53d1\u751f\u7684\u89d2\u5ea6 \uff0c\u4e2d\u65ad\u53ef\u5206\u4e3a
\u53ef\u5c4f\u853d\u4e2d\u65ad \uff1a\u53ef\u88abCPU\u901a\u8fc7\u6307\u4ee4\u9650\u5236\u67d0\u4e9b\u8bbe\u5907\u53d1\u51fa\u4e2d\u65ad\u8bf7\u6c42\u7684\u4e2d\u65ad\uff0c \u90a3\u662f\u4e0d\u662f\u610f\u5473\u7740\u8fdb\u4e2d\u65ad\u65f6disable\u6574\u4e2a\u4e2d\u65ad\uff0c\u5176\u5b9edisable\u7684\u90fd\u662f\u53ef\u5c4f\u853d\u4e2d\u65ad\uff1f
\u4e0d\u53ef\u5c4f\u853d\u4e2d\u65ad\uff1a\u4e0d\u5141\u8bb8\u5c4f\u853d\u7684\u4e2d\u65ad\u5982\u7535\u6e90\u6389\u7535
\u4e2d\u65ad\u5141\u8bb8\u89e6\u53d1\u5668\uff1a\u5728CPU\u5185\u90e8\u8bbe\u7f6e\u4e00\u4e2a\u4e2d\u65ad\u5141\u8bb8\u89e6\u53d1\u5668\uff0c\u53ea\u6709\u8be5\u89e6\u53d1\u5668\u7f6e\u201c1\u201d\uff0c\u624d\u5141\u8bb8\u4e2d\u65ad\uff1b\u7f6e\u201c0\u201d\uff0c\u4e0d\u5141\u8bb8\u4e2d\u65ad\u3002
\u6307\u4ee4\u7cfb\u7edf\u4e2d\uff0c\u5f00\u4e2d\u65ad\u6307\u4ee4\uff0c\u4f7f\u4e2d\u65ad\u89e6\u53d1\u5668\u7f6e\u201c1\u201d
\u5173\u4e2d\u65ad\u6307\u4ee4\uff0c\u4f7f\u4e2d\u65ad\u89e6\u53d1\u5668\u7f6e\u201c0\u201d
\u4e2d\u65ad\u4f18\u5148\u7ea7\uff1a\u4e3a\u4e86\u7ba1\u7406\u4f17\u591a\u7684\u4e2d\u65ad\u8bf7\u6c42\uff0c\u9700\u8981\u6309\u6bcf\u4e2a\uff08\u7c7b\uff09\u4e2d\u65ad\u5904\u7406\u7684\u6025\u8feb\u7a0b\u5ea6\uff0c\u5bf9\u4e2d\u65ad\u8fdb\u884c\u5206\u7ea7\u7ba1\u7406\uff0c\u79f0\u5176\u4e3a\u4e2d\u65ad\u4f18\u5148\u7ea7\u3002\u5728\u6709\u591a\u4e2a\u4e2d\u65ad\u8bf7\u6c42\u65f6\uff0c\u603b\u662f\u54cd\u5e94\u4e0e\u5904\u7406\u4f18\u5148\u7ea7\u9ad8\u7684\u8bbe\u5907\u7684\u4e2d\u65ad\u8bf7\u6c42\u3002
\u4e2d\u65ad\u5d4c\u5957\uff1a\u5f53CPU\u6b63\u5728\u5904\u7406\u4f18\u5148\u7ea7\u8f83\u4f4e\u7684\u4e00\u4e2a\u4e2d\u65ad\uff0c\u53c8\u6765\u4e86\u4f18\u5148\u7ea7\u66f4\u9ad8\u7684\u4e00\u4e2a\u4e2d\u65ad\u8bf7\u6c42\uff0c\u5219CPU\u5148\u505c\u6b62\u4f4e\u4f18\u5148\u7ea7\u7684\u4e2d\u65ad\u5904\u7406\u8fc7\u7a0b\uff0c\u53bb\u54cd\u5e94\u4f18\u5148\u7ea7\u66f4\u9ad8\u7684\u4e2d\u65ad\u8bf7\u6c42\uff0c\u5728\u4f18\u5148\u7ea7\u66f4\u9ad8\u7684\u4e2d\u65ad\u5904\u7406\u5b8c\u6210\u4e4b\u540e\uff0c\u518d\u7ee7\u7eed\u5904\u7406\u4f4e\u4f18\u5148\u7ea7\u7684\u4e2d\u65ad\uff0c\u8fd9\u79cd\u60c5\u51b5\u79f0\u4e3a\u4e2d\u65ad\u5d4c\u5957\u3002
Intel\u7684\u5b98\u65b9\u6587\u6863\u91cc\u5c06\u4e2d\u65ad\u548c\u5f02\u5e38\u7406\u89e3\u4e3a\u4e24\u79cd\u4e2d\u65ad\u5f53\u524d\u7a0b\u5e8f\u6267\u884c\u7684\u4e0d\u540c\u673a\u5236\u3002\u8fd9\u662f\u4e2d\u65ad\u548c\u5f02\u5e38\u7684\u5171\u540c\u70b9\u3002\u4e0d\u540c\u70b9\u5728\u4e8e\uff1a
\u4e2d\u65ad(interrupt)\u662f\u5f02\u6b65\u7684\u4e8b\u4ef6\uff0c\u5178\u578b\u7684\u6bd4\u5982\u7531I/O\u8bbe\u5907\u89e6\u53d1\uff1b\u5f02\u5e38(exception)\u662f\u540c\u6b65\u7684\u4e8b\u4ef6\uff0c\u5178\u578b\u7684\u6bd4\u5982\u5904\u7406\u5668\u6267\u884c\u67d0\u6761\u6307\u4ee4\u65f6\u53d1\u73b0\u51fa\u9519\u4e86\u7b49\u7b49\u3002
\u4e2d\u65ad\u53c8\u53ef\u4ee5\u5206\u4e3a\u53ef\u5c4f\u853d\u4e2d\u65ad\u548c\u975e\u53ef\u5c4f\u853d\u4e2d\u65ad\uff0c\u5f02\u5e38\u53c8\u5206\u4e3a\u6545\u969c\u3001\u9677\u9631\u548c\u5f02\u5e38\u4e2d\u6b623\u79cd\uff0c\u5b83\u4eec\u7684\u5177\u4f53\u533a\u522b\u5f88\u591a\u4e66\u7c4d\u548c\u5b98\u65b9\u6587\u6863\u90fd\u89e3\u91ca\u7684\u6bd4\u8f83\u6e05\u695a\u8fd9\u91cc\u4e0d\u518d\u8d58\u8ff0\u3002
\u5173\u4e8e\u5b83\u4eec\u7684\u533a\u522b\u6709\u4e24\u70b9\u662f\u9700\u8981\u6ce8\u610f\u7684\uff1a
\u5e73\u5e38\u6240\u8bf4\u7684\u5c4f\u853d\u4e2d\u65ad\u662f\u4e0d\u5305\u62ec\u5f02\u5e38\u7684\uff0c\u5373\u5f02\u5e38\u4e0d\u4f1a\u56e0\u4e3aCPU\u7684IF\u4f4d\u88ab\u6e05\uff08\u5173\u4e2d\u65ad\uff0c\u6307\u4ee4\uff1acli\uff09\u800c\u53d7\u5f71\u54cd\uff0c\u6bd4\u5982\u7f3a\u9875\u5f02\u5e38\uff0c\u5373\u4f7f\u5173\u4e86\u4e2d\u65ad\u4e5f\u4f1a\u89e6\u53d1CPU\u7684\u5904\u7406\uff0c\u56de\u7b54\u4e86\u6211\u4e0a\u9762\u7ea2\u8272\u90e8\u5206\u7591\u95ee\u3002
\u901a\u5e38\u8bf4\u7684int 80h\u8fd9\u79cd\u7cfb\u7edf\u8c03\u7528\u4f7f\u7528\u7684\u4e2d\u65ad\u65b9\u5f0f\u5b9e\u9645\u4e0a\u786c\u4ef6\u4e0a\u662f\u7406\u89e3\u4e3a\u5f02\u5e38\u5904\u7406\u7684\uff0c\u56e0\u6b64\u4e5f\u4e0d\u4f1a\u88ab\u5c4f\u853d\u6389\uff0c\u8fd9\u4e5f\u5f88\u597d\u7406\u89e3\uff0cint 80h\u8fd9\u79cd\u4e2d\u65ad\u65b9\u5f0f\u662f\u7a0b\u5e8f\u91cc\u4e3b\u52a8\u89e6\u53d1\u7684\uff0c\u5bf9\u4e8eCPU\u6765\u8bf4\u5c5e\u4e8e\u540c\u6b65\u4e8b\u4ef6\uff0c\u56e0\u6b64\u4e5f\u5c31\u5c5e\u4e8e\u5f02\u5e38\u7684\u8303\u7574\u3002

  中断源与中断请求
  由图3.2可以看出,MCS——51系列单片机有5个中断源,它们是:外部中断INTO(P3.2) 、INTI(P3.3);定时器肼数器T0、Tl溢出中断;串行口的发送(TXD)和接收(RXD)中断源(只占1个中断源)。外部中断的中断请求标志位和T0、Tl的溢出中断请求标志位锁存在定时器/计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在串行口控制寄存器SCON中。
  1.定时器/计数器控制寄存器TCON
  TCON为定时器/计数器控制寄存器,其字节映像地址为88H,可位寻址,它除了控制定时器/计数器T0、Tl的溢出中断外,还控制着两个外部中断源的触发方式和锁存两个外部中断源的中断请求标志。其格式如下:
  TFl
  TRl
  TF0
  TRO
  IEl
  ITl
  IEO
  IT0
  TCON寄存器各位的含义如下:
  IT0:外部中断INTO的中断触发方式选择位。
  当IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期的$5P2采样INTO(P3.2)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位为1,采样到高电平清IE0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P3.2引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。为了保证CPU能正确采样电平状态,要求外部中断源INTO有效的低电平信号至少要维持一个机器周期以上。
  当IT0位置为1时,外部中[新IN-T0为边沿触发方式。在这种触发方式中,CPU在每个机器周期的$5P2采样INTO(P3.2)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE0为1,即当IE0位为l时,表示外部中断INTO正在向CPU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。
  IE0:外部中断:INT0的中断请求标志位。当IE0位为0时,表示外部中断源INT0没有向CPU请求中断;当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0。
  1T1:外部中断INTO的中断触发方式选择位。功能与ITo相同。
  IEl:外部中断INTO的中断请求标志位。功能与IE0相l司。
  TR0:定时器/计数器T0的启动标志位。当TR0位为0时,不允许T0计数工作;当TRO位为l时,允许T0定时或计数工作。
  TF0:定时器/计数器T0的溢出中断请求标志位。在定时器/计数器T0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将TF0位置为1,通过TF0位向CPU申请中断,一直保持到CPU响应该中断后才由硬件自动将TF0位清为0。当TF0位为0时,表示T0未计数或计数未产生溢出。当T0工作在不允许中断时,TF0标志可供程序查询。
  TRl:定时器/计数器Tl的启动标志位。功能与TR0相l司。
  TFl:定时器/计数器Tl的溢出中断请求标志位。功能与TF0相I司。
  2.串行口控制寄存器SC,ON
  'SCON为串口控制寄存器,其字节映像地址为98H,也可以进行位寻址。串口的接收和发送数据中断请求标志位(R1、TI)被锁存在串口控制寄存器SCON中,其格式如下:
  SM0
  SMl
  SM2
  REN
  TB8
  RB8
  TI
  RI
  SCON寄存器各位的含义如下:
  R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1。而Rl位的清0必须由用户用指令来完成。
  T1:串l3发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。
  注意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源。当CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序。
  SCON其他位的功能和作用与串行通信有关,将在第6章中介绍。
  在上述的特殊功能寄存器中的所有中断请求标志位,都可以由软件加以控制,即用软件置位或清0。当某位置位时,就相当于该位对应的中断源向CPU发出中断请求,如果清。就撤销中断请求。
  3.2.2中断允许控制
  在计算机中断系统中有两种不同类型的中断:一类为非屏蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,CPU就必须予以响应。而对于可屏蔽中断,用户则可以通过软件方法来控制它们是否允许CPU去响应。允许CPU响应某一个中断请求称为中断开放(或中断允许),不允许CPU响应某一个中断请求称为中断屏蔽(或中断禁止)。
  MCS一51系列单片机的5个中断源都是可屏蔽中断。由图3.2可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0。
  通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对EA位的清O来屏蔽所有的中断源。IE的格式如下。
  EA
  ----
  -----
  ES
  ET1
  EX1
  ETO
  EX0
  IE寄存器各位的含义为:
  EA:总中断允许控制位。当EA位为0时,屏蔽所有的中断;当EA位为l时,开放所有的中断。
  ES:串口中断允许控制位。当ES位为0时,屏蔽串口中断;当ES位为l且EA位也为1时,开放串口中断。
  ETl:定时器/计数器Tl的中断允许控制位。当ETl位为0时,屏蔽Tl的溢出中断;当ETl位为l且EA位也为1时,开放Tl的溢出中断。
  EXl:INT1的中断允许控制位。当EXl位为0时,屏蔽INTl;当EXl位为l且EA位也为1时,开放丽。
  ET0:定时器/计数器T0的中断允许控制位。功能与ETl相同。
  EX0:INT0的中断允许控制位。功能与EXl相同。比如要开放INTl和Tl的溢出中断,屏蔽其他中断,则对应的中断允许控制字为:l00011008,即8CH。只要将这个结果送人IE中,中断系统就按所设置的结果来管理这些中断源。形成这个控制结果的方法可以对IE按字节操作,也可以按位操作。
  按字节操作形式    按位操作形式
  SETB EXl
  MOV IE,#8CH     SETB ETl
  SETB EA
  思考题3.1:如果要开放外部中断0和串口的中断,而屏蔽其他中断的控制字是什么?如何来实现这个控制结果呢?
  3.2.3中断优先权管理
  在中断系统中,要使某一个中断被优先响应的话,就要依靠中断优先权控制。MCS-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对中断优先权的管理,在MCS一51内部提供了一个中断优先级寄存器IP,其字节地址为088H,既可以按字节形式访问,又可以按位的形式访问。其格式如下:
  —
  -------
  --------
  PS
  PTl
  PXl
  PT0
  PXO
  IP寄存器各位的含义如下:
  PX0、PT0、PXl、PTl和PS分别为INTO、TO、INT1、Tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级。
  比如要将T0定义为高优先级,使CPU优先响应其中断,其他中断均定义为低优先级,对应的优先级控制字为O00000108,即02H。只要将这个控制字送人IP中,CPU就优先响应TO产生的溢出中断,并将其他中断按低优先级中断处理。具体操作形式如下:
  按字节操作形式  按位操作形式
  MOV IP,#02H    SETB PT0
  在同一个优先级中,各中断源的优先级别由一个内部的硬件查询序列来决定,所以在同级的中断中按硬件查询序列也确定了一个自然优先级,其从高到低的优先级排列如下:
  INTO—TO—INT1—Tl--串口(RI、TI)
  按中断优先权设置后,响应中断的基本原则是:
  .若多个中断请求同时有效,CPU优先响应优先权最高的中断请求。
  .同级的中断或更低级的中断不能中断CPU正在响应的中断过程。
  .低优先权的中断响应过程可以被高优先权的中断请求所中断,CPU会暂时中止当前低优先权的中断过程,而优先响应高优先权中断。等到高优先权中断响应结束后再继续响应原低优先权的中断过程,形成中断的嵌套。为了实现上述功能和基本原则,在MCS.51系列单片机中断系统的内部设置了两个不可寻址的优先级触发器,一个是指出CPU是否正在响应高优先权中断的高优先级触发器,另一个是指出CPU是否正在响应低优先权中断的低优先级触发器。当高优先级触发器状态为l时,屏蔽所有的中断请求;当低优先级触发器状态为1时,屏蔽所有同级的中断请求而允许高优先权中断的中断请求。
  MCS一51系列单片机复位后,特殊功能寄存器IE、IP的内容均为0,由用户的初始化程序对IE、IP进行初始化,开放或屏蔽某些中断并设置它们的优先权。
  3.2.4中断响应
  单片机一旦工作,并由用户对各中断源进行使能和优先权初始化编程后,MCS-51系列单片机的CPU在每个机器周期顺序检查每一个中断源。那么,在什么情况下CPU可以及时响应某一个中断请求呢?若CPU响应某一个中断请求,它又是如何工作的呢?
  1.中断响应条件
  单片机的CPU在每个机器周期的最后一个状态周期采样并按优先权设置的结果处理所有被开放中断源的中断请求。一个中断源的请求要得到响应,必须满足一定的条件。
  (1)CPU正在处理相同的或更高优先权的中断请求。这种情况下只有当前中断响应结
  束后才可能响应另一个中断请求。
  (2)现行的机器周期不是当前所执行指令的最后一个机器周期。此时只有在当前指令执行结束周期的下一个机器周期才可能响应中断请求。
  (3)正在执行的指令是中断返回指令(RETI)或者是对IE、IP的写操作指令。在这种情况下,只有在这些指令执行结束并至少再执行一条其他指令后才可能响应中断请求。如果上述条件中有一个存在,CPU将自动丢弃对中断查询的结果;若一个条件也不存在,则将在紧接着的下一个机器周期执行中断查询的结果,响应相应的中断请求。
  2.中断响应过程
  如果某一个中断被开放,且中断请求符合响应条件,CPU会及时响应该中断请求,并按下列过程进行处理:
  (1)置相应的优先级触发器状态为1,指明了CPU正在响应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。
  (2)执行一条硬件子程序调用,清相应的中断请求标志位为0(R1、Tl和电平触发的外部中断除外)。
  (3)保护断点。即将被中断程序的断点位置(Pc的值)压人堆栈保存起来。
  (4)将被响应的中断源的中断服务程序入口地址送程序计数器PC。各中断源的中断服务程序入口地址的分配情况如表l.4所示。
  (5)执行相应的中断服务程序。当CPU执行完中断服务程序中的中断返回指令后,清相应的优先级触发器为0,然后恢复断点,即将保存在堆栈中的程序计数器PC的值再弹给PC,使CPU再继续执行原来被中断的程序。
  3.中断响应的时间
  在MCS.51系列单片机中的外部中断请求信号在每一个机器周期的第5个状态周期的第2个时钟脉冲被采样并锁存到相应的中断请求标志中,这个状态等到下一个机器周期才被查询。如果中断被开放,并符合响应条件,CPU接着执行一个硬件子程序调用指令以转到相应的中断服务程序入口,该调用指令需要2个机器周期,所以从外部产生中断请求到CPU开始执行中断服务程序的第l条指令之间,最少需要3个完整的机器周期。如果中断请求被阻止,则需要更长的时间。如果已经在处理同级或更高级中断,额外的等待取决于中断服务程序的处理过程。如果正处理的指令没有执行到最后的机器周期,即使是需要时间最长的乘法或除法指令,所需的额外等待时间不会超过3个机器周期;如果是CPU正在执行中断返回指令RETl或对IE、IP的写操作指令,加上另外一条指令的执行时间,额外的等待时间不会多于5个机器周期。所以在单一中断系统中,外部中断响应时间总是在3——8个机器周期。

  • 鎺у埗cpu鍐呴儴涓柇鍏佽瑙﹀彂鍣ㄧ殑鎸囦护鏄
    绛旓細1.瀹氭椂鍣/璁℃暟鍣ㄦ帶鍒瀵勫瓨鍣═CON TCON涓哄畾鏃跺櫒/璁℃暟鍣ㄦ帶鍒跺瘎瀛樺櫒,鍏跺瓧鑺傛槧鍍忓湴鍧涓88H,鍙綅瀵诲潃,瀹冮櫎浜嗘帶鍒跺畾鏃跺櫒/璁℃暟鍣═0銆乀l鐨勬孩鍑涓柇澶,杩樻帶鍒剁潃涓や釜澶栭儴涓柇婧愮殑瑙﹀彂鏂瑰紡鍜岄攣瀛樹袱涓閮ㄤ腑鏂簮鐨勪腑鏂姹傛爣蹇椼傚叾鏍煎紡濡備笅: TFl TRl TF0 TRO IEl ITl IEO IT0 TCON瀵勫瓨鍣ㄥ悇浣嶇殑鍚箟濡備笅: IT0:澶栭儴涓柇INTO鐨...
  • CPU鐨勪腑鏂鍝嶅簲鏉′欢鏄粈涔?鍦ㄤ腑鏂懆鏈熶腑涓昏瀹屾垚鍝簺鎿嶄綔?
    绛旓細鍦ㄤ腑鏂懆鏈熶腑锛CPU涓昏瀹屾垚浠ヤ笅鎿嶄綔锛(1)纭畾涓柇婧 鍚戜腑鏂簮鏌ヨ鐢佃矾鍙戝嚭涓柇鍝嶅簲淇″彿INTA锛屽幓璇诲彇褰撳墠鏈楂樹紭鍏堟潈鐨勪腑鏂簮缂栫爜銆(2)鍏充腑鏂 灏涓柇鍏佽瑙﹀彂鍣IE娓0锛屾殏鏃朵笉鍐嶅搷搴斾换浣曚腑鏂姹傘(3)淇濇姢绋嬪簭鏂偣鍦板潃 灏嗕腑鏂墽琛岀殑鎸囦护鍦板潃锛屽嵆绋嬪簭璁℃暟鍣≒C鐨勫唴瀹癸紝鎺ㄥ叆鍫嗘爤淇濇姢璧锋潵锛屼互渚垮湪涓柇鏈嶅姟瀹屾瘯锛...
  • 涓柇澶勭悊杩囩▼鐨勪簲涓樁娈垫槸浠涔
    绛旓細- 涓柇璇锋眰瑙﹀彂鍣細姣忎釜涓柇婧愮殑涓柇璇锋眰淇″彿琚攣瀛樺苟淇濇寔锛岀洿鍒癈PU鍝嶅簲鍚庢墠娓呴櫎銆- 涓柇鍏佽瑙﹀彂鍣锛氬湪CPU鍐呴儴锛鎺у埗鏄惁鍏佽鍝嶅簲涓柇銆傞氬父CPU澶嶄綅鏃讹紝涓柇鍏佽瑙﹀彂鍣ㄨ缃负鍏充腑鏂2. 涓柇鍒や紭闃舵 - 纭欢鍒や紭锛氬埄鐢ㄤ笓闂ㄧ殑纭欢鐢佃矾纭畾涓柇婧愮殑浼樺厛绾с- 杞欢鍒や紭锛欳PU妫娴嬩腑鏂姹傚瘎瀛樺櫒鐨勫唴瀹癸紝鏍规嵁妫...
  • ...A.涓柇璇锋眰瑙﹀彂鍣 B.涓柇鍏佽瑙﹀彂鍣 C.涓柇灞忚斀瑙﹀彂鍣 D.涓柇...
    绛旓細銆愮瓟妗堛戯細B涓柇璇锋眰瑙﹀彂鍣ㄦ槸8259鍐呯殑IRR锛涗腑鏂睆钄借Е鍙戝櫒鏄8259鍐呯殑IMR锛涗綅浜CPU鍐呴儴鐨勬槸涓柇鍏佽瑙﹀彂鍣IF銆
  • 鍦涓柇绯荤粺涓璉NTR銆 JINT銆丒INT涓変釜瑙﹀彂鍣鍚勬湁浠涔堜綔鐢?
    绛旓細銆愮瓟妗堛戯細INTR鏄涓柇璇锋眰瑙﹀彂鍣锛屾瘡涓腑鏂簮閮藉搴斾竴涓狪NTR,褰撳叾涓衡1'鐘舵佹椂,琛ㄧず璇ヤ腑鏂簮鏈夎姹傘侲INT鏄鍏佽涓柇瑙﹀彂鍣,褰撳叾涓衡1鈥濇椂,琛ㄧずCPU鍏佽鍝嶅簲涓柇婧愮殑璇锋眰;褰撳叾涓衡0'鏃讹紝鎰忓懗鐫CPU绂佹鍝嶅簲涓柇銆侷NT 鏄腑鏂爣璁拌Е鍙戝櫒,褰撳叾涓衡1鈥濇椂,琛ㄧずCPU杩涘叆涓柇鍛ㄦ湡銆
  • 涓柇澶勭悊杩囩▼鐨勪簲涓樁娈垫槸浠涔
    绛旓細1.涓柇璇锋眰闃舵 1锛夊彂鐢熷湪CPU鍐呴儴鐨勪腑鏂紙鍐呴儴涓柇锛夛紝涓嶉渶瑕佷腑鏂姹傦紝CPU鍐呴儴鐨勪腑鏂帶鍒閫昏緫鐩存帴鎺ユ敹澶勭悊銆2锛夊閮ㄤ腑鏂姹傜敱涓柇婧愭彁鍑恒傚閮ㄤ腑鏂簮鍒╃敤CPU鐨勪腑鏂緭鍏ュ紩鑴 杈撳叆涓柇璇锋眰淇″彿銆備竴鑸珻PU璁炬湁涓や釜涓柇璇锋眰杈撳叆寮曡剼锛氬彲灞忚斀涓柇璇锋眰杈撳叆寮曡剼鍜屼笉鍙睆钄戒腑鏂姹傝緭鍏ュ紩鑴氥1.1涓柇璇锋眰瑙﹀彂鍣 姣忎釜...
  • 涓柇绯荤粺鏈夊摢浜瑙﹀彂鍣?
    绛旓細銆愮瓟妗堛戯細(1)INTR鈥斺斾腑鏂姹備俊鍙(杈撳叆)銆傚彲灞忚斀涓柇璇锋眰淇″彿锛岀數骞瑙﹀彂淇″彿銆傚湪姣忔潯鎸囦护鐨勬渶鍚庝竴涓椂閽熷懆鏈燂紝8086 CPU灏嗛噰鏍疯寮曡剼淇″彿锛岃嫢INTR涓洪珮鐢靛钩锛屽悓鏃8086 CPU鐨IF(涓柇鍏佽鏍囧織)涓衡1鈥濓紝鍒8086 CPU灏嗘墽琛屼竴涓腑鏂搷搴旀椂搴忥紝骞朵笖鎶鎺у埗杞Щ鍒扮浉搴旂殑涓柇鏈嶅姟绋嬪簭銆傚鏋淚F=鈥0鈥濓紝鍒8086涓...
  • 璁$畻鏈虹粍鎴愬師鐞嗗涔犻 涓柇鎺ュ彛涓湁鍝簺鏍囧織瑙﹀彂鍣?鍔熻兘鏄粈涔坃鐧惧害鐭 ...
    绛旓細锛2锛 鍏佽涓柇瑙﹀彂鍣锛圗I锛夛細鍙互鐢ㄧ▼搴忔寚浠ゆ潵缃綅銆侲I涓衡1鈥濇椂锛屾煇璁惧鍙互鍚CPU鍙戝嚭涓柇璇锋眰锛汦I涓衡0鈥濇椂锛屼笉鑳藉悜CPU鍙戝嚭涓柇璇锋眰锛岃繖鎰忓懗鐫鏌愪腑鏂簮鐨勪腑鏂姹傝绂佹銆傝缃瓻I鏍囧織鐨勭洰鐨勶紝灏辨槸閫氳繃杞欢鏉鎺у埗鏄惁鍏佽鏌愯澶囧彂鍑轰腑鏂姹傘傦紙3锛 涓柇璇锋眰瑙﹀彂鍣紙IR锛夛細瀹冩殏瀛樹腑鏂姹傜嚎涓婄敱璁惧...
  • 涓柇鏄浣曞憡鐭CPU鍘绘墽琛屽摢涓腑鏂嚱鏁扮殑
    绛旓細CPU鍐呴儴鏄腑鏂紑鏀剧殑銆傚湪CPU鍐呴儴鏈変竴涓腑鏂厑璁歌Е鍙戝櫒(IF)锛屽彧鏈夊綋瀹冧负鈥1鈥(鍗充腑鏂紑鏀)鏃讹紝CPU鎵嶈兘鍝嶅簲澶栭儴涓柇锛涘惁鍒欎腑鏂鍏抽棴锛屽嵆浣縄NTR涓婃湁涓柇璇锋眰锛孋PU涔熶笉鍝嶅簲銆涓柇鍏佽瑙﹀彂鍣ㄧ殑鐘舵侀氬父鐢盨TI鍜孋LI鎸囦护鏉ユ敼鍙(缃1鈥濇垨娓呪0鈥)銆傚綋CPU澶嶄綅鏃讹紝涓柇鍏佽瑙﹀彂鍣ㄨ娓呪0鈥濓紝鍗冲叧涓柇锛屾墍浠...
  • cpu涓殑涓柇婧愭槸鍏ㄥ弻鍔熻繕鏄崐鍙屽姛?
    绛旓細鏃跺垎鍙屽伐浼樼己鐐癸細鑳介珮鏁堢伒娲诲湴鍒╃敤鎵鏈夊彲鐢ㄥ甫瀹斤紱鍙姩鎬佸垎閰嶄笂涓嬭閾捐矾鐨勫閲忥紝瀹炵幇璧勬簮鍒嗛厤鐨勭伒娲绘э紱涓婁笅琛岄摼璺殑涓鑷存ц緝濂斤紱鍦ㄥ绉诲姩鍙扮殑鍙戝皠鍔熺巼杩涜鎺у埗鏃讹紝鍙互鐢ㄥ紑鐜姛鐜囨帶鍒舵潵鍙栦唬杈冧负澶嶆潅鐨勯棴鐜姛鐜囨帶鍒讹紱缂虹偣鏄疶DD绯荤粺鎵鎻愪緵鐨勭Щ鍔ㄦу拰瑕嗙洊鏈夐檺銆 棰戝垎鍙屽伐浼樼己鐐癸細涓や釜淇¢亾涔嬮棿瀛樺湪涓涓繚鎶ら娈碉紝...
  • 扩展阅读:电水壶外壳带电怎么办 ... 监控服务中断怎么恢复 ... 机器外壳带电什么原因 ... 设备正常但外壳带电 ... 设备外壳带电70多伏 ... 电扇外壳带电的原因 ... 中断屏蔽的作用有两个 ... 如何解决录音屏蔽器 ... system占用磁盘100% ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网