MCU 8051 IDE
(Rozdíly mezi verzemi)
Řádka 23: | Řádka 23: | ||
== Simulace programu == | == Simulace programu == | ||
− | == | + | == Example == |
− | === | + | |
+ | === Write to Port === | ||
[[Soubor:RD2kit_08.jpg|400px]] | [[Soubor:RD2kit_08.jpg|400px]] | ||
Řádka 55: | Řádka 56: | ||
− | === | + | === Read from Ports === |
[[Soubor:RD2kit_09.jpg|400px]] | [[Soubor:RD2kit_09.jpg|400px]] | ||
Řádka 68: | Řádka 69: | ||
</source> | </source> | ||
− | === | + | === Runing Light === |
[[Soubor:MCU-8051-IDE_03.jpg|400px]] | [[Soubor:MCU-8051-IDE_03.jpg|400px]] | ||
Řádka 93: | Řádka 94: | ||
end | end | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | === 7 segment === | ||
+ | [[Soubor:MCU-8051-IDE_04.jpg|400px]] | ||
+ | |||
+ | <source lang="asm"> | ||
+ | ORG 00H | ||
+ | |||
+ | ljmp MAIN | ||
+ | |||
+ | ORG 0030H | ||
+ | MAIN: mov SP,#7H | ||
+ | mov R2,#0 ;Set the initial value of R2, 0, R2 to display the value stored in | ||
+ | mov R5,#16 | ||
+ | START: djnz R5,NEXT | ||
+ | mov R5,#16 | ||
+ | mov R2,#0 | ||
+ | NEXT: mov DPTR,#TAB | ||
+ | mov A,R2 | ||
+ | movc A,@A+DPTR | ||
+ | mov P3,A | ||
+ | inc R2 | ||
+ | lcall DELAY | ||
+ | jmp START | ||
+ | |||
+ | DELAY: mov R0,#1 | ||
+ | DELAY0: mov R7,#1 | ||
+ | DELAY1: mov R6,#1 | ||
+ | djnz R6,$ | ||
+ | djnz R7,DELAY1 | ||
+ | djnz R0,DELAY0 | ||
+ | ret | ||
+ | TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0,1,2,3,4,5,6,7,8,9, | ||
+ | DB 08H,03H,46H,21H,06H,0EH ;A,B,C,D,E,F | ||
+ | END | ||
+ | |||
+ | </source> | ||
+ | |||
+ | === 7 segment - C === | ||
+ | [[Soubor:MCU-8051-IDE_05.jpg|400px]] | ||
+ | |||
+ | <source lang="CPP"> | ||
+ | #include <reg51.h> | ||
+ | #include <at89x51.h> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | #define DELAYTIME 65000 //Defined delay time constant | ||
+ | unsigned int temp1; | ||
+ | |||
+ | void delay(unsigned int temp)//Delay process | ||
+ | { | ||
+ | while(--temp); | ||
+ | } | ||
+ | |||
+ | void main() | ||
+ | { | ||
+ | |||
+ | P2=255;//led is off | ||
+ | while(1) | ||
+ | { | ||
+ | P2=0Xc0;//Display 0,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0XF9;//Display 1,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0XA4;//Display 2,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0XB0;//Display 3,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X99;//Display 4,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X92;//Display 5,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X82;//Display 6,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0Xf8;//Display 7,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X80;//Display 8,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X90;//Display 9,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X08;//Display A,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X03;//Display B,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X46;//Display C,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X21;//Display D,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X06;//Display E,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | P2=0X0E;//Display F,P2 port output of their section of the election code | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | temp1=DELAYTIME; | ||
+ | delay(temp1); | ||
+ | |||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | </source> | ||
+ | |||
== www == | == www == |
Verze z 10. 6. 2012, 11:19
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
ORG 00H ljmp MAIN ORG 0030H MAIN: mov SP,#7H mov R2,#0 ;Set the initial value of R2, 0, R2 to display the value stored in mov R5,#16 START: djnz R5,NEXT mov R5,#16 mov R2,#0 NEXT: mov DPTR,#TAB mov A,R2 movc A,@A+DPTR mov P3,A inc R2 lcall DELAY jmp START DELAY: mov R0,#1 DELAY0: mov R7,#1 DELAY1: mov R6,#1 djnz R6,$ djnz R7,DELAY1 djnz R0,DELAY0 ret TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0,1,2,3,4,5,6,7,8,9, DB 08H,03H,46H,21H,06H,0EH ;A,B,C,D,E,F END
7 segment - C
#include <reg51.h> #include <at89x51.h> #include <stdio.h> #define DELAYTIME 65000 //Defined delay time constant unsigned int temp1; void delay(unsigned int temp)//Delay process { while(--temp); } void main() { P2=255;//led is off while(1) { P2=0Xc0;//Display 0,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0XF9;//Display 1,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0XA4;//Display 2,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0XB0;//Display 3,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X99;//Display 4,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X92;//Display 5,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X82;//Display 6,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0Xf8;//Display 7,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X80;//Display 8,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X90;//Display 9,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X08;//Display A,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X03;//Display B,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X46;//Display C,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X21;//Display D,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X06;//Display E,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); P2=0X0E;//Display F,P2 port output of their section of the election code temp1=DELAYTIME; delay(temp1); temp1=DELAYTIME; delay(temp1); } }