资料介绍
现在几乎所有的单片机都能用 C 语言编程了,采用 C 语言编程确实能带来很多好处,至少可读性比汇编语言强多了。在 STM8 的开发环境中,可以通过新建一个工程,自动地建立起一个 C 语言的框架,生成后开发环境会自动生成 2 个 C 语言的程序,一个是 main.c ,另一个是 stm8_interrupt_vector.c 。main.c 中就是一个空的 main() 函数,如下所示:
在 stm8_interrupt_vector.c 中,除了定义了中断向量表外, 还定义了空的中断服务程序, 用于那些不用的中断。当然在自动建立时,所有的中断服务都是空的,因此,除了第 1 个复位的向量外,其它都指向那个空的中断服务函数。生成框架后,就可以用 Build 菜单下的 Rebuild All 对项目进行编译和连接,生成所需的目标文件,然后就可以加载到 STM8 的芯片中,这里由于 main() 函数是一个空函数,因此没有任何实际的功能。不过我们可以把这个框架对应的汇编代码反出来,看看 C 语言生成的代码,这样可以更深入地了解 C 语言编程的特点。
图 1 显示的是从内存地址 8000H 开始的中断向量表,中断向量表中的第 1 行 82008083H 为复位后单片机运行的第 1 跳指令的地址。从表中可以看出,单片机复位后,将从 8083H 开始运行。其它行的中断向量都指向同一个位置的中断服务程序 80D0H 。图 2 显示的是 3 个字节, 前 2 个字节 8083H 为复位后的第 1 条指令的地址, 第 3 个字节是一个常量 0,后面的启动代码要用到。图 3 显示的是启动代码,启动代码中除了初始化堆栈指针外,就是初始化 RAM 单元。由于目前是一个空的框架,因此在初始化完堆栈指针(设置成 0FFFH )后,由于 8082H 单元的内容为 0,因此程序就跳到了 80B1H ,此处是一个循环,将 RAM 单元从 0 到 5 初始化成 0。然后由于寄存器 X 设置成 01 00H ,就直接通过 CALL main 进入 C 的 main() 函数。图 4 显示的是 main() 函数和中断服务函数, main() 函数对应的代码就是一个无限的循环, 而中断服务函数就一条指令,即中断返回指令。通过分析,可以看出用 C 语言编程时,比汇编语言编程时,就是多出了一段启动代码。
STM8 单片机的时钟源非常丰富,芯片内部既有 16MHZ 的高速 RC 振荡器,也有 128KHZ 的低速 RC 振荡器,外部还可以接一个高速的晶体振荡器。在系统运行过程中,可以根据需要,自由地切换。单片机复位后,首先采用的是内部的高速 RC 振荡器,且分频系数为 8,因此 CPU 的上电运行的时钟频率为 2MHZ 。切换时钟源,主要涉及到的寄存器有:主时钟切换寄存器 CLK_SWR 和切换控制寄存器 CLK_SWCR 。主时钟切换寄存器的复位值为 0xe1 ,表示切换到内部的高速 RC 振荡器上。当往该寄存器写入 0xb4 时,表示切换到外部的高速晶体振荡器上。在实际切换过程中,应该先将切换控制寄存器中的 SWEN (第 1 位)设置成 1,然后设置 CLK_SWC R 的值,最后要判断切换控制寄存器中的 SWIF 标志是否切换成功。下面的实验程序首先将主时钟源切换到外部的晶体振荡器上, 振荡频率为 8MHZ ,然后, 然后快速闪烁 LED 指示灯。接着,将主时钟源又切换到内部的振荡器上,振荡频率为 2MHZ ,然后再慢速闪烁 LED 指示灯。通过观察 LED 指示灯的闪烁频率,可以看到,同样的循环代码,由于主时钟源的改变的改变,闪烁频率和时间长短都发生了变化。
- 在STVDCOSMIC在RAM中运行代码stm8 ram中运行程序
- STM8 CPU编程手册英文版下载 0次下载
- STM8在IAP中使用用户引导加载程序AN2659 3次下载
- STM8单片机的C语言例程合集免费下载 101次下载
- STM8 C语言精品编程100例PDF版电子书免费下载 0次下载
- STM8的C语言编程1-14讲完整版 0次下载
- Uart风驰STM8开发板程序源代码 3次下载
- Beep 风驰STM8开发板程序源代码 0次下载
- PWM 风驰STM8开发板程序源代码 3次下载
- TIM2 风驰STM8开发板程序源代码 3次下载
- TIM3 风驰STM8开发板程序源代码 3次下载
- 3-Key_Scan 风驰STM8开发板程序源代码 例9 14次下载
- Key_Exti 风驰STM8开发板程序源代码例9 2次下载
- STM8的C语言编程说明 37次下载
- MSP430 C语言编程的程序堆栈溢出分析
- 技术干货驿站 ▏深入理解C语言:掌握程序结构知识 833次阅读
- PLC编程语言和C语言的区别 1469次阅读
- plc编程语言与c语言的联系 c语言和PLC有什么区别 3041次阅读
- 单片机C语言编程的H文件与C文件到底有什么关系 2723次阅读
- C语言的源代码文件和目标文件与可执行文件的详细介绍 8302次阅读
- 使用C语言进行单片机编程的基本知识点和编程规范资料总结 4900次阅读
- 程序员学习Julia编程语言的五个理由 3859次阅读
- STM8单片机rtc时钟代码分享 3994次阅读
- C语言程序内存布局该关注哪些内容 878次阅读
- 学习开发环境和编程语言:汇编语言和C语言的比较 8893次阅读
- C语言作为高级编程语言中的一门“低级”语言为什么要学习? 8014次阅读
- plc与C语言有什么关系_plc可以用c语言编程吗_plc的C语言编程详解 7.2w次阅读
- stm8 halt低功耗模式 9419次阅读
- arduino用什么语言编程 6.9w次阅读
- 快速傅里叶变换FFT的C程序代码实现 6w次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多