加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

STC89C52单片机定时器0的中断实验

(2012-06-16 21:04:35)
标签:

stc89c52单片机

 //////////////////////////////////////////////////////////////////////////
 实现功能:  配置定时器0的相关寄存器,使其实现定时器中断功能,然后通过发光
             二极管的闪烁展现出中断的进行
 实验板型号:BS-XYD-C52
 实验名称:  定时器0的中断实验
 编写人:  谢应东
 编写日期:  2012-4-26      
 //////////////////////////////////////////////////////////////////////////
#include<reg52.h>  
#define uchar unsigned char  //定义unsigned char 为 uchar
#define uint  unsigned int  //定义unsigned int 为 uint

sbit Led=P1^0;           //将P1^0口定义为led,方便程序编写
 //////////////////////////////////////////////////////////////////////////

函数名称:Init_time0
函数功能:配置定时器0,配置的模式是定时器0采用16位计数器模式,同时允许定时器0
          中断,并打开总中断
参数介绍:无
返回值: 
注意事项:无
 //////////////////////////////////////////////////////////////////////////
void Init_time0(void)
{
 TMOD |= 0x01;         
  TH0=0x00;      
  TL0=0x00;    //定时器0的,写入数值寄存器的低8位
  EA=1;             //总中断打开
  ET0=1;            //定时器T0允许中断
  TR0=1;            //定时器T0开始工作
}
 //////////////////////////////////////////////////////////////////////////
函数名称:main
函数功能:实现定时器0中断,且通过名为D1的发光二级管展现出来
参数介绍:无
返回值: 
注意事项:无
 //////////////////////////////////////////////////////////////////////////
void main()
{
 Init_time0();     //初始化定时器0
 while(1);
}
 //////////////////////////////////////////////////////////////////////////

函数名称:Interrupt_handler_time0
函数功能:重新给寄存器TH0和TL0赋值,并且让开发板上的名为D1的发光二级管,每次
          取相反的值,使其不断地闪烁,也达到测试定时器0中断的效果
参数介绍:无
返回值: 
注意事项:无
 //////////////////////////////////////////////////////////////////////////
void Interrupt_handler_time0(void) interrupt 1
{
  TH0=0x00;    //重新赋值
  TL0=0x00;
 Led=~Led;         //指示灯反相,可以看到闪烁。" ~ "按位取反运算符
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有