MCU 8051 IDE
(Rozdíly mezi verzemi)
(→Read from Ports) |
(→7 segment) |
||
Řádka 97: | Řádka 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 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | 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, 20: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 |
Obsah |
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; } }