请帮忙写一个C51程序 和程序仿真图 谢谢!具体要求如下

2025-02-23 10:19:19
推荐回答(1个)
回答1:

#include"reg51.h" //包含52头文件
#define TRUE 1 //定义布尔量'1':真
#define FALSE 0 //定义布尔量'0':假
#define uchar unsigned char //定义 无符号字符型数据 简称
#define uint unsigned int //定义 无符号整型数据 简称
#define TriggerNumber 319 //触发数值

sbit Key=P1^0; //按键接口
sbit LED=P1^5; //LED接口
#define LED_On LED=0 //点亮LED
#define LED_Off LED=1 //熄灭LED

void KeyResp() //按键响应函数
{
static bit KeyDownFlag,KeyReadyFlag; //静态变量,按键按下标志位,按键准备(响应)标志位
static uint KeyPressCount; //静态变量,按键按下计数(寄存器)
if(!Key) //若按键按下,则
{
KeyDownFlag=TRUE; //置 按键按下标志位
KeyReadyFlag=TRUE; //置 按键准备(响应)标志位
}
else KeyDownFlag=FALSE; //若无按键按下,则清 按键按下标志位
if(!KeyDownFlag && KeyReadyFlag) //若按键已准备(响应),且无按键按下,(即松手情况)
{
KeyPressCount++; //按键按下计数 加1
if(KeyPressCount==TriggerNumber) //若 按键按下次数等于 触发数值,则
{
LED=~LED; //切换LED状态
KeyPressCount=0; //清 按键按下计数值
}
KeyReadyFlag=FALSE; //清 按键准备标志位
}
}

void SystemInit() //系统初始化函数
{
Key=1; //按键接口初始化
LED_Off; //熄灭LED
}

void main() //主函数
{
SystemInit(); //调用 系统初始化函数
while(1) //循环系统
{
KeyResp(); //调用 按键响应函数
}
}