亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
秒表重置后怎么讓他按鍵重新啟動
[打印本頁]
作者:
learn_c51
時間:
2017-11-9 16:31
標題:
秒表重置后怎么讓他按鍵重新啟動
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit duan=P2^2;
sbit wei=P2^3;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar t,qian,bai,shi,ge,flag;
uint num;
void delay(uint);
void display(uchar qian,uchar bai,uchar shi,uchar ge);
void inittimer();
void main()
{
inittimer();
while(1)
{
if(key1==0)
{
delay(3);
TR0=1;
while(!key1)
display(qian,bai,shi,ge);
}
if(key2==0)
{
delay(3);
TR0=0;
while(!key2)
display(qian,bai,shi,ge);
}
if(key3==0)
{
delay(3);
TR0=0;
num=0;
t=0;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
while(!key3)
display(qian,bai,shi,ge);
}
display(qian,bai,shi,ge);
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void inittimer()
{
num=0;
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
// TR0=1;
}
void timer() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
t++;
if(t==10)
{
t=0;
num++;
if(num==10000)
num=0;
qian=num/1000;
bai=num/100%10;
shi=num%100/10;
ge=num%100%10;
}
}
void display(uchar qian,uchar bai,uchar shi,uchar ge)
{
duan=1;
P0=table[qian];
duan=0;
P0=0xff;
wei=1;
P0=0xef;
wei=0;
delay(3);
duan=1;
P0=table[bai]|0x80;
duan=0;
P0=0xff;
wei=1;
P0=0xdf;
wei=0;
delay(3);
duan=1;
P0=table[shi];
duan=0;
P0=0xff;
wei=1;
P0=0xbf;
wei=0;
delay(3);
duan=1;
P0=table[ge];
duan=0;
P0=0xff;
wei=1;
P0=0x7f;
wei=0;
delay(3);
}
當我按下KEY3時,秒表重置并自動開始計時,如何修改程序讓它重置后按KEY2開始計時
作者:
cjjcjj1
時間:
2017-11-9 16:48
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
liut_text
時間:
2017-11-9 17:22
if(key3==0)
{
delay(3);
TR0=0;
num=0;
t=0;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
display(0,0,0,0);
while(!key3);
while(1)
{
if(key2==0)
{
delay(3);
if(key2==0)
break;
}
}
TR0=1;
}
復制代碼
作者:
zl2168
時間:
2017-11-9 17:45
本帖最后由 zl2168 于 2017-11-9 17:52 編輯
實例93 99.9秒秒表
一鍵三用:按第一次,秒表運行計時
,
最大計時
99.9s
,
超過復
0
。
按第二次
,
秒表停運行,但保持最后顯示秒數
。
按第三次
,
秒表清
0
。
再按,重復上述操作
先
Proteus
仿真一下,
確認有效。
實例95 99.9秒秒表.rar
(38.86 KB, 下載次數: 7)
2017-11-9 17:49 上傳
點擊文件名下載附件
99.9秒秒表.jpg
(128.43 KB, 下載次數: 57)
下載附件
2017-11-9 17:49 上傳
以上摘自張志良編著《
80C51
單片機仿真設計實例教程——基于
Keil C
和
Proteus
》清華大學出版社
ISBN 978-7-302-41682-1
,
內有常用的單片機應用
100
案例,用于仿真實驗操作,書中電路和程序設計有詳細說明,電路與程序真實可靠可信可行,程序語句條條有注解。若需99.99
秒,硬件電路增加一位
595
。軟件程序增加0.01s
(
10ms
)
計數器,并修改相應計數顯示程序。仿真電路和
Hex
文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。
到圖書館借,或到新華書店翻閱,或到網上書店打折購買。
作者:
zhanghs1313
時間:
2017-11-9 20:07
你好,你可以在兩個按鍵,加兩個外部中斷程序,一個是interrupt 0 和interrupt2,interrupt0控制按鍵重置,然后interrupt2 控制按鍵計時!希望對你有點啟發
作者:
wulin
時間:
2017-11-9 21:03
本帖最后由 wulin 于 2017-11-9 21:22 編輯
給你一個99分鐘6位百分秒表程序參考。單鍵:開始計時,暫停,復位清0。端口根據實際電路重新定義。
#include <AT89X52.H>
#define uint unsigned int //宏定義無符號整型數據
#define uchar unsigned char //宏定義無符號字符型數據
sbit key1=P3^6;
sbit dula=P2^6; //段
sbit wela=P2^7; //位
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar swan,wan,qian,bai,shi,ge;
uchar Cntus=0,Cnt10ms=0,Cnt1s=0,Cnt1min=0; //中斷計時變量
bit zantin=0; //暫停標志
void display(); //顯示程序聲明
void keyscan(); //按鍵掃描程序聲明
/***********按鍵掃描程序****************/
void keyscan()
{
static uint count2=0,count1=0; //計數變量
static bit key_sign=0; //按鍵狀態標志
if(key1==0) //檢測輸入如果為0
{
count1++; //計數延時消抖
if(count1>=1000) //1000次檢測按鍵如果為0
{
count1=1000; //防止溢出
if(key_sign==0) //按鍵狀態標志為0
{
key_sign=1; //按鍵狀態標志置1,防止重復響應
count2++;
if(count2>=3)
count2=0;
switch(count2)
{
case 0: Cntus=0;
Cnt10ms=0;
Cnt1s=0;
Cnt1min=0; break;//清0
case 1: zantin=1; break;//計時
case 2: zantin=0; break;//暫停
}
}
}
}
else
{
count1=0; //計數變量清0
key_sign=0; //按鍵狀態標志清0
}
}
/***********定時器初始化程序****************/
void Timer0Init(void) //2500微秒@11.0592MHz
{
TMOD = 0x01; //設置定時器模式
TL0 = 0x00; //設置定時初值
TH0 = 0xF7; //設置定時初值
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
EA=1; //開總中斷
ET0=1; //開定時器0中斷
}
/***************主程序****************/
void main()
{
Timer0Init(); //定時器初始化
while(1)
{
keyscan(); //按鍵掃描
}
}
/**************中斷服務程序*****************/
void timer0() interrupt 1//2500微秒@11.0592MHz
{
TL0 = 0x00; //設置定時初值
TH0 = 0xF7; //設置定時初值
Cntus++; //中斷變量Cntus自+1
if(Cntus>=4) //10ms
{
Cntus=0; //清0
if(zantin==1) //暫停/啟動
Cnt10ms++; //毫秒計數
if(Cnt10ms>=100)
{
Cnt10ms=0;
Cnt1s++; //秒計數
if(Cnt1s>=60)
{
Cnt1s=0;
Cnt1min++; //分計數
if(Cnt1min>=100)
Cnt1min=0;
}
}
}
display(); //顯示程序
}
void display()//顯示程序
{
static uchar count=0; //計數變量
switch(count)
{
case 0:
dula=0;
P0=table[Cnt1min/10]; //顯示十分位
dula=1;
dula=0;
wela=0;
P0=0x7e;
wela=1;
wela=0;
count=1;
break;
case 1:
dula=0;
P0=table[Cnt1min%10]|0x80; //顯示分位加點
dula=1;
dula=0;
wela=0;
P0=0x7d;
wela=1;
wela=0;
count=2;
break;
case 2:
P0=table[Cnt1s/10]; //顯示十秒位
dula=1;
dula=0;
P0=0x7b;
wela=1;
wela=0;
count=3;
break;
case 3:
P0=table[Cnt1s%10]|0x80;//顯示秒位加點
dula=1;
dula=0;
P0=0x77;
wela=1;
wela=0;
count=4;
break;
case 4:
P0=table[Cnt10ms/10]; //顯示十分秒位
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
count=5;
break;
case 5:
P0=table[Cnt10ms%10]; //顯示百分秒位
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
count=0;
break;
}
}
作者:
yzwzfyz
時間:
2017-11-9 23:05
如果是你自己寫的程序,何來這一問?
作者:
learn_c51
時間:
2017-11-10 16:09
liut_text 發表于 2017-11-9 17:22
謝謝,按照你的方法解決了,不過還有一個問題,就時KEY3按下重置后顯示的是單個0,如何顯示00.00
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1