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       844545015@qq.com
******************************************************************************
*     @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    

如需下载Proteus仿真文件和Keil工程,请关注公众号:

Proteus仿真店子

(若需Proteus和keil安装包,后台回复:安装包;若需Proteus教学视频,后台回复:Proteus视频;若需其它设计,后台回复:51汇编设计


版权声明:本文为Smile_shao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。