试着写了单片机程序,但不知如何加人启动和停止,定时器TR0为什么不能被其它函数调用呢?
#include <REGX52.H>
#include<intrins.h>
#include"Delay.h" //延时函数申明
unsigned char tem_key=0; //按键+次数
unsigned char tem_min;//1分
unsigned char tem; //中间变量
unsigned char timing_time; //定时时间
sbit key=P1^0; //按键定义
sbit LED=P1^1; //定时工作指示
unsigned char smgxs[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管编码
void Key() //按键函数
{
if(key==0)
{
Delay(20);
while(key==0);
Delay(20);
tem_key++;
if(tem_key>=10) //0-9值循环
{
tem_key=0;
}
tem=tem_key;
timing_time=(tem*60); //显示值*60分钟
}
}
void T0Init(void) //50毫秒@11.0592MHz
{
TMOD=0x01; //设置定时器模式
TL0 = 0x00; //设置定时初始值
TH0 = 0x4C; //设置定时初始值
TF0 = 0; //清除TF0标志
ET0=1;
EA=1;
TR0 = 1; //T0开始计时
}
void Timer0_Rountiue() interrupt 1 //中断程序
{
unsigned char tem_ms;
unsigned int tem_s; //1秒
TL0 = 0x00; //重装初始值
TH0 = 0x4C; //重装初始值
tem_ms++;
if(tem_ms==20)
{
tem_s++; //秒
tem_ms=0;
LED=~LED;
}
if(tem_s==3600)
{
tem_min++; //分
tem_s=0;
}
}
void main()
{
T0Init(); //T0初始化
while(1)
{
Key();
P0=smgxs[tem_key]; //显示送P0
if(timing_time==tem_min) //时间到
{
tem_min=0; //时间到清零
//执行程序。。。
}
}
}
75行加上定时器没起作用,开机就执行程序了,是什么原因?
|