MCU 8051 IDE: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
Řádek 97: | Řádek 97: | ||
=== 7 segment === | === 7 segment === | ||
[[Soubor:MCU-8051-IDE_04. | [[Soubor:MCU-8051-IDE_04.gif|400px|right]] | ||
<source lang="asm"> | <source lang="asm"> | ||
mov R6,#10 | |||
START: djnz R6,NEXT | |||
mov R6,#10 | |||
mov R5,#0 | |||
mov | |||
START: djnz | |||
mov | |||
mov | |||
NEXT: mov DPTR,#TAB | NEXT: mov DPTR,#TAB | ||
mov A, | mov A,R5 | ||
movc A,@A+DPTR | movc A,@A+DPTR | ||
mov P3,A | mov P3,A | ||
inc | 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 | |||
</source> | </source> | ||
Verze z 11. 6. 2012, 18:22
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 |
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 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;
}
}