找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4363|回复: 0
收起左侧

STC12C5A16S2单片机的定时器操作演示实验

[复制链接]
ID:149839 发表于 2016-11-23 22:53 | 显示全部楼层 |阅读模式

#include<reg51.h>
/************* 本地常量声明 **************/
#define Main_Fosc   11059200UL     //定义外部晶振频率
#define TIME        (65536-Main_Fosc/1000)  //定义定时器时间溢出数
/************* 特殊寄存器声明 **************/
sfr AUXR=0x8E;         //辅助寄存器AUXR声明
sfr WAKE_CLKO=0x8F;        //时钟输出和掉电唤醒寄存器声明
/************* 特殊位声明 **************/
sbit  P1_0=P1^0;        //LED灯的控制管脚P1_0声明
/************* 本地变量声明 **************/
unsigned int count;        //普通计数变量声明
void main()
{
    AUXR=0x80;         //定时器0工作在1T模式下
   TMOD=0x01;         //定时器0工作在模式1(16位定时器/计数器)下
TL0=TIME;         //计数值低8位装入定时器低计数寄存器中
TH0=TIME>>8;        //计数值高8位装入定时器高计数
TR0=1;          //允许定时器0开始计数
ET0=1;          //开定时器0中断
P1_0=1;          //将P1的第0管脚设置为输出,这时LED灯亮
EA=1;          //开中断
count=0;         //初始化计数值
while(1)
   ;
}
/*******************************************************
*  函数名:timer0_out()
*  输入:无
*  输出:无
*  功能描述:定时0溢出终端处理函数。每隔1us产生溢出中断,这时候count的值由5000减1
*            当count值减为0时,改变LED灯状态,同时又从5000开始计数。
            
******************************************************/
void timer0_out()  interrupt 1
{
   TL0=TIME;
TH0=TIME>>8;
if(count-- ==0)
   {
      count=5000;
   P1_0=~P1_0;
   }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表