久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
求單片機大神幫忙 這個程序怎么改成 第一次中斷顯示999,第二次中斷開始倒計時
[打印本頁]
作者:
a15783369
時間:
2016-6-23 16:12
標題:
求單片機大神幫忙 這個程序怎么改成 第一次中斷顯示999,第二次中斷開始倒計時
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
code unsigned char LED[] = { // 八段數碼管字形碼 (共陰極)
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, //顯示字符0,1,2,3,4,5,6,7
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, //顯示字符8,9,A,B,C,D,E,F
};
sbit key=P3^3;
int flag; //標志位
uint Count=0;//初始值
void delay(uchar z)
{
uchar x,y;
for(x=0;x<z;z++)
{
for(y=13;y>0;y--);
{ ;
}
}
}
void Timer0() interrupt 1
{
static uchar Count_50;//
TH0=0xb1;
TL0=0xdf;//定時時間為20ms,每20ms中斷一次
Count_50--;
if(Count_50==50)//20ms*50=1秒
{
Count_50=0;
Count--;
}
}
void init()//初始化
{
TMOD=0x01;
TH0=0xb1;
TL0=0xdf;//定時時間為20ms,每20ms中斷一次
ET0=1; //開T1中斷
EA=1; //開總中斷
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;// TR1=1; //T1開始運行
delay(14);
delay(15);
}
void display()
{
if(key==0)
{ delay(15);
if(key==0)
{
flag++;
if(flag==4)
{
flag=1;
}
while(!key);
}
}
switch(flag)
{
case 1:
Count=999;//恢復初值
ET0=0; //關T0中斷
EA=0; //關總中斷
TR0=0; //T1不運行
P2=0xef; //百位
P0=LED[Count/100];
delay(50);
P2=0xef; //十位
P0=LED[Count%100];
delay(50);
P2=0xef;//個位
P0=LED[Count%10];
delay(50);
break;
case 2:
ET0=1; //開T1中斷
EA=1; //開總中斷
TR0=1; //T1開始運行
if(Count>0)
{
P2=0xef; //百位
P0=LED[Count / 100];
delay(50);
P2=0xef; //十位
P0=LED[Count % 100 / 10];
delay(50);
P2=0xdf;//個位
P0=LED[Count % 10];
delay(50);
}
else
{
P2=0xef; //百位
P0=LED[Count / 100];
delay(50);
P2=0xef; //十位
P0=LED[Count%100/10];
delay(50);
P2=0xdf;//個位
P0=LED[Count%10];
delay(50);
}
break;
case 3:
ET0=0; //關T1中斷
EA=0; //關總中斷
TR0=0; //T0不運行
delay(5);
P2=0x76;
P0=LED[3];
delay(5);
P2=0x76;
P0=LED[2];
delay(5);
P2=0x76;
P0=LED[1];
delay(5);
break;
}
}
void main()
{
init();
P2=0Xff; //開數碼管
while(1)
{
display();
}
}
這個程序怎么改成 第一次中斷顯示999,第二次中斷開始倒計時,第三次中斷顯示HHH。然后一直循環。
第一和第三個中斷程序我改好了,倒計時那個怎么改啊!!!
作者:
ahshmj
時間:
2016-6-23 20:18
本帖最后由 ahshmj 于 2016-6-23 20:22 編輯
錯誤的地方太多。沒有改完。你自己再看看吧。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
code unsigned char LED[] = { // 八段數碼管字形碼 (共陰極)
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, //顯示字符0,1,2,3,4,5,6,7
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, //顯示字符8,9,A,B,C,D,E,F
};
sbit key=P3^3;
uchar flag=3; //標志位
uint Count=999;//初始值
uchar Count_50;//
void delay(uchar z)
{
uchar x,y;
for(x=0;x<z;z++)
{
for(y=13;y>0;y--);
{ ;
}
}
}
void Timer0() interrupt 1
{
// static uchar Count_50;//
TH0=0xb1;
TL0=0xdf;//定時時間為20ms,每20ms中斷一次
Count_50--;
if(Count_50==0)//20ms*50=1秒
{
Count_50=20;
Count--;
}
if(Count==0)//
{
Count=999;
flag--;
}
if(flag==1)//
{
flag=3;
}
}
void init()//初始化
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;// TR1=1; //T1開始運行
//TH0=0xb1;
//TL0=0xdf;//定時時間為20ms,每20ms中斷一次
ET0=1; //開T1中斷
EA=1; //開總中斷
TR0=1;
Count_50=20;
delay(14);
delay(15);
}
void display()
{
if(key==0)
{ delay(15);
if(key==0)
{
flag++;
if(flag==4)
{
flag=1;
}
while(!key);
}
}
switch(flag)
{
case 1:
Count=999;//恢復初值
// ET0=0; //關T0中斷
// EA=0; //關總中斷
// TR0=0; //T1不運行
P2=0xef; //百位
P0=LED[Count/100];
delay(50);
P2=0xef; //十位
P0=LED[Count%100];
delay(50);
P2=0xef;//個位
P0=LED[Count%10];
delay(50);
break;
case 2:
// ET0=1; //開T1中斷
// EA=1; //開總中斷
// TR0=1; //T1開始運行
// if(Count>0)
// {
P2=0xef; //百位
P0=LED[Count / 100];
delay(50);
P2=0xef; //十位
P0=LED[Count % 100 / 10];
delay(50);
P2=0xdf;//個位
P0=LED[Count % 10];
delay(50);
// }
/* else
{
P2=0xef; //百位
P0=LED[Count / 100];
delay(50);
P2=0xef; //十位
P0=LED[Count%100/10];
delay(50);
P2=0xdf;//個位
P0=LED[Count%10];
delay(50);
}
break; */
case 3:
// ET0=0; //關T1中斷
// EA=0; //關總中斷
// TR0=0; //T0不運行
delay(5);
P2=0x76;
P0=LED[3];
delay(5);
P2=0x76;
P0=LED[2];
delay(5);
P2=0x76;
P0=LED[1];
delay(5);
break;
}
}
void main()
{
init();
P2=0Xff; //開數碼管
while(1)
{
display();
}
}
作者:
zl2168
時間:
2016-6-24 16:35
很佩服ahshmj,改這些程序是很吃力的,先要揣摩原編程者什么意圖。有改的功夫,自己編程都編好了。
作者:
zl2168
時間:
2016-6-24 20:03
本帖最后由 zl2168 于 2016-6-24 20:06 編輯
其實該案例可參考倒計時秒表
實例
96
能預置初值的倒計時秒表
先
Proteus
仿真一下,確認有效。
實例96 能設置初值的倒計時秒表.rar
(40 KB, 下載次數: 4)
2016-6-24 20:05 上傳
點擊文件名下載附件
能預置初值的倒計時秒表.jpg
(182.34 KB, 下載次數: 83)
下載附件
2016-6-24 20:05 上傳
以上摘自張志良編著《單片機實驗實訓
100
例》
ISBN 978-7-5124-1603-1
,北航社出版
書中電路和程序設計有詳細說明,程序語句條條有注解。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
最新免费黄色网址
|
日韩欧美在线一区
|
91av国产在线视频
|
真人毛片
|
国产精品一区二区三区在线
|
日韩不卡一二区
|
日韩网站免费观看
|
久久免费资源
|
天天射天天操天天干
|
久久精品国产亚洲
|
免费特级黄毛片
|
日本一二三区在线观看
|
一区不卡在线观看
|
亚洲免费一区
|
中文字幕日本一区二区
|
亚洲国产精品一区二区三区
|
色综合av
|
性精品
|
91一区二区
|
亚洲精选一区二区
|
一区二区三区视频在线免费观看
|
国产午夜高清
|
国产成人午夜高潮毛片
|
97国产在线观看
|
日韩在线视频免费观看
|
1204国产成人精品视频
|
7777在线
|
日韩亚洲一区二区
|
日韩二区
|
日韩小视频
|
草草精品
|
狠狠躁天天躁夜夜躁婷婷老牛影视
|
国产一区二区三区视频在线观看
|
久久久久国产精品
|
精品久久久久久国产
|
在线 丝袜 欧美 日韩 制服
|
亚洲欧美日韩久久久
|
日韩欧美在线播放
|
亚洲最新在线视频
|
狠狠骚
|
亚洲欧美日韩精品
|