实验三 外部中断实验
一、实验目的
1. 掌握51单片机外部中断的应用。
2. 掌握中断函数的写法。
3. 掌握LED数码管的显示。
二、实验内容
1. 用外部中断改变流水灯的方式。
2. 用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。
三、电路图
四、实验步骤说明
1. 用外部中断改变流水灯的方式。
中断前:实验板上P00~P07的8个显示灯全亮。
外部中断1:实验板上P00~P07的左右4个显示灯闪烁循环8次。
外部中断0:实验板上P00~P07的8个显示灯依次循环点亮。
中断的方式:用导线连接AT89S52芯片P3.2管脚和地。
改变触发方式、中断优先级和保护现场,观察运行结果
2. 用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。
跳变信号由P3.0给出(提示:P3_0=1;延时;P3_0=0),跳变信号加之管脚P3.2。实验时,可用导线将AT89S52芯片P3.0和P3.2管脚相连即可。
实验板XL400的8位数码管:
0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff为0,1,2,3,4,5,6,7,8,9,关显示,数码管码表。0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe 为8位数码管位选码。这里取P2=0xfe。
实验报告格式
实验三 外部中断实验
学院: 专业: 年级: 实验时间:
姓名: 学号: 指导教师:
一、实验目的
1. 掌握51单片机外部中断的应用。
2. 掌握中断函数的写法。
3. 掌握LED数码管的显示。
4. 掌握XL400实验板的使用。
二、实验内容
1. 用外部中断改变流水灯的方式。
2. 用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。
三、电路图(贴Proteus仿真图)
四、程序与注释
1)程序1(调试下列程序,在错误行后面注明错误及改正方法)
#include <reg51.h>
#define uint unsigned int;
//void delay(uint);
void main()
{
EA=1;
EX0=1;
EX1=0;
while(1)
{
P0=0x00
}
}
void int0() interrupt 0
{
uint a,b
b=P0;
P0=0x0f;
for(a=0;a<16;a++)
{
P0=~P0;
delay(1000);
}
P0=b;
}
void int1() interrupt 1
{
uint a,b;
b=P0;
P0=0xfe;
for(a=0;a<8;a++)
{
delay(1000);
P0=_crol_(P0,1);
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
}
2)程序2
五、实验现象记录
六、简答题
1)电平触发和下降沿触发在程序中如何设置?
2)如何设置INT1为优先级?何谓优先?
3)中断服务函数的interrupt后面的数字表示什么?
七、体会
第二篇:实验三——两个外部中断的使用
实验三——两个外部中断的使用
/*
作者:熊培庆
时间:20##年10月
功能:两个外部中断的使用
*/
#include <REG52.H>
sbit yell=P2^0;
sbit gree=P2^1;
sbit red=P2^2;
void delay (int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=0;j<240;j++);
}
void main()
{
IE=0x85;
IP=0x04;
TCON=0x05;
while(1)
{
yell=~yell;
delay(200);
}
}
void intt0() interrupt 0
{
char i;
yell=1;
red =0;
gree=1;
for(i=0;i<10;i++)
{
delay(200);
red=~red;
}
red =1;
}
void intt1() interrupt 2
{
char i;
yell=1;
gree =0;
red =1;
for(i=0;i<10;i++)
{
delay(200);
gree=~gree;
}
gree =1;
}