标题:
单片机学习笔记(六)中断实验
[打印本页]
作者:
51hei人人
时间:
2016-3-12 16:47
标题:
单片机学习笔记(六)中断实验
按下按键,数码管加1,用中断的方法
C语言源程序:
#include<reg52.h> //52单片机头文件包含
#define uint unsigned int //定义宏uint 为 unsigned int
#define uchar unsigned char //定义宏unchar为unsigned char
sbit wei1=P2^0;//数码管第一位
sbit key1=P3^2;//中断端口
uchar code table[]={0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E};//共阳数码管码表
uchar num;//定义无符号字符变量 num
void delay(uint z);//延时函数声明
void led_show(uchar tem);//显示函数声明
void main() //主函数
{
num=0;//给num赋值为0
IT0=0;//中断以低电频方式触发
EX0=1;//打开外部中断0
EA=1;//总中断断开
wei1=0;//允许数码管第一位显示
while(1) //主循环开始
{
led_show(num);//不断显示num的值
}
}
void EX0_Int() interrupt 0 //中断函数 interrupt代表中断入口为0号中断
{
EX0=0; //关闭中断0
num=(num+1)%16;//循环将num的值加1(0-15之间变化)
while(!key1);//按键是否松开
delay(5);//延时5ms
while(!key1);//再次确认按键是否松开
EX0=1;//再次打开中断 接受输入
}
void delay(uint z) //延时函数
{
uint x,y;//定义无符号整型变量x,y
for(x=z;x>0;x--)//主循环循环z次
for(y=110;y>0;y--);//子循环循环110次
}
void led_show(uchar temp)//数码管显示函数
{
P0=table[temp]; //将码表值送给P0 显示数字
delay(5); //延时5ms
}
//实验结果 按下P3^2对应的按键 num的值加1 数码管的值更新显示加1
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1