hgf564654 2021-07-02 22:47 采纳率: 0%
浏览 15

stc15单片机显示计数器

实现计数器功能,要求如下1)P1.1模拟外部脉冲输入;
2)利用8个LED显示计数器中TL0的计数值(二进制);3)T0作为计数器;
4)P0口与数码管连接。
5)P1.1连接至T0引脚(P3.4)

  • 写回答

1条回答 默认 最新

  • 梦幻编织者 2023-06-07 17:43
    关注
    
    #include <reg52.h> //包含reg52.h头文件
    
    sbit LED1 = P0^0; //定义LED1连接到P0.0口
    sbit LED2 = P0^1; //定义LED2连接到P0.1口
    sbit LED3 = P0^2; //定义LED3连接到P0.2口
    sbit LED4 = P0^3; //定义LED4连接到P0.3口
    sbit LED5 = P0^4; //定义LED5连接到P0.4口
    sbit LED6 = P0^5; //定义LED6连接到P0.5口
    sbit LED7 = P0^6; //定义LED7连接到P0.6口
    sbit LED8 = P0^7; //定义LED8连接到P0.7口
    
    void main()
    {
    TMOD = 0x01; //设置T0为模式1
    TH0 = 0xFC; //设置T0的初始值为0xFC
    TL0 = 0x00; //清零T0的计数值
    TR0 = 1; //启动T0计数器
    while(1) //循环执行
    {
    if(TF0 == 1) //如果T0计数溢出
    {
    TF0 = 0; //清除T0溢出标志
    LED1 = ~LED1; //LED1取反
    if(LED1 == 1) //如果LED1为1
    {
    TL0 = 0x00; //清零T0的计数值
    TH0 = 0xFC; //重新设置T0的初始值
    }
    else //如果LED1为0
    {
    if(TL0 == 0xFF) //如果T0计数值达到最大值
    {
    TL0 = 0x00; //清零T0的计数值
    TH0++; //T0的高8位加1
    }
    else //如果T0计数值未达到最大值
    {
    TL0++; //T0的低8位加1
    }
    }
    LED2 = TH0 & 0x01; //将T0的高8位的最低位赋值给LED2
    LED3 = TH0 & 0x02; //将T0的高8位的次低位赋值给LED3
    LED4 = TH0 & 0x04; //将T0的高8位的第3位赋值给LED4
    LED5 = TH0 & 0x08; //将T0的高8位的第4位赋值给LED5
    LED6 = TH0 & 0x10; //将T0的高8位的第5位赋值给LED6
    LED7 = TH0 & 0x20; //将T0的高8位的第6位赋值给LED7
    LED8 = TH0 & 0x40; //将T0的高8位的第7位赋值给LED8
    }
    }
    }
    

    以上代码实现了一个计数器功能,P1.1模拟外部脉冲输入,T0作为计数器,8个LED显示计数器中TL0的计数值(二进制),P0口与数码管连接,P1.1连接至T0引脚(P3.4)。在每次T0计数溢出时,LED1取反,如果LED1为1,就清零T0的计数值并重新设置T0的初始值,如果LED1为0,就将T0的计数值加1,并将T0的高8位的各位赋值给对应的LED。

    评论

报告相同问题?

悬赏问题

  • ¥50 深度学习运行代码直接中断
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥20 需要完整的共散射点成像代码
  • ¥15 编写vba代码实现数据录入工作
  • ¥15 做过TCL海信电视小米电视相关影视会员软件私我
  • ¥15 Mapreduce是正常的,在运行其他jar包时并没有任何问题,只是在做LogCount.jar 时出的问题。如图所示
  • ¥15 ImportError: DLL load failed while importing _iterative: 找不到指定的模块。
  • ¥15 如何通过交互分析得出某高危患者对放疗获益更多
  • ¥15 相关性分析中,p<0.05, r=0.29,怎么评价相关性呢