on võimalik see kood palju lühemalt ja kompaktsemalt koostada, kuid hetkel puudub teadmine kuidas kasutada Assembleris matemaatilisi funktsioone. Mõlemad programmid töötavad ja vastavad ülesande püstitusele. Programmeerimine Assembleris ei ole iseenesest keerukas, kui teada kõiki käske, siis on see nagu iga teine keelgi, küll aga on sellega tülikas keerulisi lahendusi teha. LISA: Tabel 1: Programmis kasutatavad mikrokontrolleri digitaalsisendid ja –väljundid. Joonis1. Mikrokontrolleri viikude asetus õppeplaadil.
IN0_3 Andur 1S2 - annab loogilise ühe kui silinder on väljas OUT0 jaoti juhtimine (silinder välja) OUT1 jaoti juhtimine (silinder sisse) Digitaalväljundid: FC34_OUT0 (relee väljundid) FC34_OUT1 (relee väljundid) FC34_OUT2 (transistorväljundid) FC34_OUT3 (transistorväljundid) FC34_OUT4 (transistorväljundid) FC34_OUT5 (transistorväljundid) FC34_OUT6 (transistorväljundid) FC34_OUT7 (transistorväljundid) Digitaalsisendid: FC34_IN0_0 FC34_IN0_1 FC34_IN0_2 FC34_IN0_3 FC34_IN0_4 FC34_IN0_5 FC34_IN0_6 FC34_IN0_7 FC34_IN0_7 FC34_IN1_0 (saab kasutada katkestustena) FC34_IN1_1 (saab kasutada katkestustena) FC34_IN1_2 (saab kasutada kiirloenduri sisendina) FC34_IN1_3 (saab kasutada kiirloenduri sisendina) 5 IL mälumuutujad Muutuja nimi andmetüüp kirjeldus AEG TIME sees seismise taimeri seadeväärtus
10 11 unsigned short int tabel[]={0xFA,0x88,0xF4,0xDC,0x8E,0x5E,0x7E,0xC8,0xFE,0xDE}; 12 13 int main(void) { 14 int number=0; 15 INTCON &= ~Q_taimer; // Nullitakse ületäitumise tunnus 16 TMR0 = 0; 17 int n=126, m=30; 18 // Seadistatakse taimer: PS2=1, PS1=1, PS0=1, see on sagedusjagur 1:256 19 OPTION_REG = 0b00000111; 20 21 TRISD=0; // PORTD Data Direction Register 22 TRISC &= 0b11011111; // RC5 (kollane diood) väljundiks 23 24 // AN0 analoogisisend, ülejäänud digitaalsisendid 25 ADCON1 = 0b00001110; // A/D Control Register 1 26 27 while(1){ 28 if (m==0){ 29 if (RC5) RC5=0; else RC5=1; // Vigutab plaadil kollast valgusdioodi 30 m=30; 31 } 32 if (RA3) 33 PORTD=0b01011110; //0b10101010; 34 else{ 35 if (n==0){ 36 PORTD=tabel[number]; 37 number++; 38 if (number>9) number=0; 39 n=126; 40 } 41 }
võimalus, mille abil saab ühendada suurema EEPROMi või välkmälu. 18. Reaalne kontrolleri digitaalsisend ja tema elektriskeemi näited (erinevad loogilised pingenivood, ülepingete [ESD] kaitse, jne). Ülepingete (ESD) kaitse peaks olema see diood enne maandust pildil. Võib kasutada ka kondensaatoreid, takisteid. Soovitan üle kontrollida. Sisedite kaudu saab controller väljaspoolt tööks vajaliku informatsiooni. Põhilised sisendid on digitaalsisendid (DI- digital input) olek 1 või 0 – pinge on sisendis/pinget poel sisendis. Tihtipeale on kontrolleril mõni digitaal ja analoogsisend universaalne. St digitaalsisendis võib kasutada madala pingega analogsisendina nt 0.1V. Arduinol ln high on üle 3V (5V skeemil) või üle 2V (3.3V skeemil). Sisendis kasutatatakse nt 10Kohm resistorit/takistit et vältida muutuvat/ujuvat (floating input) sisendit ning samal ajal võtab see vähe voolu, jui lüliti on kinni.
1mA Analoogsisendite ultisklemm Maks 1A 25OV AC RY24 või 3CV DC Maks 1A 125VAC Digitaalsisendid (FJOG) vot 1A 3OV DC JĮirjendloogikakäsud (RJOG) 5 mA ahela kohta Avaįttd Rollektor