proteus接线
Process
这里的计时1s实现的大体思路是采用模式一,初值设置为55536,即高八位0xd8,低八位为0xf0,为什么要这么设置呢?因为模式一的溢出值为216,即65536,差值为10000微秒=10ms,再循环一百次,就是1000ms=1s了。
Keil代码
#include<reg51.h>
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
void delay(int count);
void main()
{
TMOD=0x01;
TH0=0xd8;//1101 1000
TR0=0xf0;//1111 0000 -> 1101 1000 1111 0000=65536-10000=55536->10000us=10ms->10ms*100=1000ms=1s
TR0=1;
p20=0;
p21=0;
p22=0;
p23=0;
while(1)
{
p20=1;
delay(1);
p20=0;
p21=1;
delay(1);
p21=0;
p22=1;
delay(1);
p22=0;
p23=1;
delay(1);
p23=0;
}
}
void delay(int count)
{
int i, j;
for(j=0;j<count;j++)
for(i=0;i<100;i++)//1s
{
while(TF0==0);
TF0=0;
TH0=0xd8;
TR0=0xf0;
}
}