回覆列表
  • 1 # 使用者5395983585097

    #include

    sbit AA=P0^7;//數碼管顯示用IO埠

    sbit BB=P0^6;

    sbit CC=P0^5;

    sbit DD=P0^4;

    sbit K1=P3^2;

    sbit K2=P3^5;

    sbit K3=P3^7;

    int s,m;

    char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};

    void YS(int x); //延遲函式宣告

    void XS(int d); //顯示函式宣告

    void main()

    {

    s=m=0;

    TMOD=0x01;//設定定時器工作方式

    TH0=(65536-1000)/256;//1毫秒

    TL0=(65536-1000)%256;//定時器裝初始值

    EA=1;//開總中斷

    ET0=1;//開定時器 0 的中斷

    while(1)

    {

    XS(s); //顯示

    if(K1==0){ TR0=1; }//開啟定時器,開始計時

    if(K2==0){ TR0=0; }//關閉定時器,暫停計時

    if(K3==0){ s=m=0; }//清空資料

    }

    }

    void YS(int x) //延遲子函式

    {

    int y;

    for(;x>0;x--)

    for(y=100;y>0;y--);

    }

    void XS(int d) //顯示子函式

    {

    char d1,d2,d3,d4;

    d4=d%10; //取個位 %求餘

    d3=(d/10)%10; //取十位

    d2=(d/100)%10;

    d1=(d/1000)%10;

    P2=table[d4]; AA=0; YS(1); AA=1;//個位顯示

    P2=table[d3]; BB=0; YS(1); BB=1;//十位顯示

    P2=table[d2]; CC=0; YS(1); CC=1;//百位顯示

    P2=table[d1]; DD=0; YS(1); DD=1;//千位顯示

    }

    void timer() interrupt 1 //中斷處理子函式

    {

    TH0=(65536-922)/256;//1毫秒

    TL0=(65536-922)%256;

    m++;

    if(m>=10) //判斷定時是否到達1s 即 1000 ms

    { m=0; s++; }

    if(s>=9999) //判斷定時是否到達1s 即 1000 ms

    { s=0; }

    }

    絕對可用的,你試試吧,可能我的程式埠與你的不一樣,自己改一下就可以了

  • 中秋節和大豐收的關聯?
  • 沂蒙炒雞怎麼做?