找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1491|回复: 6
收起左侧

帮我看看单片机定时器程序,设置定时一秒,实际测出来比一秒快太多了

[复制链接]
ID:787039 发表于 2021-6-19 19:32 | 显示全部楼层 |阅读模式
#include <STC12C5A60S2.h>
#include <intrins.h>                  
typedef unsigned char u8;
typedef unsigned int u16;

//stc15w408as共阳数码管代码


u16  mun, key=0,key_;//变量声明


u8 code tab[16][10]=
{{1,1,0,0,0,0,0,0},
{1,1,1,1,1,0,0,1},
{1,0,1,0,0,1,0,0},
{1,0,1,1,0,0,0,0},
{1,0,0,1,1,0,0,1},
{1,0,0,1,0,0,1,0},
{1,0,0,0,0,0,1,0},
{1,1,1,1,1,0,0,0},
{1,0,0,0,0,0,0,0},
{1,0,0,1,0,0,0,0},
{1,0,0,0,1,0,0,0},//a
{1,0,0,0,0,0,1,1},//b
{1,1,0,0,0,1,1,0},//c
{1,0,1,0,0,0,0,1},//d
{1,0,0,0,0,1,1,0},//e
{1,0,0,0,1,1,1,0}};//f

sbit A_=P1^0;//断码
sbit B_=P1^1;
sbit C_=P1^2;
sbit D_=P1^3;
sbit E_=P1^4;
sbit F_=P1^5;
sbit G_=P1^6;
sbit H_=P3^7;

sbit GeWei=P2^6;
sbit ShiWei=P2^7;

void Delay10ms();
unsigned char Desplay(unsigned char mun,com);
void Delay1ms()        ;
void Time();


   void main()
        
        {Time();//定时器初始化
                while(1)
                        {
                        if(key==60)
                        {
                        key=0;
                        }
           Desplay( key%10,1);
                   Desplay((key/10)%10,2);
}
                   }



void Time()
        {
        AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TL0 = 0x00;                //设置定时初值
        TH0 = 0xB8;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        ET0=1;
        EA=1;
        }
unsigned char Desplay(unsigned char mun,com)
        {u8 i;
        for(i=0;i<8;i++)
                {
                        switch(i)
                                {
                                        case 0:A_=tab[mun][7];break;
                                        case 1:B_=tab[mun][6];break;
                                        case 2:C_=tab[mun][5];break;
                                        case 3:D_=tab[mun][4];break;
                                        case 4:E_=tab[mun][3];break;
                                        case 5:F_=tab[mun][2];break;
                                        case 6:G_=tab[mun][1];break;
                                        case 7:H_=tab[mun][0];break;
                                                                                                }
                                                                                                        }
                 switch(com)
                                {
                                        case 1:GeWei=1;ShiWei=0;break;
                                        case 2:GeWei=0;ShiWei=1;break;
                                                                                                }
                                        Delay1ms();
                                         A_=1;B_=1;C_=1;D_=1;E_=1;F_=1;G_=1;H_=1;
                                        GeWei=0;
                                        ShiWei=0;
                                                                                                                }
void titn_time_ () interrupt 1
        {
        TL0 = 0x00;                //设置定时初值
        TH0 = 0xB8;                //设置定时初值
                        ++mun;
                        if(mun==50)
                        { mun=0;
                        key++;}        

                                        }



void Delay1ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
}


回复

使用道具 举报

ID:96682 发表于 2021-6-19 23:34 来自手机 | 显示全部楼层
随意更改型号频率肯定效果不佳
回复

使用道具 举报

ID:939710 发表于 2021-6-20 11:45 | 显示全部楼层
确定你的系统时钟和你定时器+1和系统时钟的关系,再用计算公式计算
回复

使用道具 举报

ID:748788 发表于 2021-6-20 17:02 | 显示全部楼层
408as的主频是多少?12m或11.0592m应该设置不同的定时器初值
回复

使用道具 举报

ID:123289 发表于 2021-6-21 11:04 | 显示全部楼层
计算时间是最最基本的能力,仔细算算,都会比较准的。
回复

使用道具 举报

ID:451718 发表于 2021-6-21 11:17 | 显示全部楼层
你这个main函数里面, 没有看到定时器的初始化操作哦
回复

使用道具 举报

ID:941432 发表于 2021-6-21 11:22 | 显示全部楼层
芯片的频率不是12.0的,大概为11.多的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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