匿名
未登录
登录
丢石头百科
搜索
查看“STM8 IO输出之LED显示程序”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
STM8 IO输出之LED显示程序
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
<table border="0" cellpadding="0" cellspacing="0" style="color: rgb(72, 61, 139); font-family: Arial, 新宋体, 微软雅黑; font-size: 12px;" width="780"><tbody><tr><th class="type_483D8B" scope="col" style="line-height: 20px; font-weight: normal; border-top-style: none;" valign="top"> <table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th align="center" bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">系统功能</th></tr></tbody></table> 使用STM8控制8位LED,演示STM8单片机流水灯。 </th></tr><tr><th class="type_483D8B" scope="col" style="line-height: 20px; font-weight: normal; border-top-style: none;" valign="top"> <table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th align="center" bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">硬件设计</th></tr></tbody></table> 关于STM8的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是STM8的I/O引脚配置表: <table bgcolor="#DDDDDD" border="0" cellpadding="1" cellspacing="1" width="660"><tbody><tr bgcolor="#999999" class="white_14px" style="font-size: 14px; color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;" valign="middle"><th colspan="6" height="25"> STM8 I/O 口引脚配置表</th></tr><tr bgcolor="#FFFFFF" class="type_483D8B_12px_b" style="font-size: 12px; font-weight: bold; color: rgb(72, 61, 139); line-height: 20px; font-family: Arial, Helvetica, sans-serif;" valign="middle"><td align="center" height="20" width="70">Px_DDR</td><td align="center" height="20" width="70">Px_CR1</td><td align="center" height="20" width="70">Px_CR2</td><td align="center" height="20" width="90">I/O 方式</td><td align="center" height="20" width="268">引脚状态说明</td></tr><tr bgcolor="#F8F8FF" class="type_483D8B" style="font-size: 12px; line-height: 20px; border-top-style: none; color: rgb(72, 61, 139);" valign="middle"><td align="center" height="20" width="70">0</td><td align="center" height="20" width="70">0</td><td align="center" height="20" width="70">0</td><td align="center" height="20" width="90">输入</td><td align="center" height="20" width="268">悬浮输入</td></tr><tr bgcolor="#FFFFFF" class="type_483D8B" style="font-size: 12px; line-height: 20px; border-top-style: none; color: rgb(72, 61, 139);" valign="middle"><td align="center" height="20" width="70">0</td><td align="center" height="20" width="70">0</td><td align="center" height="20" width="70">1</td><td align="center" height="20" width="90">输入</td><td align="center" height="20" width="268">上拉输入</td></tr><tr bgcolor="#F8F8FF" class="type_483D8B" style="font-size: 12px; line-height: 20px; border-top-style: none; color: rgb(72, 61, 139);" valign="middle"><td align="center" height="20" width="70">0</td><td align="center" height="20" width="70">1</td><td align="center" height="20" width="70">0</td><td align="center" height="20" width="90">输入</td><td align="center" height="20" width="268">中断悬浮输入</td></tr><tr bgcolor="#FFFFFF" class="type_483D8B" style="font-size: 12px; line-height: 20px; border-top-style: none; color: rgb(72, 61, 139);" valign="middle"><td align="center" height="20" width="70">0</td><td align="center" height="20" width="70">1</td><td align="center" height="20" width="70">1</td><td align="center" height="20" width="90">输入</td><td align="center" height="20" width="268">中断上拉输入</td></tr><tr bgcolor="#F8F8FF" class="type_483D8B" style="font-size: 12px; line-height: 20px; border-top-style: none; color: rgb(72, 61, 139);" valign="middle"><td align="center" height="20" width="70">1</td><td align="center" height="20" width="70">0</td><td align="center" height="20" width="70">0</td><td align="center" height="20" width="90">输出</td><td align="center" height="20" width="268">开漏输出</td></tr><tr bgcolor="#F8F8FF" class="type_483D8B" style="font-size: 12px; line-height: 20px; border-top-style: none; color: rgb(72, 61, 139);" valign="middle"><td align="center" height="20" width="70">1</td><td align="center" height="20" width="70">1</td><td align="center" height="20" width="70">0</td><td align="center" height="20" width="90">输出</td><td align="center" height="20" width="268">推挽输出</td></tr><tr bgcolor="#F8F8FF" class="type_483D8B" style="font-size: 12px; line-height: 20px; border-top-style: none; color: rgb(72, 61, 139);" valign="middle"><td align="center" height="20" width="70">1</td><td align="center" height="20" width="70">X</td><td align="center" height="20" width="70">1</td><td align="center" height="20" width="90">输出</td><td align="center" height="20" width="268">输出(最快速度为10MHZ)</td></tr></tbody></table> 虽然STM8的I/O口单独输出“1”时,可输出较大电流足已点亮一盏灯,但STM8总的I/O输出毕竟是有限的,所以,有经验的点灯者考虑到除了点灯外可能还有其它费劲的活儿要干,会将STM8的I/O口设计为输出“0”时点灯,输出“1”时熄灯。这种接法亦叫“灌电流接法”。 [[File:STM8_LED_PB.jpg]] LED控制电路原理图 </th></tr><tr><th class="type_483D8B" scope="col" style="line-height: 20px; font-weight: normal; border-top-style: none;" valign="top"> <table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th align="center" bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">软件设计</th></tr></tbody></table>/********************************************************************* 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="https://{{SERVERNAME}}/" style="color: rgb(7, 66, 184);">http://www.waveShare.net 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 说 明: 若用于商业用途,请保留此段文字或注明代码来源 深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权 *********************************************************************/ #include <stm8s207R8.h> #include <stm8s_type.h> #define LED_DDR PB_DDR #define LED_PORT PB_ODR #define LED_CR1 PB_CR1 #define LED_CR2 PB_CR2 void main(void) { u8 i,j; LED_DDR=0XFF; LED_CR1=0XFF; LED_CR2=0X00; while(1) { for(i=0;i<4;i++) { LED_PORT^=0xFF; //我闪!拚命闪! delay50ms(10); } j=0x01; for(i=0;i<8;i++) { j<<=1; LED_PORT=j; //我左闪! delay50ms(10); } j=0x80; for(i=0;i<8;i++) { j>>=1; LED_PORT=j; //我右闪! delay50ms(10); } } }</th></tr><tr><th class="type_483D8B" scope="col" style="line-height: 20px; font-weight: normal; border-top-style: none;" valign="top"> <table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th align="center" bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">系统调试</th></tr></tbody></table> 本节的目的在于学习STM8的IO输出功能,对于STM8来说,它和传统的单片机不同,他是GPIO,需要设置IO引脚方向,跟输出模式 作如下调试: (1)改变IO方向,即将“LED_DDR=0XFF;”改为“0X00”,观察现象。 (2)将语句:delay50ms(10);改为语句:delay50ms(1);可以看到LED闪的更快! </th></tr></tbody></table>
返回至
STM8 IO输出之LED显示程序
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志