在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2302|回复: 3

[原创] 如何控制外部中段

[复制链接]
发表于 2010-4-26 22:19:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
写了个程序,但当外部中断时,只能显示以为数码管?我是用的74138  译码器控制

                               
登录/注册后可看大图
跑马灯.png
 楼主| 发表于 2010-4-26 22:21:10 | 显示全部楼层
我先把自己写的有问题程序
#include <reg52.h>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
                               0x66,0x6d,0x7d,0x07,
                               0x7f,0x6f,0x77,0x7c,
                               0x39,0x5e,0x79,0x71,0x00};
unsigned char code table[]={7,6,5,4,3,2,1,0};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt,tt;
sbit P32=P3^2;
void delay()
{
        for(tt=0;tt<=1000;tt++);
}  
void main()
{
  unsigned char i,j;
  
  TMOD=0x02;
  ET0=1;
  EA=1;
  second=0;
  P0=dispcode[second/10];
  P2=table[0];
  delay();
  P0=dispcode[second%10];
  P2=table[1];
  delay();
  while(1)
    {
      if(P32==0)
        {
          for(i=20;i>0;i--)
          for(j=248;j>0;j--);
          if(P32==0)
            {
              keycnt++;
              switch(keycnt)
                {
                  case 1:
                    TH0=0x06;
                    TL0=0x06;
                    TR0=1;
                    break;
                  case 2:
                    TR0=0;
                    break;
                  case 3:
                    keycnt=0;
                    second=0;
                      P0=dispcode[second/10];
                                          P2=table[0];
                                          delay();
                                          P0=dispcode[second%10];
                                          P2=table[1];
                                          delay();
                    break;
                }
              while(P32==0);
            }
        }
    }
}
  
void t0(void) interrupt 1 using 0
{
  tcnt++;
  if(tcnt==400)
    {
      tcnt=0;
      second++;
      if(second==100)
        {
          second=0;
        }
                       P0=dispcode[second/10];
                                          P2=table[0];
                                          delay();
                                          P0=dispcode[second%10];
                                          P2=table[1];
                                          delay();
    }
}
 楼主| 发表于 2010-5-31 15:41:19 | 显示全部楼层
(~ o ~)~zZ
发表于 2014-12-26 09:26:20 | 显示全部楼层
謝謝分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 04:40 , Processed in 0.025099 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表