m0_62801663 2022-07-28 21:11 采纳率: 72%
浏览 124
已结题

c51单片机定时器计时

#include <REGX52.H>
#include <INTRINS.H>
unsigned int a,b,i,j;

sbit BEEP=P2^5;
unsigned char s[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(unsigned int n){

unsigned int a,b;
for(a = n; a > 0; a--)
for(b = 114; b > 0; b--);

}

void show_s(a){

for(i=0;i<6;i++){
    for(j=0;j<9;j++){    
      P2_4=0;P2_3=0;P2_2=1;
        P0=s[j];
        delay_ms(1);
}
        P2_4=0;P2_3=0;P2_2=0;
        P0=s[i];
        delay_ms(1);
        P0=0x00;
    }
}

void show_f(b){

for(i=0;i<=1;i++){    
    
    P2_4=0;P2_3=1;P2_2=0;
    P0=s[i];
    delay_ms(1);
    if(i==1){
        BEEP=!BEEP;
        break;
    }
}
P2_4=0;P2_3=1;P2_2=1;
P0=s[0];
delay_ms(1);
P0=0x00;

}

void Timer1Init(unsigned char us){

EA=1; 
ET1=1; 
TMOD = 0x01;
//TL0低8位,TH0高8TL1=(64535-us)%256;
TH1=(64535-us)/256;

TF1 = 0;        //清除TF1标志
TR1 = 1;        //定时器1开始计时

//中断配置

PT1=0;

}

void main()
{
a=0;
b=0;
Timer1Init(50000);

while(1)
{
    show_s(a);
    show_f(b);
}

}

void Timer1_Routine() interrupt 1{
static unsigned int s = 0;

TL1=(64535-50000)%256;
TH1=(64535-50000)/256;
s++;


if(s==50000){
    s=0;
    for(b=0;b<=1;b++){
        for(a=0;a<60;a++){
        }
        a=0;
        if(b==1&&a==30){
            BEEP=!BEEP;
            delay_ms(1);
            break;
        }
    }
}

}

想要实现的功能:用动态方式和定时器1,在数码管的后两位显示出秒表,前两位显示分表,设定时间在数码管显示为0130即累计的时间为1分30秒时蜂鸣器叫。

问题:51单片机数码管一直在乱闪,没有实现计时功能

  • 写回答

2条回答 默认 最新

  • qq_29144129 2022-07-29 14:55
    关注

    分一个变量、秒一个变量,在中断中计数,在主函数中调用变量显示。1分30秒时蜂鸣器叫可以在中断中设置flag,主函数中根据flag控制蜂鸣器。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 创建了问题 7月28日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值