找回密码
 立即注册

QQ登录

只需一步,快速开始

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

通过51单片机定时器1实现99秒倒计时

[复制链接]
跳转到指定楼层
楼主
ID:84566 发表于 2015-7-9 21:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天刚刚完成了一个新的单片机实验,犯了一个小小的错误,导致不能够倒计时,弄了几个小时, 结果发现是变量的取值范围出错了
任何一个实验都应该自己动手去实践,没有实践是不知道自己少了什么的。只有实践才能够获得更多的调试经验!
程序虽小,但只要实际去做了,就能获得不少的经验! 这就是做复杂程序的基础!
共享自己写的程序,毕竟是自己劳动了几个小时的结果!与大家分享!
程序太小了,就没有多少注释了
/******************************************************
                    项目名称:99秒倒计时
                    时间:2015-7-9
                    目的:使用51单片机的定时器1实现99秒倒计时
                    单片机平台:KST51单片机开发平台-金沙滩单片机
                    注意:unsigned char 的取值范围为0-255
                                unsigned char 的取值范围为0-65535
                                要结合单片机的硬件来看程序
**********************************************************/
#include<reg52.h>

sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

unsigned char sec = 99;

unsigned char code LedChar[] ={
    0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,
    0x80,0x90,0X88,0x83,0XC6,0xA1,0x86,0x8E
};

unsigned char LedBuff[6] = {
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};


void LedScan()   //´Ëº¯ÊýʵÏÖLedµÄ¶¯Ì¬É¨Ãè
{
    static unsigned char i = 0;
   
    P0 = 0xFF;
    P1 = (P1 & 0xF8)| i;
    P0 = LedBuff[i];
    if(i < 2)
        i++;
    else
        i = 0;
}

void main()
{
   
   
    ENLED =  0;
    ADDR3 = 1;
   
    //¶¨Ê±Æ÷¼Ä´æÆ÷³õʼ»¯
    TMOD = 0X01;   
    TH0 = 0xFC;    //1 ms¶¨Ê±
    TL0 = 0x67;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
   
    while(1)
    {
        LedBuff[0] = LedChar[sec % 10];
        LedBuff[1] = LedChar[sec/10 %10];
    }
   
}

//ÖжϷþÎñº¯Êý
void InterruptTimer0() interrupt 1
{
    static unsigned int cnt = 0;  
   
    //Range of "unsigned char" is 0 to 255
    //Range of "unsigned int"  is 0 to 65535
   
    TH0 = 0xFC;
    TL0 = 0x67;
    cnt++;   
    LedScan();
   
    if(cnt >= 1000)
    {
        cnt = 0;
        sec--;
        if(sec < 0)
        {
            sec = 99;
        }
   
    }
   
}

评分

参与人数 1威望 +50 黑币 +50 收起 理由
admin + 50 + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:77282 发表于 2015-7-9 22:00 | 只看该作者
占沙发的
回复

使用道具 举报

板凳
ID:84788 发表于 2015-7-9 23:22 | 只看该作者
沙发   
回复

使用道具 举报

地板
ID:98756 发表于 2015-12-10 10:55 | 只看该作者
正在找这个
回复

使用道具 举报

5#
ID:185112 发表于 2017-4-20 11:17 | 只看该作者
怎样用定时器可提高定时精准度?
回复

使用道具 举报

6#
ID:758552 发表于 2020-5-22 17:57 | 只看该作者
后面有些代码好像乱码了
回复

使用道具 举报

7#
ID:758552 发表于 2020-5-22 22:44 | 只看该作者
有proteus仿真图嘛
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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