Stránka 2 z 3
Napsal: 16 lis 2017, 23:27
od jura80
To asi bude povícero překvapení.
Dneska jsem zkusil světelný řetízek s potenciometrem regulovatelnou rychlostí...
int del=A0;
const int de=A0;
byte a=2;
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
int h=9;
int i=10;
int j=11;
int k=12;
int l=13;
void setup()
{
pinMode(a, OUTPUT);
pinMode (b, OUTPUT);
pinMode(c, OUTPUT);
pinMode (d, OUTPUT);
pinMode(e, OUTPUT);
pinMode (f, OUTPUT);
pinMode(g, OUTPUT);
pinMode (h, OUTPUT);
pinMode(i, OUTPUT);
pinMode (j, OUTPUT);
pinMode(k, OUTPUT);
pinMode (l, OUTPUT);
del=0;
Serial.begin(9600);
}
void loop()
{
del=analogRead (de);
del=del/4;
Serial.print("prodleva = " );
Serial.print(del);
Serial.println();
//delay(1000);
digitalWrite(a, HIGH);
delay (del);
digitalWrite(a, LOW);
digitalWrite (b, HIGH);
delay (del);
digitalWrite (b, LOW);
digitalWrite (c, HIGH);
delay (del);
del=analogRead (de);
del=del/4;
digitalWrite (c, LOW);
digitalWrite (d, HIGH);
delay (del);
digitalWrite (d, LOW);
digitalWrite (e, HIGH);
delay (del);
digitalWrite (e, LOW);
digitalWrite (f, HIGH);
delay (del);
del=analogRead (de);
del=del/4;
digitalWrite (f, LOW);
digitalWrite (g, HIGH);
delay (del);
digitalWrite (g, LOW);
digitalWrite (h, HIGH);
delay (del);
del=analogRead (de);
del=del/4;
digitalWrite (h, LOW);
digitalWrite (i, HIGH);
delay (del);
digitalWrite (i, LOW);
digitalWrite (j, HIGH);
delay (del);
del=analogRead (de);
del=del/4;
digitalWrite (j, LOW);
digitalWrite (k, HIGH);
delay (del);
digitalWrite (k, LOW);
digitalWrite (l, HIGH);
delay (del);
digitalWrite (l, LOW);
}
Napsal: 17 lis 2017, 10:58
od LukinoOl
A to jsi psal celý dobrovolně, nebo tě k tomu někdo, pod pohrůžkou násilí, přinutil?
![Laughing :lol:](./images/smilies/icon_lol.gif)
Napsal: 17 lis 2017, 14:11
od p32
Taky jsem si říkal proč nepoužije možnosti kratších klepanců do klávesnice, např. použít smyčku od - do apod.
![Wink :wink:](./images/smilies/icon_wink.gif)
Napsal: 17 lis 2017, 21:42
od Cowley
A podprogramy
Ale je to jeho radost a ja mu fandim.
Napsal: 21 lis 2017, 14:07
od ZdenekHQ
mtajovsky píše:
Kód: Vybrat vše
#define PI 3.14 // OK
int muj_index; // OK
float getValue(void); // tohle je taky OK
char* Hnusny_Nazev_Pro_Retezec; // tohle není OK
char pekny_nazev_pro_retezec[20]; // tohle už je lepší
Já jsem zvyklý na Pekny_nazev_pro_retezec, nějak ze zvyku dávám první písmeno velký, v asm to nevadí. Nakonec moje programy většinou nejsou veřejný, tak je to čistě moje věc.
Jenže pak přijde někdo, kdo chce PeknyNazevProRetezec a já jsem v háji, pořád se mně tam pletou ty podtržítka...
Napsal: 21 lis 2017, 16:19
od p32
ta podtržítka
![Wink :wink:](./images/smilies/icon_wink.gif)
Napsal: 21 lis 2017, 16:51
od mtajovsky
ZdenekHQ << pokud jsou vaše programy jen vaše, je to (možná) jedno. Pokud na projektu pracuje více vývojářů, je třeba dohodnout kódovací pravidla a ta dodržovat. Jde zejména o přehlednost s snadnost čtení a taky, pokud se čte cizí kód, tak aby se člověk cítil jako doma. Omezuje to chyby z přehlédnutí a nepozornosti. Za sebe musím říct, že míchání kombinace velkých a malých písmen s podtržítky mi dost vadí - až z toho bolí oči a je to velice náchylné na chyby. Když už camel, tak by se velká písmena v názvu měla používat ne jako první písmeno - to nemá opodstatnění, ale jako oddělovač slov, nejčastěji podstatného jména, slovesa a případně přídavného jména, číslovky atd., která jsou složena do jednoho názvu. Sloveso činnosti se obvykle dává na začátek s malým písmenem. Jistě se čte snadněji camel
než
To stejné platí o používání podržítek. A proto je kombinace camel s podtžítky špatná, přináší zbytečně mnoho oddělovacích markerů v názvu a to snižuje čitelnost.
P.S.: existuje jistě mnoho pravidel pro psaní názvů proměnných tak, aby samotný název co nejvíce řekl o co jde. U nás ve firmě, například, dáváme za každý název fyzikální veličiny důsledně suffix, který říká jednotku. Například:
a podobně. Jeden by nevěřil, co to ušetří koukání do dokumentace a případných chyb a nedorozumění na interfacech modulů.
Napsal: 21 lis 2017, 18:24
od ZdenekHQ
Tak to my se zatím spíš rozcházíme, ale na daleko vyšší úrovni. Teď třeba místo master a slave zavedli duck a duckling či jak to napsali, to je pak teprve mazec...
Asi dost dělají závorky, v asm se nepoužívají vůbec, takže to i jinak vypadá.
Kód: Vybrat vše
mov a,P_cyklu
cjne a,#Wt_start,Sm_star2
Sm_star2:
jnc Sm_star3 ;--> prechod do dalsiho MODE
Napsal: 21 lis 2017, 20:59
od FHonza
U nás jsme si kdysi nastavili svůj standard a ten přísně dodržujeme. Kromě "camel" názvů je to i způsob pojmenování lokálních proměnných, formátování (dvě mezery), pojmenování typů a pod. A to ve všech jazycích, ve kterých píšeme (assembler mezi nimi už dlouho není).
Teda kromě lokálních i,j to zůstalo jako památka na Fortran
![Smile :)](./images/smilies/icon_smile.gif)
Napsal: 22 lis 2017, 00:23
od ZdenekHQ
Z "ijklmn" mám kopřivku, protože si někteří nějak neuvědomují, že v asm (JSA pro šťouraly) nejsou lokální proměnné. Teda kromě registrů bank, a to velmi omezeně. Já ty procesory obecně beru jako BIOS pro navržené HW, bohužel někdo na tom chce stavět orloj...
Znám vyšší programovací jazyky a třeba oblíbený cyklus typu "for i", ale když mně někdo řekne, že zná 8051, dělal na něm hromadu let a přitom požaduje lokální proměnnou, tak si bohužel myslím svoje...
Napsal: 22 lis 2017, 10:02
od JiriTom
Jak to tady čtu, možná si pohraju taky
![Smile :)](./images/smilies/icon_smile.gif)
. Asi začít
tímhle ?. Nebo doporučíte něco lepšího, nebo z jiného e-shopu ? Díky...
EDIT: hrál jsem si s odkazem, proto tolik úprav...
![Smile :)](./images/smilies/icon_smile.gif)
Napsal: 22 lis 2017, 10:29
od FHonza
Jestli ti nevadí čekat, tak to kup na eBay. Je to totéž, ale výrazně levnější. Např.
zde
Napsal: 22 lis 2017, 16:47
od mtajovsky
JiriTom << kupte si
variantu s paticí a ATmega328 v DIL pouzdře. Má to výhodu přinejmenším v opravitelnosti.
ZdenekHQ píše: ...Asi dost dělají závorky, v asm se nepoužívají vůbec ...
Ony závorky v C jsou velmi podstatným prvkem, který není kvůli čitelnosti, ale jsou integrální součástí syntaxe. Nejen, že mění prioritu operací - to je obvyklé, také určují, co je všechno argumentem funkce, a také někdy říkají, co je daný indetifikátor zač. Jestliže máme funkci s deklarací
void f(void);
tak zápisem f() se ta funkce vyvolá, kdežto samotné f znamená pointer na tu funkci, čili adresu, na které ta funkce začíná. Tento pointer je regulérním pointerem, který lze předat například argumentem jako call-back funkci do jiné funkce.
Rovněž tak:
int *f(char c); je deklarace funkce odevzdávající pointer na int, ale:
typedef int (*F)(char c); je definice nového typu - a sice typu "pointer na funkci, která bere jako argument char a vrací int. Pak:
F f; je alokace pointeru datového typu F v paměti pod názvem f.
A to nemluvím o závorkách deklarovaných jako operátor pro třídu, čímž dostáváme funkční objekt (více nějaká učebnice C++
![Smile :)](./images/smilies/icon_smile.gif)
)
Proto úsměvy nad C++ jako jazykem, který to se závorkami nadbytečně přehání, opravdu nejsou na místě.
Napsal: 22 lis 2017, 18:00
od ZdenekHQ
Já naštěstí úsměvem nad závorkama netrpím, nakonec znám třeba Pascal či částečně php, ale na druhou stranu "céčkovský" zápis pro požadovaný asm kód taky může skončit pěkným nedorozuměním. Mám s tím zajímavý zkušenosti...
Napsal: 22 lis 2017, 18:54
od lesana87
ZdenekHQ píše:Asi dost dělají závorky, v asm se nepoužívají vůbec
Jak to, že se nepoužívají vůbec? Znáš vůbec něco jiného než 8051?
AVR:
Z80:
Kód: Vybrat vše
and A,#~((mask >> 7) + (mask << 1))
x86:
Kód: Vybrat vše
mov AX,((XRAMSA * 64) AND 0FE00h) + RAMWS
mov DL,low(KEYB + 4)
mov EDX,[TempWins + ECX * 4]
ARM:
Kód: Vybrat vše
push {R0 - R3}
ldr R0,=(1<<20)|(1<<19)|(1<<16)|(1<<7)|(1<<8)
str R0,[R2,#(AIC_SMR + (ID_SYS<<2))]