upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50

来源:互联网 发布:蒙泰端口设置 编辑:程序博客网 时间:2024/06/14 02:49



本篇博文最后修改时间:2017年09月15日 14:00。




一、简介

本文以upD79F8513A(NEC)或upD78F0511A(NEC)编程为例,介绍upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50初始化100us进一次中断。


二、实验平台

电脑平台:Windows7 64位旗舰

编译软件:PM+ V6.30

硬件平台:upD79F8513A(NEC)或upD78F0511A(NEC)



三、版权声明

博主:_懵懂

声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。

原文地址:http://blog.csdn.NET/qq_18842031

QQ:951795235

E-mail :951795235@qq.com

懵懂之MCU交流群:136384801




四、实验前提

1、在进行本文步骤前,请先安装PM+ V6.30版本;准备好upD79F8513A(NEC)或upD78F0511A(NEC)硬件平台。

         

五、基础知识

暂无


六、源码地址

暂无


七、关联文章

链接:暂无



八、实验内容

1.系统时钟初始化为外部8M

参考http://blog.csdn.net/qq_18842031/article/details/77984026



2.编写TM50初始化函数

/********************************************************************* * @fn      Init_TM50() * * @brief   初始化定时器50        100us进一次中断 * * @param   None. * * @return  None. ********************************************************************/norec void Init_TM50(void){    TMIF50 = 0;                /*清除中断标志位*/    TMMK50 = 1;                /*禁止中断服务*/    TMC50 = 0;                     TCL50 = 0x04;                //设置时钟为 Fx/4   8MH/4=2MH   0.5us    CR50  = 199;                 //100us      TMIF50 = 0;    TMMK50 = 0;    TCE50 = 1;}


3.编写主函数

/**********************************************************************                            pragma**********************************************************************/#pragma   SFR       /*程序中可以直接使用数据手册上描述的特殊寄存器名*/#pragma   DI        /*关全局中断*/#pragma   EI        /*开全局中断*/#pragma   NOP       /*允许嵌入NOP指令*/#pragma   ASM       /*允许嵌入汇编指令*/#pragma   STOP      /*允许嵌入STOP指令*/#pragma   HALT      /*允许嵌入HALT指令*/#pragma   interrupt INTTM50     INT_TM50//#include<>   /*这里包含文件*/__interrupt void    INT_TM50(void);    //这句放在main函数前面#define W5NOP         NOP();NOP();NOP();NOP();NOP()      /*5个空指令*/void main(void){  DI();  NOP();/*嵌入汇编是清空内存*//*注意事项:1. #asm  #endasm __asm 只能小写2. 汇编程序段中的标号必须以"?L"开头3. 调用C程序中的子程序,必须在子程序名前增加 "_" ;CALL    !_CPU_init*/#asm;清RAM  MOVW    HL ,#0FB00H?LRAM_CLEAR:  MOV     A,   #0  MOV     [HL],A  INCW    HL  MOVW    AX,HL  CMPW    AX,#0FEDFH  BC      $?LRAM_CLEAR#endasm/*嵌入汇编*/    __asm(" MOV A,#0 ");     EI();   Init_OST();   //初始化时钟  Init_TM50();//初始化定时器  while(1)  {    WDTE = 0xAC;       }}

4.编写中断服务函数

/********************************************************************* * @fn      INT_TM50() * * @brief   TM50中断服务函数  100us * * @param   None. * * @return  None. ********************************************************************/__interrupt void INT_TM50(void){/*100us进来一次*/}


 
原创粉丝点击