當前位置:首頁 » 編程語言 » 請用c語言編寫1s的程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

請用c語言編寫1s的程序

發布時間: 2022-07-03 06:19:18

㈠ 51單片機用c語言編程實現1s定時、1khz方波、512hz方波輸出,麻煩多在程序後注釋解釋程序意思,謝謝

#Include<reg51.h>

#define uchar unsigned cahr
uchar times=0,sec=0;
sbit p512=P1^0;
sbit p1k=P1^1;
void t0isr() interrupt 1
{
times++;

if((times%4)==0)p512=~p512;
if((times%2)==0)p1k=~p1k;
if(times>=205){times=0;sec++}
}
main()
{
TMOD=0x02;
TH0=256-244;
TL0=256-244;
ET0=1;
TR0=1;
while(1)
{
P0=sec;

}

}

㈡ AT89C51,編寫C語言程序,實現LED燈間隔1s亮一次 ,顯示器開始計時從00~20

#include<reg51.h>
unsigned char code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};// 數碼管段選
unsigned char aa,second;
sbit LED=P1^0;// 小燈
void init(); //初始化
void keypress(); //按鍵識別
void delay(unsigned int z);//延時
void main()
{
init();
LED = 1;
while(1)
{
if(aa==20)
{
aa=0;
second++;
LED=~LED;
if(second==21)
{
second=0;
}
}
keypress();
P0=table[second%10];
P2=table[second/10];
}
}
void init()
{
TMOD=0x01;//定時器T0的方式1
TH0=(65536-50000)/256; //高8位
TL0=(65536-50000)%256; //低8位
EA=1; //中斷總允許打開
ET0=1; //定時器T0允許打開
TR0=1; //啟動定時器T0
aa=0;
second=0;
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}

㈢ C語言 單片機編寫兩位數碼管不用定時器延時1s,怎麼編

void delay(void) //延時子程序
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
具體延時時間要根據你單片機的速度,晶振頻率,指令計算

㈣ 51單片機 用c語言 調用-nop- 編一個 延時一秒 程序

這么給你說吧,不同的編譯器同樣的C語言語句編譯出來的時間不完全一致,舉個簡單例子;
for(i=0,i<=100;i++)
for(j=0;j<=10;j++);

for(i=0,i<=10;i++)
for(j=0;j<=100;j++);
其實理論上來講,這個時間都是一個指令周期*10*100,對吧,但是實際效果而講,這兩個時間不一樣,都知道可以實現跳轉的指令機器周期有幾種,到底編譯器是如何實現的,我們可以通過編譯之後看它對應的匯編語句(編譯器中一般都可以看到),然後通過計算匯編的時間,才基本能確定你用C編譯之後這個延時程序到底延時多少,如果你換個編譯器,比如從keil轉到wave,又不能確定時間是否一致;其實你到網上看看,對於時間要求很嚴格的地方,延時程序基本都是匯編寫的,大不了是C和匯編嵌套,或者用定時器;如果你說的是大概一秒的話,那麼你網路一下就是一大堆;我做個一個表,即使用定時器,藐視很准確,其實走上一天可能就差幾秒甚至幾分鍾,因為C語言中的中斷程序,以及每次進入中斷退出中斷的指令周期,這些你都要考慮在內,這樣你才能做的很准;有點說偏題了。我的意思就是你要真的要把一秒作準,請用匯編或參考匯編,還要把每個語句的執行時間考慮在內,這樣你才能做的很准確

㈤ 1. C語言編程,怎麼編寫 時 分 秒 的程序

#include<stdio.h>
int main(){
int hour,minute,second;
printf("請輸入時間:");
scanf("%d:%d:%d",&hour,&minute,&second);
printf("Time:%02d:%02d:%02d\n",hour,minute,second);
return 0;
}

㈥ 單片機c語言編寫產生1秒定時的程序,怎麼寫

如果是51單片機的話其實很簡單的,這里假設晶振頻率是12M(一般都是的),你可以選用定時器0,工作在工作狀態2,因為這個狀態下裝入初始值幾乎不需要時間,所以定時精確,也就是8位預置數狀態,將初始值設為6,這樣每次定時就是250微秒,在中斷程序中定義一個靜態變數,每次中斷加一,這樣當這個變數值為4000時就剛好是1S鍾。
關鍵程序是:
void main()
{
TMOD=OX02;
EA=1;
ET0=1;
TH0=0X06;
TL0=0X06;
while(1);
}
void timer0() interrupt 1
{
static unsigned int times=0;
times++;
if(times==4000)
{
times=0;
//自己的程序
}}

㈦ 單片機C語言編程如何實現定時器中斷1s編程

以下是一個實時時鍾的程序,裡麵包含有1S定時器,你也可以使用延時程序,但是不精確
/*備註:按鍵一為功能鍵,按一下調年,按兩下調月,按三下調日,按四下調時,按五下調分*/
/* 按六下退出,或者在任何時候按鍵四退出設定狀態。在設定狀態鍵二加一,鍵三減一*/
/* 鍵四退出,正常狀態鍵二顯示年,鍵三顯示月日,鍵四顯示星期和秒*/
/* 星期根據日期計算得出,其已全部調試通過,為了時間精確,要調一個誤差值*/

#include<reg2051.h>
#include<stdio.h>
#include<absacc.h>
#include<intrins.h>

#define uint unsigned int
#define uchar unsigned char

uchar code led_xs[12]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff,0xfd};
uchar data led_data[4];
volatile uchar data a; //定義按鍵一志標
volatile uchar data month=4; //定義月並賦初值
volatile uchar data date=29; //定義日並賦初值
volatile uchar data week; //定義星期並賦初值
volatile uchar data hour; //定義時
volatile uchar data min; //定義分
volatile uchar data sec=0; //定義秒
volatile uint data zn=0; //定義中間存儲變數
volatile uint data year=2007; //定義年並賦初值

sbit md=P3^7; //定義秒點
sbit k1=P1^0; //定義按鍵一
sbit k2=P1^1; //定義按鍵二
sbit k3=P1^2; //定義按鍵三
sbit k4=P1^3; //定義按鍵四
sbit hs=P1^4; //定義顯示片選信號一
sbit hg=P1^5; //定義顯示片選信號二
sbit ms=P1^6; //定義顯示片選信號三
sbit mg=P1^7; //定義顯示片選信號四
bit sans; //定義閃爍標志
bit b; //定義按鍵二標志
bit c; //定義按鍵三標志
bit w; //定義按鍵四標志
bit x; //定義24小時到標志
bit y; //定義日期加一標志

keyscan(); //申明鍵盤掃描函數
void display(); //申明顯示函數
void chushihua(void); //申明初始化函數
void delay_10ms(void); //申明10ms延時函數
dateadd(); //申明日期加函數
datesub(); //申明日期減函數
weekjs(); //星期計算函數

void main(void)
{
weekjs(); //計算初值星期幾
x=y=0; //日期加初始化
chushihua(); //調初始化函數,初始化定時器,中斷
do{
keyscan(); //鍵盤掃描
display(); //調用顯示函數
if((!y)==x)dateadd(); //判斷是否有24小時,有就調用日期加函數
}
while(1); //先調用顯示鍵盤
}

void chushihua(void) //初始化函數
{
TMOD=0x02; //定時器0以方式2工作,自動重裝初值
IE=0x82; //開總中斷和TO中斷
TH0=0x06; //T0高位置初值
TL0=0x06; //T0低位置初值
TR0=1; //啟動TO
}

timer0 () interrupt 1 //T0中斷函數
{
if(zn<4000){zn++;if(zn==2000)sans=!sans;}
else {zn=0;sec++;sans=!sans;
if(sec==60){sec=0;min++;
if(min==60){min=0;hour++;
if(hour==24){hour=0;x=!x;}
}
}
}
}

void display()
{
uchar k;
uint d;
uchar e;
SCON=0x00;
P1=0x0f;
if((a!=0)&&sans){
led_data[3]=10;
led_data[2]=10;
led_data[1]=10;
led_data[0]=10;
}
else {
switch(a){
case 0 :led_data[3]=hour/10;
led_data[2]=hour%10;
led_data[1]=min/10;
led_data[0]=min%10;
break;
case 1 :led_data[3]=year/1000;
d=year%1000;
led_data[2]=d/100;
e=d%100;
led_data[1]=e/10;
led_data[0]=e%10;
break;
case 2 :led_data[3]=month/10;
led_data[2]=month%10;
led_data[1]=10;
led_data[0]=10;
break;
case 3 :led_data[3]=10;
led_data[2]=10;
led_data[1]=date/10;
if(led_data[1]==0)led_data[1]=10;
led_data[0]=date%10;
break;
case 4 : led_data[3]=hour/10;
led_data[2]=hour%10;
led_data[1]=10;
led_data[0]=10;
md=0;
break;
case 5 : led_data[3]=10;
led_data[2]=10;
led_data[1]=min/10;
led_data[0]=min%10;
md=0;
break;
default: break;
}
}
if(b){
led_data[3]=year/1000;
d=year%1000;
led_data[2]=d/100;
e=d%100;
led_data[1]=e/10;
led_data[0]=e%10;
}
else if(c){
led_data[3]=month/10;
led_data[2]=month%10;
led_data[1]=date/10;
if(led_data[1]==0)led_data[1]=10;
led_data[0]=date%10;
}
else if(w){
led_data[3]=week;
led_data[2]=11;
led_data[1]=sec/10;
led_data[0]=sec%10;
}
if((led_data[3]==0)&&(!w))led_data[3]=10;
k=led_data[3];
SBUF=led_xs[k];
while(!TI){}
TI=0;
hs=1;
for(k=0;k<255;k++){_nop_();_nop_();_nop_();}
hs=0;

k=led_data[2];
SBUF=led_xs[k];
while(!TI){}
TI=0;
hg=1;
for(k=0;k<255;k++){_nop_();_nop_();_nop_();}
hg=0;

k=led_data[1];
SBUF=led_xs[k];
while(!TI){}
TI=0;
ms=1;
for(k=0;k<255;k++){_nop_();_nop_();_nop_();}
ms=0;

k=led_data[0];
SBUF=led_xs[k];
while(!TI){}
TI=0;
mg=1;
for(k=0;k<255;k++){_nop_();_nop_();_nop_();}
mg=0;

if(!(a||b||c||w)){
SBUF=0xff;
while(!TI){}
TI=0;
ms=1;
mg=1;
md=sans;
for(k=0;k<255;k++){_nop_();_nop_();}
P1=0x0f;
md=1;
}
}

keyscan()
{
uchar key_value,reread_key;
P1=0x0f;
key_value=P1&0x0f;
if(key_value!=0x0f){
delay_10ms();
reread_key=P1&0x0f;
if(key_value==reread_key){
switch(key_value){
case 0x0e : if(!(b||c||w)){a++;if(a==6)a=0;}
else b=c=w=0;
break;
case 0x0d : switch(a){
case 0 : b=!b;c=w=0;break;
case 1 : year++;break;
case 2 : if(month<12)month++;else month=1;break;
case 3 : dateadd();break;
case 4 : hour++;if(hour==24)hour=0;break;
case 5 : min++;if(min==60)min=0;break;
default: break;
}
break;
case 0x0b : switch(a){
case 0 : c=!c;b=w=0;break;
case 1 : year--;break;
case 2 : month--;if(month==0)month=12;break;
case 3 : datesub();break;
case 4 : hour--;if(hour==0xff)hour=23;break;
case 5 : min--;if(min==0xff)min=59;break;
default: break;
}
break;
case 0x07 : if(a==0){w=!w;b=c=0;}
else{a=0;b=c=w=0;}
break;
default : break;
}
P1=0x0f;
reread_key=P1&0x0f;
while(key_value==reread_key){
reread_key=P1&0x0f;
display();
}
}
}
}

void delay_10ms(void)
{
uchar o,p,q;
for(o=5;o>0;o--)
for(p=4;p>0;p--)
for(q=248;q>0;q--);
}

datesub()
{
switch(month){
case 1 : date--;if(date==0) date=31;break;
case 2 : date--;if(((year%4==0)&&(date==0))==1)date=29;
else if(date==0) date=28;break;
case 3 : date--;if(date==0) date=31;break;
case 4 : date--;if(date==0) date=30;break;
case 5 : date--;if(date==0) date=31;break;
case 6 : date--;if(date==0) date=30;break;
case 7 : date--;if(date==0) date=31;break;
case 8 : date--;if(date==0) date=31;break;
case 9 : date--;if(date==0) date=30;break;
case 10: date--;if(date==0) date=31;break;
case 11: date--;if(date==0) date=30;break;
case 12: date--;if(date==0) date=31;break;
default: break;
}
weekjs();
}

weekjs()
{
uchar c,m,wk,pd,yz;
uint y,p;
if(month==1){m=13;y=year-1;}
else if(month==2){m=14;y=year-1;}
else {y=year;m=month;}
c=y/100;
yz=y%100;
wk=2*c+1;
p=26*(m+1);
pd=p/10;
pd=pd+yz+(yz/4)+(c/4)+date;
if(pd>wk)week=(pd-wk)%7;
else if(pd<wk){week=(7-((wk-pd)%7));if(week==7)week=0;}
else week=0;
}

dateadd()
{
switch(month){
case 1 : date++;if(date==32){date=1;if(a!=3)month++;}break;
case 2 : date++;if(((year%4==0)&&(date==30))==1){date=1;if(a!=3)month++;}
else if(date==29){date=1;if(a!=3)month++;}break;
case 3 : date++;if(date==32){date=1;if(a!=3)month++;}break;
case 4 : date++;if(date==31){date=1;if(a!=3)month++;}break;
case 5 : date++;if(date==32){date=1;if(a!=3)month++;}break;
case 6 : date++;if(date==31){date=1;if(a!=3)month++;}break;
case 7 : date++;if(date==32){date=1;if(a!=3)month++;}break;
case 8 : date++;if(date==32){date=1;if(a!=3)month++;}break;
case 9 : date++;if(date==31){date=1;if(a!=3)month++;}break;
case 10: date++;if(date==32){date=1;if(a!=3)month++;}break;
case 11: date++;if(date==31){date=1;if(a!=3)month++;}break;
case 12: date++;if(date==32){date=1;if(a!=3)month++;}break;
default: break;
}
if(month==13){month=1;year++;}
y=x;
weekjs();
}

㈧ C語言怎麼寫延時1s程序

#include <windows.h>

Sleep(1000);
樓上錯了,它的單位是毫秒的