欢迎来到天天文库
浏览记录
ID:57294760
大小:107.50 KB
页数:22页
时间:2020-08-10
《单片机C语言第4章中断系统的C51编程课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4.3外部中断源的C51编程51单片机提供了2个外部中断源:外部中断0请求,占用P3.2引脚,其中断请求号为0。外部中断1请求,占用P3.3引脚,其中断请求号为2。外部中断源的初始化时通过设置相应的特殊功能寄存器的相应位来实现的。(1)TCON寄存器中的IT0、IT1位外部中断0和外部中断1的中断触发方式控制位。如:IT0=0;//外部中断0为电平触发方式IT1=1;//外部中断1为脉冲触发方式(2)IP寄存器中的PX0、PX1位外部中断0和外部中断1的中断优先级的设定。如:PX0=0;//设定外部中断0为低级
2、中断PX1=1;//设定外部中断1为高级中断4.3.1外部中断源的初始化(3)IE寄存器中的EA、EX0、EX1位EA为中断允许总控制位;EX0、EX1为外部中断0中断和外部中断1中断的中断允许位。如:EA=1;//开放总的中断控制EX0=1;//允许外部中断0中断EX1=0;//禁止外部中断1中断【例4-1】初始状态时低4位灯亮,高4位的灯灭,编程实现按一下S0,P1口的发光状态发生反转。#includevoidmain(){P1=0XF0;//高4位灭、低4位亮IT1=1;//脉冲触发方式
3、EA=1;EX1=1;//开放相应的中断while(1);//等待中断}voidwint0(void)interrupt2//外部中断1{P1=~P1;}【例4-2】利用S0按钮控制P1口的灯,要求每按一下就点亮一盏灯(其余的灯是灭的)。#include#include//内部函数bitflag;//中断标志unsignedcharledstatus;voidwint1()interrupt2{flag=1;}voidmain(void){P1=0xff;ledstatu
4、s=0xfe;IT1=1;EA=1;EX1=1;while(1){if(flag){P1=ledstatus;ledstatus=_crol_(ledstatus,1);flag=0;}}}修改:利用S0按钮控制P1口的灯,要求每按一下就点亮一盏灯(其余的灯保持亮的状态).。【例4-3】当S0动作时,P1.0端口的电平反向,当外S1动作,P1.7端口的电平反向。#includesbitLED0=P1^0;sbitLED7=P1^7;voidIS0(void)interrupt0//外部中断0{
5、LED0=~LED0;}voidIS1(void)interrupt2//外部中断1{LED7=~LED7;}voidmain(){P1=0xFF;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;while(1);}修改:(1)S0控制P1.0—P1.3的灯,S1控制P1.4—P1.7的灯。(2)按下S0后,点亮8只LED;按下S1后,变为闪烁状态。【例4-4】P1口控制的灯按一定的频率闪烁,S0动作,实现单灯左移,而左移3圈结束。#include#defineLEDP1//定义LE
6、D接至P1voiddelay1ms(int);//声明延迟函数voidleft(int);//声明单灯左移函数main(){IE=0x81;//准许INT0中断LED=0x00;//初值=00000000,灯全亮while(1)//无穷循环,程序一直跑{delay1ms(250);//延迟250*1m=0.25sLED=~LED;//LED反相}}/*INT0的中断子程序-单灯左移3圈*/voidmy_int0(void)interrupt0{unsignedsaveLED=LED;//储存中断前LED状态le
7、ft(3);//单灯左移3圈LED=saveLED;//写回中断前LED状态}/*延迟函数,延迟约x1ms*/voiddelay1ms(intx){inti,j;//声明整数变数i,jfor(i=0;i8、1110,最右灯亮for(j=0;j<7;j++)//j循环,左移7次{delay1ms(250);LED=(LED<<1)9、0x01;//左移1位後,LSB设为1}delay1ms(250);}}修改:外部中断1,右移动3圈。【例4-5】首先通过P1.7口点亮发光二极管D1,然后外部输入一脉冲串,则发光二极管D1亮、暗交替。#includesbitP1_7=P1^7
8、1110,最右灯亮for(j=0;j<7;j++)//j循环,左移7次{delay1ms(250);LED=(LED<<1)
9、0x01;//左移1位後,LSB设为1}delay1ms(250);}}修改:外部中断1,右移动3圈。【例4-5】首先通过P1.7口点亮发光二极管D1,然后外部输入一脉冲串,则发光二极管D1亮、暗交替。#includesbitP1_7=P1^7
此文档下载收益归作者所有