Příklady s časovým zpožděním v C pro 8051
zdroj informací: http://what-when-how.com/8051-microcontroller/data-types-and-time-delay-in-8051-c/
Unsigned char
example 7-1
#include <reg51.h>
void main (void)
{
unsigned char z;
for (z=0;z<=255;z++)
P1=z;
}
example 7-2
#include <reg51.h>
void main (void)
{
unsigned char mynum [] = "012345ABCD";
unsigned char z;
for (z=0;z<=10;z++)
P1 = mynum[z];
}
example 7-3
#include <reg51.h>
void main (void)
{
for (;;) //opakovani cyklu
P1=0x55;
P1=0xAA;
}
Unsigned char
example 7-4
#include <reg51.h>
void main (void)
{
char mynum [] = {+1,-1,+2,-2,+3,-3,+4,-4};
unsigned char z;
for (z=0;z<=8;z++)
P1 = mynum[z];
}
example 7-5
#include <reg51.h>
sbit MYBIT = P1^0; //definování výstupního bitu
void main (void)
{
MYBIT = 0;
MYBIT = 1;
}
example 7-5-2
#include <reg51.h>
sbit MYBIT = P1^0; //definování výstupního bitu
void main (void)
{
MYBIT = ~MYBIT;
}
example 7-5-3
#include <reg51.h>
sbit MYBIT = P1^0; //definování výstupního bitu
void main (void)
{
unsigned int z;
for (z=0;z<=5;z++)
{
MYBIT = 0;
MYBIT = 1;
}
}
</source>
example 7-6 (neověřeno)
#include <reg51.h>
void main (void)
{
unsigned int x;
for (;;) //repeat forever
{
P1=0x55;
for(x=0;x<40000;x++); //delay size unknown
P1=0xAA;
for(x=0;x<40000;x++);
}
}
example 7-7 (neověřeno)
#include <reg51.h>
void MSDelay(unsigned int);
void main (void)
{
while(1) //opakování cyklu
{
P1=0x55;
MSDelay(250);
P1=0xAA;
MSDelay(250);
}
}
Void MSDelay(unsigned int itime)
{
unsigned int i, j;
for(i=0;i<itime;i++)
for(j=0;j<1275;j++);
}
example 7-8 (neověřeno)
<source lang"asm">
- include <reg51.h>
void MSDelay(unsigned int); void main (void)
{ while(1) //another way to do it forever {
P0=0x55; P2=0x55;
MSDelay(250); P0=0xAA; P2=0xAA MSDelay(250); } } Void MSDelay(unsigned int itime) { unsigned int i, j; for(i=0;i<itime;i++) for(j=0;j<1275;j++); }