litchiate 发表于 2008-3-26 22:07:08

电脑里翻出来的,51的频率计,用的数码管显示,作者不明

翻翻电脑看到了这个东西。。

发来给大家看看。。

作者不明,大概以前别的论坛找的。。

1http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_239580.JPG


点击此处下载ourdev_239575.rar(文件大小:58K)

litchiate 发表于 2008-3-26 22:18:03

//****12mhz***////       
#include"reg52.h"
#define uchar unsigned char
#define uintunsigned int

uchar codetv[]={0xfe,0xfd,0xfb,0xf7};
uchar codea[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchardataled;
uint   datafre;
ucharcnt;

       
void delay(void)
{
        uint i;
        for(i=0;i<10;i++);
}


void led_show(void)
{
        uchar k,i;
    led=fre%10;
    led=fre/10%10;
        led=fre/100%10;
        led=fre/1000;
       
        for(k=0;k<4;k++)
                {
                        P2=tv;
                  i=led;
                  P0=a;
                  delay();
          }
}

/********************50ms*********************************************/

void Timer_Init (void)
{
        TMOD=0x51;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    ET1=1;

}

void T0_ISP(void) interrupt 1
{
        cnt++;
        if (cnt==20)
        {
                cnt=0;
          EA=0;
          fre=TL1+(TH1<<8);   //体会为什么要这样写呢?TH1是计数高8位,TL1是低8位,这个16位数分2部分存放,
          EA=1;                //高8位和低8位进制是256。这里写成这样也可以fre=TH1*256+TL1
          TL1=0;
          TH1=0;
        }
          TH0=(65536-50000)/256;//注;为什么要在这里附上TH0,TL0的初值。(减小误差)
      TL0=(65536-50000)%256;
}

void main()
{
        uint i;
        Timer_Init();
        TR0=1;
        TR1=1;


    while(1)
    {
                for(i=0;i<20;i++)
                {
                        led_show();
          }
    }
}

qzhyjd 发表于 2008-4-12 23:42:20

收藏了,谢谢!!

finak47 发表于 2008-6-24 19:42:06

顶,找了好久了,谢谢~

twd3621576 发表于 2009-4-6 12:45:06

fre=TL1+(TH1<<8);   //体会为什么要这样写呢?TH1是计数高8位,TL1是低8位,这个16位数分2部分存放,

这句我觉得有错误 TH1 是 8位的 不能向又移 应该要一个 16位的中间变量转化下才行把

这只是个人看法有兴趣加我QQ 讨论   QQ: 306119166 啊东

littlepig 发表于 2009-4-18 10:34:29

very good!
thanks

praction 发表于 2009-4-23 08:38:15

为什么TMOD 0x51的时候计数器1还能工作呢,有谁能指教一下啊

tianhuang123 发表于 2009-8-19 18:33:53

很黄很暴力!

deiwgah 发表于 2009-8-19 19:53:20

留个记号

21006091 发表于 2009-8-19 22:13:41

马克

luld 发表于 2009-8-19 23:48:10

记号

backup 发表于 2009-8-23 08:55:57

感谢分享!

xyq4513 发表于 2009-9-10 13:13:13

感谢分享! mark

beiguoqishi 发表于 2010-8-12 17:10:20

好资源,正需要顶一个!!

rqzzx 发表于 2011-4-14 16:34:35

感谢分享

szy19811114 发表于 2011-4-14 17:36:41

MARK

cuikai12345 发表于 2011-4-14 18:51:08

mark

wqsyx 发表于 2011-4-21 18:06:14

不知道用什么打开

ledatou 发表于 2011-5-1 10:41:41

先mark。再学习

chenfuen 发表于 2011-7-27 15:46:29

回复【17楼】wqsyx
不知道用什么打开
-----------------------------------------------------------------------

PROTEUS

ayumi8 发表于 2011-11-1 15:10:26

貌似只能测试到10K 啊?????????????

OyutianO 发表于 2011-11-14 10:42:40

非常感谢 正是我所需要的

hzwl2007 发表于 2011-11-14 15:37:32

谢谢

baobaocunzhang 发表于 2011-11-18 21:14:43

谢谢,分享
页: [1]
查看完整版本: 电脑里翻出来的,51的频率计,用的数码管显示,作者不明