单片机汇编中断程序(定时器中断)

发布者:baiyuguoji最新更新时间:2016-09-13 来源: eefocus关键字:单片机汇编  中断程序  定时器中断 手机看文章 扫描二维码
随时随地手机看文章
单片机汇编中断程序(定时器中断) - gududesiling - suixin

 

 

;首相,介绍一下51单片机的定时计数器,51有两个定时计数器,分别为T0,T1,基本一样,

;有一点不同,下面我们介绍定时计数器T0

;了解8051的timer0中断的程序写法,用中断法产生定时

;上面显示的是proteus仿真图,下面的是源程序

;说明:(源程序中的终端入口地址很重要(这个是固定的),程序中断时,会在对应中断固定的

;入口地址进入,因为规定的相隔入口间的空进有限,只能用跳转指令跳转,最终用RETI强制返回

;这个程序把所有的中断入口地址都写上了,没有用到的,用RETI直接屏蔽)

;运行结果是使led灯明一下,暗一下。

 

COUNT EQU  9217;对于11.0592的晶振来说,延时10ms

LED  EQU  P1.1

 

 

        ORG  0000H

        LJMP RESET       ;开始时跳转转到初始化程序中

       

        ORG  0003H       ;外部中断0

        RETI

       

        ORG  000BH       ;定时器/计数器T0入口地址

        LJMP INT_TIMER0   ;跳转到定时器/计数器中断服务程序中去

       

        ORG  0013H      ;外部中断1  

        RETI       

       

        ORG  001BH    ;定时器/计数器T1

        RETI

       

        ORG  0023H ;串行口中断

        RETI

       

           ORG  0030H

RESET:

           MOV  R0,#00H

           DJNZ R0,$  ;刚开始,先进行少量的延时,是各种工作寄存器准备好

           CLR  LED

 

 

           MOV    TMOD,#00000001B   ;设置定时器T0工作在方式1(16位)

      

           MOV    TH0,#HIGH(65536-COUNT);设置初值(关于怎么计算,很多书上都有)

           MOV    TL0,#LOW(65536-COUNT)

           ;MOV  TH0,#(65536-COUNT)/256;取高八位数据(这是第二种方法)

           ;MOV  TL0,#255   ;取底五位(为最大了)

      

           CLR  TF0   ;先把溢出标志位清零

           SETB TR0   ;开始计时

           SETB EA    ;全局中断打开

           SETB ET0   ;定时器/计数器T0溢出中断打开

 

           MOV  R2,#00H  ;作为定时器累加器使用

      

LOOP:    SJMP LOOP   ;在此循环,等待中断

 

 

INT_TIMER0:         ;当TF0=1,跳转到下面的中断服务程序中

        INC  R2          ;使R2自增一

        CLR  TF0       ;重新置中断标志位为0

        MOV  TH0,#(65536-COUNT)/256  ; 重新符初值(因为溢出后变成0了)

        MOV  TL0,#255  

        CJNE R2,#5,RETURN     ;让灯明暗相间50ms

        MOV  R2, #00H

        CPL  LED              ;让灯明暗交替变化

RETURN:   

        RETI

       

        END

       

;程序写完了(并不是很难,不过就是配置一下定时器,在中断中写点处理程序罢了

;),

关键字:单片机汇编  中断程序  定时器中断 引用地址:单片机汇编中断程序(定时器中断)

上一篇:负跳变沿触发中断(汇编程序)
下一篇:单片机定时器(timer0工作方式2)

推荐阅读最新更新时间:2024-03-16 15:09

第八节:在定时中断函数里执行独立按键的扫描程序
开场白: 上一节讲了在主函数中利用累计定时中断的次数来实现独立按键的检测,但是如果在某些项目中,需要在主函数里间歇性地执行一些一气呵成的耗时任务,当主函数正在处理一气呵成的耗时任务时(前提是没有关闭定时器中断),这个时候如果有按键按下来,就有可能没有及时被响应到而遗漏了。在定时中断函数里处理独立按键的扫描程序,可以避免这个问题。要教会大家一个知识点:如何在上一节的基础上,略作修改,就可以在定时中断函数里处理独立按键的扫描程序。 具体内容,请看源代码讲解。 (1)硬件平台:基于朱兆祺51单片机学习板。用矩阵键盘中的S1和S5号键作为独立按键,记得把输出线P0.4一直输出低电平,模拟独立按键的触发地GND。 (2)实现
[单片机]
C51中的中断服务程序
void 函数名(void) interrupt n using m { 函数体语句 } interrupt using 是C51中断服务程序引入关键字 只能用于C51中断服务程序逻辑 n是中断号 0 是外部中断0 1 是定时中断T0 2 是外部中断1 3 是定时中断T1 4 是串行中断 5 是定时器T2 m是寄存器组 0——3 4组
[单片机]
STM32–中断程序总结(库函数)
一.配置中断优先级函数 void EXTI_NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStruct; /*初始化NVIC结构体 */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /*设置优先级分组为组一,组的区别具体在教材P133 */ NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn; /*选择中断源为EXTI0(EXTI Line0的中断源) */ /*注意:*/ /*EXTI0 EXTI1 EXTI2 EXTI3 EXTI4 对应中断源分别为 EXTI0_I
[单片机]
采用AVR单片机汇编语言实现AES加密算法及其优化
AES是美国高级加密标准算法,将在未来几十年里代替DES在各个领域中得到广泛应用。本文在研究分析AES加密算法原理的基础上,着重说明算法的实现步骤,并结合AVR汇编语言完整地实现AES加密和解密。根据AES原理,提出几种列变化的优化算法,并根据实验结果分析和比较它们的优缺点。 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES 。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应
[单片机]
采用AVR<font color='red'>单片机汇编</font>语言实现AES加密算法及其优化
ATmega128 time1溢出中断定时器1在该模式下用法和51的一样
#include iom128v.h #define uchar unsigned char #define uint unsigned int #pragma interrupt_handler timer1:15/*定时器溢出中断向量标号*/ uchar t=0; void timer1() { TCNT1H=(65536-50000)/256; TCNT1L=(65536-50000)%256; t++; if(t==20) { t=0; PORTA=~PORTA; PORTA|=0xfe; } } void IO_init() { DDRA=
[单片机]
利用中断结构,编制一个脉冲计数8051单片机程序
在8051单片机的INTO引脚外接脉冲信号,要求每送来一个脉冲,把30H单元值加1,若30H单元记满则进位31H单元。试利用 中断 结构,编制一个脉冲计数程序。 解: ORG 0000H AJMP MAIN ORG 0003H AJMP SUBG MAIN:MOV A,#OOH MOV 30H,A MOV 31H,A MOV SP,#70H SETB INT0 SETB EA SETB EX0 AJMP $ ORG 0200H SUBG:PUSH ACC INC 30H MOV A,30H JNZ BACK INC
[单片机]
STM32单片机汇编资料学习(1)
1.Cortex-M3内核架构 2.Cortex-M3指令系统的开发 总结:Cortex‐M3 只使用 Thumb‐2 指令集。这是个了不起的突破,因为它允许 32 位指令和 16 位指令 水乳交融,代码密度与处理性能两手抓,两手都硬。而且虽然它很强大,却依然易于使用 3.Cortex-M3简介 4.Cortex-M3寄存器组 1.寄存器特性 2.特殊功能寄存器特性 3.具体学习 CM3 拥有通用寄存器 R0‐R15 以及一些特殊功能寄存器。 R0‐R12 是最“通用目的” 的, 但是绝大多数的 16 位指令只能使用 R0‐R7(低组寄存器),而 32 位的 Thumb‐2
[单片机]
STM32<font color='red'>单片机汇编</font>资料学习(1)
使用STM32的systick定时器中断实现RTC工作过程出错
开发环境:keil MDK V5.10 操作系统:windows 7(32位) 目标硬件:STM32F103C8 问题描述:使用STM32的systick定时器实现RTC功能。具体方法为systick滴答计时器配置为1ms时间间隔的滴答中断,定义一个RTC结构体,包含年、月、日、时、分、秒。在每进一次systick中断服务程序中更新一次RTC的值。主程序通过不停地获取RTC的时钟,每一秒钟使用printf函数输出当前的时间。测试过程发现绝大多数时间系统正常工作,但依然存在部分情况系统无法进行正常的输出。相关代码和测试结果如下: /** * @brief 系统滴答定时器中断服务程序,主要功能为更新实时时钟 *
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved