找回密码
 立即注册

QQ登录

只需一步,快速开始

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

模式转换 出不了效果 求大神帮忙看看

[复制链接]
跳转到指定楼层
楼主
#include<at89x52.h>
#define uchar unsigned char
#define uint unsigned int
sbit Ked1=P2^0;
sbit Ked2=P2^1;
sbit Ked3=P2^2;
sbit Ked4=P2^3;
sbit Ked5=P2^4;
uint tt=20;
uint count;
uint k,h,m,w;
uint model=0;
uint t=0;
uint f=0;
uchar a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar b[8]={0x7e,0xbd,0xdb,0xe7,0x7e,0xbd,0xdb,0xe7};
uchar c[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f};
uchar d[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
void delay_ms(uint x) //延时程序
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}
void huayang1()
{
if(f<8)
{
        if(count>=tt)
        {
                count=0;
                P0=b[f];
                f++;
        }               
}
        else
        {
                model=1;
        }
}
void huayang2()
{
        if(m<8)
        {
                if(count>=tt)
                {
                        count=0;
                        P0=c[m];
                        m++;
                }               
        }
        else
        {
                model=2;
        }
}
void huayang3()
{
        if(w<8)
        {
                if(count>=tt)
                {
                        count=0;
                        P0=d[w];
                        w++;
                }               
        }
        else
        {
                model=1;
        }
}
void Key_velocity()
{       
        if(0==Ked1)
        {
                delay_ms(10);
                if(0==Ked1)
                {
                        while(0==Ked1);
                        tt=20;       
                }
        }
        if(0==Ked2)
        {
                delay_ms(10);
                if(0==Ked2)
                {
                        while(0==Ked2);
                        tt=80;       
                }
        }

}
void Key_mode()
{
        if(Ked3==0)
        {
                delay_ms(10);
                if(Ked3==0)
                {
                        model=0;
                }
        }
        if(Ked4==0)
        {
                delay_ms(10);
                if(Ked4==0)
                {
                        model=1;
                }
        }
        if(Ked5==0)
        {
                delay_ms(10);
                if(Ked5==0)
                {
                        model=2;
                }
        }

}
void main()                                   //主函数
{       
        TMOD=0x01;                                           //定时器0工作在方式1下
        TH0=(65535-10000)/256;
        TL0=(65535-10000)%256;                          
        TR0=1;                                          
        ET0=1;       
        EX0=1;                                  
        EA=1;                                                                      
        while(1)
        {
                Key_velocity();
                switch(model)
                {
                        case 0:huayang1();break;
                        case 1:huayang2();break;
                        case 2:huayang3();break;
                }
        }
                               
}
void int0() interrupt 0
{
        Key_mode();
}
void timer_0() interrupt 1
{
        TH0=(65535-10000)/256;
        TL0=(65535-10000)%256;
        count++;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:57338 发表于 2013-12-30 19:35 | 只看该作者
这个是我的流程图

流程图.png (9.69 KB, 下载次数: 50)

流程图.png
回复

使用道具 举报

板凳
ID:57338 发表于 2013-12-30 19:36 | 只看该作者
流程中中断实现不了
回复

使用道具 举报

地板
ID:57338 发表于 2013-12-30 19:46 | 只看该作者
我刚刚按键按了一下 发现要模式跑完才可以中断怎么样才可以没跑完就去跑中断里的程序
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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