历史上的今天

今天是:2024年10月11日(星期五)

正在发生

2021年10月11日 | STM8与汇编语言(7)--8位定时器应用之二

发布者:温暖心情 来源: eefocus关键字:STM8  汇编语言  8位定时器 手机看文章 扫描二维码
随时随地手机看文章

上次写的是用STM8单片机中的8位定时器作为软件延时,采用的是查询方式。在实际系统中,定时器的应用,更多的是采用中断方式,下面的代码就给出8位定时器在中断方式下的应用。


实验程序首先初始化驱动LED的端口,然后初始化8位的定时器4,最后启动中断允许,要记住,一定要将中断服务程序的入口地址填写到中断向量表中,并且要根据中断向量号在正确的位置上填写。


同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。


编译通过后,下载到开发板,运行程序,可以看到LED在闪烁,或者用示波器可以在LED引脚上看到方波


stm8/


      #include "mapping.inc"

     

;     #include "STM8S207S8.INC"


; 涉及到的硬件资源

; LED1定义在PD3



; 下面定义端口D的寄存器地址

PD_ODR   EQU   $500f              

PD_IDR   EQU   $5010

PD_DDR   EQU   $5011

PD_CR1   EQU   $5012

PD_CR2   EQU   $5013



; 定时器4的寄存器定义

TIM4_CR1  EQU   $5340

TIM4_IER  EQU   $5341

TIM4_SR   EQU    $5342

TIM4_EGR  EQU   $5343

TIM4_CNTR  EQU   $5344

TIM4_PSCR  EQU   $5345

TIM4_ARR  EQU   $5346







; 定义堆栈空间的起始位置和结束位置

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



; 下面初始化IO端口

; PD3设置成推挽输出

; PD7设置成悬浮输入

         LD     A,#08

         LD     PD_DDR,A       ; 将PD3设置成输出,PD7设置成输入

         LD     A,#08

         LD     PD_CR1,A       ; 将PD3设置成推挽输出

         LD     A,#00

         LD     PD_CR2,A       ;

;

; 下面初始化定时器4                       

         LD     A,#$01    

         LD     TIM4_EGR,A     ; 允许产生更新事件

         LD     A,#$07

         LD     TIM4_PSCR,A    ; 计数器时钟=主时钟/128=2MHZ/128

                                                      ; 相当于计数器周期为64uS

         LD     A,#255

         LD     TIM4_ARR,A     ; 设定重装载时的寄存器值,255是最大值

                

         LD     A,#255

         LD     TIM4_CNTR,A    ; 设定计数器的初值

                                    ; 定时周期=(255+1)*64=16384uS

                                                                                                            

        LD     A,#$01         ; b0 = 1,允许计数器工作

                                   ; b1 = 0,允许更新



         LD     TIM4_CR1,A     ; 设置控制器,启动定时器

         LD     A,#$01        ; 允许更新中断

    LD     TIM4_IER,A     ;

         RIM                 ; 允许CPU全局中断

                            

MAIN_LOOP.L

         JRA    MAIN_LOOP      ; 进入无限循环



; 下面是定时器4的中断服务程序

TIMER4_ISR.L                          

         LD     A,#0          ; 清除更新标志

         LD     TIM4_SR,A                             

         LD     A,PD_ODR       ; 将LED驱动信号取反

         XOR    A,#$08

         LD     PD_ODR,A       ; LED闪烁频率=2MHZ/128/256/2=30.5

         IRET                 ; 中断返回





  interrupt NonHandledInterrupt

NonHandledInterrupt.l

                              iret



; 下面定义中断向量表    

            segment 'vectit'

            dc.l {$82000000+main}                         ; reset

            dc.l {$82000000+NonHandledInterrupt}   ; trap

             dc.l {$82000000+NonHandledInterrupt}   ; irq0

             dc.l {$82000000+NonHandledInterrupt}   ; irq1

             dc.l {$82000000+NonHandledInterrupt}   ; irq2

             dc.l {$82000000+NonHandledInterrupt}   ; irq3

             dc.l {$82000000+NonHandledInterrupt}   ; irq4

             dc.l {$82000000+NonHandledInterrupt}   ; irq5

             dc.l {$82000000+NonHandledInterrupt}   ; irq6

             dc.l {$82000000+NonHandledInterrupt}   ; irq7

             dc.l {$82000000+NonHandledInterrupt}   ; irq8

             dc.l {$82000000+NonHandledInterrupt}   ; irq9

             dc.l {$82000000+NonHandledInterrupt}   ; irq10

             dc.l {$82000000+NonHandledInterrupt}   ; irq11

             dc.l {$82000000+NonHandledInterrupt}   ; irq12

[1] [2]
关键字:STM8  汇编语言  8位定时器 引用地址:STM8与汇编语言(7)--8位定时器应用之二

上一篇:STM8与汇编语言(6)--8位定时器应用之一
下一篇:STM8与汇编语言(8)--16位定时器应用

推荐阅读

干细胞培养是近年来非常热门的医学领域, 干细胞即为起源细胞。干细胞是具有增殖和分化潜能的细胞,具有自我更新复制的能力(Self-renewing),能够产生高度分化的功能细胞。 2013 年 7 月 3 日报道,日本横滨市立大学谷口英树研究小组与美国西奈山医学院研究人员合作,利用人类诱导多能干细胞培育出微小肝芽,然后移植到小鼠体内。 结果这些肝...
据外媒报道,比利时鲁汶大学(KU Leuven)和比利时微电子研究中心(imec)的研究人员成功研发出一种芯片绝缘技术。该技术采用了金属有机框架,即一种由结构型纳米孔组成的新型材料。从长远来看,该方法能够用于研发尺寸更小、更强大同时能耗更低的芯片。目前,该研究小组已经获得ERC概念认证的拨款,以进一步进行研究。计算机芯片正变得越来越小,这一点...
北京时间下周三凌晨1点(10月14日),苹果将举办线上新品活动,在iPad Air 4和iPad 8已经揭晓的前提下,此次活动的主角将完全落在iPhone 12上。按照德国爆料大神Roland Quandt援引零售商的说法,iPhone 12系列包括四款,颜色与存储配置分别如下:iPhone 12 mini有64GB、128GB和256GB,配色可选绿色、天蓝色、(玫瑰)金色、深空灰色和银色。iPhone...
SRAM数据存储器Figure 9 给出了ATmega16 SRAM 空间的组织结构。前1120 个数据存储器包括了寄存器文件、I/O 存储器及内部数据SRAM。起始的96 个地址为寄存器文件与64 个I/O 存储器,接着是1024 字节的内部数据SRAM。数据存储器的寻址方式分为5 种:直接寻址、带偏移量的间接寻址、间接寻址、带预减量的间接寻址和带后增量的间接寻址。寄存器文件...

史海拾趣

问答坊 | AI 解惑

全数字化监控系统的监控中心解决方案

一、综述 宽带网络应用的日趋普及以及数字技术在安防产品中的应用,为整个安防产业带来革命性的改变。在图像监控产品领域,数字网络技术的导入大大拓宽了产品的应用范围,使得以往费用代价高昂或难以实现的远程监控应用变得轻而易举,远程医疗会诊 ...…

查看全部问答∨

DS1302

请大家DS1302要不要写程序的…

查看全部问答∨

求助

我是初学者,才用2051片和1302做了个定时器,还加了电池但掉电后数字复零,不知为啥请各位老师指导.我的QQ:754862083.电话:029-81227236…

查看全部问答∨

eboot中,在TOC中增加变量的问题??

// // Bootloader configuration parameters. // typedef struct _BOOTCFG {     ULONG       ImageIndex;             ULONG       ConfigFlags;   ...…

查看全部问答∨

help

我在用keil时,头文件不见!! 问题是: Build target \'Target 1\' compiling CARPARK1.C... CARPARK1.C(1): warning C318: can\'t open file \'reg522.h\' CARPARK1.C(30): error C202: \'P26\': undefined identifier CARPARK1.C(32): error C ...…

查看全部问答∨

关于频率采集

#include <reg51.h> #include <intrins.h> #define ulong   unsigned long #define uint    unsigned int #define uchar   unsigned char typedef unsigned char BYTE; typedef unsigned int WORD; t ...…

查看全部问答∨

mini6410上移植好的QtE-4.7.0源代码包下载地址

本帖转自:http://www.arm9home.net/read.php?tid=8110&page=1&toread=1#tpc   Nokia公司于当地时间2010-9-21日正式发布了Qt 4.7.0( 见链接:http://labs.qt.nokia.com/2010/09/21/qt-4-7-0-now-available/)以下是来自 LinuxToy的新闻 ...…

查看全部问答∨

【求助】如何从软件上控制整体功耗?

唯一的耗电器件就是7位半的液晶,以及XTR115两线制供电,片子是MSP430F425   整体功耗要求0.7mA以下。现在差一点,从软件上可以怎样改进?我觉得从运行频率上可以做文章。哪位控制功耗的高手指导一下?…

查看全部问答∨

基于Hercules的踏板控制器DIY(五):关于Hercules定时器的使用

设计中需要用一个计数器作为软件计时器的标准,要求每隔10mS计数器增加一次,提供给软件计时器做基准。 我看规格书文档号:spn517里12.2.1节关于RTI计数器的说明, 是不是可以这样: RTIUCx 赋一个合适的值,使经过10mS能够增加到这个值,从而RT ...…

查看全部问答∨

2013年第二期MSP430 技术日全资料

2013年第二期MSP430 技术日全资料 2013年第二期MSP430 技术日全部资料,MSP430的价值,MSP产品系列一览,,,低功耗的未来,430的未来,高的模拟和数字集成度,所有的 MSP430 器件从一开始就都是针对超低功耗 (ULP) 而精心设计的。这意味着 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved