燕山大学暑期校内实习stm8h程序集合
关于stm8的编程,功能实现
燕山大学暑期校内实习程序合集
① 一个小灯亮灭
#include"stm8s.h"
void main(void)
{
GPIO_DeInit( GPIOD);//恢复指定端口
GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_SLOW); while(1)
{
GPIO_WriteLow( GPIOD, GPIO_PIN_0 );/*PD0口输出低电平*/
}
}
② 小灯闪烁
#include"stm8s.h"//头文件
void delay(u32 i)/*延时子程序*/
{
u32 j;
for(j=0;j<i;j++)
{;}
}
void main(void)//主程序头
{
GPIO_DeInit( GPIOD);//选pd口
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮
while(1)//死循环
{
GPIO_WriteLow( GPIOD, GPIO_PIN_LNIB );/*PD0口输出低电平灯亮*/ delay(20000);//延时
GPIO_WriteHigh( GPIOD, GPIO_PIN_LNIB );//输出高电平灯灭
delay(5000);//延时
}}
关于stm8的编程,功能实现
③ 左移流水灯
#include"stm8s.h"//头文件
void delay(u32 i)/*延时子程序*/
{
u32 j;
for(j=0;j<i;j++)
{;}
}
void main(void)//主程序头
{
GPIO_DeInit(GPIOD);//初始化pd口
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮
while(1)//大循环
{
u8 n=0xfe;//付初值1111 1110
for(int m=0;m<4;m++)
{
GPIO_Write(GPIOD,n);//翻转
delay(5000);//延时
n=n<<1;//左移
n=n+1;//灭前一个灯
}
}
}
④ 数组流水灯
#include"stm8s.h"//头文件
void delay(u32 i)/*延时子程序*/
{
u32 j;
for(j=0;j<i;j++)
{;}
}
void main(void)//主程序头
关于stm8的编程,功能实现
GPIO_DeInit(GPIOD);//初始化pd口
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮
unsigned char num[4]={0xfe,0xfd,0xfb,0xf7};
while(1)//循环
{
for(int i=0;i<4;i++)
{
GPIO_Write(GPIOD,num[i]);//分别给高4位和低4位PD口赋值
delay(50000);//延时
}
}
}
⑤ 小灯变频闪烁
#include"stm8s.h"//头文件
void delay(u32 i)/*延时子程序*/
{
u32 j;
for(j=0;j<i;j++)
{;}
}
void main(void)//主程序头
{
GPIO_DeInit( GPIOD);//初始化pd口
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮
while(1)//大循环
{
int x=10;
for(int y=0;y<x;y++)
{
GPIO_WriteReverse( GPIOD, GPIO_PIN_LNIB );//翻转灯亮灭
delay(50000);//延时
关于stm8的编程,功能实现
}
int m=10;
for(int n=0;n<m;n++)
{
GPIO_WriteReverse( GPIOD, GPIO_PIN_LNIB );//翻转灯亮灭
delay(5000);//延时
}
}
}
⑥ 查询法TIM2精确控制小灯闪烁
//小灯闪烁
#include"stm8s.h"//头
void delay_ms(u16 i)
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_2,1000);
while(i--)
{
TIM2_Cmd(ENABLE);
while(TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);
TIM2_ClearFlag(TIM2_FLAG_UPDATE);
TIM2_Cmd(DISABLE);
}
}
void main(void)//主程序头
{
GPIO_DeInit( GPIOD);//选pd口
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//灯亮
while(1)//死循环
{
关于stm8的编程,功能实现
GPIO_WriteReverse(GPIOD, GPIO_PIN_LNIB);//灯翻转亮灭
delay_ms(500);//延时
}
}
⑦ TIM2精确控制流水灯(查询法)
//改变小灯闪烁频率
#include"stm8s.h"//头
void delay_ms(u16 i)
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_2,1000);
while(i--)
{
TIM2_Cmd(ENABLE);
while(TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);
TIM2_ClearFlag(TIM2_FLAG_UPDATE);
TIM2_Cmd(DISABLE);
}
}
void main(void)//主程序头
{
GPIO_DeInit( GPIOD);//选pd口
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_OD_LOW_SLOW);
while(1)//死循环
{ u8 n=0xfe;
for (int i=0;i<4;i++)
{
GPIO_Write(GPIOD, n);
delay_ms(500);
n=n<<1;
n=n+1;}
}
关于stm8的编程,功能实现
}
⑧ TIM2实现精确延时流水灯
#include"stm8s.h"//
void delay_ms(u16 i)
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_2,1000);
while(i--)
{
TIM2_Cmd(ENABLE);
while(TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);
TIM2_ClearFlag(TIM2_FLAG_UPDATE);
TIM2_Cmd(DISABLE);
}
}
void main(void)//主程序头
{
u8 n;
GPIO_DeInit( GPIOD);//选pd口
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_OD_LOW_SLOW);
while(1)//死循环
{
n=0xfe;
for (int i=0;i<4;i++)
{
GPIO_Write(GPIOD, n);
delay_ms(500);
n=n<<1;
n=n+1;}
}
}
关于stm8的编程,功能实现
⑨ TIM2控制灯亮灭(中断)
#include"stm8s.h"
u16 i=0;
/************定时器2的配置******/
void TIM2_Configuration(void)
{
TIM2_DeInit(); //TIM2初始化
TIM2_TimeBaseInit(TIM2_PRESCALER_2, 2000);//预分频2,计数值2000,即2ms
TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);//更新模式,开中断
TIM2_Cmd(ENABLE);//开启TIM2
enableInterrupts(); //开总中断
}
/**********IO口初始化***********************/
void GPIO_Configuration(void)
{
GPIO_DeInit(GPIOB);
GPIO_Init(GPIOB, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_FAST);
}
void main() //主函数
{
TIM2_Configuration();
GPIO_Configuration();
while(1);
}
#pragma vector =15//TIM2中断入口
__interrupt void TIMER2_IRQHander(void)
{
i++;
if(i==250)
{
GPIO_WriteReverse(GPIOB, GPIO_PIN_LNIB);
关于stm8的编程,功能实现
i=0;
}
TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
}
⑩ 中断控制按键实现小灯变频
#include"stm8s.h"
void delay_ms(u16 i);
u8 t=1;
/*****************引脚配置**************************/
void GPIO_configurating(void)
{
GPIO_DeInit(GPIOB);
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_PU_IT );
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD,GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_HIGH_FAST);
}
/******************定时器配置************************/
void exit()
{
EXTI_DeInit();
EXTI_SetExtIntSensitivity( EXTI_PORT_GPIOB, EXTI_SENSITIVITY_RISE_ONLY);//配置中断模式
enableInterrupts();//开总中断
}
void main()
{
CLK_DeInit();
exit();
关于stm8的编程,功能实现
GPIO_configurating();
while(1)
{
if(t==1)
{
GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
delay_ms(250);
}
if(t==2)
{
GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
delay_ms(500);
}
if(t==3)
{
GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
delay_ms(1000);
}
if(t>3)
{
t=1;
}
}
}
#pragma vector=6
__interrupt void Exit_portb_irqhander(void)
{
t=t+1;
while(!(GPIO_ReadInputPin(GPIOB, GPIO_PIN_0) ))
{;}//循环执行
}
void delay_ms(u16 i)//精确定时
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_2, 1000);//1ms
while(i--)
{
TIM2_Cmd(ENABLE);
关于stm8的编程,功能实现
while( TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);
TIM2_ClearFlag( TIM2_FLAG_UPDATE);
TIM2_Cmd(DISABLE);
}
}
11 时钟分频
#include"stm8s.h"
void delay(u32 i);//函数声明
void main()//函数入口
{
CLK_DeInit();
GPIO_DeInit(GPIOD);//PD口置位
GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_OD_LOW_SLOW); /*PD口初始化,PD口的低四位,模式为开漏输出,低电平,慢速*/
while(1)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8 );
int k=5;
int m;
for(m=0;m<k;m++)
{
GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB );//PD的低四位置0 delay(10000);//延时
GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//PD的低四位置1 delay(10000);//延时
}
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2 );
int i=5;
int j;
for(j=0;j<i;j++)
{
关于stm8的编程,功能实现
GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB );//PD的低四位置0 delay(10000);//延时
GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//PD的低四位置1 delay(10000);//延时
}
}
}
void delay(u32 i)//延时子程序
{
u32 j;
for(j=0;j<i;j++)
{;}
}
12 查询法控制按键
#include<stm8s.h>
void delay(u32 s);
void main(void)
{
GPIO_DeInit(GPIOB);
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);//初始化端口,包括端口B引脚0
GPIO_Init(GPIOB, GPIO_PIN_1,GPIO_MODE_IN_PU_NO_IT);//初始化端口,包括端口B引脚1
while(1)
{
if(!(GPIO_ReadInputPin(GPIOB, GPIO_PIN_1)))
{
delay(10); //去抖
if(!(GPIO_ReadInputPin(GPIOB, GPIO_PIN_1)))//松手检测
{
GPIO_WriteReverse(GPIOB, GPIO_PIN_0);
while( !(GPIO_ReadInputPin(GPIOB, GPIO_PIN_1)) );//检验按键是否结束
}
}
}
}
void delay(u32 s)//延时子程序
{
关于stm8的编程,功能实现
u32 i,j;
for(i=s;i>0;i--)
for(j=110;j>0;j--);
}
13 按键改变小灯闪烁变频(查询法)
/*按键改变小灯闪烁频率*/
#include "stm8s.h"
#define uint unsigned int
#define uchar unsigned char
uint i=0;
void GPIO_INIT();
void Delay(uint del);
uchar key();
void main()
{
GPIO_INIT();
while(1)
{
key();
switch(i)
{
case 0:
GPIO_WriteLow(GPIOD, GPIO_PIN_0);//第0位给0
GPIO_WriteHigh(GPIOD, GPIO_PIN_1);
GPIO_WriteHigh(GPIOD, GPIO_PIN_2);
GPIO_WriteHigh(GPIOD, GPIO_PIN_3);
break;
case 1:
GPIO_WriteLow(GPIOD, GPIO_PIN_1);//第1位给0
GPIO_WriteHigh(GPIOD, GPIO_PIN_0);
GPIO_WriteHigh(GPIOD, GPIO_PIN_2);
GPIO_WriteHigh(GPIOD, GPIO_PIN_3);
break;
case 2:
GPIO_WriteLow(GPIOD, GPIO_PIN_2);//第2位给0 GPIO_WriteHigh(GPIOD, GPIO_PIN_0);
关于stm8的编程,功能实现
GPIO_WriteHigh(GPIOD, GPIO_PIN_1);
GPIO_WriteHigh(GPIOD, GPIO_PIN_3);
break;
case 3:
GPIO_WriteLow(GPIOD, GPIO_PIN_3);//第3位给0
GPIO_WriteHigh(GPIOD, GPIO_PIN_0);
GPIO_WriteHigh(GPIOD, GPIO_PIN_1);
GPIO_WriteHigh(GPIOD, GPIO_PIN_2);
break;
}
}
}
void GPIO_INIT()//初始化端口D
{
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD,GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB,GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT );
}
void Delay(uint del)//延时10ms
{
uint i1,j;
for(i1=0; i1<del; i1++)
for(j=0; j<1827; j++);
}
uchar key()
{
if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)) )
{
Delay(2); //20毫秒软件防抖
if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)))
{
i++;
if(i==4)
{
i=0;
}
Delay(100);
}
}
return i;
关于stm8的编程,功能实现
14 按键实现流水灯的控制
#include "stm8s.h"
#define uint unsigned int
#define uchar unsigned char
uint i=0;
void GPIO_INIT();
void Delay(uint del);
uchar key();
void main()
{
GPIO_INIT();
while(1)
{
key();
switch(i)
{
case 0:
GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//4口全给1
break;
case 1:
GPIO_Write(GPIOD, 0xfe);//PD0口给0
break;
case 2:
GPIO_Write(GPIOD, 0xfd);
break;
case 3:
GPIO_Write(GPIOD, 0xfb);
break;
case 4:
GPIO_Write(GPIOD, 0xf7);
break;
case 5:
GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB);
break;
}
}
}
void GPIO_INIT()//初始化端口D
关于stm8的编程,功能实现
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD,GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB,GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT );
}
void Delay(uint del)//延时10ms
{
uint i1,j;
for(i1=0; i1<del; i1++)
for(j=0; j<1827; j++);
}
uchar key()
{
if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)) )
{
Delay(10); //20毫秒软件防抖
if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)))
{
i++;
if(i==6)
{
i=0;
}
Delay(200);
}
}
return i;
}
15 按键实现灯亮 ,闪,停,流水
/*查询 按键改变小灯频率*/
#include "stm8s.h"
#define uint unsigned int
#define uchar unsigned char
uint i=0;
void GPIO_INIT();//初始化
void Delay(uint del);//延时声明
uchar key();
u8 m=0xfe;
u8 n=0;
关于stm8的编程,功能实现
void main()//主函数入口
{
GPIO_INIT();//调用函数
while(1)//大循环
{
key();
switch(i)
{
case 0:
GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB);
break;
/***************流水灯*******************/
case 1:
if(n<4)
{
GPIO_Write(GPIOD,m);//翻转
Delay(50);//延时
m=m<<1;//左移
m=m+1;//灭前一个灯
n++;
}
else
{ n=0;m=0xfe;}
break;
case 3:
GPIO_WriteReverse(GPIOD, GPIO_PIN_LNIB);//PD1端口给0
Delay(50);
break;
case 2:
GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//4口全给1 break;
}
}
}
相关推荐:
- [教育文库]高考英语听力十大场景词汇总结
- [教育文库]全省领导班子思想政治建设座谈会会议精神传达提纲
- [教育文库]人教版新课标高一英语提优竞赛试题 下学期
- [教育文库]江西省2014年生物中考试题
- [教育文库]长沙镇食品药品安全事故应急预案
- [教育文库]《金刚石、石墨和C60》片段教学设计
- [教育文库]福州教育学院(王旭东)
- [教育文库]基于EDA音乐播放器的设计
- [教育文库]9、古诗两首《夜书所见》《九月九日忆山东兄弟》1
- [教育文库]小学语文课外阅读有效策略探讨
- [教育文库]贵州文化产业发展成支柱产业的问卷调查
- [教育文库]膀胱类癌的诊治体会(附3例报告)
- [教育文库]发动机积碳产生的原因
- [教育文库]Configuring Code Composer Studio for Heterogeneous
- [教育文库]学生良好的心理素质如何培养点滴谈
- [教育文库]46 电沉积法制备锂离子电池用硅-锂薄膜负极材料的研究
- [教育文库]美舍雅阁公司管理中各部门职责
- [教育文库]去壳剥皮的小妙招
- [教育文库]六自由度运动平台的仿真研究
- [教育文库]Pride and Prejudice(傲慢与偏见)
- 经格氏反应合成噻吩乙醇的研究
- 中国雕塑史 电子书免费下载
- MBA论说文写作万能通用模板
- 2018-2019学年江苏省苏州市常熟市八年
- 深圳地铁一期工程盾构法施工技术总结
- 2011年高考数学理(辽宁卷)
- 应用文写作格式大全
- RNAi对大肠癌SW620细胞survivin基因的
- 高一化学必背方程式
- 第1章微机基础知识
- 现行技术质量标准规范清单
- 重型肝炎严重程度评诂
- 人性化护理在乳腺癌改良根治术患者中的
- 青岛版九年级上第一章《特殊的平行四边
- 经典如何给PDF文件添加书签
- 原地双手头上掷实心球的技巧
- 7.总经理工作细则
- 全国重点中学排名(前260名)
- 用Excel精确计算平均发展速度
- 高等数学自测题第9章 微分方程 自测