Příklady s časovým zpožděním v C pro 8051

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Řádka 118: Řádka 118:
 
   }
 
   }
 
}
 
}
 +
</source>
 +
==Automatická pračka==
 +
===Program pro automatickou pračku===
 +
'''Blokové schéma:'''  [ftp://obelix.sps-pi.cz/n/janousek/mikroLAB/30_SES%20sestavy/SES03%20Pracka/pracka.JPG SES03 Pračka]
 +
<source pracka"asm">
 +
$smod51
 +
org 0
 +
start: mov P3,#00h
 +
vypust:
 +
setb P3.2 ; zapne cerpadlo
 +
jnb P1.0,$ ; test MIN hladiny vody
 +
clr P3.2 ; vypne cerpadlo
 +
napust:
 +
mov P3,#00000011b ; zapne 1. a 2. ventil
 +
jb P1.1,$ ; test MAX hladiny vody ceka na log.„0“
 +
mov P3,#00000000b ; vypne ventily
 +
ohrev:
 +
setb P3.3 ; zapne ohrev
 +
jb P1.2,$ ; test na dosazeni teploty ceka na log.„0“
 +
clr P3.3 ; vypne ohrev
 +
mov r3,#00h
 +
toc:
 +
mov P3,#00110000b
 +
acall zpozd
 +
mov P3,#01100000b
 +
acall zpozd
 +
mov P3,#11000000b
 +
acall zpozd
 +
mov P3,#10010000b
 +
acall zpozd
 +
jnb P1.3,toc
 +
inc r3
 +
cjne r3,#05h,toc
 +
mov P3,#00h
 +
vypust1:
 +
setb P3.2 ; zapne cerpadlo
 +
jnb P1.0,$ ; test MIN hladiny vody ceka na log. „1“
 +
clr P3.2 ; vypne cerpadlo
 +
sjmp konec
 +
zpozd: mov r6,#0ffh
 +
zpozd1:
 +
mov r7,#0ffh
 +
djnz r7,$ ;dekrementuje R7 dokud není log. „0“
 +
djnz r6, zpozd1
 +
ret ; návrat z podprogramu
 +
konec:
 +
mov P3,#00h
 +
sjmp start
 +
end
 
</source>
 
</source>

Verze z 29. 4. 2011, 12:41

zdroj informací: http://what-when-how.com/8051-microcontroller/data-types-and-time-delay-in-8051-c/

Obsah

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;
   }
}

Automatická pračka

Program pro automatickou pračku

Blokové schéma: SES03 Pračka

$smod51 
 org 0
start: mov P3,#00h
vypust: 
		setb P3.2 			; zapne cerpadlo
 		jnb P1.0,$ 			; test MIN hladiny vody
 		clr P3.2 			; vypne cerpadlo
napust: 	
		mov P3,#00000011b ; zapne 1. a 2. ventil
		jb P1.1,$ 			; test MAX hladiny vody ceka na log.„0“
		mov P3,#00000000b ; vypne ventily
ohrev: 
		setb P3.3 			; zapne ohrev
 		jb P1.2,$ 			; test na dosazeni teploty ceka na log.„0“
		clr P3.3	 		; vypne ohrev
		mov r3,#00h
toc: 
		mov P3,#00110000b
		acall zpozd
 		mov P3,#01100000b
 		acall zpozd
 		mov P3,#11000000b
 		acall zpozd
 		mov P3,#10010000b
 		acall zpozd
 		jnb P1.3,toc
 		inc r3
 		cjne r3,#05h,toc
 		mov P3,#00h
vypust1: 
		setb P3.2 			; zapne cerpadlo
 		jnb P1.0,$ 			; test MIN hladiny vody ceka na log. „1“
 		clr P3.2 			; vypne cerpadlo
 		sjmp konec
zpozd: mov r6,#0ffh
zpozd1: 
		mov r7,#0ffh
 		djnz r7,$ 			;dekrementuje R7 dokud není log. „0“
 		djnz r6, zpozd1
 		ret 				; návrat z podprogramu
konec: 
		mov P3,#00h
 		sjmp start
 end
Osobní nástroje
Jmenné prostory
Varianty
Akce
Rychlá navigace
NEJ aktivity
Nejlepší předměty
Nejlepší MCU
SW-HW
Ostatní
Utility
Nástroje
Tisk/export