51单片机汇编学习例程(3)——Timer中断篇

3.ASM3_Timer:   定时器0控制LED闪烁

/**
******************************************************************************
*     @file        Timer.asm
*     @author      Alex——小白
*     @version     V1.0
*     @date        2019.9.1
*     @brief       定时器控制LED亮灭
*    @store       有家Proteus仿真店子
*    @Link        https://shop484534014.taobao.com/
*    @Email         [email protected]
******************************************************************************
*     @attention    All Rights Reserved 
**/

        ORG     0000H            ;程序执行的起始地址               
        LJMP      Main            ;跳转到main函数
        ORG     000BH            ;外部中断0起始地址
        LJMP     Timer0            ;声明Timer0是外部中断0函数名称  

        ORG     0100H            ;程序跳转到0100H开始执行
    Main:   
        MOV     TMOD,#01H        ;定时器0,方式1,10ms
        MOV     TH0,#0D8H        ;65535-10000=55535=‭D8EF‬,10ms
        MOV     TL0,#0EFH   
        SETB     ET0
        SETB     TR0               
        SETB     EA                ;总中断使能
        MOV     30H,#00H        ;用于定时1s变量
        SJMP    $                ;死循环
   
    Timer0:                        ;外部定时器0函数
        MOV     TH0,#0D8H       
        MOV     TL0,#0EFH
        INC        30H                ;30H单元的值自加
        MOV        A,30H
        CJNE    A,#50,Next        ;判断30H单元的值是否为50,50*10ms=0.5s
        MOV        30H,#00H        ;若是,则清零
        CPL        P1.0            ;P1.0闪烁
    Next:
        RETI                    ;中断返回

    END    

如需其他代码,请联系QQ844545015

发布了14 篇原创文章 · 获赞 1 · 访问量 5007

猜你喜欢

转载自blog.csdn.net/Smile_shao/article/details/103571690
今日推荐