实现计数器计数,使用按键按下记一次数

实现计数器计数,使用按键按下记一次数

实验要求

每按下一次按钮,静态数码管数值+1

实验代码

 

#include<reg51.h>
#include<stdio.h>
typedef unsigned char u8;


unsigned int i=1;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

 
void DelayMs(unsigned int x)
{
    unsigned char i;
    while(x--)
        for(i=0;i<120;i++);
}

void init(){
    TMOD=0x60;
    TH1=0xff;
    TL1=0xff;
    TR1=1;
    ET1=1;
    EA=1;
}

void main()
{
    init();
    while(1);
}


void add() interrupt 3
{
    if(!T1){
        DelayMs(50);
        if(!T1)
        while(!T1);
    P1=~smgduan[i];
    i++;
    
    }    
}

效果图

 

转载于:https://www.cnblogs.com/wjw1014/p/10138032.html

STM32 是一种由 STMicroelectronics(STMicroelectronics International N.V.)公司生产的嵌入式微控制器系列,广泛应用于工业控制、消费电子、物联网和汽车电子等领域。它以其高性能、低功耗和丰富的外设资源而闻名。 在 STM32 中,要记录按键按下次数,通常会使用中断处理机制。具体步骤如下: 1. **初始化按键模块**:首先,需要配置相应的 GPIO 为输入模式,并将按键对应的引脚设置为下降沿检测模式,因为按键按下时电平会下降。 2. **设置中断**:启用该按键的中断,当按键按下时,系统会触发一个中断。 3. **中断服务函数**:在中断服务函数中,检查按键是否被按下。如果按键的状态改变(如从高电平变为低电平),则计数器一。 4. **存储按键计数**:在中断服务函数结束后,通常会在某个数据结构或寄存器中更新按键按下次数。 5. **复位中断标志**:为了防止连续多次的按键按下导致计数错误,记得在中断服务函数结束时复位按键的中断标志。 6. **用户交互**:如果需要,可以在主循环中读取并显示按键按下次数。 这里是一个简化版的代码片段示例: ```c // 假设按键引脚为GPIO_PIN_0 GPIO_InitTypeDef GPIO_InitStructure; uint8_t keyPressCount = 0; void EXTI0_IRQHandler() { if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { // 按键被释放 EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志 } else { keyPressCount++; // 按键按下 // 更新按键计数,比如储存在全局变量或结构体中 } } void initKey() { GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 启动按键中断 EXTI_EnableIT Falling(EXTI_Line0); } int main() { initKey(); while (1) { // 主循环,可以在此处获取并处理按键计数 // 显示或处理按键按下的信息 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值