概述
一、实验内容
通过P1.0端口以1HZ的频率输出信号,使用该信号点亮一个LED指示灯,并将信号接入到INT1,统计中断的次数。将中断的次数通过两个七段数码管采用十进制显示出来。当超过99次后,清零并重新计数。
二、实验目的
进一步掌握8051外部中断的使用和编程方法
了解七段数码显示数字的原理
掌握用一个段锁存器、一个位锁存器同时显示多位数字的技术
三、实验设备
DELL台式机 、keilC51版本7、proteus版本6
四、实验电路图
五、程序流程图
六、程序源码
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//0~9的数字编码,最后一位黑屏
uchar code DSY_CODE[]=
{ 0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f
};
//计数器值分解后的各代显数位
uchar Display_Buffer[]={0,0};
uint Count=0;
uint Number=0;
sbit P1_0=P1^0;
void main()
{
EA=1;ET0=1;EX1=1;//打开中断总控,T0允许,INT1允许
TMOD=0x00;//设置T0工作方式0
IT1=1;//INT1下降沿触发
TH0=(8192-5000)/32;//5ms定时
TL0=(8192-5000)%32;
TR0=1;//启动TR0
while(1);
}
void LED_Flash()interrupt 1
{
TH0=(8192-5000)/32;//5ms定时
TL0=(8192-5000)%32;
if(++Count==100)//5ms*100=0.5s,实现0.5s定时开关LED
{
P1_0=~P1_0;
Count=0;
}
}
void EX_INT1()interrupt 2
{
//显示数码管
Number=(Number+1)%100;
Display_Buffer[1]=Number/10;
Display_Buffer[0]=Number%10;
P0=DSY_CODE[Display_Buffer[1]];
P2=DSY_CODE[Display_Buffer[0]];
}
最后
以上就是包容毛衣为你收集整理的(单片机原理与应用)外部中断设计实验的全部内容,希望文章能够帮你解决(单片机原理与应用)外部中断设计实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复