可调计时器Word格式.docx
- 文档编号:8396891
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:8
- 大小:140.67KB
可调计时器Word格式.docx
《可调计时器Word格式.docx》由会员分享,可在线阅读,更多相关《可调计时器Word格式.docx(8页珍藏版)》请在冰点文库上搜索。
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
//秒位加
//启动或暂停
sbitl1=P1^0;
//key1标志位
sbitl2=P1^1;
//key2标志位
sbitl3=P1^2;
//开始秒表闪烁灯
uchartemp_d[10]={0x03,0x9f,0x25,0x0d,0x99,//0~4
0x49,0x41,0x1f,0x01,0x09};
//5~9
uchartemp_w[4]={0xfe,0xfd,0xfb,0xf7};
//段选1234
ucharm_s,m_g,fm_s,fm_g;
//分别是数码管1,2,3,4的显示缓存
ucharfm,m;
//分别是分秒累加器,秒累加器
uchari;
//秒位计数器
voidchu(void);
//定时器中断初始化子函数
voidsao(void);
//数码管显示扫描子函数
voidclk(void);
//数码管恢复服务子函数
voiddelay_5ms(uintdel);
//延时函数
voidkey_1(void);
//按键设置器
/*====================================================
【函数名】主函数部分main
【功能描述】
【设计时间】2011年12月7日
======================================================*/
voidmain()
{
clk();
//数码管清零
chu();
//定时器初始化
while
(1)
key_1();
//按键扫描
sao();
//刷新扫描
}
}
【函数名】timer0
【功能描述】定时器中断0,计时10ms
voidtimer0()interrupt1
{
TH0=(65536-10000/3)/256;
//定时10ms赋初值
TL0=(65536-10000/3)%256;
i++;
//秒位计数器
if(i==100)
i=0;
l3=!
l3;
m--;
m_s=temp_d[m/10];
//秒位刷新程序
m_g=temp_d[m%10];
}
if(fm==0)
fm=100;
fm--;
fm_s=temp_d[fm/10];
//分秒刷新程序
fm_g=temp_d[fm%10];
if(m==0&
&
fm==0)//计时结束全部
{
clk();
TR0=0;
}
【函数名】delay5ms
voiddelay_5ms(uintdel)
uinta,b;
for(b=0;
b<
del;
b++)
for(a=0;
a<
200;
a++);
/*======================================================
【函数名】voidchu()
【功能描述】中断初始化程序//为定时器,采用4M的晶振
【设计时间】2011年12月6日
========================================================*/
voidchu()
TMOD=0X01;
//设置定时器0,为工作方式1
//定时10ms
//为定时器0赋初值
EA=1;
//总中断开关
ET0=1;
//打开定时器0
TR0=0;
//定时器0关闭,等待外部中断0开启
【函数名】sao
【功能描述】数码管刷新函数
voidsao(void)
P0=fm_g;
//分秒个位
P2=temp_w[0];
delay_5ms(5);
P0=fm_s;
//分秒十位
P2=temp_w[1];
P0=m_g;
//秒个位
P2=temp_w[2];
P0=m_s;
//秒十位
P2=temp_w[3];
if(m_s!
=m_s)
l3=1;
【函数名】clk
【功能描述】数码管初始化清零
voidclk(void)
m_s=temp_d[m/10];
m_g=temp_d[m%10];
【函数名】key_1
【功能描述】按键扫描函数
voidkey_1(void)
{/*按键key2扫描*/
if(key2==0)
l2=0;
delay_5ms(88);
while(key2==0);
l2=1;
//当计时运行要停止时,将闪烁灯熄灭
TR0=!
TR0;
/*按键key1扫描*/
if(TR0==0)
if(key1==0)
{
l1=0;
l1=1;
if(key1==0)
{
m++;
//设置定时范围
if(m==100)
m=0;
fm=0;
//在设置秒位时,将分秒清零
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可调 计时器
![提示](https://static.bingdoc.com/images/bang_tan.gif)