外部中断控制
时间:08-25
来源:互联网
点击:
#includereg51.h> unsigned char flag=0; sbit p33=P3^3; unsigned char code port3[4][4]= { 0x28,0x28,0x28,0x28, 0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29, }; unsigned char code port1[4][4]= { 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x20,0x20,0x20,0x20, 0x24,0x24,0x24,0x24, }; main() { unsigned char i; unsigned int j,count=0; EA=1; //总中断允许 IT0=1; //脉冲触发方式,下降沿有效 EX0=1; //外中断0允许 while(1) { while(1) { if(flag==1) break; } flag=0; for(i=0;i4;i++) { while(1) { for(j=0;j4;j++) { P3=port3[j]; P1=port1[j]; } if(++count==8000) {count=0;break;} } } p33=0; //本单片机效果走完,改变p33,使下一单片机,外部中断0下降沿触发} } void int0(void) interrupt 0 { flag=1; }
对程序稍加修改,昨天的程序,灯有点乱亮。
上电马上中断:由于单片机复位后,各IO口为高电平。我给发中断信号的单片机,程序起始就给下一个中断入口置低电平,所以上电后,下一个单片机进入中断了。
渐变:本程序为四个亮度等级。第一行不断轮流循环执行了8000次。
break跳出整个循环。continue跳出本次循环,重新执行下一循环。goto语句应尽量少用,通常与if连用,跳到对应标号处执行
以下为发送中断单片机的程序,没有完成想要的效果。
#includereg51.h>sbit p33=P3^3;unsigned int count=0;main() {p33=0;EA=1; //总中断允许IT0=1; //脉冲触发方式,下降沿有效EX0=1; while(1){;}}void int0(void) interrupt 0{p33=1;p33=0;}
前一个单片机输出p33,接后一单片机外部中断0输入p32
单片机为2051
- 基于单片机通用引脚的软件UART设计(10-16)
- 基于ATmega162的智能仪器设计(08-18)
- AT89S51与AT89C2051单片机引脚介绍(12-03)
- 用89C2051控制的简易拨号报警器(12-03)
- 利用2051单片机烧录24C02,04,08,16(11-30)
- AT89C2051单片机超声波测距系统硬件原理(11-30)