51单片机与stm32串口通信,stm32 上按键B1按下,51 单片机蜂鸣器鸣叫报警时间增加,分别写出51和32的keil5代码
时间: 2023-12-14 20:03:14 浏览: 87
这里主要写了一些有关51单片机,stm32单片机,可能以后还会出现FPAG的代码。
以下是51单片机和STM32的Keil5代码示例:
51单片机代码:
```
#include<reg52.h>
sbit beep=P1^5; //蜂鸣器连接在P1.5口上
sbit led=P1^4; //报警指示灯连接在P1.4口上
unsigned char timer=0; //计时器
unsigned char count=0; //计数器
void main()
{
TMOD=0x01; //定时器0工作方式1
TH0=0x3C; //定时器0初值
TL0=0xB0;
TR0=1; //定时器0开始计时
ET0=1; //打开定时器0中断
EA=1; //打开总中断
while(1)
{
if(count>=10) //蜂鸣器响10次后停止
{
TR0=0; //关闭定时器0
beep=0; //蜂鸣器停止响
led=0; //报警指示灯熄灭
timer=0; //计时器清零
count=0; //计数器清零
}
}
}
void Timer0() interrupt 1
{
TH0=0x3C; //定时器0初值
TL0=0xB0;
timer++; //计时器加1
if(timer>=50) //计时器达到50次,即1秒
{
timer=0; //计时器清零
if(B1==0) //判断按键B1是否按下
{
beep=~beep; //蜂鸣器状态取反
count++; //计数器加1
led=~led; //报警指示灯状态取反
}
}
}
```
STM32代码:
```
#include "stm32f10x.h"
#define B1 GPIO_Pin_0
#define B1_GPIO GPIOA
#define BEEP GPIO_Pin_0
#define BEEP_GPIO GPIOB
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOA、GPIOB时钟
GPIO_InitStructure.GPIO_Pin = B1; //B1按键
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(B1_GPIO, &GPIO_InitStructure); //初始化B1按键
GPIO_InitStructure.GPIO_Pin = BEEP; //BEEP蜂鸣器
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
GPIO_Init(BEEP_GPIO, &GPIO_InitStructure); //初始化BEEP蜂鸣器
while(1)
{
if(GPIO_ReadInputDataBit(B1_GPIO, B1) == 0) //判断按键B1是否按下
{
GPIO_SetBits(BEEP_GPIO, BEEP); //BEEP蜂鸣器响
Delay(1000); //延时1秒
GPIO_ResetBits(BEEP_GPIO, BEEP); //BEEP蜂鸣器停止响
Delay(1000); //延时1秒
}
}
}
void Delay(uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
```
阅读全文