在有些单片机的应用系统中,并不需要CPU运行在多高的频率。在低频率下运行,芯片的功耗会大大下降。因此希望单片机能提供这个功能,STM8单片机确实有这个功能,并且修改也非常方便。
下面的实验程序首先将CPU的运行时钟设置在8MHZ,然后快速闪烁LED指示灯。接着,通过修改主时钟的分频系数和CPU时钟的分频系数,将CPU时钟频率设置在500KHZ,然后再慢速闪烁LED指示灯。通过观察LED指示灯的闪烁频率,可以看到,同样的循环代码,由于CPU时钟频率的改变,闪烁频率和时间长短都发生了变化。
同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。
stm8/
#include "mapping.inc"
#include "STM8S207C_S.INC"
; 定义堆栈空间的起始位置和结束位置
stack_start.w EQU $stack_segment_start
stack_end.w EQU $stack_segment_end
segment 'rom' ; 下面开始定义一个段,该段位于ROM中
main.l ; 定义复位后的第一条指令的标号(即入口地址)
;
; 首先要初始化堆栈指针
LDW X,#stack_end
LDW SP,X
LD A,#08
LD PD_DDR,A ; 将PD3设置成输出
LD A,#08
LD PD_CR1,A ; 将PD3设置成推挽输出
LD A,#00
LD PD_CR2,A
LD A,#$E1
LD CLK_SWR,A ;选择芯片内部的16MHZ的RC振荡器
;为主时钟
MAIN_LOOP.L
;下面设置CPU时钟分频器,使得CPU时钟=主时钟
;通过发光二极管,可以看出,程序运行的速度确实明显提高了
LD A,#$08
LD CLK_CKDIVR,A ; 主时钟 = 16MHZ / 2
; CPU时钟 = 主时钟 = 8MHZ
LD A,#10 ; LED高速闪10次
HIGH_SPEED.L
PUSH A ; 保存寄存器
LD A,#08
LD PD_ODR,A ; 将PD3的输出设置成1
LD A,#100
CALL DELAY_MS ; 延时100MS
LD A,#00 ;
LD PD_ODR,A ; 将PD3的输出设置成0
LD A,#100
CALL DELAY_MS ; 延时100MS
POP A ; 恢复寄存器
DEC A
JRNE HIGH_SPEED
;下面设置CPU时钟分频器,使得CPU时钟=主时钟/4
;通过发光二极管,可以看出,程序运行的速度确实明显下降了
LD A,#$1A ;
LD CLK_CKDIVR,A ; 主时钟 = 16MHZ / 8
; CPU时钟 = 主时钟 / 4 = 500KHZ
LD A,#10 ; LED低速闪10次
LOW_SPEED.L
PUSH A ; 保存寄存器
LD A,#08
LD PD_ODR,A ; 将PD3的输出设置成1
LD A,#100
CALL DELAY_MS ; 延时100MS
LD A,#00
LD PD_ODR,A ; 将PD3的输出设置成0
LD A,#100
CALL DELAY_MS ; 延时100MS
POP A ; 恢复寄存器
DEC A
JRNE LOW_SPEED
JRA MAIN_LOOP
; 函数功能:延时
; 输入参数:寄存器A -- 要延时的毫秒数,这里假设CPU的主频为2MHZ
; 输出参数:无
; 返 回 值:无
; 备 注:无
DELAY_MS.L
PUSH A ; 将入口参数保存到堆栈中
上一篇:STM8S学习笔记-时钟控制2
下一篇:STM8与汇编语言(1)(2)(3)
推荐阅读
史海拾趣
在电子行业快速发展的背景下,客户对电子元件的定制化需求日益增长。CCI敏锐地捕捉到了这一市场趋势,迅速调整战略方向,将业务重心转向客户定制化服务。
为了满足客户多样化的需求,CCI加强了与客户的沟通与合作,深入了解客户的具体需求和应用场景。公司不仅提供标准产品,还能根据客户的特殊需求进行定制化设计和生产。这种服务模式赢得了客户的广泛认可,CCI的市场份额也随之稳步提升。
随着业务规模的不断扩大,CCI面临着日益严峻的供应链管理挑战。为了降低生产成本、提高交货速度并保障产品质量,CCI对供应链管理进行了全面优化。
公司首先加强了与原材料供应商的合作与沟通,确保原材料的稳定供应和成本控制。同时,CCI还引入了先进的生产管理系统和质量控制体系,实现了生产过程的数字化和智能化。此外,公司还通过优化物流运输和库存管理等方式,进一步提高了供应链的效率和灵活性。
在2009年,Accuride公司面临了严重的财务困境,其美国公司申请了破产保护。然而,这一困境并未击垮Accuride,反而成为其重生的契机。通过与债权人达成协议,Accuride成功地将公司的大部分所有权转让给债券持有人,并进行了重组。这一举措不仅缓解了公司的财务压力,还为其未来的发展奠定了坚实的基础。
Elektron公司一直注重技术研发和创新投入,致力于在行业中保持领先地位。公司不断推出具有创新性和领先性的产品,如高性能的电池充电器、先进的焊接和切割设备等。这些产品的推出不仅提高了公司的市场竞争力,也推动了整个行业的发展和进步。同时,Elektron还积极参与行业标准的制定和推广工作,为行业的健康发展做出了重要贡献。
作为一家领先的电子企业,DUBILIER公司深知其对社会和环境的影响。因此,公司积极履行社会责任,致力于推动可持续发展。公司采取了一系列环保措施,减少生产过程中的废弃物和污染物排放。同时,DUBILIER公司还积极参与公益事业,为社会做出积极贡献。这些努力不仅提升了公司的社会形象,还为公司赢得了更多的尊重和信任。
随着技术的不断进步,Epitex不断加大对研发的投入。XXXX年,他们成功研发出了一种具有更高导热性能的电子材料,这种材料在高性能计算机和服务器等高端电子产品中得到了广泛应用。这一技术突破不仅提升了Epitex的市场竞争力,也为其带来了可观的经济效益。
在技术突破的基础上,Epitex开始积极拓展国际市场。他们通过与全球知名的电子制造商建立合作关系,将产品推向了更广阔的舞台。同时,Epitex还积极参与国际技术交流和展览,提升了公司在国际市场的知名度。
我有个广嵌的开发板液晶屏是3.5寸的TFT,现在我想把它改用4.3寸的液晶屏,改了几天也没成功. 原来的3.5寸TFT板电路图也没有,我把屏拆下分析了一天,发现它的PWR液晶屏电源使能没用,就是上电背光就亮.而我的电路是让PWR使能的. 谁写过4.3寸液晶屏驱动 ...… 查看全部问答∨ |
|
摘 要:介绍了与51单片机USB接口的Pc主机在Windows环境下软件设计过程。驱动程序由DriverStudio生成,动态链 接库和应用程序分别采用Visual C++和Visual Basic编写。实现了PC机与单片机之间通过PDIUSBD12芯片进行数据通讯 的功能。… 查看全部问答∨ |
|
我WinCE中 串口接收数据,是没40ms接收一次,一分钟往文件中存一次,用的是BinaryWrite.Write() 但是,过十分钟不到,就会少数据,接收的不全(我一次接收长度为23的数组,但会出现只有18长度的数组)! 于是,我将写文件的代码注释了以后!数据 ...… 查看全部问答∨ |
|
boot.hv是放在HIVE BOOT SECTION ;END BOOT SECTION之间的,在系统启动的时候实现加载! 那么,在注册表中的其它部分是怎么确认分别归属于default.hv和user.hv的, 是不是有什么标签? … 查看全部问答∨ |
|