找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4355|回复: 2
打印 上一主题 下一主题
收起左侧

怎样用一个单片机定时器来完成两个功能?程序怎么改?求大神!

[复制链接]
跳转到指定楼层
楼主
ID:143659 发表于 2016-10-20 20:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【例3.5.2】在TX-1C单片机实验板上完成如下功能:用定时器0的方式1实现第一个发光管 以200ms间隔闪烁,用定时器1的方式1实现数码管前两位59s循环计时。新建文件part2.1 一5x, 程序代码如下:

#include <reg52.h> //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //申明U1锁存器的锁存端
sbit wela=P2^7; //申明U2锁存器的锁存端
sbit led1=P1^0;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uint);
void display(uchar,uchar);
uchar num,num1,num2,shi,ge;
void main()
{
TMOD=0x11; //设置定时器0为工作方式1(M1M0为11)
TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872
TL0=(65536-45872)%256;
TH1=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872
TL1=(65536-45872)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
ET1=1; //开定时器1中断
TR0=1; // 启动定时器0
TR1=1; // 启动定时器1
while(1); //程序停止在这里等待中断中断发生
{
display(shi,ge);
}
}
void display(uchar shi,uchar ge) //显示子函数
{
dula=1;
P0=table[shi]; //送段选数据
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来段选数据通过位选锁存器造成混乱
P0=0xfe; //送位选数据
wela=0;
delayms(5); //延时
dula=1;
P0=table[ge];//送段选数据
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来段选数据通过位选锁存器造成混乱
P0=0xfd; //送位选数据
wela=0;
delayms(5); //延时
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
void T0_time() interrupt 1
{
TH0=(65536-45872)/256; //重装初值
TL0=(65536-45872)%256;
num++;
if(num1==4) //如果到了4次,说明200ms时间到
{
num1=0; //然后把num1清0重新再计4次
led1=~led1; //让发光管状态取反
}
}
void T1_time() interrupt 3
{
TH1=(65536-45872)/256; //重装初值
TL1=(65536-45872)%256;
num2++;
if(num2==20) //如果到了20次,说明1秒刷新时间到
{
num2=0; //然后把num2清0重新再计4次
num++;
if(num==60) //这个数用来送数码管显示,到60后归0
num=0;
shi=num/10; //把一个2位数分离后分别送数码管显示
ge=num%10; //十位和个位
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123732 发表于 2016-10-20 21:29 | 只看该作者
你贴出来的这个代码不就是实现的这个功能么?
回复

使用道具 举报

板凳
ID:111634 发表于 2016-10-20 21:37 | 只看该作者
本帖最后由 zl2168 于 2016-10-20 21:38 编辑

对200ms计数,200ms*5*59=59s。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表