南山国家公园试点范围:定时器/计数器编程问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 11:46:52
//1.3定时亮灭的小灯

#include<reg52.h>
#include<absacc.h>
#define unit unsigned int
#define uchar unsigned char

sbit L0=P2^0;
sbit L1=P2^1;
sbit L2=P2^2;
sbit L3=P2^3;

uchar data BUFFER[1]={0}; //定时器记数变量

void main(void)
{
P2=0x0f; //初始化端口

EA=1;IT1=1;ET0=1; //初始化外中断标志位

TMOD=0x01; //T0方式1记时0.01秒

TH0=-5000/256;
TL0=-5000%256;

TR0=1; //开中断,启动定时器
for(;;);

}

//定时计数器0的中断服务子程序
void timer0(void) interrupt 1 using 1
{
TH0=-5000/256; //定时器T0的高4位赋值

TL0=-5000%256; //定时器T0的低4位赋值

BUFFER[0]=BUFFER[0]+1;

if(BUFFER[0]==100) //百分秒进位
{

L3=!L3;
L2=!L2;
L1=!L1;
L0=!L0;

}

}

请问,书上说是没过1秒灯就改变状态,可是怎么到0。6秒就改变了,还有,为什么一开始灯就是亮的?

你的芯片比书上的那个
频率高

乱猜的