注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小哲

从今以后,你会是所有幸福的理由!

 
 
 

日志

 
 

52定时器2的使用  

2011-07-28 23:17:49|  分类: 51单片机 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
* This file is an example to use timer2 in mode 0此程序用于定时器2模式0。以下程序200811.07调试成功。/*/ 
#include <reg52.h> /*当前文件夹内的文件  */ 
#define MSB_reload_value 0x36 /* msb reload value exemple 高位重载值:延时60ms*/ 
#define LSB_reload_value 0x36 /* lsb reload value exemple 低位重载值*/ 
 
//sfr T2MOD=0xC9;    /*定时器2控制寄存器地址。可位寻址,复位值=XXXX XX00B 应该加在reg52.h文件中。*/ 
sbit P1_2 = P1 ^ 2
/* * FUNCTION_PURPOSE: This file set up timer 2 in mode 0 (16 bits auto-reload up/down counting timer). 
 * 用于模式0: 16位自动重载 向上/下计时 
 * The 16-bits register consist of all 8 bits of TH2 and all 8 bits of TL2. 
 * 16位寄存器由8位的TH2 和8位的TL2组成 
 * The EXF2 bit toggles when timer2 overflow or underflow occurs. 
 * 当timer2向上/下溢出时,置位EXF2位 
 * EXF2 does not generate interrupt. This bit can be used to provide 17-bit resolution 
 * FUNCTION_INPUTS: P1.1(T2EX)=0 for down counting or 1 for up counting. 
 * EXF2位并不引起中断。此位可以用来提供17位输入功能:向上/下计数功能 
 * FUNCTION_OUTPUTS: void */ 
void system_init() 

    EA = 0/*关中断,设置定时器2 */ 
    T2MOD &= 0xFC/* T2OE=0;定时器2输出不允许 */ 
    T2MOD |= 0x01/* DCEN=1;可以设置为向上/下计数:此程序中为向上达到0xff时溢出*/ 
    EXF2 = 0/* reset flag 定时器2外部标志位清除*/ 
    TCLK = 0
    RCLK = 0/* disable baud rate generator 不用于波特率发生器*/ 
    EXEN2 = 0/* ignore events on T2EX 视T2EX(P1.1)端信号无效*/ 
    TH2 = MSB_reload_value; /* Init msb_value 填入初始化值*/ 
    TL2 = LSB_reload_value; /* Init lsb_value */ 
    RCAP2H = MSB_reload_value; /* reload msb_value重载值 */ 
    RCAP2L = LSB_reload_value; /* reload lsb_value */ 
    C_T2 = 0/* timer mode 定时模式*/ 
    CP_RL2 = 0/* reload mode 重载模式*/ 
 
    ET2 = 1/* enable timer2 interrupt 允许T2中断*/ 
    TR2 = 1/* timer2 run 开始计时*/ 
    EA = 1/* interupt enable 中断允许*/ 

void main(void

    system_init(); 
    while(1/* endless */ 
    { 
 
    } 

/** * FUNCTION_PURPOSE: timer2 interrupt* FUNCTION_INPUTS: void* FUNCTION_OUTPUTS: P1.2 toggle period = 2 * (65536-reload_value) cycles */ 
void it_timer2(void) interrupt 5 /* interrupt address is 0x002b 定时器2中断向量入口*/ 

    P1_2 = ~P1_2; /* P1.2 toggle when interrupt. 中断时取反*/ 
    TF2 = 0/* reset interrupt flag 复位中断标志位*/ 

 
  评论这张
 
阅读(1083)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017