计算机的中断看成什么样的过程?

计算机的中断看成什么样的过程?,第1张

计算机的中断是指计算机运行过程中或纤,系统外部、系统内部或者现行程序本身出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行的过程。

中断过程包括:

①中断源发出中断请衫睁仿求;

②早启判断当前处理机是否允许中断和该中断源是否被屏蔽;

③优先权排队;

④处理机执行完当前指令或当前指令无法执行完,则立即停止当前程序,保护断点地址和处理机当前状态,转入相应的中断服务程序;

⑤执行中断服务程序;

⑥恢复被保护的状态,执行“中断返回”指令回到被中断的程序或转入其他程序。

上述过程中前四项 *** 作是由硬件完成的,后两项是由软件完成的。

中断全过程分简单概括为为5个阶段:中断请求、中断判优、中断响应、中断处理和中断返回。

扩展资料:

计算机中断的作用:

(1)CPU与I/O设备并行工作;

(2)硬件故障处理;

(3)实现人机联系:在计算机工作过程中,如果用户要干预机器,如查看计算的中间结果,了解机器的工作状态,给机器下达临时性的命令等,在没有中断系统的计算机里这些功能几乎是无法实现的;

(4)实现多道程序和分时 *** 作;

(5)实现实时处理;

(6)实现应用程序和 *** 作系统的联系;

(7)多处理机系统各处理机间的联系。

只需要控制正转反转吗?不需要停止?

帮你改了一下,用!!!!!注释的。

你再看一看。

#include <msp430f6638.h>

void step(int p)

{

switch(p)

{

case 0:

{

P7OUT &=~ BIT4

P1OUT &=~ BIT2

P2OUT &=~ BIT2

P1OUT &=~ BIT4

P2OUT &=~ BIT3

break

}

case 1:

{

P7OUT |= BIT4

P1OUT |= BIT2

P2OUT &=~ BIT2

P1OUT &=~ BIT4

P2OUT &=~ BIT3

break//!!!!!!!!!!!!!!!!!!!!!!!!!!!

}

case 2:

{

P7OUT |= BIT4

P1OUT &=~ BIT2

P2OUT |= BIT2

P1OUT &=~ BIT4

P2OUT &=~ BIT3

break//!!!!!!!!!!!!!!!!!!!!!!!!!!!

}

case 3:

{

P7OUT |= BIT4

P1OUT &=~ BIT2

P2OUT &=~ BIT2

P1OUT |= BIT4

P2OUT &=~ BIT3

break

}

case 4:

{

P7OUT |=BIT4

P1OUT &=~ BIT2

P2OUT &=~ BIT2

P1OUT &=~ BIT4

P2OUT |= BIT3

break

}

default:

break

}

}

int main(void) {

WDTCTL = WDTPW | WDTHOLD// Stop watchdog timer

int flag=0

P4DIR |= BIT5// 设置P4.5 口方向为输败银闷出

P4DIR &= ~BIT0// P4.0 置为输入

P4REN |= BIT0// 使能P4.0 上察弯拉电阻

P4OUT |= BIT0// P4.0 口置高电平

P4IES |= BIT0// 中断沿设置(下降沿触发)

P4IFG &= ~BIT0// 清P4.0 中断标志

P4IE |= BIT0// 使能P4.0 口中断搏裂

__bis_SR_register(GIE)

P1DIR |= BIT2 + BIT4

P2DIR |= BIT2 + BIT3

P7DIR |= BIT4

P7OUT |= BIT4

int a=0

int b1[4]={1,3,2,4}

int b2[4]={1,4,2,3}

while(1)

{

if((P4IN&BIT0)==0)

{ //按键S7

__delay_cycles(160000)

if((P4IN&BIT0)==0)

{

flag=!flag//!!!!!!!!!!!!!!!!!!!!!!!!!!!

}

}

If(flag==1)

{

step(b1[a++])//正转

if (a>3)

a=0

P4DIR |= BIT5;

__delay_cycles(160000)

}

If(flag==0)

{

step(b2[a++])//反转

if (a>3)

a=0

__delay_cycles(160000)

}

// P4 中断函数

#pragma vector=PORT4_VECTOR

__interrupt void Port_4(void)

{

P4OUT ^= BIT5

P4IFG &= ~BIT0

}

一般在程序开头有中断子程序的入口处,在主程序里可以看到这些子程序的。标号名可以随差梁便取,但入口地址是固定的。

ORG 00H

AJMP MAIN

ORG 03H 外部中断0 入口地址

AJMP EX0INT跳转至外部中断0子程序

ORG 0BH

AJMP T0INT 定时中断没乎0

ORG 13H

AJMP EX1INT外枯庆悉部中断1

ORG 1BH

AJMP T1INT 定时中断1

ORG 23H

AJMP URT串口中断

MAIN:

...

EX0INT:外部中断0子程序

...

T0INT: 定时器0 中断子程序

...


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12557997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存