没有合适的资源?快使用搜索试试~ 我知道了~
首页stm8汇编教程.doc
stm8汇编教程.doc
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
关于stm8汇编工程的建立与分析,从简单例程到复杂例程的介绍,譬如从GPIO、定时器到UART等的介绍。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/4767870/bg1.jpg)
STM8 与汇编语言(1):
不知是心血来潮,还是其它因素,突然又想起玩汇编语言了。这几年也没
少跟单片机打交道,包括 系列, 系列, 系列,但都是用 语言来
开发。不过由于使用 语言,实际上对这些 的了解还是不够深刻,当然除
了 之外,因为那是我多年前曾经用汇编开发过的芯片。尽管当今 语言已
经在嵌入式产品的开发过程中成为主流,但我个人依然认为,要想真正了解
的特点,还得用汇编语言。不知道这种观点是对还是错,也许是因为自己
从硬件做起,写过机器码,用汇编语言做过优化,因此对汇编语音有一种特殊
的偏爱。
系列的芯片用多了,感觉有时写起程序来不太方便,因此总想寻找一些
其它的 位单片机玩玩,正好手头有一个 的三合一开发板,那是 年参加
研讨会上买的,一直躺在那里,与其躺在那里,不如拿出来玩玩。
这几年, 在国内推广 ,力度不小,不过我一直没有用过,只是
初步地看看资料。原因在于在 位单片机方面,我一直在用 公司
的 ,感觉不错,一直都很顺利。 年 举办的研讨会上, 除
了介绍 外,也介绍了 ,当时听了以后,觉得还行。尤其是会上
的低功耗演示给我留下了很深刻的印象。
基于这些,我决定好好地玩一下 芯片,并将玩的结果拿出来与大家
共享
STM8S and STM8A microcontroller families Reference manual. RM0016(参考
手册)
STM8S207xx/STM8S208xx Datasheet 数据手册(Doc ID 14733 Rev 11)
STM8S105 Datasheet 数据手册(DocID14771 Rev 10)
STM8 CPU programming manual (Rev 3,PM0044)) 编程手册
ST Assembler-Linker User Manual(UM0144)
在线编程(ICP)用于更新整个存储器的内容。ICP 使用 SWIM 接口把用户的
程序装载到微控制器中,同时提供迅速而有效的设计迭代并且去除了不必要的
封装处理和器件插槽。SWIM 接口(单线接口模块)使用 SWIM 引脚和编程工具
相连接。
相对于 ICP 方式,在应用编程(IAP)可使用 STM8 支持的任意通讯接口(I/O、I2C
、SPI、UART) 来下载要编入存储器中的数据。IAP 允许在应用程序运行中对
FLASH 程序存储器的内容重新编写
![](https://csdnimg.cn/release/download_crawler_static/4767870/bg2.jpg)
STM8 与汇编语言(2):
第一次打开 的手册时发现, 中的寄存器只有 个,即
、、、、 和 。这几个寄存器,看上去特象早年苹果机使用的微处
理器 。在眼下都是多寄存器的 潮流下,不知 推出的这种 架
构有什么意图?这样的芯片能否与 ! "# 或者 $%& 的 结构的
竞争呢?在此我无意做评论,我只想了解这颗芯片。
通过仔细研究,我发现由于 采用了 位宽度的程序存储器结构,
使得大部分的指令都能在一个周期内取出,并且采用了哈佛结构和流水线,相
当多的指令也都是单周期完成的。这样的话,虽然 是 架构的,但也
基本上达到了单周期指令的效果,就像手册上说的, 的性能达到了
'()。就这一点来说,我个人感觉 还真不错。
举个例子来说,如果我们要完成内存中的 个 位无符号数相加,结果还
保存到内存中,用 语言描述成:
*+%,- "-./. 0
-1--2-/0
这一段程序,用 汇编可以写成如下代码:
3----.-4-------
33--.-4--------
3----4.-
这里假设 ./. 这 个变量分别存储在内存中,地址为 . 和
。从 的手册上可以查到,这 条指令都是单周期的,完成一个加
法,只需要 个时钟周期,可见 的 执行速度还是相当快的。
在这种传统的所谓 架构中,我特别关心累加器 与内存的访问速
度,因为如果累加器与内存的访问速度是单周期的话,实际上我们就可以将内
存当寄存器来看,这样写程序时就相当于拥有了一个大的寄存器阵列,或者说
我们也就没必要再去考虑变量在内存中还是在寄存器中。也正是因为这一点,
我对 越来越感兴趣了。
STM8 与汇编语言(3):
![](https://csdnimg.cn/release/download_crawler_static/4767870/bg3.jpg)
的开发环境用起来还是不错的,可以到 的网站上下载安装程序
5!!&*%$6%7%。利用该环境可以开发用汇编语言写的程序,而且与 的三
合一开发板配合起来,确实非常方便。
不过如果要想用 语言来开发,稍微有点麻烦,得去别的公司下载 的编
译器(586%7%),而且下载完以后,还得去注册,等待许可文件。
实际上,我也按照 介绍的方法做了,但始终都没有收到许可文件,也许本
人实在愚笨。但不管怎么说,我觉得 这一点做得相当不好,实在有点抠门。
既然是免费的,为什么不一起打包提供给客户,这么麻烦,多耽误客户使用,
得少卖多少 的芯片。
言归正传,还回到正题。用汇编语言开发程序,最简单的就是利用 开
发环境中提供的汇编程序框架自动生成功能。打开开发环境后,在 9&% 菜单中
选择 :%;-<!=*# %.点击 %$%-;!=*# %-,-#!>% $ 图标,然后就
可以建立项目,在工具链中选 -**%/&%-=%,最后选择 的型号,
点击 ?8,就完成了一个项目的建立。这个环境与微软的 @ 开发环境很象,
点开项目文件中的 ! %-9&%*,能看到系统自动生成好了一个汇编语言的框
架,我们编写程序只要在这框架基础上就可以了。其实不用编写任何一条指令,
这个框架程序是能够编译通过,并下载运行的。
自动生成的项目中包含 个重要的文件:##+6 .##+6* 和
6*。
##+6 文件中定义的是一些常量,##+6* 文件中定义的是
一些内存的分配,主要的汇编代码都在 6*。
下面是 6* 中的汇编代码及注释。
![](https://csdnimg.cn/release/download_crawler_static/4767870/bg4.jpg)
*$A
B &,%-C##+6 C
![](https://csdnimg.cn/release/download_crawler_static/4767870/bg5.jpg)
*%+%$-D!D
0-下面是定义一个标号, 汇编的写法,有点不习惯
0-这里的 标号是复位后的第一条指令,与后面的中断向量表中
0-的名字是对应的
6&----
0-$&E%-
&,;-.B*$ =5%,
&,;-.------------------------------0-设置堆栈指针
BF,%F-
0-如果定义了 ,则要汇编以下代码
0- &%-
5*$$6/-GH-45*%+%$5*$$
5%,6/-GH-45*%+%$5%,
&,;-.B5*$$----0寄存器 指向要清除的内存起始地址
&%56&------------0这是一个标号定义,用于后面的跳转指令
&-IJ--------------0对应的内存单元清 --
;---------------0寄存器 2.指向下一个单元
#;-.B5%, --0比较寄存器 是否等于内存的最后一个地址
>&%- &%5-------0若不等于,则循环
B%,F
剩余63页未读,继续阅读
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
hahayihong
- 粉丝: 2
- 资源: 4
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- BSC关键绩效财务与客户指标详解
- 绘制企业战略地图:从财务到客户价值的六步法
- BSC关键绩效指标详解:财务与运营效率评估
- 手持移动数据终端:常见问题与WIFI设置指南
- 平衡计分卡(BSC):绩效管理与战略实施工具
- ESP8266智能家居控制系统设计与实现
- ESP8266在智能家居中的应用——网络家电控制系统
- BSC:平衡计分卡在绩效管理与信息技术中的应用
- 手持移动数据终端:常见问题与解决办法
- BSC模板:四大领域关键绩效指标详解(财务、客户、运营与成长)
- BSC:从绩效考核到计算机网络的关键概念
- BSC模板:四大维度关键绩效指标详解与预算达成分析
- 平衡计分卡(BSC):绩效考核与战略实施工具
- K-means聚类算法详解及其优缺点
- 平衡计分卡(BSC):从绩效考核到战略实施
- BSC:平衡计分卡与计算机网络中的应用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)