中断的使用

对于飞思卡尔codewarrior的中断使用,一般有3种方法:

 

1.把#pragma TRAP_PROC放在中断程序前面,并把中断向量表放到*.prm。

 

例如:

#pragma TRAP_PROC

void PIT1(void)

{

      //your code

 

}

 

2.或者使用关键词interrupt,并把向量表加入*.prm。

 

例如:

interrupt void intPIT1(void)

{

      //your code

}

 

 

向量表的首地址放入*.prm

 

例如:

//VECTOR ADDRESS 0xFFEA Int_ico2  //输入捕捉中断 pt2,pt3=0xffe8
//VECTOR ADDRESS 0xFFD6 Sci0ReceiveISP  //串口接收中断入口

 

3.在定义中断程序的时候使用关键词interrupt并把特定的中断向量号放在后面,这种方法不需要在*.prm中更改任何东西。

 

例如:

 void interrupt 66 PIT0(void)

{

      //your code

}

 

 

 

 

51单片机中断是指在程序执行过程中,当某个特定的事件发生时,CPU会暂时中断正在执行的程序,转而执行一个特定的中断服务程序,处理完中断后再返回原程序继续执行。下面是一个51单片机中断使用案例: ```c #include <reg51.h> // 中断服务函数 void timer0_isr() interrupt 1 { static unsigned char count = 0; TH0 = 0xFC; // 设置定时器初值 TL0 = 0x67; count++; if (count == 20) { // 计数到20,即1秒 count = 0; P0++; // P0引脚加1 } } void main() { TMOD = 0x01; // 定时器0,工作方式1 TH0 = 0xFC; // 设置定时器初值 TL0 = 0x67; ET0 = 1; // 允许定时器0中断 EA = 1; // 允许总中断 TR0 = 1; // 启动定时器0 while (1) { // 程序主循环,可以进行其他操作 } } ``` 该程序通过定时器0中断实现了每隔1秒钟P0引脚加1的功能。在main函数中,首先设置定时器0的工作方式为1,然后设置定时器初值,并允许定时器0中断和总中断,最后启动定时器0。在timer0_isr函数中,每当定时器0中断发生时,就将计数器count加1,当计数器count累加到20时,即1秒钟,就将计数器count清零,并将P0引脚加1。程序主循环中可以进行其他操作,不影响定时器中断的执行。 这是一个简单的51单片机中断使用案例,通过中断可以实现更加复杂的功能,如外部中断、串口中断等。中断可以提高程序效率,降低CPU的负载,是51单片机编程中常用的技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值