找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13209|回复: 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 共享资料的积分奖励!

查看全部评分

回复

使用道具 举报

ID:77282 发表于 2015-7-9 22:00 | 显示全部楼层
占沙发的
回复

使用道具 举报

ID:84788 发表于 2015-7-9 23:22 | 显示全部楼层
沙发   
回复

使用道具 举报

ID:98756 发表于 2015-12-10 10:55 | 显示全部楼层
正在找这个
回复

使用道具 举报

ID:185112 发表于 2017-4-20 11:17 | 显示全部楼层
怎样用定时器可提高定时精准度?
回复

使用道具 举报

ID:758552 发表于 2020-5-22 17:57 | 显示全部楼层
后面有些代码好像乱码了
回复

使用道具 举报

ID:758552 发表于 2020-5-22 22:44 | 显示全部楼层
有proteus仿真图嘛
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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