找回密码
 立即注册

QQ登录

只需一步,快速开始

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

计数器出错

[复制链接]
跳转到指定楼层
楼主
ID:74904 发表于 2015-3-21 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
触发一次,跳转好几个数。从网上下的计数程序。 求大侠赐教!涕零感激!
#include "reg52.h"
#define u8 unsigned char
#define u16 unsigned int
sbit sw1=P3^4;
sbit sw2=P3^5;
sbit sw3=P3^6;
sbit e0=P2^0;
sbit e1=P2^1;
sbit e2=P2^2;
sbit e3=P2^3;
u8 ds[4]={0,0,0,0};
u16 num=0;
u8 code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x00};
u8 ajsm()
{
    static u16 ms;
    if(sw3==0)
    {
        if(++ms==2)
        {
            return 1;
        }
    }
    else
    {
        ms=0;
    }
    return 0;
}
void xs()
{
    static u8 a;
    a++;
    if(a>3)a=0;
    e0=1;
    e1=1;
    e2=1;
    e3=1;
    P0=table[ds[a]];
    switch(a)
    {
        case 0:
        {
            e0=0;
            e1=1;
            e2=1;
            e3=1;
        }break;
        case 1:
        {
            e0=1;
            e1=0;
            e2=1;
            e3=1;
        }break;
        case 2:
        {
            e0=1;
            e1=1;
            e2=0;
            e3=1;
        }break;
        case 3:
        {
            e0=1;
            e1=1;
            e2=1;
            e3=0;
        }break;
    }
}
void main()
{
    TMOD=0x66;
    TH0=0xff;
    TL0=0xff;
    TH1=0xff;
    TL1=0xff;
    TR1=1;
    TR0=1;
    ET0=1;
    ET1=1;
    EA=1;
    while(1)
    {      
        ds[0]=num/1000%10;
        ds[1]=num/100%10;
        ds[2]=num/10%10;
        ds[3]=num%10;
        xs();
        if(ajsm())
        {
            num=0;
        }
   
    }
}
void time0()interrupt 1
{
    if(num<9999)num++;
}
void time1()interrupt 3
{
    if(num>0)num--;
}

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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