51单片机while外部中断加while就不好使了

51单片机的中断0和1同时使用,怎么重复执行_51单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:51,938贴子:
51单片机的中断0和1同时使用,怎么重复执行收藏
我用了K3和K4控制两个中断0和1,中断0是让灯反转,中断1是让灯关闭,命令如下。我如果先按K3(中断0),灯是可以反转的,然后我再按K4(中断1),灯熄灭,但是我再按K3的时候灯不亮(我预想的应该是让灯反转,就是让灯点亮)。我如果先按K4灯熄灭,但是按K3灯无反应(我预想的应该是让灯反转,就是让灯点亮)。程序如下,本人刚入门。#include &reg52.h&typedef unsigned char u8;typedef unsigned int u16;
sbit led=P2^0;
sbit k3=P3^2;
sbit k4=P3^3;void delay(u16 i){
while(i--);}void int0into(){
}void main(){
int0into();
while(1);}void int0 () interrupt 0 {
delay(1000);
}}void int1 ()
delay(1000);
专业从事单片机开发的生产,具有高品质的研发团队和设备,产品高品质保证,10年生产开发经验,深受国内外合作伙伴信赖,你的明智选择!!
外部中断1中断函数里的while(1)不能要啊,否则你跳不出这个中断函数啊
看签名有偿
应该可以跳出吧
登录百度帐号推荐应用外部中断反应慢,不知为什么,请各位大神指点一二【51单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:51,938贴子:
外部中断反应慢,不知为什么,请各位大神指点一二收藏
这是一个倒计时程序先设置初值矩阵键盘1,2,3,4可以调整分秒加减k3, k4分别接到了外部中断0和外部中断1,k3开始倒计时,k4暂停,暂停后可以设置初值。只用了一个外部中断 外部中断0,程序问题是 按下k3后,要好长时间才会开始倒计时。看了好多天了,不知问题在哪,请各位前辈赐教程序如下#include&reg51.h&#define keys P1#define gpio_dig P0sbit lsa=P2^2;sbit lsb=P2^3;sbit lsc=P2^4;sbit k3=P3^2;sbit k4=P3^3;void delay(unsigned char a);void keycheck();void digchoose();void timeconfiguration();void intconfiguration();unsigned char Tunsigned int clook=100;unsigned char keyvalue,i,j;unsigned int dig[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void main(){timeconfiguration();intconfiguration();Time=0;while(1){keyvalue=4;keycheck();switch(keyvalue){case(0):clook++;case(1):clook--;case(2):clook+=60;case(3):clook-=60;case(4):clook+=0;}if(clook==-1){clook=0;}for(j=1;j&=4;j++){digchoose();gpio_dig=dig[i];t=10;while(t&0)t--;gpio_dig=0x00;}}}void delay(unsigned char a){unsigned char b,c;for(;a&0;a--)for(b=22;b&0;b--)for(c=22;c&0;c--);}void keycheck(){unsigned t=0;keys=0x0f;if(keys!=0x0f){delay(5);if(keys!=0x0f){switch(keys){case(0x07):keyvalue=0;case(0x0b):keyvalue=1;case(0x0d):keyvalue=2;case(0x0e):keyvalue=3;}keys=0xf0;switch(keys){case(0x70):keyvalue+=0;case(0xb0):keyvalue+=4;case(0xd0):keyvalue+=8;case(0xe0):keyvalue+=12;}while((t&=50)&&(keys!=0xf0)){delay(5);t++;}}}}void digchoose(){switch(j){case(1):lsa=0;lsb=0;lsc=0;i=(clook%60)%10;case(2):lsa=1;lsb=0;lsc=0;i=(clook%60)/10;case(3):lsa=0;lsb=1;lsc=0;i=(clook/60)%10;case(4):lsa=1;lsb=1;lsc=0;i=clook/600;}}void timeconfiguration(){TMOD=0X01;TH0=0X3C;TL0=0XB0;EA=1;ET0=1;TR0=1;PT0=1;}void intconfiguration(){IT0=1;EX0=1;EA=1;PX0=0;}void int0() interrupt 0{unsigned char m,k=10;if(k3==0){while((k3!=0)&&(k&0))k--;while(1){if(Time==20){clook--;Time=0;}for(j=1;j&=4;j++){digchoose();gpio_dig=dig[i];m=10;while(m&0)m--;gpio_dig=0x00;}if(k4==0){}}}}void timer() interrupt 1{TH0=0X3C;TL0=0XB0;Time++;}
专业从事单片机开发的生产,具有高品质的研发团队和设备,产品高品质保证,10年生产开发经验,深受国内外合作伙伴信赖,你的明智选择!!
问题有点多,已经不知道从哪里说起了
登录百度帐号推荐应用

我要回帖

更多关于 单片机while的用法 的文章

 

随机推荐