微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STC89C52单片机定时器0的中断实验

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

时间:11-21 来源:互联网 点击:
//////////////////////////////////////////////////////////////////////////

实现功能: 配置定时器0的相关寄存器,使其实现定时器中断功能,然后通过发光
二极管的闪烁展现出中断的进行
实验板型号:BS-XYD-C52
实验名称: 定时器0的中断实验
编写人: 谢应东
编写日期: 2012-4-26
//////////////////////////////////////////////////////////////////////////
#include
#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; //指示灯反相,可以看到闪烁。" ~ "按位取反运算符
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top