欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機數字鐘(兩個定時器,優先級)
[打印本頁]
作者:
會飛的魚1710
時間:
2018-11-14 16:22
標題:
單片機數字鐘(兩個定時器,優先級)
數字鐘電路原理圖如下:
QQ圖片20181114162140.png
(15.17 KB, 下載次數: 41)
下載附件
效果圖
2018-11-14 16:21 上傳
單片機源程序如下:
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1 = P0^0;//按鍵調時間加一 秒
sbit k2 = P0^1; //分
sbit k3 = P0^2; //時
sbit k4 = P0^7; //暫停
char code smduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //共陽
0x80,0x90,0xbf}; //0-9和-
uchar ms = 0,sec = 0,min =0,hour = 12;//定義變量
uchar i = 0;
/**************延時函數,有參******/
void delay(uchar h)//延時xms
{
uchar k;
for(;h > 0;h--)
{
for(k = 110;k > 0;k--);
}
}
/********定時器初始化************/
void csh()
{
TMOD = 0x11;//T0,T1工作方式1
TH1 = (65536 - 2500) / 256; //給初值 T1給2.5ms
TL1 = (65536 - 2500) % 256;
TH0 = (65536 - 50000) / 256; //T0給50ms
TL0 = (65536 - 50000) % 256;
//開中斷
ET1 = 1;
ET0 = 1;
EA = 1;
//二級中斷嵌套令T0 50ms優先
PT0 = 1;
//開定時器
TR0 = 1;
TR1 = 1;
}
/****************按鍵函數*******/
void key()
{
if(k1 == 0) //秒
{
delay(10);//延時10ms
if(k1 == 0)
{
if(sec > 59) sec = 0;
else sec++;
}
while(k1 == 0);
}
if(k2 == 0)//分
{
delay(10);//延時10ms,
if(k2 == 0)
{
if(min > 59) min = 0;
else min++;
}
while(k2 == 0);
}
if(k3 == 0) //時
{
delay(10);//延時10ms
if(k3 == 0)
{
if(hour > 23) hour = 0;
else hour++;
}
while(k3 == 0);
}
if(k4 == 0)
{
delay(10);//延時10ms
if(k4 == 0)
{
TR0 = 0;
TR1 = 0;
}
while(k4 == 0);
}
}
/***********定時器T0中斷(產生時間數據)*********/
void i_time() interrupt 1
{
TH0 = (65536 - 50000) / 256; //初值
TL0 = (65536 - 50000) % 256;
if(ms > 19) //1s時間到
{
ms = 0;
if(sec >59) //1min時間到
{
sec = 0;
if (min>59)//1h到
{
min = 0;
if(hour > 23) hour = 0;
else hour++;
}
else min++;
}
else sec++;
}
else ms++;//50ms中斷計數
}
/***********定時器T1中斷(產生動態掃描)*********/
void t_display() interrupt 3
{
TH1 = (65536 - 2500) / 256;//給初值 T1給2.5ms
TL1 = (65536 - 2500) % 256;
i++;
if(i > 7) i =0;
switch(i)
{
case 0:P3 = 0x00; P2 = smduan[sec % 10]; P3 = 0x01; //第0次中斷,顯示秒個位
break;
case 1: P3 = 0x00;P2 = smduan[sec / 10]; P3 = 0x02; //第1次中斷,顯示秒十位
break;
case 2:P3 = 0x00; P2 = smduan[10]; P3 = 0x04; //第2次中斷,顯示-
break;
case 3:P3 = 0x00; P2 = smduan[min % 10]; P3 = 0x08; //第3次中斷,顯示分個位
break;
case 4: P3 = 0x00;P2 = smduan[min / 10]; P3 = 0x10; //第4次中斷,顯示分十位
break;
case 5: P3 = 0x00;P2 = smduan[10]; P3 = 0x20; //第5次中斷,顯示-
break;
case 6:P3 = 0x00; P2 = smduan[hour % 10]; P3 = 0x40; //第6次中斷,顯示時個位
break;
case 7:P3 = 0x00; P2 = smduan[hour / 10]; P3 = 0x80; //第7次中斷 ,顯示時十位
break;
}
}
/***************主函數************/
main()
{
csh();
while(1)
{
key();
}
}
復制代碼
所有資料51hei提供下載:
KEIL.zip
(25.43 KB, 下載次數: 33)
2018-11-14 16:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1