实现计数器功能,要求如下1)P1.1模拟外部脉冲输入;
2)利用8个LED显示计数器中TL0的计数值(二进制);3)T0作为计数器;
4)P0口与数码管连接。
5)P1.1连接至T0引脚(P3.4)
stc15单片机显示计数器
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 虚拟机vmnet8 nat模式可以ping通主机,主机也能ping通虚拟机,但是vmnet8一直未识别怎么解决,其次诊断结果就是默认网关不可用
- ¥20 求各位能用我能理解的话回答超级简单的一些问题
- ¥15 yolov5双目识别输出坐标代码报错
- ¥15 这个代码有什么语法错误
- ¥15 给予STM32按键中断与串口通信
- ¥15 使用QT实现can通信
- ¥15 关于sp验证的一些东西,求告知如何解决,
- ¥35 关于#javascript#的问题:但是我写的只能接码数字和字符,帮我写一个解码JS问题
- ¥15 prophet运行报错,如何解决?
- ¥15 用GPU跑pytorch搭建的LSTM的时候出现了奇怪的报错