Příklady s časovým zpožděním v C pro 8051
Z MediaWiki SPŠ a VOŠ Písek
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