定时器T0与外部中断暂停

目的如下

用定时器T0编程实现10s秒表功能,要求按下一次按键开始计数,按下两次按键停止计数,按下三次按键计数清0

原理图

 

其中AT89C521振荡频率为12Mhz

源码

为了方便看得懂,用的代码比较简单基础,所以相对来说比较繁琐冗长

 #include<reg52.h>
table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 共阳极
unsigned int count,i,j,count,n;
void delay (unsigned int ms) //延时函数
{unsigned char j;
while(ms--);
for(j=0;j<120;j++);
}
void int0() interrupt 0 //外部中断0
{ n++;
if(n>3)
{n=1;}
}
void Timer0() interrupt 1 //定时器T0
{TH0=(65536-50000)/256;           //50ms
TL0=(65536-50000)%256;
i++;
if(i==20)            //20*50=1000ms =1s
{count++;
i=0;}
}
void main()
{ count=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=0;
ET0=1;
EX0=1;
IT0=1;
P0=0xff;
P2=0;
while(1)
{ P0=0xff;
P2=0x01;
P0=table[count/10];
delay(5);
P0=0xff;
P0=table[count%10];
P2=0x02;
delay(5);
if(n==1)
{TR0=1;
if(count==10)
{TR0=0;}
}
if(n==2)
{TR0=0;}
if(n==3)
{count=0;}
}

评论

  1. 不愿意透露姓名的美丽女人
    6 月前
    2024-7-28 22:54:59

    哇,好牛

  2. 无敌美少女慧
    3 月前
    2024-10-10 13:02:13

    好厉害

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇