单片机C51的中断程序应该怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机C51的中断程序应该怎么写相关的知识,希望对你有一定的参考价值。

在我按下开关按钮接P3^2的时候全亮黄灯,在按下P3^3的时候全亮黄灯这是我的程序
void INT_init (void)

EA = 1; //中断总开关
EX1 = 1; //允许外部中断1中断
EX0 = 1; //允许外部中断0中断
IT1 = 0; //1:下沿触发 0:低电平触发
IT0 = 0; //1:下沿触发 0:低电平触发

void INT_1(void) interrupt 2 using 2

P0=0x49;P2=0x15;
shu11=shu12=shu21=shu22=1;
delayms(100); //亮红灯的程序

void INT_0(void) interrupt 0 using 2

P0=0x12;P2=0x40;
shu11=shu12=shu21=shu22=1;
delayms(100); //亮黄灯的程序

为什么在中断之后程序没有返回中断前的程序

主函数,对接口输出前,应该先把数据写入一个全局变量,如 aa = 0x??。
然后再输出:P0 = aa;。

在中断函数结束前,也执行:P0 = aa;,即可显示出来中断前的灯光。追问

什么意思 没弄明白 希望能够具体点

追答

把你的程序,写出来,再把这句aa = 0x??,添上,即可。

参考技术A 程序不全,看不出问题在什么地方,这几段程序问题不大,不过一般不要在中断里面加延时。

单片机怎么清中断标志位

希望给出具体的语句,谢谢
51单片机

参考技术A 不知道你说的单片机是什么系列的.
下面是51单片机的汇编和C语言清除中断的语句。

汇编:
CLR IE0 ;清除外部中断INT0请求标志
CLR IE1 ;清除外部中断INT1请求标志
CLR TF0 ;清除定时器T0中断请求标志
CLR TF1 ;清除定时器T1中断请求标志
CLR RI ;串行通讯接收中断请求标志
CLR TI ;串行通讯发送中断请求标志

C语言:
IE0=0; //清除外部中断INT0请求标志
IE1=0; //清除外部中断INT1请求标志
TF0=0; //清除定时器T0中断请求标志
TF1=0; //清除定时器T1中断请求标志
RI=0; //串行通讯接收中断请求标志
TI=0; //串行通讯发送中断请求标志本回答被提问者采纳
参考技术B 有两种方法:
1、采用中断的方法,此方法是机器自己完成的(除去

串行口中断);
举例:
org 00h
sjmp main
org 0bh
sjmp t_0
org 30h
main:mov sp,#60h
mov ie,#82h
mov tmod,#01h
mov th0,#0b1h
mov tl0,#0e0h
setb tr0
sjmp $
t_0: mov tmod,#01h
mov th0,#0b1h
cpl p2.1
reti
end

2、采用查询的方法,此方需要人工加以相应的指令完

成;
org 00h
sjmp main
org 30h
main:mov sp,#60h
mov ie,#82h
mov tmod,#01h
mov th0,#0b1h
mov tl0,#0e0h
setb tr0
loop:jnb tr0,loop
clr tr0
mov th0,#0b1h
mov tl0,#0e0h
cpl p2.1
sjmp loop
end
参考技术C 还是很简单的 对中断寄存器操作就可以了 参考技术D 这个你只是找本书看看都有的.....不过不知道你的单干片机是51的还是AVR的/.....

以上是关于单片机C51的中断程序应该怎么写的主要内容,如果未能解决你的问题,请参考以下文章

请教高人C51单片机C语言中的中断优先级怎么设置?

51单片机中断 C语言?请教!

Keil C51用C写单片机程序能不能像汇编那样跳转到任意地方?

单片微机原理P2:80C51外部中断与定时器系统

51单片机c语言中断函数不能进行参数传递,是啥意思,谁能解释一下

c51单片机中断程序中的interrupt1,2,3是由啥决定的?