c語言秒錶程式,C語言秒錶程式

2021-12-25 02:11:10 字數 6083 閱讀 1971

1樓:手機使用者

下面程式你試下,延時函式自己加一下,幾毫秒到幾十毫秒#include"reg51.h"unsigned char i,j,m,xa[4];unsigned char table1[]={0x01,0x02,0x04,0x08};unsigned char table2[]={0x3fev0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};main(){tmod=0x01;tf0=1;tr0=1;ie=0x82; ex0=1;m=0;while(1)               {                       for(j=0;j<4;j++)                       {            p0=table1[j];            x=a[j];            p1=table2[x];                         delay(); //這裡加個幾毫秒的延時,函式體自己寫下                       }}   }timer1() interrupt 1{      th0=0x3c;   tl0=0xb0;   i++;   if(i==20)   {      i=0;      m++;      a[3]=m/1000;      a[2]=m/100%10;      a[1]=m/10%10;      a[0]=m%10;      }}

2樓:cindere鞡

你好:你貼出的程式很少會有人認真仔細地幫你分析。

我給你一的我的秒錶程式,有開始、停止、清零的功能,計時時間精確到小數後兩位。

希望我的回答能幫助到你。

3樓:匿名使用者

這**太亂了,。。。。不規整.

有誰可以用c語言編一個 0到59秒迴圈的秒錶的程式

4樓:匿名使用者

#include

#include

#include

int main()

}system("pause");

}純手打 希望採納,程式已測試可直接用!

5樓:不傻不笨不弱智

#include

#include

int main()}

微控制器秒錶計時器c語言程式圖 需要圖和程式

6樓:匿名使用者

#include// 時鐘與秒錶

#define uchar unsigned char

#define uint unsigned int

sbit qingling=p1^0;    //清零

sbit tiaofen=p1^1;    //調分

sbit tiaoshi=p1^2;    //調時

sbit sounder=p1^7;    //naozhong

uint a,b;

uchar hour,minu,sec,     //時鐘

hour0,minu0,sec0,  //秒錶

hour1,minu1,sec1;

h1,h2,m1,m2,s1,s2, //顯示位

k,s;     //狀態轉換標誌

uchar code select=;

uchar code table=;

/*****************函式宣告***********************/

void keyscan();

void init();

void delay(uchar z);

void display(uchar,uchar,uchar);

void sounde();

/*****************主函式*************************/

void main()

init();

while(1)

while(tr1)

keyscan();  // 掃描函式

while(s==1) // s是狀態標誌,當s=0時,鬧鐘取消。s=1時,設定鬧鐘時間

//(也是通過調時,調分函式);

{         //s=2時,鬧鐘工作,時間與設定時刻一致時,鬧鐘響

// (一分鐘後自動關閉,可手動關閉)。再次切換,s=0.

keyscan(); //s狀態切換(0-》1-》2-》0)通過外部中斷1實現。

display(hour1,minu1,sec1); //鬧鐘時刻顯示

display(hour0,minu0,sec0);//時鐘表顯示

while(k)  /*k是秒錶狀態(0-》1-》2-》0)通過外部中斷0實現。

0秒錶關;1秒錶從零計時;2秒錶停,顯示計時時間*/

display(hour,minu,sec);  //秒錶顯示

/*****************初始化函式***********************/

void init()

a=0;

b=0;

k=0;

s=0;

hour0=0;

minu0=0;

sec0=0;

hour=0;

minu=0;

sec=0;

hour1=0;

minu1=0;

sec1=0;

tmod=0x11;          //定時器0,1工作於方式1;賦初值

th0=(65536-5000)/256;

tl0=(65536-5000)%256;

th1=(65536-50000)/256;

tl1=(65536-50000)%256;

ea=1;

ex0=1;     //秒錶中斷

ex1=1;     //鬧鐘設定中斷

et0=1;

et1=1;

it0=1;      //邊沿觸發方式

it1=1;

px0=1;

px1=1;

tr0=0;        //初始,秒錶不工作

tr1=1;      //時鐘一開始工作

/*****************定時器0中斷*************/

void timer0_int() interrupt 1  //秒錶

th0=(65536-5000)/256;

tl0=(65536-5000)%256;

a++;

if(a==2)

a=0;

sec++;

if(sec==100)

sec=0;    //毫秒級

minu++;

if(minu==60)

minu=0;      //秒

hour++;

if(hour==60)    //分

hour=0;

/*************外部中斷0中斷函式************/

void ex0_int() interrupt 0

k++;

if(k==3)

k=0;

if(k==1)

tr0=~tr0;

if(tr0==1)

hour=0;

minu=0;

sec=0;

if(k==2)

tr0=~tr0;

/*************外部中斷1中斷函式************/

void ex1_int() interrupt 2

s++;

if(s==3)

s=0;

/*************定時器1中斷****************/

void timer1_int() interrupt 3     //控制時鐘工作

th1=(65536-50000)/256;

tl1=(65536-50000)%256;

if(s==2)

if(hour1==hour0 && minu0==minu1)

sounde();

b++;

if(b==20)

b=0;

sec0++;

if(sec0==60)

sec0=0;

minu0++;

if(minu0==60)

minu0=0;

hour0++;

if(hour0==24)

hour0=0;

/*************鍵盤掃描****************/

void keyscan()

if(s==1)

if(qingling==0)

delay(10);

if(qingling==0)

sec1=0;

minu1=0;

hour1=0;

if(tiaofen==0)

delay(10);

if(tiaofen==0)

minu1++;

if(minu1==60)

minu1=0;

while(!tiaofen);

if(tiaoshi==0)

hour1++;

if(hour1==24)

hour1=0;

while(!tiaoshi);

else   //調整時鐘時間

if(qingling==0)

delay(10);

if(qingling==0)

sec0=0;

minu0=0;

hour0=0;

if(tiaofen==0)

delay(10);

if(tiaofen==0)

minu0++;

if(minu0==60)

minu0=0;

while(!tiaofen);

if(tiaoshi==0)

hour0++;

if(hour0==24)

hour0=0;

while(!tiaoshi);

/*************顯示函式****************/

void display(uchar hour,uchar minu,uchar sec)

h1=hour/10;

h2=hour%10;

m1=minu/10;

m2=minu%10;

s1=sec/10;

s2=sec%10;

p0=0xff;

p2=table[h1];

p0=select[7];

delay(5);

p0=0xff;

p2=table[h2];

p0=select[6];

delay(5);

p0=0xff;

p2=0x40;;

p0=select[5];

delay(5);

p0=0xff;

p2=table[m1];

p0=select[4];

delay(5);

p0=0xff;

p2=table[m2];

p0=select[3];

delay(5);

p0=0xff;

p2=0x40;

p0=select[2];

delay(5);

p0=0xff;

p2=table[s1];

p0=select[1];

delay(5);

p0=0xff;

p2=table[s2];

p0=select[0];

delay(5);

/*************鬧鐘函式****************/

void sounde()

sounder=~sounder;

/*************延時函式****************/

void delay(uchar z)

int x,y;

for(x=z;x>0;x--)

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

C語言程式程式設計,如何編寫C語言程式

把你的思路想好,想要達到什麼樣的功能,思路清晰後就可以一個一個功能的去寫,出錯了不用急,想一下自己錯在什麼地方,好好的看一下 雖然這樣做會花很多 的時間,但是這樣做會提高自己的閱讀分 能力,啊?書上不是有麼 自己學著寫啊 10.include main printf n 如何編寫c語言程式?首先,你...

c語言程式填空問題,C語言程式填空問題

很明顯,第bai一個是開啟檔案du,因為下面提 zhi示了開啟失dao敗。已經給出了迴檔案指標file fp,必然答最後是判斷fp的值,但是fp一開始就是空,所以肯定不會直接判斷,必然是要求寫fopen函式,已經提示檔名稱,且明說了要寫檔案所以肯定是fopen f1.dat 但是問題出來了,是w什麼...

c語言小程式的問題,c語言程式問題

注意標記符號所作用的程式域!其他的都是一些小問題,自己慢慢除錯這執行,相信你能執行成功的。c語言程式問題 c語言中只有傳遞值的一種方式,即使傳遞的是指標,還是指標的值,因此雖然p加了3,但是與pt無關,如果要修改指標形參,則要使用二重指標 include point char pt main pt ...