首页 > 其他分享 >c语言:计数器实验

c语言:计数器实验

时间:2023-06-13 14:57:02浏览次数:39  
标签:P1 LED 语言 按钮开关 counter 计数器 实验 按钮

要求:P1口接2只LED灯,定时器 T1采用计数模式,方式1中断,外接按钮开关作为计数输入,当按2次按钮开关,P1 口第一只LED点亮,再按2次按钮开关,P1口第二只LED点亮,再按2次按钮,所有LED 灯熄灭。 

 1 #include <reg52.h>
 2 
 3 // 定义 LED 灯的控制端口和对应的控制位
 4 sbit LED1 = P1^0;
 5 sbit LED2 = P1^1;
 6 
 7 // 定义计数器的变量
 8 static unsigned char counter = 0;
 9 
10 // 定义按钮输入的函数
11 void buttonInput() interrupt 3 {
12     // 按钮开关在第一位时,计数器加一
13     if (P3 & 0x01) {
14         counter++;
15     }
16 }
17 
18 // 定义延时函数
19 void delay(unsigned int time) {
20     unsigned int i, j;
21     for (i = time; i > 0; i--) {
22         for (j = 110; j > 0; j--);
23     }
24 }
25 
26 // 主函数
27 void main() {
28     // 初始化定时器 T1
29     TMOD &= 0xF0;
30     TMOD |= 0x01;
31     TH1 = 0xFC;
32     TL1 = 0x18;
33     TR1 = 1;
34     ET1 = 1;
35     EA = 1;
36 
37     // 循环检测计数器变量,控制 LED 灯的亮灭状态
38     while (1) {
39         if (counter == 2) {
40             LED1 = 1;
41             delay(50000);
42             LED2 = 1;
43             delay(50000);
44             counter = 0;
45             LED1 = 0;
46             LED2 = 0;
47         }
48     }
49 }

以上代码使用了静态变量counter来记录按下按钮的次数,通过计数器的值来控制 LED 灯的亮灭状态。此外,还使用了中断、定时器和按钮输入等多个模块来实现计数器功能。

标签:P1,LED,语言,按钮开关,counter,计数器,实验,按钮
From: https://www.cnblogs.com/cloud-sword/p/17477491.html

相关文章

  • 实验7
    任务4程序源码:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){charch;FILE*fp;inti=0;fp=fopen("data4.txt","r");ch=fgetc(fp);while(ch!=EOF){if(ch!=''&......
  • 实验七
    task11classAccount:2def__init__(self,name,account_number,initial_amount=10):3self._name=name4self._card_no=account_number5self._balance=initial_amount67defdeposit(self,amount):8self.......
  • 实验7
    task3importmathdeffunc(x):f=((math.e)**((-0.5)*(((x-m)/s)**2)))/(s*math.sqrt(2*(math.pi)))returnf'{f:.8f}'m=0s=2x_lst=[1,3,5,7,9]forxinx_lst:print(f'x={x},f={func(x)}') ......
  • 实验七
    task4代码#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN5#defineM80intmain(){charch[M];intch_counts=0,n=0;FILE*fp;fp=fopen("data4.txt","r");if(fp==NULL){......
  • 成功解决错误 CS8400 功能“创建目标类型对象”在 C# 8.0 中不可用。请使用语言版本 9
    成功解决错误CS8400功能“创建目标类型对象”在C#8.0中不可用。请使用语言版本9.0或更高版本。https://blog.csdn.net/RoseJFrame/article/details/129855616在使用ScottPlot例程中MultipleHistograms图表代码时遇到的问题错误CS8400功能“创建目标类型对象”在......
  • Python实验课7
    实验任务1classAccount:'''一个模拟银行账户的简单类'''def__init__(self,name,account_number,initial_amount=10):'''构造新账户'''self._name=nameself._card_no=account_numb......
  • 实验六
    task1-11fromturtleimport*2defmove(x,y):3penup()4goto(x,y)5pendown()67defdraw(n,size=100):8foriinrange(n):9fd(size)10left(360/n)11defmain():12pensize(2)13pencolor('re......
  • 双编码器的自然语言图像搜索
    正文字数:5798 阅读时长:10 分钟如何构建一个双编码器(也称为双塔)神经网络模型,以使用自然语言搜索图像。作者/ KhalidSalama原文链接/https://keras.io/examples/nlp/nl_image_search/1介绍该示例演示了如何构建一个双编码器(也称为双塔)神经网络模型,以使用自然语言搜索图像。该......
  • 实验7 面向对象编程与内置模块
    实验任务1#task1源码1'''2银行账号3数据:持卡人姓名、账号、当前余额4操作:取款、存款、打印账户信息、返回账户余额5'''67classAccount:#一个模拟银行账户的简单类89def__init__(self,name,account_number,initial_amount=10):#构......
  • C语言-策略模式
    1.假设我们需要实现一个排序程序,可以对一个整型数组进行排序。我们需要使用策略模式来封装不同的排序算法,例如冒泡排序、插入排序和快速排序。2.Code点击查看代码#include<stdio.h>#include<stdlib.h>#include<string.h>//策略接口typedefvoid(*Strategy)(int*,in......