找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3232|回复: 0
收起左侧

stm8红外避障程序

[复制链接]
ID:195660 发表于 2017-7-22 16:21 | 显示全部楼层 |阅读模式
stm8红外避障程序下载:
stm8红外避障程序.zip (411.73 KB, 下载次数: 9)

  1. /*****************************************************************
  2. * 实验名称及内容:趣味实验之壁障检测
  3. * 配套书籍:《深入浅出STM8单片机入门、进阶与应用实例》
  4. * 交流QQ群: 305348768
  5. * 实验平台及编程人员:思修电子工作室"祥云小王子"开发版 Long
  6. ******************************************************************/
  7. #include "iostm8s208mb.h"//主控芯片的头文件
  8. #include "stdio.h"//需要使用printf()函数故而包含该头文件
  9. /************************常用数据类型定义*************************/
  10. #define u8  uint8_t
  11. #define u16 uint16_t
  12. #define u32 uint32_t
  13. typedef unsigned char    uint8_t;
  14. typedef unsigned short   uint16_t;
  15. typedef unsigned long    uint32_t;
  16. /*************************端口/引脚定义区域***********************/
  17. #define  Obstacle_evading  PE_IDR_IDR6    //连接至避障传感器引脚
  18. /**************************函数声明区域***************************/
  19. void delay(u16 Count);          //延时函数声明
  20. void UART3_Init(void);         //串口3初始化函数
  21. void UART3_SendByte(u8 data);  //串口3发送单个字符函数
  22. int putchar(int ch);           //发送字符重定向函数
  23. /**************************主函数区域*****************************/
  24. void main(void)
  25. {
  26.   CLK_CKDIVR=0x00;      //选定HSI时钟源,配置频率为16MHz
  27.   delay(10);            //延时等待时钟稳定
  28.   UART3_Init();         //初始化串口3
  29.   delay(50);
  30.   PE_DDR_DDR6=0;        //配置PE6端口为输入模式
  31.   PE_CR1_C16=1;         //配置PE6端口为弱上拉输入模式
  32.   PE_CR2_C26=1;         //使能PE6端口外部中断
  33.   while(1)              //死循环
  34.   {
  35.     if(Obstacle_evading==0)//检测到障碍物
  36.     {
  37.       //printf("<I>18");  //提示音1
  38.       //delay(1000);
  39.       printf("<G>前方有障碍物\n");
  40.       delay(1000);
  41.       while(!Obstacle_evading);//直到远离障碍物
  42.     }
  43.   }
  44. }
  45. /****************************************************************/
  46. //延时函数delay(),有形参Count用于控制延时函数执行次数,无返回值
  47. /****************************************************************/
  48. void delay(u16 Count)
  49. {
  50.   u8 i,j;
  51.   while (Count--)//Count形参控制延时次数
  52.   {
  53.     for(i=0;i<50;i++)
  54.       for(j=0;j<20;j++);
  55.   }
  56. }
  57. /****************************************************************/
  58. //初始化函数UART3_Init(),无形参和返回值
  59. /****************************************************************/
  60. void UART3_Init(void)
  61. {
  62.   //1.设定通信数据位数,此处设定为8位数据位,无校验位
  63.   UART3_CR1 = 0x00;
  64.   //2.设定通信停止位位数,此处设定为1位停止位
  65.   UART3_CR3 = 0x00;
  66.   //3.配置通信波特率参数,此处配置为9600bps(16MHz频率下)
  67.   UART3_BRR2 = 0x03;
  68.   UART3_BRR1 = 0x68;
  69.   //4.使能发送和接收功能
  70.   UART3_CR2 = 0x0C;
  71. }
  72. /****************************************************************/
  73. //发送单字符函数UART3_SendByte(),有形参data,无返回值
  74. /****************************************************************/
  75. void UART3_SendByte(u8 data)
  76. {
  77.    UART3_DR=data;//发送数据到UART3数据寄存器
  78.    while (!(UART3_SR & 0x80));//等待发送完毕
  79. }
  80. /****************************************************************/
  81. //发送字符重定向函数putchar(),有形参ch,有返回值
  82. /****************************************************************/
  83. int putchar(int ch)
  84. {  
  85.   while((UART3_SR&0x80)==0x00);
  86.   UART3_SendByte((u8)ch);//将Printf内容发往串口
  87.   return (ch);
  88. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表