趣味实验之雨滴检测

******************************************************************/
#include "iostm8s208mb.h"//主控芯片的头文件
#include "stdio.h"//需要使用printf()函数故而包含该头文件
/************************常用数据类型定义*************************/
#define u8  uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char    uint8_t;
typedef unsigned short   uint16_t;
typedef unsigned long    uint32_t;
/*************************端口/引脚定义区域***********************/
#define Raindrop  PE_IDR_IDR6//连接至雨滴传感器引脚
/**************************函数声明区域***************************/
void delay(u16 Count);          //延时函数声明
void UART3_Init(void);         //串口3初始化函数
void UART3_SendByte(u8 data);  //串口3发送单个字符函数
int putchar(int ch);           //发送字符重定向函数
/**************************主函数区域*****************************/
void main(void)
{
  CLK_CKDIVR=0x00;      //选定HSI时钟源,配置频率为16MHz
  delay(10);            //延时等待时钟稳定
  UART3_Init();         //初始化串口3
  delay(50);
  PE_DDR_DDR6=0;        //配置PE6端口为输入模式
  PE_CR1_C16=1;         //配置PE6端口为弱上拉输入模式
  PE_CR2_C26=1;         //使能PE6端口外部中断
  while(1)              //死循环
  {
    if(Raindrop==0)//检测到雨滴落下
    {
      printf("<I>18");  //提示音1
      delay(100);
      printf("<G>下雨了,快点收衣服回家\n");
      delay(5000);
      while(!Raindrop);//等待雨停
    }
  }
}
/****************************************************************/
//延时函数delay(),有形参Count用于控制延时函数执行次数,无返回值
/****************************************************************/
void delay(u16 Count)
{
  u8 i,j;
  while (Count--)//Count形参控制延时次数
  {
    for(i=0;i<50;i++)
      for(j=0;j<20;j++);
  }
}
/****************************************************************/
//初始化函数UART3_Init(),无形参和返回值
/****************************************************************/
void UART3_Init(void)
{
  //1.设定通信数据位数,此处设定为8位数据位,无校验位
  UART3_CR1 = 0x00;
  //2.设定通信停止位位数,此处设定为1位停止位
  UART3_CR3 = 0x00;
  //3.配置通信波特率参数,此处配置为9600bps(16MHz频率下)
  UART3_BRR2 = 0x03;
  UART3_BRR1 = 0x68;
  //4.使能发送和接收功能
  UART3_CR2 = 0x0C;
}
/****************************************************************/
//发送单字符函数UART3_SendByte(),有形参data,无返回值
/****************************************************************/
void UART3_SendByte(u8 data)
{
   UART3_DR=data;//发送数据到UART3数据寄存器
   while (!(UART3_SR & 0x80));//等待发送完毕
}
/****************************************************************/
//发送字符重定向函数putchar(),有形参ch,有返回值
/****************************************************************/
int putchar(int ch) 
{  
  while((UART3_SR&0x80)==0x00);
  UART3_SendByte((u8)ch);//将Printf内容发往串口
  return (ch); 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值