单片机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); //亮黄灯的程序
为什么在中断之后程序没有返回中断前的程序
然后再输出:P0 = aa;。
在中断函数结束前,也执行:P0 = aa;,即可显示出来中断前的灯光。追问
什么意思 没弄明白 希望能够具体点
追答把你的程序,写出来,再把这句aa = 0x??,添上,即可。
参考技术A 程序不全,看不出问题在什么地方,这几段程序问题不大,不过一般不要在中断里面加延时。单片机怎么清中断标志位
希望给出具体的语句,谢谢
51单片机
下面是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的中断程序应该怎么写的主要内容,如果未能解决你的问题,请参考以下文章
Keil C51用C写单片机程序能不能像汇编那样跳转到任意地方?