chapter 4
chapter 4
for(i=0;i<10;i++)
{
P1=nums[i];
for(j=0;j<30000;j++);
}
}
}
Example 3. Simple traffic light
#include<reg51.h> red=0;
sbit red=P1^0; yellow=1;
sbit yellow=P1^1; for(i=0;i<60000;i++);
sbit green=P1^2; yellow=0;
green=1;
void main(void)
for(i=0;i<60000;i++);
{
for(i=0;i<60000;i++);
unsigned int i;
for(i=0;i<60000;i++);
red=yellow=green=0;
green=0;
while(1)
yellow=1;
{
red=1; for(i=0;i<60000;i++);
for(i=0;i<60000;i++); yellow=0;
for(i=0;i<60000;i++); }
for(i=0;i<60000;i++); }
Example 4. Write an 8051 C program to toggle bits of P1 ports continuously
with a 250 ms.
#include <reg51.h>
void MSDelay(unsigned int); U1
void main(void) 19
XTAL1 P0.0/AD0
39
38
P0.1/AD1
{ 18
XTAL2
P0.2/AD2
P0.3/AD3
37
36
35
while (1) //repeat forever P0.4/AD4
P0.5/AD5
34
33
R8 P0.6/AD6
{ 220R
9
RST P0.7/AD7
32
21
P1=0x55; R7 P2.0/A8
22
P2.1/A9
220R 23
P2.2/A10
MSDelay(250); R6 29
30
PSEN P2.3/A11
24
25
ALE P2.4/A12
P1=0xAA; 220R
R4
31
EA P2.5/A13
P2.6/A14
26
27
28
MSDelay(250); 220R
P2.7/A15
1 10
R3 P1.0 P3.0/RXD
} 2
3
P1.1 P3.1/TXD
11
12
220R P1.2 P3.2/INT0
4 13
} R5 5
P1.3 P3.3/INT1
14
P1.4 P3.4/T0
220R 6 15
P1.5 P3.5/T1
void MSDelay(unsigned int itime) R1 7
8
P1.6 P3.6/WR
16
17
P1.7 P3.7/RD
{ R2
220R
AT89C51
for (i=0;i<itime;i++)
for (j=0;j<1275;j++);
}
Example 5. Counter up to 99
#include<reg51.h>
void delay(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++) U1
19 39
XTAL1 P0.0/AD0
for(j=0;j<1275;j++); P0.1/AD1
P0.2/AD2
38
37
18 36
} XTAL2 P0.3/AD3
P0.4/AD4
35
34
P0.5/AD5
void main(void) 9
P0.6/AD6
33
32
RST P0.7/AD7
{ P2.0/A8
21
22
char number[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f}; P2.1/A9
P2.2/A10
23
29 24
PSEN P2.3/A11
int i,j; 30
31
ALE P2.4/A12
25
26
EA P2.5/A13
P1=0x00; P2.6/A14
27
28
P2.7/A15
P2=0x00; 1
P1.0 P3.0/RXD
10
2 11
P1.1 P3.1/TXD
while(1) 3
4
P1.2 P3.2/INT0
12
13
P1.3 P3.3/INT1
{ 5
6
P1.4 P3.4/T0
14
15
P1.5 P3.5/T1
7 16
for(i=0;i<10;i++) 8
P1.6
P1.7
P3.6/WR
P3.7/RD
17
{ AT89C51
P1=number[i];
for(j=0;j<10;j++)
{
P2=number[j];
delay(50);
}
}