MCU 8051 IDE: Porovnání verzí

Z MediaWiki SPŠ a VOŠ Písek
Skočit na navigaci Skočit na vyhledávání
Řádek 97: Řádek 97:


=== 7 segment ===
=== 7 segment ===
[[Soubor:MCU-8051-IDE_07.gif|400px|right]]
<source lang="asm">
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
</source>
=== 7 segment v2 ===
[[Soubor:MCU-8051-IDE_04.gif|400px|right]]
[[Soubor:MCU-8051-IDE_04.gif|400px|right]]



Verze z 11. 6. 2012, 19:26

MCU 8051 IDE
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 Download

Instalace programu

Založení nového projektu

Simulace programu

Example

Write to Port

 	org 0 ;pseudoinstrukce umistujici program do pameti programu pocitace adresou 000h

start:  	
	mov A,#01010101b
	mov P3,A
	acall delay

	mov A,#10101010b
	mov P3,A
	acall delay

	sjmp start

delay:	mov R0,#01h
skok1:	mov R1,#01h
skok2:	mov R2,#01h
	
skok:	DJNZ	R2,skok
	DJNZ	R1,skok2
	DJNZ	R0,skok1

	ret
	end


Read from Ports

 	org 0 ;pseudoinstrukce umistujici program do pameti programu pocitace adresou 000h

start:  	
	mov A,#P1
	mov P3,A
	sjmp start

Runing Light

	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


7 segment

	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

	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

__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)

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

www

8051