找回密码
 立即注册

QQ登录

只需一步,快速开始

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

写了个按键外部中断的小程序,遇到点问题,各位看客进来瞧瞧

[复制链接]
跳转到指定楼层
楼主
函数功能:数码管(P2口)不断显示0~9,按K1(P3^2)暂停,K2(P3^3)继续。


问题有二:
(1)第一次按K1,暂停,K2开始。之后两个键均失效;
(2)按理说暂停-开始后数码管应该从暂停前的那个数继续显示,可实际上是从0重新开始计数。
请各位赐教,不胜感激。


代码和preteus图如下。
#include <reg52.h>
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管共阳编码
bit button=1;
bit jumpout=0;//低优先级中断跳出标志,用于暂停
void delay(int time)
{
    uchar i,j;
    for(i=0;i<time;i++)
        for(j=0;j<i;j++);
}

void int1()interrupt 1
{               
    jumpout=1;//低优先级跳出   
}
void int0()interrupt 0
{
    while(jumpout==0)//在此循环
    {
    }
    jumpout=0;//重新赋值,下次中断依然可以暂停循环   
}
void init()
{
    EA=1;
    IT0=0;//低电平沿触发
       EX0=1;
    PX0=0;//低优先级
    IT1=0;
    EX1=1;   
    PX1=1;//高优先级
}   
void main()
{
    uchar i;   
    init();
    while(1)
    {      
        //if(button==1)
        {
            for(i=0;i<10;i++)
            {
                P2=table[i];
                delay(250);
            }
        }
    }
}

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

使用道具 举报

沙发
ID:80732 发表于 2015-7-29 11:17 | 只看该作者
电路图,P0的数码管可忽略。

QQ截图20150729111651.png (10.89 KB, 下载次数: 91)

QQ截图20150729111651.png
回复

使用道具 举报

板凳
ID:80732 发表于 2015-7-29 12:32 | 只看该作者
解决了,自己粗心把外中断1写成了interrupt 1,应该是interrupt 2
回复

使用道具 举报

地板
ID:79544 发表于 2015-7-29 12:59 | 只看该作者
刘武豪 发表于 2015-7-29 12:32
解决了,自己粗心把外中断1写成了interrupt 1,应该是interrupt 2

外部中断1的向量号错误,应该是2.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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