MCU 8051 IDE

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Runing Light)
(Write to Port)
Řádka 33: Řádka 33:
 
[[Soubor:RD2kit_08.jpg|400px]]
 
[[Soubor:RD2kit_08.jpg|400px]]
  
 +
{|
 +
|-
 +
|
 
<source lang="asm">
 
<source lang="asm">
org 0 ;pseudoinstrukce umistujici program do pameti programu pocitace adresou 000h
 
  
 
start: 
 
start: 
mov A,#01010101b
+
        mov A,#01010101b
 
mov P3,A
 
mov P3,A
 
acall delay
 
acall delay
Řádka 47: Řádka 49:
 
sjmp start
 
sjmp start
  
delay: mov R0,#01h
+
delay: mov R0,#01h ; 108 ms
skok1: mov R1,#01h
+
skok1: mov R1,#100
skok2: mov R2,#01h
+
skok2: mov R2,#250
 
 
skok: DJNZ R2,skok
+
skok: DJNZ R2,skok
DJNZ R1,skok2
+
DJNZ R1,skok2
DJNZ R0,skok1
+
DJNZ R0,skok1
  
 
ret
 
ret
 
end
 
end
 
</source>
 
</source>
 +
|
 +
<source lang="c">
 +
#include <at89x51.h>
  
 +
void _delay_ms(unsigned int msec) //for 11.0592Mhz crystal
 +
 +
{
 +
  unsigned int i,j;
 +
  for(i=0;i<msec;i++)
 +
  {
 +
  for(j=0;j<110;j++);
 +
  }
 +
}
 +
 +
void main ()
 +
{
 +
  while(1)
 +
  {
 +
  P3 = 0x55;
 +
  _delay_ms(100); // 100 ms
 +
  P3 = 0xAA;
 +
  _delay_ms(100);
 +
  }
 +
}
 +
</source>
 +
|-
 +
|}
  
 
=== Read from Ports ===
 
=== Read from Ports ===

Verze z 5. 5. 2013, 09:08

MCU-8051-IDE-logo.png MCU 8051 IDE MCU-8051-IDE-screen.png
popis: Vývoj aplikace pro 8051 v asm nebo C
vývojář Martin Ošmera
aktuální verze 1.4 (2011)
OS Unix-like, Microsoft Windows, freeBSD
typ softwaru aplikační
licence GNU General Public License
web mcu8051ide.sf.net wiki

Download FTP.jpg Download

Obsah

Instalace programu

Založení nového projektu

Simulace programu

Example

Write to Port

RD2kit 08.jpg

start:  	
        mov A,#01010101b
	mov P3,A
	acall delay
 
	mov A,#10101010b
	mov P3,A
	acall delay
 
	sjmp start
 
delay:	mov R0,#01h ; 108 ms 
skok1:	mov R1,#100
skok2:	mov R2,#250
 
skok:	DJNZ R2,skok
	DJNZ R1,skok2
	DJNZ R0,skok1
 
	ret
	end
#include <at89x51.h>
 
void _delay_ms(unsigned int msec) //for 11.0592Mhz crystal
 
{
   unsigned int i,j;
   for(i=0;i<msec;i++)
   {
   for(j=0;j<110;j++);
   }
}
 
void main ()
{
   while(1)
   {
   P3 = 0x55;
   _delay_ms(100); // 100 ms
   P3 = 0xAA;
   _delay_ms(100);
   }
}

Read from Ports

RD2kit 09.jpg

 	org 0 ;pseudoinstrukce umistujici program do pameti programu pocitace adresou 000h
 
start:  	
	mov A,#P1
	mov P3,A
	sjmp start

Runing Light

MCU-8051-IDE 03.jpg
	org 0 ;pseudoinstrukce umistujici program od 00h
 
  	mov P3,#11111110B	;0. bit na log "0"
loop:	mov A,P3
	rlc A	 		;posun obsah A přes C doleva
	mov P3,A
	acall delay	 	;zavolá podprogram pro zpoždění 1s
 	sjmp loop	 	;skočí zpět k rotaci P1
 
delay:	mov R0,#01h		;podprogram zpoždění
skok1:	mov R1,#01h
skok2:	mov R2,#01h
 
skok:	djnz	R2,skok
	djnz	R1,skok2
	djnz	R0,skok1
 
	ret 	 
	end

Runing Light C

#include <at89x51.h>
 
#define LED P2_3
 
void main()
{
	int i;
	while(1)
	{
		if (LED)
		{
		LED = 0;
		}
		else 
		{
		LED = 1;
		}
	  {
	  for(i=0;i<10000;i++);
	  }
	}
}

7 segment

MCU-8051-IDE 07.gif
	MOV DPTR,#TAB 	;ulozi adresu cislic do DPTR
nastav:	MOV R5,#0	;nastaveni prvni cislice
zobraz:  MOV A,R5	;presun cislice z R5 do A
	MOVC A,@A+DPTR	;vybere prislusnou hodnotu pro A
	MOV P3,A		;presum hodnoty na port
	INC R5		;zvysi cislo v R5 o 1 
	CJNE R5,#10,zobraz
	SJMP nastav
 
TAB:	DB 0C0h,0F9H,0A4H,0B0H,99H ;0,1,2,3,4,
	DB 92H,82H,0F8H,80H,90H    ;5,6,7,8,9,
	end

7 segment v2

MCU-8051-IDE 04.gif
	mov R6,#10    
START:	djnz R6,NEXT
	mov R6,#10
	mov R5,#0
NEXT:	mov DPTR,#TAB
	mov A,R5
	movc A,@A+DPTR
	mov P3,A
	inc R5
	sjmp START
 
TAB:	DB 0C0H,0F9H,0A4H,0B0H,99H ;0,1,2,3,4,
	DB 92H,82H,0F8H,80H,90H   ;5,6,7,8,9,
	end

7 segment - C

MCU-8051-IDE 05.gif
__sfr __at (0xB0) P3;
 
#define DELAYTIME   15 //Defined delay time constant, originally 65000
unsigned int temp1;
 
void delay(unsigned int temp)//Delay process
{
  while(--temp);
}
 
void main()
{
        P3=255;	//led is off  HGFEDCBA = "1"
        while(1)
	{
                P3=0Xc0;		//0 HG = "1" OFF
		temp1=DELAYTIME;
		delay(temp1);
 
		P3=0XF9;		//1 BC = "0" = ON
		temp1=DELAYTIME;
		delay(temp1);
		}
}

7 segment - C (tab)

MCU-8051-IDE 06.gif
#include <at89x51.h>
 
__code unsigned char out[16] = {0xC0,0xF9,0xA4,0xB0, //0,1,2,3
			        0x99,0x92,0x82,0xF8, //4,5,6,7
			        0x80,0x90,0x08,0x03, //8.9.A.B
			        0x46,0x21,0x06,0x0E};//C,D,E,F
void main(void)
{
    __data unsigned char i = 0;
 
     while (1) // program loop
     {
          P3 = out[i++];
          if (i==16)
               i=0;
     }
}

Counter

MCU-8051-IDE 09.gif
	MOV	TMOD,#00000001B
  	MOV	TH0,#00H
  	MOV	TL0,#00H
  	SETB	TR0
 
	MOV DPTR,#TAB 	;ulozi adresu cislic do DPTR
nastav:	MOV R5,#0	;nastaveni prvni cislice
zobraz:  MOV A,R5	;presun cislice z R5 do A
	MOVC A,@A+DPTR	;vybere prislusnou hodnotu pro A
	MOV P3,A		;presum hodnoty na port
	INC R5		;zvysi cislo v R5 o 1 
	acall test
	CJNE R5,#10,zobraz
	SJMP nastav
 
test:
;	ACALL	ZPOZD
 	JNB     P1.0,$		;bit P1.0=0 skok na sebe sama
; 	ACALL	ZPOZD
 	JB	P1.0,$		;bit P1.0=1 skok na sebe sama
	ret
 
ZPOZD:	MOV		R0,#05H
SKOK:	JNB		TF0,$
	CLR		TF0
 	DJNZ		R0,SKOK
 	RET
 
TAB:	DB 0C0h,0F9H,0A4H,0B0H,99H ;0,1,2,3,4,
	DB 92H,82H,0F8H,80H,90H    ;5,6,7,8,9,
	end

www

8051

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