找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3982|回复: 0
打印 上一主题 下一主题
收起左侧

单片机学习笔记(六)中断实验

[复制链接]
跳转到指定楼层
楼主
ID:108531 发表于 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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表