AT89C51单片机程序

本实验定时0.2S和2S采用定时器T0方式1实现,如果用定时器T1方式0该如何实现,请写出需要修改的程序代码。

第1个回答  2016-06-21
你有什么问题呢? 你的代码拍的不清晰,看不清楚, 你可以重新拍一张,然后把问题说明追问

追答

很少有用方式0 的;

unsigned int tcount2s;
unsigned int tcount02s;
unsigned char ID;
void main() //1ms
{
TMOD &= 0x0F;
TL1 = 0xC0; //设置定时初值 1ms
TH1 = 0xE0; //设置定时初值
ET1 = 1;
TR1 = 1;
EA = 1;
while(1);
}
void t1() interrupt 3
{
TL1 = 0xC0; //设置定时初值 1ms
TH1 = 0xE0; //设置定时初值
tcount2s++;
if(tcount2s >= 2000) //2s
{
P2 = 0xFF;
tcount2s = 0;
ID++;
if(ID == 4)
{
ID = 0;
}
}
tcount02s++;
if(tcount02s >= 200) //200ms
{
tcount02s = 0;
switch(ID)
{
case 0: D1 = ~D1; break;
case 1: D2 = ~D2; break;
case 2: D3 = ~D3; break;
case 3: D4 = ~D4; break;
}
}
}
你上面的程序是初始值50ms的定时器,
方式0 的话是13位的定时器,不能这样定时50ms,我定时1ms的,,
tcount2s 是计数到2秒。 另一个是200ms

追问

谢了,这个老师智障,没办法啊。

本回答被提问者采纳
第2个回答  2016-06-21
有什么问题?
相似回答