计算机的中断是指计算机运行过程中或纤,系统外部、系统内部或者现行程序本身出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行的过程。
中断过程包括:
①中断源发出中断请衫睁仿求;
②早启判断当前处理机是否允许中断和该中断源是否被屏蔽;
③优先权排队;
④处理机执行完当前指令或当前指令无法执行完,则立即停止当前程序,保护断点地址和处理机当前状态,转入相应的中断服务程序;
⑤执行中断服务程序;
⑥恢复被保护的状态,执行“中断返回”指令回到被中断的程序或转入其他程序。
上述过程中前四项 *** 作是由硬件完成的,后两项是由软件完成的。
中断全过程分简单概括为为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 中断子程序
...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)