PIC ట్యుటోరియల్- రిజిస్టర్ల నుండి అంతరాయాల వరకు

సమస్యలను తొలగించడానికి మా పరికరాన్ని ప్రయత్నించండి





PIC ప్రోగ్రామింగ్ యొక్క నిమిషం వివరాలను పొందడానికి ముందు, కొన్ని మంచి ప్రోగ్రామింగ్ పద్ధతులను నేర్చుకోవడం మొదట ముఖ్యం.

రిజిస్టర్లను అర్థం చేసుకోవడం

మీరు ప్రోగ్రామ్ యొక్క ఏ సమయంలోనైనా (సెమికోలన్) టైప్ చేద్దామని అనుకుందాం, ఈ సెమికోలన్ తర్వాత వచ్చేవన్నీ కంపైలర్ చేత విస్మరించబడతాయి, అయితే క్యారేజ్ తిరిగి స్థానానికి వస్తుంది.



పై లక్షణం వారు ప్రోగ్రామ్‌లో భాగం కానటువంటి వ్యాఖ్యలను లేదా వ్యాఖ్యలను జోడించడానికి అనుమతిస్తుంది, ఇంకా దాని ప్రక్కన ఉన్న వ్యాఖ్యల సహాయంతో ప్రోగ్రామ్‌ను గుర్తించడానికి మాకు వీలు కల్పిస్తుంది. ఏదైనా ఐసిని ప్రోగ్రామింగ్ చేసేటప్పుడు వ్యాఖ్యలు పెట్టడం సిఫార్సు చేయబడిన పద్ధతి.

కోర్సులో తదుపరి ముఖ్యమైన విషయం ఏమిటంటే వివిధ స్థిరాంకాలకు పేర్లను కేటాయించడం (మీరు వాటిని తరువాత విస్తృతంగా నేర్చుకుంటారు). చేర్చబడిన సంఖ్యలతో గందరగోళానికి గురికాకుండా, ఏమి వ్రాయబడిందో లేదా పాల్గొన్న విలువలకు సంబంధించి అర్థం చేసుకోవడం ఈ అసో సులభం చేస్తుంది.



పైన పేర్కొన్నవి తక్షణ గుర్తింపు కోసం వాస్తవ పేర్ల రూపంలో చేయాలి, ఉదాహరణకు COUNT, ఇక్కడ అన్ని పెద్ద అక్షరాలు విభిన్నంగా ఉండటానికి ఉపయోగించబడుతున్నాయని గమనించడం ముఖ్యం మరియు ఇది స్థిరమైన విలువ అని కూడా సూచిస్తుంది.


మనం చూడగలిగినట్లుగా, పైన పేర్కొన్నది సెమికోలన్లతో చేసిన పెట్టె రూపంలో జరుగుతుంది, ఇది శుభ్రంగా కనిపిస్తుంది. అదనంగా ప్రోగ్రామ్‌ను కాగితంపై డాక్యుమెంట్ చేయడానికి ప్రయత్నించండి, ఈ అభ్యాసం విషయాలను దశల వారీగా అర్థం చేసుకోవడానికి సహాయపడుతుంది.

2. రిజిస్టర్లు.

PIC లోని రిజిస్టర్ అనేది వ్రాతపూర్వక వివరాలను అంగీకరించే ప్రాంతం మరియు దాని నుండి చదవడానికి అనుమతిస్తుంది. మీరు దానిని కాగితపు షీట్‌తో పోల్చవచ్చు, అక్కడ మీరు విషయాలను దృశ్యమానం చేయవచ్చు మరియు దానిపై వ్రాయడం ద్వారా జోడించవచ్చు.

క్రింద ఉన్న బొమ్మ PIC16F84 లో పొందుపరిచిన ఒక సాధారణ రిజిస్టర్ ఫైల్ మ్యాప్‌ను వర్ణిస్తుంది. ఫార్మాట్ వాస్తవానికి PIC లోపల సెట్ చేయబడినది కాదు, ఇది చిప్ లోపల బిట్స్ ఎలా అమర్చబడిందో సూచించడానికి మరియు ప్రమేయం ఉన్న కొన్ని ఆదేశాలను అర్థం చేసుకోవడానికి.

ఇది ప్రాథమికంగా బ్యాంక్ 0 మరియు బ్యాంక్ 1 గా విభజించబడిందని మీరు చూడవచ్చు. PIC యొక్క వాస్తవ పనిని నియంత్రించడానికి బ్యాంక్ 1 బాధ్యత వహిస్తుంది, ఉదాహరణకు, PIC కి పోర్ట్ A వద్ద బిట్స్ ఇన్‌పుట్‌లుగా కేటాయించబడతాయి మరియు అవి అవుట్‌పుట్‌లుగా ఉంటాయి.

బ్యాంక్ 2 కేవలం సమాచారాన్ని మార్చటానికి మాత్రమే.

ఈ క్రింది ఉదాహరణ ద్వారా దీనిని అర్థం చేసుకుందాం:

పోర్ట్‌ఏ హై వద్ద ఒక బిట్‌ను కేటాయించాలని అనుకుందాం. దీని కోసం మనం మొదట అవుట్పుట్ రూపంలో పోర్ట్ A వద్ద పేర్కొన్న బిట్ లేదా పిన్ను సెట్ చేయడానికి బ్యాంక్ 1 కి వెళ్ళాలి. దీని తరువాత మేము బ్యాంక్ 0 కి తిరిగి వచ్చి లాజిక్ 1 (బిట్ 1) ను నిర్దిష్ట పిన్‌కు బట్వాడా చేస్తాము.

బ్యాంక్ 1 లో మనం ఉపయోగించాలనుకునే అత్యంత సాధారణ రిజిస్టర్లు STATUS, TRISA మరియు TRISB.

బ్యాంక్ 0 కి తిరిగి రావడానికి STATUS మాకు సహాయపడుతుంది, పోర్ట్ A లోని ఏ పిన్స్ అవుట్‌పుట్‌లు మరియు అవి ఇన్‌పుట్‌లు కావచ్చు అని ఎంచుకోవడానికి TRISA మాకు అనుమతి ఇస్తుంది, అయితే TRISB పోర్ట్ B వద్ద అవుట్పుట్ మరియు ఇన్‌పుట్ పిన్‌ల మధ్య ఎంచుకోవడానికి వీలు కల్పిస్తుంది. BANK 0 లోని SELECT రిజిస్టర్ వినియోగదారుని అనుమతిస్తుంది బ్యాంక్ 1 కు తిప్పడానికి.

కింది వివరణతో మొత్తం భావనను సంగ్రహించండి:

స్థితి:

బ్యాంక్ 0 నుండి బ్యాంక్ 1 కి మారడానికి మేము STATUS రిజిస్టర్‌ను ఆదేశిస్తాము. STATUS రిజిస్టర్ యొక్క బిట్ # 5 ని 1 కి సెట్ చేయడం ద్వారా ఇది అమలు చేయబడుతుంది. బ్యాంక్ 0 కి తిరిగి రావడానికి, మేము STATUS రిజిస్టర్ యొక్క బిట్ 5 ని 0 కి కేటాయిస్తాము. STATUS రిజిస్టర్ చిరునామా 03h వద్ద ఉంచబడింది, ఇక్కడ h సంఖ్యను సూచిస్తుంది హెక్సాడెసిమల్‌లో ఉండవచ్చు.

TRISA మరియు TRISB:

ఇవి చిరునామా 85 హెచ్ మరియు 86 హెచ్ వద్ద ఉంటాయి. పిన్ను అవుట్పుట్ లేదా ఇన్పుట్గా ప్రోగ్రామింగ్ చేయడానికి, మేము రిజిస్టర్లోని నిర్దిష్ట బిట్కు సున్నా లేదా ఒకదాన్ని పంపిణీ చేస్తాము. ఇప్పుడు ఇది బైనరీ లేదా హెక్స్ ద్వారా రెండు విధాలుగా చేయవచ్చు. ఒకవేళ అతను లేదా ఆమె విలువలను అమలు చేయడానికి శాస్త్రీయ కాలిక్యులేటర్ కోసం వెళ్ళే పరామితిని మార్చలేకపోతే.

ఇప్పుడు మనకు పోర్ట్ A వద్ద 5 పిన్స్ ఉన్నాయి, ఇది 5 పిన్‌లకు అనుగుణంగా ఉంటుంది. పిన్స్‌లో ఒకదాన్ని ఇన్‌పుట్‌లుగా పరిష్కరించాలని మేము భావిస్తే, మేము నిర్దిష్ట బిట్‌కు “1” ను పంపిణీ చేస్తాము.

ఒకవేళ మేము పిన్‌లలో ఒకదాన్ని అవుట్‌పుట్‌లుగా కేటాయించాలనుకుంటే, మేము నిర్దిష్ట పిన్‌ను “0” కు సెట్ చేస్తాము. బిట్స్ బిట్లకు అనుగుణమైన ఖచ్చితమైనవి, లేదా మరింత ఖచ్చితమైన బిట్ 0 RA0, బిట్ 1 RA1, బిట్ 2 = RA2 మరియు మొదలగునవి. దీన్ని ఈ విధంగా అర్థం చేసుకుందాం:

మీరు RA0, RA3 మరియు RA4 లను అవుట్‌పుట్‌లుగా పరిష్కరించాలని అనుకుందాం, RA1 / RA2 i / ps గా, మీరు 00110 (06h) పంపడం ద్వారా దీన్ని చేస్తారు. ఇక్కడ సూచించినట్లు బిట్ 0 కుడి వైపున ఉందని చూడండి:

పోర్ట్ A పిన్ RA4 RA3 RA2 RA1 RA1 RA0

బిట్ సంఖ్య 4 3 2 1 0

బైనరీ 0 0 1 1 0

TRISB కి కూడా అదే జరుగుతుంది.

PORTA మరియు PORTB

అవుట్పుట్ పిన్స్‌లో ఒకదాన్ని అధికంగా మళ్ళించడానికి, మేము మా PORTA లేదా PORTB రిజిస్టర్‌లో సంబంధిత బిట్‌కు “1” ని అందిస్తున్నాము. TRISA మరియు TRISB రిజిస్టర్‌ల కోసం కూడా ఒకే విధమైన విధానాన్ని అనుసరించవచ్చు. మన మొదటి ఉదాహరణ కోడింగ్‌లోకి వెళ్లేముందు, మరిన్ని రిజిస్టర్‌ల కూపేని అర్థం చేసుకుందాం, అంటే: w మరియు f.

W మరియు F.

W రిజిస్టర్ అనేది ఒక సాధారణ రిజిస్టర్, ఇది మీకు నచ్చిన విలువను కేటాయించటానికి మిమ్మల్ని అనుమతిస్తుంది. మీరు W కి ఒక పరిమాణాన్ని కేటాయించిన వెంటనే, మీరు దీన్ని మరొక విలువకు జోడించడం ద్వారా కొనసాగవచ్చు లేదా దానిని తరలించవచ్చు. కేటాయించిన మరొక విలువతో, వివరాలు W లో తిరిగి వ్రాయబడతాయి.

ఎఫ్ రిజిస్టర్ దాని వ్రాతపూర్వక విషయాన్ని రిజిస్టర్‌కు పంపుతుంది. ఈ ఎఫ్ రిజిస్టర్ ఒక రిజిస్టర్‌పై విలువను కేటాయించాల్సిన అవసరం ఉంది, ఇది STATUS లేదా TRISA రిజిస్టర్‌లపై ఉండవచ్చు, ఎందుకంటే విలువలను వాటిపై నేరుగా ఉంచడానికి ఇవి అనుమతించవు. ఒక ఉదాహరణ కార్యక్రమం

కింది ఉదాహరణ కోడ్‌ను పరిశీలిద్దాం, ఇది పై సూచన ఎలా అమలు చేయబడిందో మాకు చూపుతుంది మరియు కోర్సులోని కొన్ని సూచనలను కూడా చూస్తుంది.

పైన చర్చించిన విధంగా పోర్ట్ A ని పరిష్కరించడం ద్వారా ప్రారంభిద్దాం.

దీని కోసం మేము బ్యాంక్ 0 నుండి బ్యాంక్ 1 కి మారాలి, చిరునామా 03 హెచ్, బిట్ 5 నుండి 1 వరకు ఉన్న STATUS రిజిస్టర్‌ను ఏర్పాటు చేయడం ద్వారా ఇది జరుగుతుంది.

బిఎస్ఎఫ్ 03 హెచ్, 5

బిఎస్ఎఫ్ అంటే బిట్ సెట్ ఎఫ్. ఈ సూచనల తరువాత మేము రెండు సంఖ్యలను ఉపయోగిస్తున్నాము - 03 హెచ్, ఇది STATUS రిజిస్టర్ చిరునామా, మరియు బిట్ నంబర్‌కు అనుగుణంగా ఉండే సంఖ్య 5.

కాబట్టి, మనం చెబుతున్నది “03h నుండి 1 చిరునామాలో బిట్ 5 ని సెట్ చేయండి”.

మేము ఇప్పుడు బ్యాంక్ 1 లో ఉన్నాము.

MOVLW 00110 బి

మేము బైనరీ విలువ 00110 ను (బి అనే అక్షరం అంటే బైనరీలో ఉంది) మా సాధారణ ప్రయోజన రిజిస్టర్ W లో పెడుతున్నాము. నేను దీన్ని హెక్స్‌లో చేయగలిగాను, ఈ సందర్భంలో మా సూచన ఇలా ఉంటుంది:

MOVLW 06 క

గాని పనిచేస్తుంది. MOVLW అంటే ‘సాహిత్య విలువను W లోకి తరలించండి’, అంటే ఆంగ్లంలో అంటే నేరుగా అనుసరించే విలువను W రిజిస్టర్‌లో ఉంచండి.

పోర్టును సెటప్ చేయడానికి ఇప్పుడు మేము ఈ విలువను మా TRISA రిజిస్టర్‌లో ఉంచాలి:

MOVWF 85 క

ఈ సూచన 'W యొక్క విషయాలను అనుసరించే రిజిస్టర్ చిరునామాకు తరలించు' అని సూచిస్తుంది, ఈ సందర్భంలో చిరునామా TRISA ని సూచిస్తుంది.

ఈ సమయంలో మా TRISA రిజిస్టర్ 00110 సంఖ్యను కలిగి ఉంది లేదా గ్రాఫికల్‌గా సమర్పించబడింది:

పోర్ట్ A పిన్ RA4 RA3 RA2 RA1 RA1 RA0

బైనరీ 0 0 1 1 0

ఇన్పుట్ / అవుట్పుట్ O O I I O.

కాబట్టి ఇప్పుడు మన పోర్ట్ ఎ పిన్స్ ఉన్నాయి, సమాచారంలో ఒకదాన్ని సర్దుబాటు చేయడానికి మేము బ్యాంక్ 0 కి తిరిగి రావాలి.

బిసిఎఫ్ 03 హెచ్, 5

ఈ సూచన BSF యొక్క రివర్స్ ను సాధిస్తుంది. ఇది “బిట్ క్లియర్ ఎఫ్” ను సూచిస్తుంది. ఒక జత సంఖ్యలు రిజిస్టర్ యొక్క చిరునామా, ఇక్కడ STATUS రిజిస్టర్, అలాగే బిట్ ఫిగర్, ఈ సందర్భంలో బిట్ ఫైవ్. ప్రస్తుతం మనం సరిగ్గా పూర్తి చేసినది ఏమిటంటే, బిట్ ఫైవ్ మాపై నిర్వచించబడింది

STATUS 0 కి నమోదు చేయండి

మేము ఈ సమయంలో బ్యాంక్ 0 లో తిరిగి వచ్చాము.
కిందిది ఒకే బ్లాక్‌లోని కోడ్:

బిఎస్ఎఫ్ 03 హెచ్, 5 బ్యాంక్ 1 కి వెళ్ళండి
MOVLW 06h 00110 ను W లోకి ఉంచండి
MOVWF 85h 00110 ను TRISA లోకి తరలించండి
బిసిఎఫ్ 03 హెచ్, 5 బ్యాంక్ 0 కి తిరిగి రండి

చివరి సూచనలో, PIC లో IO పోర్ట్ పిన్‌లను ఇన్‌పుట్ లేదా అవుట్‌పుట్‌గా ఏర్పాటు చేసే మార్గాన్ని మేము మీకు ధృవీకరించాము.

ఈ కోర్సు ద్వారా, పోర్టులకు డేటాను పంపడానికి నేను మీకు సహాయం చేస్తాను.

పోర్టులకు డేటా పంపుతోంది

తరువాతి ట్యుటోరియల్‌లో, పూర్తి ప్రోగ్రామ్ వివరాలు మరియు సూటిగా సర్క్యూట్ రేఖాచిత్రాన్ని కలిగి ఉన్న ఎల్‌ఈడీని ఆన్ మరియు ఆఫ్ చేయడం ద్వారా మేము పూర్తి చేయబోతున్నాము, తద్వారా పిఐసి మేము what హించినదానిని ఖచ్చితంగా ప్రదర్శించడాన్ని మీరు చూడవచ్చు.

దిగువ ఫలితాలతో మీ PIC ని కలిపి ప్రోగ్రామ్ చేయడానికి ప్రయత్నించవద్దు, ఎందుకంటే అవి దృష్టాంతాలు మాత్రమే. ప్రారంభంలో, మేము పోర్ట్ ఎ బిట్ 2 ను అవుట్‌పుట్‌గా ఏర్పాటు చేస్తాము:

ఇది మునుపటి సూచనల నుండి గుర్తించబడుతుంది. ఏకైక వ్యత్యాసం కావచ్చు, త్రి-రాష్ట్ర రిజిస్టర్‌కు 0 గం బట్వాడా చేయడం ద్వారా మేము A లోని ప్రతి పిన్‌లను అవుట్‌పుట్‌గా పరిష్కరించాము. కాబట్టి ఇప్పుడు అతను చేయవలసింది ఎల్‌ఈడీని ఆన్ చేయడం.

పిన్‌లలో ఒకదాన్ని (దానితో అనుసంధానించబడిన LED ఉన్నది) అధికంగా షెడ్యూల్ చేయడం ద్వారా మేము దీనిని సాధిస్తాము. భిన్నంగా చెప్పాలంటే, మేము పిన్‌కు ‘1’ వర్తింపజేస్తాము. ఇది ఖచ్చితంగా ఎలా నిర్వహించబడుతుందో (ప్రతి పంక్తికి స్పష్టత కోసం వ్యాఖ్యలను గమనించండి):

అందువల్ల, ఇప్పుడు మేము సాధించినది LED ని ఒక సారి ఆపివేయడం. ఎల్‌ఈడీ నిరంతరం స్విచ్ ఆఫ్ కావాలని మేము కోరుకుంటున్నాము.

ప్రారంభానికి తిరిగి రావడానికి ప్రోగ్రామ్‌ను పొందడం ద్వారా మేము దీనిని సాధిస్తాము. ప్రారంభంలో మా ప్రోగ్రామ్ ప్రారంభంలో ఒక ట్యాగ్‌ను ఏర్పాటు చేయడం ద్వారా మేము దీనిని సాధిస్తాము, ఆ తర్వాత అక్కడకు తిరిగి వెళ్లమని ప్రోగ్రామ్‌కు తెలియజేస్తాము. మేము ట్యాగ్‌ను చాలా సూటిగా పేర్కొంటాము.

మేము ఒక పదం లో కీ, START చెప్పండి, తరువాత కోడ్ టైప్ చేయండి:

ప్రదర్శించినట్లుగా, మేము ప్రారంభంలో ‘ప్రారంభంలో’ అనే వ్యక్తీకరణను ప్రోగ్రామ్ ప్రారంభంలోనే ప్రస్తావించాము.

తరువాత, కార్యక్రమం ముగింపులో మేము ‘గోటో స్టార్ట్’ గురించి స్పష్టంగా చెప్పాము. ‘గోటో’ సూచన అది ప్రకటించినట్లే చేస్తుంది.

మేము సర్క్యూట్‌ను శక్తివంతం చేసినప్పుడల్లా ఈ ప్రోగ్రామ్ ఎల్‌ఈడీని ఆన్ మరియు ఆఫ్ చేస్తుంది, మేము విద్యుత్తును తీసివేసిన తర్వాత ఆపివేయబడుతుంది. మన ప్రోగ్రామ్‌ను మరోసారి తనిఖీ చేయాల్సి ఉంటుంది:

ఖచ్చితంగా మేము వ్యాఖ్యలను వదిలివేసాము, అయినప్పటికీ మేము సూచనలను మరియు సంఖ్యలను గమనించవచ్చు.

మీరు ప్రోగ్రామ్‌ను ట్రబుల్షూట్ చేయడానికి ప్రయత్నించినప్పుడు మరియు కోడ్ వ్రాసేటప్పుడు మీరు చిరునామాలను గుర్తుంచుకునేటప్పుడు ఇది కొంచెం అస్పష్టంగా ఉంటుంది.

వ్యాఖ్యలను ఉంచినప్పటికీ, అది కొంచెం చిందరవందరగా మారవచ్చు. దీనికి సంఖ్యలను పేరు పెట్టడం అవసరం మరియు అదనపు సూచనల ద్వారా సాధించవచ్చు: 'ఈక్' కొన్ని అంశాలు మరొక అంశానికి సమానంగా ఉండవచ్చని 'ఈక్' సూచన సూచిస్తుంది.

ఇది సమీకరించేవారికి కాకుండా పిఐసికి సూచన కాకపోవచ్చు. ఈ సూచన రిజిస్టర్ చిరునామా స్థానానికి లేదా ప్రోగ్రామింగ్ పదానికి స్థిరంగా పేరు పెట్టడానికి వీలు కల్పిస్తుంది.

మేము మా ప్రోగ్రామ్ కోసం కొన్ని స్థిరాంకాలను ఏర్పాటు చేస్తాము మరియు అది ప్రోగ్రామ్‌ను ఎంత సూటిగా చదువుతుందో కూడా సాక్ష్యమిస్తుంది.

ఇప్పటి నుండి మేము స్థిరమైన విలువలను మా ప్రోగ్రామ్‌లో అమర్చడం ద్వారా పరిష్కరించవచ్చు. స్థిరమైన విలువలు వాటిని ఉపయోగించే ముందు నియమించాల్సిన అవసరం ఉంది.

అందువల్ల వాటిని ప్రోగ్రామ్ ప్రారంభంలో ఎల్లప్పుడూ ఉంచేలా చూసుకోండి. మునుపటి లేబులింగ్‌ను సరికొత్తదానితో పోల్చడానికి, వ్యాఖ్యలను మినహాయించి ప్రోగ్రామ్‌ను మరోసారి తిరిగి వ్రాస్తాము.

ప్రోగ్రామ్ యొక్క స్థిరాంకాలు కొంచెం తేలికగా అర్థం చేసుకోగలవని మీరు గమనించవచ్చు, అయినప్పటికీ మేము ఇంకా వ్యాఖ్యలు లేకుండా ఉన్నాము, చింతించాల్సిన అవసరం లేదు, ఎందుకంటే మేము ఇంకా పూర్తి కాలేదు.

మా మెరుస్తున్న LED ప్రోగ్రామ్ యొక్క చిన్న ఇబ్బంది ఉండవచ్చు.
ప్రతి సూచనను పూర్తి చేయడానికి 1 గడియార క్రమం అవసరం. ఒకవేళ మేము 4MHz క్రిస్టల్‌ను ఉపయోగిస్తుంటే, ప్రతి సూచన 1 / 4MHz లేదా 1uS పూర్తి కావాలి.

మేము కేవలం ఐదు సూచనలను ఉపయోగిస్తున్నందున, LED 5uS లో సక్రియం అవుతుంది. చేసారో గమనించడానికి ఇది చాలా వేగంగా ఉంటుంది, అదనంగా, LED పూర్తిగా ఆన్‌లో ఉన్నట్లు అనిపిస్తుంది.

ఎల్‌ఈడీని ఆన్ చేయడం మరియు ఎల్‌ఈడీని ఆపివేయడం మధ్య ఒక నిరోధాన్ని ఉత్పత్తి చేయడమే మనం సాధించాలి. నిరోధం యొక్క సిద్ధాంతం ఏమిటంటే, మనం మునుపటి పరిమాణం నుండి లెక్కించాము, కనుక ఇది సున్నాకి చేరుకున్నప్పుడు, మేము లెక్కింపును వదిలివేస్తాము.

సున్నా విలువ ఆలస్యం యొక్క ముగింపును సూచిస్తుంది మరియు మేము ప్రోగ్రామ్ అంతటా మా ప్రక్రియను కొనసాగిస్తాము. అందువల్ల, మొదట మనం చేయవలసింది మన కౌంటర్గా ఉపయోగించుకోవటానికి స్థిరంగా నిర్ణయించడం.

ఈ స్థిరమైన COUNT ని పదం చేద్దాం. ఆ తరువాత, సంఖ్యను లెక్కించడం ఎంత ముఖ్యమైనదో మనం నిర్ణయించాలి. ఖచ్చితంగా, మనం చేర్చగలిగే అతిపెద్ద వ్యక్తి 255, లేదా హెక్స్‌లో ఎఫ్‌ఎఫ్హెచ్., నేను మునుపటి ట్యుటోరియల్‌లో మాట్లాడినట్లుగా, ఈక్ ఇన్స్ట్రక్షన్ ఒక రిజిస్టర్ పరిస్థితికి వ్యక్తీకరణను కేటాయిస్తుంది.

ఇది మన COUNT ని ఎంత పరిమాణంలో కేటాయించినా, అది రిజిస్టర్ యొక్క వస్తువులతో సరిపోలుతుందని ఇది సూచిస్తుంది. ఒకవేళ మనం FFh విలువను నిర్ణయించడానికి ప్రయత్నిస్తే, మేము ప్రోగ్రామ్‌ను కంపైల్ చేసిన తర్వాత పొరపాటు జరగబోతున్నాం.

FFh స్థానం ఉండటానికి కారణం, అందువల్ల మేము దీనికి ప్రాప్యత పొందలేము. అందువల్ల, మనం నిజమైన సంఖ్యను ఎలా నియమించాలి? ఖచ్చితంగా, దీనికి తక్కువ మొత్తంలో పార్శ్వ ఆలోచన అవసరం.

ఉదాహరణకు, మేము మా COUNT ను 08h చిరునామాకు నియమిస్తే, ఇది ప్రాథమిక లక్ష్యం రిజిస్టర్ గమ్యాన్ని సూచిస్తుంది. అప్రమేయంగా, తాకబడని ప్రాంతాలు FFh కు సెట్ చేయబడతాయి. పర్యవసానంగా, COUNT 08h కు దారితీస్తే, మేము మొదట శక్తినిచ్చేటప్పుడు మీరు FFh విలువను ఎదుర్కొంటారు. అయినప్పటికీ, నేను మీరు, COUNT ని మరొక నంబర్‌కు ఎలా పరిష్కరించగలం ?, మేము వర్తించేది మొదట ఈ గమ్యస్థానానికి ఒక విలువను ‘తరలించు’.

ఒక దృష్టాంతంగా, COUNT 85h విలువను కలిగి ఉండాలని మేము కోరుకున్నామని అనుకుందాం, COUNT ఈక్ 85h గురించి చెప్పలేము, ఎందుకంటే ఇది పోర్ట్ A కోసం ట్రై-స్టేట్ రిజిస్టర్ యొక్క స్థానం. ఖచ్చితంగా మనం సాధించేది ఈ క్రిందివి: movlw 85h మొదటి పుట్ W రిజిస్టర్ movwf 08h లో 85h విలువ

ఇప్పుడు దానిని మా 08 హెచ్ రిజిస్టర్‌కు తరలించండి. తదనంతరం, మేము COUNT ఈక్ 08h ను వ్యక్తపరిస్తే, COUNT విలువ 85h తో సరిపోతుంది. సున్నితమైనది, కాదా! కాబట్టి, ప్రారంభంలో మన స్థిరాంకాన్ని నిర్ణయిస్తాము: COUNT ఈక్ 08h తరువాత ఈ COUNT ను సున్నా అయ్యే వరకు మనం ఒక్కొక్కటిగా తగ్గించాలి.

‘గోటో’ మరియు ట్యాగ్‌ను ఉపయోగించడం ద్వారా మన కోసం దీనిని నెరవేర్చడానికి రూపొందించిన ఒక సూచన ఉంది.

మేము దరఖాస్తు చేయబోయే సూచన: DECFSZ COUNT, 1 ఈ సూచన కామాను ట్రాక్ చేసే సంఖ్య ద్వారా ‘రిజిస్టర్‌ను తగ్గించండి (ఇక్కడ ఇది COUNT). మేము సున్నా సాధిస్తే, రెండు మచ్చలు ముందుకు సాగండి. ’దాన్ని మన కోర్సులో ఉంచడానికి ముందు, దాన్ని మొదట చర్యలో ఉంచుదాం.

మేము ప్రదర్శించినది మొదట్లో మా స్థిరమైన COUNT ని 255 కు స్థాపించడం. తరువాతి విభాగం మా decfsz సూచనలకు దగ్గరగా LABEL అని పిలువబడే ట్యాగ్‌ను ఉంచుతుంది.

Decfsz COUNT, 1 COUNT విలువను ఒక్కొక్కటిగా తగ్గిస్తుంది మరియు తుది ఫలితాన్ని నేరుగా COUNT లోకి ఉంచుతుంది. COUNT 0 విలువను కలిగి ఉందో లేదో తనిఖీ చేస్తుంది.

అది కాకపోతే, ఆ సందర్భంలో ప్రోగ్రామ్‌ను తదుపరి పంక్తికి మార్చడానికి ప్రేరేపిస్తుంది. ఇప్పుడు మనకు ‘గోటో’ డిక్లరేషన్ ఉంది, అది మన డెక్ఫ్స్జ్ బోధనకు తిరిగి అందిస్తుంది.

ఒకవేళ COUNT యొక్క విలువ సమానంగా పనిచేస్తే, అప్పుడు డెక్ఫ్స్జ్ ఇన్స్ట్రక్షన్ మా ప్రోగ్రామ్‌లో 2 మచ్చలు ముందుకు దూసుకెళ్తుంది, మరియు మేము ‘ఇక్కడకు తీసుకెళ్లండి’ అని పేర్కొన్న చోటికి పంపబడుతుంది.

అందువల్ల, మీరు గమనించగలిగినందున, కొనసాగడానికి ముందు ముందుగా నిర్ణయించిన సమయానికి ఒకే చోట కూర్చునే కార్యక్రమాన్ని మేము తీసుకువచ్చాము. దీనికి ఆలస్యం లూప్ అని పేరు పెట్టవచ్చు.

ఆలస్యం ఉచ్చులను అర్థం చేసుకోవడం

ఒకవేళ మనకు మరింత గణనీయమైన ఆలస్యం అవసరమైతే, మేము తరువాతి నాటికి ఒక లూప్‌ను కొనసాగించవచ్చు. అదనపు ఉచ్చులు, ఆలస్యాన్ని పొడిగించాయి. మేము LED ఫ్లాష్‌ను గమనించాలనుకుంటున్నామని అనుకుంటూ కనీసం రెండు అయినా చేద్దాం .. మేము ఈ ఆలస్యం ఉచ్చులను మా ప్రోగ్రామ్‌లో ఉంచుతాము మరియు వ్యాఖ్యలను ప్రవేశపెట్టడం ద్వారా నిజమైన ప్రోగ్రామ్‌ను అందించడం ద్వారా సాధించాము:

ఈ ప్రోగ్రామ్‌ను పిఐసి ఏ ప్రోగ్రామ్ తర్వాత కంపైల్ చేయడం సాధ్యపడుతుంది. సహజంగానే, సర్క్యూట్ నిజంగా పనిచేస్తుందో లేదో తనిఖీ చేయడానికి మీరు ప్రయత్నిస్తారని నిర్ధారించుకోండి. కిందిది మీరు PIC ని ప్రోగ్రామ్ చేసిన వెంటనే మీరు నిర్మించాల్సిన సర్క్యూట్ రేఖాచిత్రం.


బాగా చేసారు, మీరు నిజంగా మీ మొదటి PIC ప్రోగ్రామ్‌ను కంపోజ్ చేసి, అలాగే LED ని ఆన్ మరియు ఆఫ్ చేయడానికి ఒక సర్క్యూట్‌ను నిర్మించారు. ఇప్పటి వరకు, మీరు ఈ కోర్సులను ప్రారంభించినట్లయితే, మీరు 35 లో ఏడు బోధనలను నేర్చుకుంటారు, కాని సందేహం లేకుండా ఇప్పటివరకు మీరు I / O పోర్టులను నియంత్రిస్తున్నారు!

LED ఫ్లాష్‌ను వేగంగా అందించడానికి మీరు ఆలస్యం లూప్‌లను మార్చడానికి ప్రయత్నిస్తారా - LED ఫ్లాష్‌ను చూడటానికి COUNT యొక్క కనీస విలువ ఏది కనిపిస్తుంది? లేదా, LED ని స్థిరీకరించడానికి మీరు ప్రారంభించిన తర్వాత 3 వ లేదా అనుబంధ ఆలస్యం ఉచ్చులను చేర్చాలనుకుంటున్నారు. ప్రతి ఆలస్యం లూప్‌కు ప్రత్యేకమైన స్థిరాంకం.

ఎల్‌ఈడీ ఫ్లాష్‌ను నిర్దిష్ట వేగంతో అందించడానికి మీరు మీ ఆలస్యం లూప్‌లతో ఫిడేల్ చేయవచ్చు, ఉదాహరణకు సెకను తర్వాత. ప్రోగ్రామ్ కాంపాక్ట్ మరియు బేసిక్‌ను నిర్వహించడానికి సబ్‌ట్రౌటిన్ అని పిలువబడే దాన్ని ఎలా ఉపయోగించుకోగలుగుతున్నామో తదుపరి బోధనలో చూద్దాం. సబ్‌ట్రౌటిన్ అనేది కోడ్ లేదా ప్రోగ్రామ్‌లో అంతర్భాగం, దీనిని సూచించవచ్చు మరియు మీకు అవసరమైనప్పుడు. మీరు తరచూ ఒకే విధమైన పనితీరును సాధిస్తున్న సందర్భాల్లో సబ్‌ట్రౌటిన్‌లను ఉపయోగిస్తారు.

సబ్‌ట్రౌటిన్‌లు అంటే ఏమిటి

సబ్‌ట్రౌటిన్‌ను ఉపయోగించడం వల్ల కలిగే ప్రయోజనాలు ఏమిటంటే, మీ ప్రోగ్రామ్ ద్వారా పది రెట్లు బదులుగా సబ్‌ట్రౌటిన్ లోపల విలువను సవరించడం చాలా సరళంగా ఉంటుంది, అదే విధంగా మీ ప్రోగ్రామ్ లోపల వినియోగించే మెమరీ స్థాయిని తగ్గించడానికి ఇది ఎంతో దోహదం చేస్తుంది. పిఐసి. మేము ఒక సబ్‌ట్రౌటిన్‌ను తనిఖీ చేస్తాము:

ప్రారంభంలో, మేము మా సబ్‌ట్రౌటిన్‌కు ఒక హోదాను అందించాలి మరియు ఈ పరిస్థితిలో మేము ROUTINE ని ఎంచుకున్నాము. ఆ తర్వాత మేము మామూలుగా నిర్వహించాలనుకుంటున్న కోడ్‌ను టైప్ చేస్తాము. అందుకే, మా ఫ్లాషింగ్ లీడ్ ప్రోగ్రామ్‌లో ఆలస్యాన్ని ఎంచుకున్నాము. చివరగా, రిటర్న్ ఇన్స్ట్రక్షన్ కీ చేయడం ద్వారా మేము సబ్‌ట్రౌటిన్‌ను ముగించాము.

మా ప్రోగ్రామ్‌లో ఎక్కడి నుండైనా సబ్‌ట్రౌటిన్‌ను ప్రారంభించడానికి, మేము త్వరగా కాల్ ఇన్స్ట్రక్షన్ టైప్ చేసి, ఆపై సబ్‌ట్రౌటిన్ హోదాను టైప్ చేస్తాము.

మేము దీన్ని కొంచెం లోతుగా పరిశీలిస్తాము. మా ప్రోగ్రామ్ యొక్క విభాగానికి ఒకసారి xxx అని పిలుస్తాము, దీనిలో xxx అనేది మా సబ్‌ట్రౌటిన్ పేరు, ప్రోగ్రామ్ సబ్‌ట్రౌటిన్ xxx ఇన్‌స్టాల్ చేయబడిన ఎక్కడైనా దూకుతుంది. సబ్‌ట్రౌటిన్ లోపల సూచనలు నిర్వహిస్తారు.

రిటర్న్ ఇన్స్ట్రక్షన్ పూర్తయినప్పుడల్లా, ప్రోగ్రామ్ మా ప్రిన్సిపాల్ ప్రోగ్రామ్‌కు మా కాల్ xxx ఇన్స్ట్రక్షన్ తరువాత సూచనలకు తిరిగి వస్తుంది.

మీరు కోరుకున్నట్లుగా ఇలాంటి సబ్‌ట్రౌటిన్‌ను అనేకసార్లు పిలవడం సాధ్యమవుతుంది, ఇది సబ్‌ట్రౌటిన్‌లను ఉపయోగించడం మా ప్రోగ్రామ్ యొక్క సాధారణ వ్యవధిని ఎందుకు తగ్గిస్తుందో వివరిస్తుంది.

అయినప్పటికీ, మీరు తెలుసుకోవలసిన కొన్ని అంశాలు ఉన్నాయి. ప్రారంభంలో, మా ప్రిన్సిపాల్ ప్రోగ్రామ్ మాదిరిగానే, ఏదైనా నిర్దిష్ట స్థిరాంకాలు మీరు వాటిని ఉపయోగించే ముందు గుర్తించాల్సిన అవసరం ఉంది.

ఇవి సబ్‌ట్రౌటిన్‌లోనే లేదా ప్రధాన కార్యక్రమం ప్రారంభంలోనే గుర్తించబడవచ్చు. మీ ప్రధాన కార్యక్రమం ప్రారంభంలో మీరు ప్రతిదీ గుర్తించాలని నేను మీకు ప్రతిపాదించాను, అప్పటి నుండి విషయాలు ఒకే స్థితిలో ఉన్నాయని మీరు గుర్తించారు. తరువాత, ప్రధాన ప్రోగ్రామ్ సబ్‌ట్రౌటిన్‌పై దాటకుండా చూసుకోవాలి.

దీనితో నేను సూచించేది ఏమిటంటే, మీరు మీ ప్రాధమిక ప్రోగ్రామ్ ముగింపులో నేరుగా సబ్‌ట్రౌటిన్‌ను ఉంచాలి, సబ్‌ట్రౌటిన్ ఉన్న చోట నుండి దూకడానికి మీరు 'గోటో' డిక్లరేషన్‌ను ఉపయోగించుకుంటే తప్ప, ప్రోగ్రామ్ మీరు కొనసాగుతుందా లేదా సబ్‌ట్రౌటిన్‌ను అమలు చేస్తుంది. దీనికి లేదా అవసరం.

PIC ఒక సబ్‌ట్రౌటిన్ మరియు ప్రధాన కార్యక్రమం మధ్య తేడాను గుర్తించదు. మేము మా ఫ్లాషింగ్ లీడ్ ప్రోగ్రామ్‌ను తనిఖీ చేస్తాము, అయితే ఈసారి ఆలస్యం లూప్ కోసం సబ్‌ట్రౌటిన్‌ను ఉపయోగించబోతున్నాం. ఆదర్శవంతంగా, ప్రోగ్రామ్ ఎంత తక్కువ సంక్లిష్టంగా కనిపిస్తుందో మీరు కనుగొంటారు, అలాగే సబ్‌ట్రౌటిన్ ఆచరణాత్మకంగా ఎలా వర్తిస్తుందో మీరు కనుగొనవచ్చు.

చివరికి, మా ఆలస్యం లూప్ కోసం సబ్‌ట్రౌటిన్‌ను ఉపయోగించడం ద్వారా, మేము ప్రోగ్రామ్ యొక్క కొలతలు తగ్గించాము.

మేము ఆలస్యం కోరుకునే ప్రతిసారీ, బహుశా LED ఆన్ లేదా ఆఫ్‌లో ఉన్నప్పుడు, మేము ప్రాథమికంగా ఆలస్యాన్ని సబ్‌ట్రౌటిన్ అని పిలుస్తాము. సబ్‌ట్రౌటిన్ ముగింపులో, ప్రోగ్రామ్ మా ‘కాల్’ సూచనలను అనుసరించి తిరిగి లైన్‌లోకి వెళుతుంది. పై దృష్టాంతంలో, మేము LED ని ఆన్ చేస్తాము.

మేము ఆ తరువాత సబ్‌ట్రౌటిన్‌ను సంప్రదిస్తాము. మేము LED ని స్విచ్ చేయగలిగే క్రమంలో ప్రోగ్రామ్ తిరిగి వస్తుంది. మేము సబ్‌ట్రౌటిన్‌ను మరోసారి పిలుస్తాము, ఒకవేళ సబ్‌ట్రౌటిన్ పూర్తయి ఉండవచ్చు, ప్రోగ్రామ్ తిరిగి వస్తుంది మరియు అది గుర్తించిన తదుపరి సూచన ‘గోటో స్టార్ట్’. ఆసక్తి కలిగించే ఎవరికైనా, మా మొదటి ప్రోగ్రామ్ 120 బైట్ల పొడవు.

సబ్‌ట్రౌటిన్ వాడకం ద్వారా, మన ప్రోగ్రామ్ పరిమాణాన్ని 103 బైట్‌లకు తగ్గించవచ్చు. ఇది చాలా అద్భుతంగా అనిపించలేదు, అయినప్పటికీ పిఐసి లోపల మనకు మొత్తం 1024 బైట్లు మాత్రమే ఉన్నాయి, ప్రతి చిన్న మొత్తం ప్రయోజనాలు.

తదుపరి సూచనల లోపల, పోర్టుల నుండి చదవడం చూద్దాం.

ఇప్పటివరకు, మేము ఎల్‌ఈడీని ఆన్ మరియు ఆఫ్ చేయగలిగేలా పోర్ట్ ఎకు కంపోజ్ చేస్తున్నాము. ఈ సమయంలో, పోర్టులలోని I / O పిన్‌లను ఎలా చదవబోతున్నామో చూద్దాం.

ఇన్పుట్ / అవుట్పుట్ పోర్టులను చదవడం

ఇది మేము బాహ్య సర్క్యూట్‌ను లింక్ చేయగలమని మరియు అది అందించే ఏదైనా నిర్దిష్ట ఫలితాలను ప్రభావితం చేయగలదని నిర్ధారించడానికి.

మీరు మా మునుపటి కోర్సుల నుండి గుర్తుంచుకోవాలా, మీరు I / O పోర్టులను స్థాపించాలనుకుంటే, మేము బ్యాంక్ 0 నుండి బ్యాంక్ 1 కి దూకడం అవసరం. మేము మొదట్లో దాన్ని సాధిస్తాము:

ఈ సమయంలో మేము ఇన్పుట్ చేయడానికి పోర్ట్ A యొక్క బిట్ 0 ని పరిష్కరించాము. పిన్ ఎక్కువ లేదా తక్కువగా ఉందా అని మనం ఇప్పుడు పరిశీలించాలి. దీన్ని నెరవేర్చడానికి, కేవలం రెండు సూచనలలో ఒకదాన్ని ఉపయోగించుకోవచ్చు:

BTFSC మరియు BTFSS.

బిటిఎఫ్‌ఎస్‌సి సూచన ‘రిజిస్టర్‌లో బిట్ టెస్ట్ చేయండి అలాగే బిట్ మేము నియమించాము.

ఒకవేళ అది 0 అయితే, ఆ సందర్భంలో మేము తదుపరి సూచనలను వదిలివేస్తాము ’. BTFSS అంటే ‘రిజిస్టర్‌లో బిట్ టెస్ట్ చేయండి మరియు మేము ఏర్పాటు చేసిన బిట్. ఒకవేళ అది 1 కు సెట్ చేయబడితే, తరువాత సూచనలను దాటవేస్తాము.

మేము ఇన్‌పుట్‌ను అధ్యయనం చేసేటప్పుడు మా ప్రోగ్రామ్ ఎలా స్పందించాలని మేము కోరుకుంటున్నామో దాని ద్వారా మనం ఏది ఉపయోగించుకుంటాము. ఒక దృష్టాంతంగా, మేము ఇన్పుట్ 1 గా ఎదురుచూస్తున్నట్లయితే, అప్పుడు మేము BTFSS సూచనలను ఈ క్రింది పద్ధతిలో ఉపయోగించుకోవచ్చు:

ఇక్కడ కోడ్:

BTFSS PortA, 0 ప్రారంభించండి ఇక్కడ కొనసాగించండి:
:

పోర్ట్‌ఏలో బిట్ 0 1 కి షెడ్యూల్ చేయబడితే ఈ ప్రోగ్రామ్ ‘ఇక్కడకు తీసుకువెళ్లండి’.

మేము ప్రస్తుతం ఒక ప్రోగ్రామ్‌ను ఒక రేటుతో ఎల్‌ఈడీని ప్రాంప్ట్ చేయగలము, అయితే ఒక స్విచ్ పరిమితం అయితే అది ఎల్‌ఈడీని రెండు రెట్లు నెమ్మదిగా ఫ్లాష్ చేస్తుంది.

ఈ ప్రోగ్రామ్‌ను మీ స్వంతంగా వ్యాయామం చేయడం సాధ్యమే, అయినప్పటికీ మేము జాబితాను ఎలాగైనా చేర్చుకున్నాము.

మీరు సూత్రాలను అర్థం చేసుకున్నారా అని తనిఖీ చేయడానికి మీరు మొత్తం ప్రోగ్రామ్‌ను ప్రయత్నించవచ్చు మరియు వ్రాయవచ్చు. PIC యొక్క స్విచ్ అటాచ్డ్ RA0 మరియు మా సరఫరా యొక్క సానుకూల రైలును చేర్చడంతో మేము మునుపటిలాగే సమానమైన సర్క్యూట్‌ను ఉపయోగిస్తాము.

మేము ఇక్కడ సాధించినది LED ని ఆన్ చేయడం. స్విచ్ మూసివేయబడిందా అని నేను తరువాత నిర్ణయిస్తాను.

ఒకవేళ అది పరిమితం చేయబడితే, తరువాత నేను మా ఆలస్యం సబ్‌ట్రౌటిన్‌కు కనెక్ట్ చేస్తాను. ఇది మునుపటిలాగే మాకు సమానమైన ఆలస్యాన్ని అందిస్తుంది, అయితే మేము ఈ సమయంలో రెండుసార్లు సంప్రదిస్తున్నాము.

LED ఆపివేయబడినప్పుడల్లా ఇదే వర్తిస్తుంది. ఒకవేళ స్విచ్ మూసివేయబడకపోతే, అప్పుడు మన పూర్వ కాలాలను ఆన్ మరియు ఆఫ్ పీరియడ్స్‌లో నమోదు చేస్తారు.

మీరు మొదటి నుండి ఈ పాఠాలను అనుసరిస్తున్నారా, మీరు ప్రస్తుతం PIC 16F84 కోసం 35 సూచనలలో పదిని కనుగొన్నారని గ్రహించడానికి మీరు ప్రయత్నిస్తూ ఉండవచ్చు! మరియు వీటిలో ప్రతి బిట్ ఒక LED ని ఆన్ మరియు ఆఫ్ చేయడం ద్వారా నేర్చుకోవచ్చు.

ఇప్పటి వరకు, మేము PIC బ్లింక్‌ను LED ని ఆన్ మరియు ఆఫ్ కంపోజ్ చేసాము.

తదనంతరం మేము మా PIC తో ఒక స్విచ్‌ను చేర్చడం ద్వారా సామర్థ్యం కలిగి ఉన్నాము, అందువల్ల ఫ్లాష్ వేగం మారుతుంది.

మెమరీ స్థలాన్ని సమర్ధవంతంగా ఉపయోగించడం

ఏకైక సమస్య ఏమిటంటే, ప్రోగ్రామ్ చాలా పొడవుగా ఉంది మరియు మెమరీ స్థలం యొక్క అసమర్థమైనది. నేను మొదటిసారిగా ఆదేశాలను చేర్చినప్పుడు ఇది సరే అనిపించింది, అయితే దాన్ని అమలు చేయడానికి సులభమైన మార్గం ఉండాలి. సానుకూలంగా ఉంది, మేము అక్షరాలా LED ని ఆన్ మరియు ఆఫ్ ఎలా మారుస్తున్నామో విశ్లేషిస్తాము.

movlw 02hmovwf PORTAmovlw 00hmovlw PORTA

మొదట మేము మా w రిజిస్టర్‌ను 02h తో నింపాము, ఆ తర్వాత LED ని మార్చడానికి మా పోర్ట్‌ఏ రిజిస్టర్‌కు బదిలీ చేసాము. దాన్ని స్విచ్ ఆఫ్ చేయడానికి, మేము 00h తో w ని ప్యాక్ చేసాము, తరువాత దానిని మా పోర్ట్‌ఏ రిజిస్టర్‌కు మార్చాము.

ఈ నిత్యకృత్యాల మధ్య, మేము LED ఫ్లాషింగ్‌ను గమనించగలమని నిర్ధారించడానికి సబ్‌ట్రౌటిన్‌తో సంప్రదించవలసి వచ్చింది.

అందువల్ల, మేము రెండు సెట్ల సమాచారాన్ని రెండుసార్లు బదిలీ చేయవలసి ఉంది (ఒక సారి w రిజిస్టర్‌లో ఒక తరువాత పోర్టాకు) అలాగే ఒక సబ్‌ట్రౌటిన్‌కు రెండుసార్లు కాల్ చేయండి (ఒకసారి ఒకసారి మరియు ఒకసారి ఆఫ్ ఆఫ్). అందువల్ల, అదనపు సామర్థ్యంతో దీన్ని ఎలా సాధించగలం? చాలా సులభం.

మేము XORF అని పిలువబడే వేరే సూచనలను ఉపయోగిస్తాము. మేము అందించే సమాచారంతో మేము నిర్దేశించిన రిజిస్టర్‌లో XORF సూచన ప్రత్యేకమైన లేదా ఫంక్షన్ పనిచేస్తుంది. మేము కొనసాగడానికి ముందు ప్రపంచంలో ప్రత్యేకమైన లేదా ఏమిటో నేను స్పష్టం చేయాల్సి ఉంటుందని నేను నమ్ముతున్నాను. ఒకవేళ మనకు రెండు ఇన్‌పుట్‌లు మరియు ఒక అవుట్‌పుట్ ఉంటే, ఇన్‌పుట్ 1 అయితే మాత్రమే ఉంటుంది మరియు ఉన్నంతవరకు, రెండు ఇన్‌పుట్‌లు భిన్నంగా ఉంటాయి. అవి ఒకేలా ఉండగా, అవుట్‌పుట్ బహుశా 0 గా ఉంటుంది. కిందివి సత్య పట్టిక, వీటిని తనిఖీ చేయడానికి ఎంచుకునే వ్యక్తుల కోసం:

A B F0 0 00 1 11 0 11 1 0

మన మునుపటి అవుట్పుట్ మాదిరిగానే B ని రెండర్ చేస్తే, మరియు A యొక్క విలువను మార్చినట్లయితే ఏమి జరుగుతుందో మేము ఈ సమయంలో తనిఖీ చేస్తాము:

A B F.
0 0 0
0 0 0
1 0 1
1 1 0
1 0 1

మేము A యొక్క విలువను 1 వలె నిర్వహిస్తే, మరియు మేము దానిని ఎక్స్‌క్లూజివ్ లేదా అవుట్‌పుట్‌తో చేస్తే, అవుట్పుట్ టోగుల్ అవుతుంది. ఒకవేళ మీరు దీనిని సత్య పట్టిక నుండి గమనించలేకపోతే, దాని క్రింద బైనరీని ఉపయోగించడం చూడవచ్చు:

0 ప్రస్తుత అవుట్పుట్
1 1 కొత్త అవుట్‌పుట్‌తో EX-OR
1-కొత్త అవుట్‌పుట్‌తో EX-OR

1 తో అవుట్‌పుట్‌ను ప్రత్యేకమైన ORing చేయడం ద్వారా, మేము ఇప్పుడు అవుట్‌పుట్‌ను 0 నుండి 1 నుండి 0 వరకు టోగుల్ చేస్తాము.
అందువల్ల, మా LED ని ఆన్ మరియు ఆఫ్ చేయడానికి, మాకు కొన్ని వాక్యాలు మాత్రమే అవసరం:

MOVLW 02 క
XORWF డోర్, 1

మన w రిజిస్టర్‌ను 02h తో జోడించడం మనం ఖచ్చితంగా సాధించబోతున్నాం. మేము ఆ సందర్భంలో మా పోర్ట్‌ఏలో ఏమైనా ఉన్నా ఈ సంఖ్యను ప్రత్యేకమైనవి. ఒకవేళ బిట్ 1 1 అయితే, అది 0 కి మారుతుంది. ఒకవేళ బిట్ 1 0 అయితే, అది 1 కి మారుతుంది. ఈ కోడ్ బైనరీ ఎలా నడుస్తుందో ప్రదర్శించడానికి ఒకటి లేదా రెండుసార్లు ఈ కోడ్‌ను పరిశీలిద్దాం:

డోర్
00010
xorwf 00000
xorwf 00010
xorwf 00000
xorwf 00010

మేము ప్రతిసారీ ఒకే విలువను మా w రిజిస్టర్‌లో లోడ్ చేయనవసరం లేదు, కాబట్టి ప్రారంభంలోనే ఈ సారి సాధించటం సాధ్యమవుతుంది మరియు మా టోగుల్ ఆదేశానికి తిరిగి దూకుతారు. అదనంగా, మేము మా పోర్ట్‌ఏ రిజిస్టర్‌లో విలువను పరిష్కరించాల్సిన అవసరం లేదు. కారణం? ఖచ్చితంగా, శక్తి విషయంలో ఇది 1 కనుక, మేము దానిని సులభంగా టోగుల్ చేయవచ్చు. నేను, ప్రత్యామ్నాయంగా శక్తిని పెంచుకుంటాను, మేము ఇప్పుడు దాన్ని టోగుల్ చేస్తాము.

అందువల్ల మీరు కొత్తగా ఏర్పడిన మా కోడ్‌ను చూడాలనుకుంటున్నారు. మొదటిది మా మెరిసే LED కోడ్‌ను సూచిస్తుంది, రెండవది స్విచ్ యొక్క అదనంగా ఉన్నదాన్ని చూపిస్తుంది:

ఒక సులభమైన సూచనను ఉపయోగించడం ద్వారా, మేము ఇప్పుడు మా ప్రోగ్రామ్ యొక్క స్థాయిని తగ్గించాము. నిజం ఏమిటంటే, మన ప్రోగ్రామ్‌లను మనం ఎంత తగ్గించగలమో ప్రదర్శించడానికి, మేము రెండు ప్రోగ్రామ్‌లను ప్రదర్శించాము, కంపోజ్ చేసినవి మరియు వాటి కొలతలు క్రింది పట్టికలో ఉన్నాయి:

ప్రోగ్రామ్ ఆల్టర్ డైమెన్షన్స్ (బైట్లు)
ఫ్లాషింగ్ LED ఒరిజినల్ 120
మెరుస్తున్న LED సబ్‌ట్రౌటిన్ 103 జోడించబడింది
మెరుస్తున్న LED XOR ఫంక్షన్ 91 ఉపయోగించబడింది
స్విచ్ ఒరిజినల్ 132 తో LED
LED తో స్విచ్ XOR ఫంక్షన్ వాడిన 124.

అందువల్ల, మేము కొన్ని నవల సూచనలను కనుగొన్నాము, మేము ఖచ్చితంగా అదనంగా మా స్క్రిప్టింగ్ పరిమాణాన్ని తగ్గించాము!

క్రింద, మీరు వ్యక్తిగత బిట్లను ఎలా తిప్పగలరో, కొన్ని సూటిగా అంకగణితంతో పాటు డేటా పట్టికలను ఎలా నిర్వహించవచ్చో మేము విశ్లేషిస్తాము.

లాజికల్ మేనేజర్స్

చివరి ట్యుటోరియల్ లోపల నేను ఎక్స్‌క్లూజివ్ OR ఆపరేషన్‌ను సమర్పించాను. EXOR ఫంక్షన్ లాజికల్ ఆపరేటర్‌గా అర్థం అవుతుంది.

ఈ ట్యుటోరియల్ లోపల నేను PIC ప్రోత్సహించే అదనపు లాజికల్ ఆపరేటర్లకు జ్ఞానోదయం చేస్తాను. పాయింట్ ప్రోగ్రామ్‌లలో ఎలాంటి సందర్భం ఉండదు, అయినప్పటికీ చిన్న చిన్న ప్రాంతాలను కోడ్ చేయడం ద్వారా ఆపరేటర్లను ఉపయోగించడానికి సులభమైన పద్ధతులను మేము నేర్చుకుంటాము.

మరియు AND ఫంక్షన్ ప్రాథమికంగా రెండు బిట్‌లను విశ్లేషిస్తుంది మరియు 1 అవి ఒకేలా ఉన్నాయో లేదో మరియు అవి విలక్షణమైనవి అయితే 0 ను అందిస్తుంది. ఉదాహరణకు, మేము 1 మరియు 1 గురించి ప్రస్తావించినట్లయితే, ఫలితం 1, మేము 1 మరియు 0 అని ప్రకటించినట్లయితే పరిణామం 0 అవుతుంది.

మేము పదాలను కూడా అంచనా వేయగలుగుతున్నామని ప్రత్యేకంగా చెప్పనవసరం లేదు, అలాగే అన్ని AND ఫంక్షన్ సాధించినవి రెండు పదాలను బిట్ బై బిట్ గా సమీక్షిస్తాయి. దిగువ ఉదాహరణ రెండు 8-బిట్ పదాలు ఉత్పత్తితో కలిసి ANDed అవుతున్నట్లు చూపిస్తుంది:

11001011
మరియు 10110011
10000011 కు సమానం

మీరు అంగీకరిస్తారని నేను నమ్ముతున్నాను, ఒక జత పదాలలో 2 1 లు ఒకదానితో ఒకటి చేతిలో ఉన్నప్పుడు ఫలితం 1 ని కలిగి ఉంటుంది. పోర్టులను ధృవీకరించడానికి మేము AND ఫంక్షన్‌ను ఉపయోగించుకోగలుగుతాము.

ఒకవేళ మేము ఒక సర్క్యూట్‌తో అనుసంధానించబడిన కొన్ని I / O పిన్‌లను తనిఖీ చేస్తున్నాము మరియు కొన్ని పిన్‌లు మాత్రమే ఎక్కువగా ఉన్న ఒక నిర్దిష్ట పరిస్థితిపై మనం నిఘా ఉంచాలి, ఆ సందర్భంలో మనం చాలా చక్కగా చదవగలుగుతాము పోర్ట్, దాని తరువాత మరియు మేము పరిశీలిస్తున్న షరతుతో ఫలితం, పైన పేర్కొన్న ఉదాహరణతో సమానంగా ఉంటుంది.

PIC మాకు AND కోసం రెండు పదార్థాలను అందిస్తుంది.
అవి ANDLW మరియు ANDWF. W రిజిస్టర్ వివరాలతో ఒక AND ఫంక్షన్ నిర్వహించడానికి మరియు మేము నిర్దేశించిన మొత్తాన్ని ANDLW అనుమతిస్తుంది.

వాక్యనిర్మాణం: ANDLW దీనిలో మనం వెళ్తున్నది ఖచ్చితంగా మరియు W యొక్క విషయాలు.

AND ఫంక్షన్ యొక్క పరిణామం నేరుగా W రిజిస్టర్‌లో నిల్వ చేయబడుతుంది.
W రిజిస్టర్ మరియు వేరే రిజిస్టర్‌లో AND ఫంక్షన్‌ను నిర్వహించడానికి ANDWF మాకు అనుమతి ఇస్తుంది, ఉదాహరణకు ఒక PORT. వాక్యనిర్మాణం: ANDWF, d దీనిలో మేము ఉత్సాహంగా ఉన్న రిజిస్టర్, ఉదా. PORTA, మరియు d మీరు ఫలితాన్ని ఎక్కడ ఉంచాలో PIC ని చూపిస్తుంది. D = 0 అయితే, ఫలితం W రిజిస్టర్‌లో ఉంచబడుతుంది మరియు d = 1 యొక్క తుది ఫలితం మేము నిర్దేశించిన రిజిస్టర్‌లో సేవ్ చేయబడుతుంది. దిగువ కోడ్ యొక్క రెండు భాగాలు ప్రతి AND ఫంక్షన్‌కు మంచి ఉదాహరణను ప్రదర్శిస్తాయి.

ప్రారంభ పోర్టా యొక్క స్థితిని పరిశీలిస్తోంది, దీనిలో ఇన్పుట్లను 1100 ఉందో లేదో తనిఖీ చేయాలి. ఫలితాన్ని తిరిగి W రిజిస్టర్లో ఉంచవచ్చు

movlw 1100
ANDWF 05h, 0 రెండవ దృష్టాంతం ఇప్పుడు W రిజిస్టర్ యొక్క విషయాలను ధృవీకరించవచ్చు:
ANDLW 1100

లేదా

మేము ఇప్పుడు XOR ను ఖచ్చితంగా చెప్పాలంటే ఒక OR ఫంక్షన్‌ను కనుగొన్నాము. రెండు బిట్స్ ఒకేలా ఉండకపోయినా, భిన్నంగా ఉంటే ఇది 1 గా అభివృద్ధి చెందుతుంది. మీరు IOR అని పిలువబడే మరొక OR ఫంక్షన్‌ను కనుగొనవచ్చు, ఇది కలుపుకొని OR. బిట్ 1 అయితే ఈ ఫంక్షన్ 1 ను ఉత్పత్తి చేస్తుంది, కానీ అదనంగా ప్రతి బిట్స్ 1 అయితే. దీనిని వివరించడానికి స్పష్టమైన-కత్తిరించిన సత్య పట్టిక క్రింద ఉంది:

A B O / P.
0 0 0
0 1 1
1 0 1
1 1 1

అంకగణిత ఆపరేటర్లు అంటే ఏమిటి

చేర్చు

ఈ ఫంక్షన్ సాధారణంగా పేర్కొన్నదానిని సాధిస్తుంది. ఇది రెండు గణాంకాలు దోహదం చేస్తుంది! ఒకవేళ రెండు బొమ్మలను జోడించడం యొక్క పరిణామం 8 బిట్‌లను మించి ఉంటే, ఆ సందర్భంలో CARRY జెండా బహుశా సెట్ చేయబడుతుంది. CARRY జెండా చిరునామా 03h బిట్ 0 వద్ద ఉంది.

ఈ బిట్ షెడ్యూల్ చేసినప్పుడు, రెండు గణాంకాలు 8 బిట్లను అధిగమించాయి. ఇది 0 అయినప్పుడు, పర్యవసానంగా 8 బిట్స్ లోపల ఉంటుంది. మునుపటిలాగా, PIC మాకు ADD యొక్క రెండు శైలులను అందిస్తుంది, ప్రత్యేకంగా ADDLW మరియు ADDWF. మీరు have హించినట్లుగా, ఇది పై ఫంక్షన్ లాగా ఉంటుంది. ADDLW మేము నిర్దేశించిన W రిజిస్టర్ యొక్క విషయాలను అందిస్తుంది. వాక్యనిర్మాణం: ADDLW ADDWF W రిజిస్టర్ యొక్క విషయాలను మరియు మేము నియమించిన మరికొన్ని రిజిస్టర్లను జోడిస్తుంది.

వాక్యనిర్మాణం: ADDWF, d ఎక్కడ ఉంది

SUB

ఈ సమయంలో, ఈ ఫంక్షన్ ఏమి చేస్తుందో మీరు ume హించలేరని నేను ess హిస్తున్నాను! నిజమే, మీరు దీనిని అనుమానించారు, ఈ ఫంక్షన్
ఒక బిట్ మరొకటి నుండి తీసివేస్తుంది. మళ్ళీ PIC మాకు 2 అభిరుచులను అందిస్తుంది: SUBLW మరియు SUBWF. వాక్యనిర్మాణం ఖచ్చితంగా ADD ఫంక్షన్‌కు సమానంగా ఉంటుంది, స్పష్టంగా మీరు ADD స్థానంలో SUB అని టైప్ చేస్తారు!

పెరుగుదల మేము PIC లో 1 కి ఒక సంఖ్యను చేర్చాలనుకుంటే, మేము ఖచ్చితంగా ADD ఫంక్షన్‌ను ఉపయోగించుకోవచ్చు మరియు నంబర్ వన్‌ను ఉపయోగించుకోవచ్చు. With దీనితో ఉన్న ఇబ్బంది ఏమిటంటే, మనం మొదట ఆ సంఖ్యను W రిజిస్టర్‌లో ఉంచాలి, తరువాత దాన్ని పెంచడానికి ADDLW 1 నియంత్రణను ఉపయోగించాలి. ఒకవేళ మేము రిజిస్టర్‌లో 1 ని చేర్చాలనుకుంటే, అది ఇంకా ఘోరంగా ఉంటుంది. ADDWF, 1 ఉపయోగించిన తర్వాత మనం మొదట నంబర్ 1 ను W రిజిస్టర్‌లో ఉంచాలి. అందువల్ల, ఉదాహరణకు, 1 స్థానానికి 0 సి చేర్చడానికి, చెప్పండి, మేము స్క్రిప్ట్ యొక్క క్రింది భాగాన్ని కలిగి ఉండాలి:

movlw 01
addwf 0c, 1

దీన్ని నిర్వహించడానికి సులభమైన పద్ధతి ఉంది. మేము INCF ఆదేశాన్ని వ్యాయామం చేయవచ్చు. వాక్యనిర్మాణం: INCF, d ఎక్కడ, మేము ఆందోళన చెందుతున్న రిజిస్టర్, లేదా స్థలం, మరియు మీరు ఫలితాన్ని ఎక్కడ ఉంచాలో PIC ని చూపిస్తుంది. ఒకవేళ d = 0, ఫలితం W రిజిస్టర్‌లో ఉంటుంది, మరియు d = 1 విషయంలో, పర్యవసానం మేము నిర్దేశించిన రిజిస్టర్‌లో సెట్ చేయబడుతుంది.

ఈ వ్యక్తిగత సూచనలను ఉపయోగించడం ద్వారా మనం కోడింగ్‌లో యాభై శాతం చేయగలుగుతాము. ఒకవేళ ఫలితాన్ని W రిజిస్టర్‌లో పునరుద్ధరించాలని మేము కోరుకుంటే, ఆ సందర్భంలో పై ఉదాహరణను ఉపయోగించుకుంటే, 0C యొక్క అంశాలను తిరిగి W రిజిస్టర్‌లోకి మార్చడానికి మేము అదనపు ఆదేశాన్ని చేర్చాల్సి ఉంటుంది, ఆ తర్వాత 0C రిజిస్టర్‌ను తిరిగి లేదు అది ఏమిటో పట్టింపు లేదు.

ఇంక్రిమెంట్ కమాండ్ ఉంది. ఇది INCFSZ. ఈ ఆదేశం మేము నిర్దేశించిన రిజిస్టర్‌ను పెంచుతుంది, అయితే మేము రిజిస్టర్ ఇంక్రిమెంట్ తర్వాత 0 కి సమానం అయితే (మేము 1 నుండి 127 వరకు చేరినప్పుడు ఇది జరుగుతుంది) ఆ తరువాత PIC తరువాతి సూచనలను పాస్ చేస్తుంది. దిగువ కోడ్ యొక్క భాగం దీనిని ప్రతిబింబిస్తుంది:

లూప్ incfsz 0C
గోటో లూప్
:
:
ప్రోగ్రామ్ యొక్క రిమైండర్.

కోడ్ యొక్క పై భాగంలో, 0 సి 1 ద్వారా పెంచబడుతుంది. లూప్ అనే మా ట్యాగ్‌కు తిరిగి రావాలని పిఐసికి తెలియజేసే సూచనను మేము కలిగి ఉన్నాము మరియు 0 సిని 1 ద్వారా పెంచండి. 0C 127 కు సమానం అయ్యే వరకు ఇది కొనసాగుతుంది. ఈ పరిస్థితిలో, మేము 0C ని 1 ద్వారా పెంచినప్పుడు, 0C ఇప్పుడు 0 తో సరిపోలడం జరుగుతుంది. మా INCFSZ సూచన తదుపరి సూచనలను వదిలివేయమని PIC కి బాగా తెలియజేయగలదు, ఈ సందర్భంలో గోటో డిక్లరేషన్, అందువల్ల PIC మిగిలిన ప్రోగ్రామ్‌తో ముందుకు వెళ్తుంది.

తగ్గుదల

మునుపటి శిక్షణలో తగ్గుదల పనితీరు గురించి మేము ఇప్పుడు చర్చించాము, కాబట్టి నేను దీన్ని ఇకపై సవరించను.

కాంప్లిమెంట్

ఈ చర్చలోని చివరి సూచన మేము నిర్దేశించిన రిజిస్టర్‌లోని ప్రతి బిట్‌ను రివర్స్ చేస్తుంది. వాక్యనిర్మాణం: COMF, d ఇందులో

బిట్ ఆపరేషన్లను అర్థం చేసుకోవడం

ఉదాహరణకు, అవుట్పుట్ నుండి ఇన్పుట్కు పోర్ట్ యొక్క పిన్నులను వేగంగా మార్చుకోవడానికి ఇది ఉపయోగించబడుతుంది. వ్యక్తీకరణలో ఒకే బిట్‌ను ఆకృతి చేయడానికి బిట్ ఫంక్షన్లు మాకు అనుమతిస్తాయి. మేము నిర్దేశించిన రిజిస్టర్లు లేదా సంఖ్యలలో ఒకే బిట్లను కొనసాగించడానికి, సెట్ చేయడానికి మరియు వదిలించుకోవడానికి అవి మాకు అనుమతిస్తాయి.

ఈ కోర్సు ముగింపులో మేము ముందుకు సాగే సీక్వెన్సింగ్ లైట్ల సమితిని సృష్టించడానికి రూపొందించిన ప్రోగ్రామ్‌ను బహిర్గతం చేస్తాము, తరువాత రివర్స్ వే. మేము ప్రత్యేకమైన OR ఫంక్షన్‌ను పరిశీలించినప్పుడు ఇంతకుముందు దీనిని సాధించామని గమనించాము, దీనిలో మేము ఎక్స్‌ప్రెసివ్‌గా పోర్ట్‌లను ఎక్స్‌ప్రెషన్‌తో ORed చేసాము. మేము PIC లో పోర్టులను స్థాపించినప్పుడు కొన్ని బిట్ ఫంక్షన్లను ఇప్పుడు గమనించాము

వారి వినియోగాన్ని ఇక్కడ పునరుద్ఘాటిస్తాను.

బిసిఎఫ్

ఈ సూచన మేము నియమించిన రిజిస్టర్‌లో నిర్దేశించిన బిట్‌ను తుడిచివేస్తుంది. వాక్యనిర్మాణం
ఇది:
బిసిఎఫ్,

STATUS రిజిస్టర్‌లో కొంచెం తీసివేయడం ద్వారా పేజీ 1 నుండి పేజీ 0 కి మార్చడానికి మేము ఇంతకు ముందు ఉపయోగించాము. ఏదైనా వేరే రిజిస్టర్ / ప్రదేశంలో 0 కు బిట్ పరిష్కరించడానికి మేము కూడా దీన్ని ఉపయోగించగలుగుతాము. ఉదాహరణకు, సెక్షన్ 0C లో సేవ్ చేసిన 11001101 లో 3 వ బిట్‌ను సెట్ చేయాలనుకుంటే, మేము ఉండవచ్చు
చొప్పించు:

బిసిఎఫ్ 0 సి, 03

బీఎస్ఎఫ్

ఈ సూచన మేము సూచించే ఏ రిజిస్టర్‌లోనైనా 1 కు నిర్దేశించిన బిట్‌ను పరిష్కరిస్తుంది. పేజ్ 0 నుండి పేజి 1 కి కొనసాగడానికి మేము ఇంతకు ముందే ఉపయోగించుకున్నాము. వాక్యనిర్మాణం: బిఎస్ఎఫ్ ,, మరియు పైన పేర్కొన్న బిసిఎఫ్ మాదిరిగానే అదే పద్ధతిలో ఉపయోగించబడుతుంది.

BTFSCUp ఇప్పటికి మనం రిజిస్టర్‌లో కొంచెం సెట్ చేయవచ్చు లేదా క్లియర్ చేయవచ్చు. అయితే రిజిస్టర్‌లో బిట్ 1 లేదా 0 కాదా అని మనం ప్రాథమికంగా తనిఖీ చేయాల్సిన అవసరం ఉందా?

ఖచ్చితంగా, BTFSC ను ఉపయోగించడం సాధ్యమే. ఇది బిట్ టెస్ట్ రిజిస్టర్ ఎఫ్, మరియు క్లియర్ అయితే దాటవేస్తుంది. ఈ సూచన మేము రిజిస్టర్‌లో పేర్కొన్న బిట్‌ను విశ్లేషించబోతున్నాం. ఒకవేళ బిట్ 0 అయితే, తదుపరి సూచనలను పాస్ చేయడం ద్వారా పిఐసికి సూచన తెలియజేస్తుంది.

మేము జెండాను తనిఖీ చేయాలనుకుంటే మేము ఈ సూచనను ఉపయోగించుకోవచ్చు, ఉదాహరణకు క్యారీ ఫ్లాగ్. ఇది మాకు STATUS రిజిస్టర్‌ను చదవవలసి ఉంటుంది మరియు ఏ జెండాలు పరిష్కరించబడిందో తెలుసుకోవడానికి వ్యక్తిగత బిట్‌ల కోసం వెతకాలి. 29 ఉదాహరణకు, మేము 2 బొమ్మలను జోడించిన తర్వాత క్యారీ ఫ్లాగ్ 1 కు సెట్ చేయబడిందా అని తనిఖీ చేయాలనుకుంటే, మేము ఈ క్రింది వాటిని టైప్ చేయవచ్చు:

BTFSC 03 క, 0
1 కు సెట్ చేస్తే ఇక్కడ కొనసాగండి
లేదా 0 కు సెట్ చేస్తే ఇక్కడ

ఒకవేళ బిట్ యొక్క స్థితి 1 అయితే, ఆ సందర్భంలో BTFSC తరువాత సూచనలు పూర్తవుతాయి. ఒకవేళ అది 0 కి సెట్ చేయబడితే, ఆ సందర్భంలో తదుపరి సూచనలను దాటవేస్తారు. కోడ్ యొక్క క్రింది భాగం దీనిని ఉపయోగించుకోవచ్చు:

లూప్:
:
:
బిటిఎఫ్‌ఎస్‌సి 03,0
గోటో లూప్

పై కోడ్‌లో, STATUS రిజిస్టర్ (లేదా క్యారీ ఫ్లాగ్) యొక్క బిట్ 0 0 గా నిర్వచించబడితే PIC లూప్ నుండి బయటపడుతుంది. లేకపోతే, గోటో కమాండ్ నిర్వహించబడుతుంది.

BTFSS

ఈ సూచన బిట్ టెస్ట్ రిజిస్టర్ ఎఫ్, మరియు సెట్ చేస్తే దాటవేస్తుంది. ఇది BTFSC సూచనలతో పోల్చవచ్చు, దానికి తోడు మనం మూల్యాంకనం చేస్తున్న బిట్‌ను 0 కి బదులుగా 1 కు సెట్ చేస్తే PIC తదుపరి సూచనలను వదిలివేస్తుంది.

సిఎల్‌ఆర్‌ఎఫ్

ఈ సూచన రిజిస్టర్ యొక్క మొత్తం వివరాలను 0 కి పరిష్కరిస్తుంది. వాక్యనిర్మాణం:

సిఎల్‌ఆర్‌ఎఫ్
CLRF 85h ను వర్తింపజేయడం ద్వారా పోర్టుల ఉత్పత్తిని 0 కి సెట్ చేయడానికి మేము ఇంతకుముందు దీనిని ఉపయోగించాము. CLRF ను ఉపయోగించడం ద్వారా అన్ని పిన్‌లను అవుట్‌పుట్‌కు చేర్చడానికి పోర్ట్‌లను పరిష్కరించడానికి మేము దీన్ని ఉపయోగించాము
05 క.

CLRW

W రిజిస్టర్‌ను క్లియర్ చేయడం మినహా ఇది CLRF సూచనలను పోలి ఉంటుంది. వాక్యనిర్మాణం చాలా సరళంగా ఉంటుంది:

CLRW

RLF మరియు RRF

ఈ ఆదేశాలు ఒక రిజిస్టర్‌లో ఒక బిట్ను ఎడమ (ఆర్‌ఎల్‌ఎఫ్) లేదా కుడివైపు (ఆర్‌ఆర్‌ఎఫ్) రిజిస్టర్‌లో రవాణా చేస్తాయి. ఉదాహరణకు, మనకు 00000001 అవసరమైతే మరియు మేము RLF ను నియమించాము, ఆ సందర్భంలో మేము 00000010 ను కలిగి ఉండవచ్చు. ఈ సమయంలో, 10000000 ఉన్నట్లయితే మరియు RLF సూచనలను వర్తింపజేస్తే ఏమి జరుగుతుంది? ఖచ్చితంగా, 1 క్యారీ ఫ్లాగ్‌లో ఉంచబడుతుంది. ఒకవేళ మేము RLF సూచనలను మరోసారి వర్తింపజేస్తే, 1 ప్రారంభంలో తిరిగి కనిపిస్తుంది. RRF సూచనల కోసం, సమానంగా, సంభవిస్తుంది. దిగువ ఉన్న కేసు RLF సూచనల కోసం దీనిని చూపిస్తుంది, దీనిలో మనకు రిజిస్టర్ యొక్క 8 బిట్స్, అలాగే క్యారీ ఫ్లాగ్ చూడవచ్చు:

సి 87654321
0 00000001
RLF 0 00000010
ఆర్‌ఎల్‌ఎఫ్ 0 00000100
RLF 0 00001000
ఆర్‌ఎల్‌ఎఫ్ 0 00010000
RLF 0 00100000
ఆర్‌ఎల్‌ఎఫ్ 0 01000000
RLF 0 10000000
ఆర్‌ఎల్‌ఎఫ్ 1 00000000
RLF 0 00000001

ఉదాహరణ ప్రోగ్రామ్

మేము ఇప్పుడు కంపైల్ చేసి డ్రైవ్ చేయగల ఉదాహరణ కోడ్‌ను చూడబోతున్నాం. ఇది పోర్ట్‌బి బిట్ 0 వద్ద ప్రారంభమయ్యే సీక్వెన్సింగ్ లైట్‌ను ఉత్పత్తి చేస్తుంది, పోర్ట్‌బి బిట్ 8 కి వెళుతుంది
అప్పుడు తిరిగి వస్తాడు.
పోర్ట్ పిన్స్‌లో ప్రతిదానికి LED లను హుక్ అప్ చేయండి. మాకు కొంత బిట్ ఉంటుంది
ఈ ట్యుటోరియల్‌లో సూచించిన విధానాలు.

ఆలస్యం లూప్ కోసం TIME EQU 9FH వేరియబుల్.
PORTB EQU 06H పోర్ట్ B చిరునామా.
TRISB EQU 86H పోర్ట్ B ట్రిస్టేట్ చిరునామా.
పోర్టా EQU 05H పోర్ట్ చిరునామా.
TRISA EQU 85H పోర్ట్ ఎ ట్రిస్టేట్ చిరునామా.
STATUS EQU 03H పేజీ రిజిస్టర్ ఎంచుకోండి.
COUNT1 EQU 0CH లూప్ రిజిస్టర్.
COUNT2 EQU 0DH లూప్ రిజిస్టర్.

BSF STATUS, 5 పేజీ 1 కి వెళ్ళండి
MOVLW 00H మరియు ఏర్పాటు
MOVWF TRISB పోర్ట్స్ A మరియు B రెండూ
అవుట్పుట్కు MOVLW 00H,
MOVWF TRISA తరువాత తిరిగి
BCF STATUS, 5 పేజీ 0.
MOVLW 00H క్లియర్ పోర్ట్ A.
MOVWF డోర్

ప్రధాన కార్యక్రమం ప్రారంభం

RUNMOVLW
01H మొదటి bitMOVWF ని సెట్ చేయండి
పోర్ట్ B.CALL లో PORTB
ఆలస్యం కాసేపు వేచి ఉండండి
ఆలస్యం
పోర్ట్ B ఎడమ వైపున బిట్‌ను తరలించి, ఆపై పాజ్ చేయండి. RLF
PORTB, 1CALL
DELAYCALL
DELAYRLF
PORTB, 1CALL
DELAYCALL
DELAYRLF
PORTB, 1CALL
DELAYCALL
DELAYRLF
PORTB, 1CALL
DELAYCALL
DELAYRLF
PORTB, 1CALL
DELAYCALL
DELAYRLF
PORTB, 1CALL
DELAYCALL
DELAYRLF
PORTB, 1CALL
DELAYCALL
DELAYRLF
PORTB, 1 ఇది బిట్‌ను క్యారీ ఫ్లాగ్‌లోకి కదిలిస్తుంది
ఇప్పుడు పోర్ట్ A లోకి వెళ్లి, బిట్ ఎడమవైపుకి తరలించండి. RLF
పోర్టా, 1 ఇది సున్నా జెండా నుండి బిట్‌ను పోర్ట్‌కాల్‌లోకి కదిలిస్తుంది
DELAYCALL DELAYRLF
డోర్, 1 కాల్
DELAYCALL
DELAYRLF
డోర్, 1 కాల్
DELAYCALL
DELAYRLF
డోర్, 1 కాల్
DELAYCALL
ఆలస్యం
పోర్ట్ ARRF లో బిట్‌ను వెనుకకు తరలించండి
డోర్, 1 కాల్
DELAYCALL
DELAYRRF
డోర్, 1 కాల్
DELAYCALL
DELAYRRF
డోర్, 1 కాల్
DELAYCALL
DELAYRRF
పోర్టా, 1 ఇది బిట్‌ను సున్నా జెండాలోకి కదిలిస్తుంది ఇప్పుడు బిట్‌ను తరలించండి
పోర్ట్ BRRF లో తిరిగి
PORTB, 1CALL
DELAYCALL
DELAYRRF
PORTB, 1CALL
DELAYCALL
DELAYRRF
PORTB, 1CALL
DELAYCALL
DELAYRRF
PORTB, 1CALL
DELAYCALL DELAYRRF
PORTB, 1CALL
DELAYCALL
DELAYRRF
PORTB, 1CALL
DELAYCALL
DELAYRRF
PORTB, 1CALL
DELAYCALL
ఆలస్యం ఇప్పుడు మేము ప్రారంభించిన చోటికి తిరిగి వచ్చాము, గోటో
రన్ మళ్ళీ వెళ్దాం.

శిక్షణా సమితిలో డేటా పట్టికను ఉపయోగించుకోవడానికి మిమ్మల్ని అనుమతించే గొప్ప ఎంపిక ఉంది.

డేటా పట్టిక కేవలం డేటా కోట్ల జాబితా, దీనిలో కొన్ని పరిగణనల ఆధారంగా చూస్తారు.
ఉదాహరణకు, మీరు ఒక PIC ని ఉపయోగించే ఒక సర్క్యూట్‌ను కలిగి ఉండవచ్చు, ఇది 1 సెకనులో ఇన్‌పుట్ పిన్ అధికంగా మారిన సందర్భాల పరిమాణాన్ని లెక్కిస్తుంది. ఆ తరువాత మీరు 7 సెగ్మెంట్ డిస్ప్లేలో సంఖ్యను ప్రదర్శించవచ్చు.

సమయం ప్రారంభించిన వెంటనే, పిన్ పిన్ అధికంగా వెళ్ళే సందర్భాలను లెక్కించడం ప్రారంభిస్తుంది. 1 సెకను తరువాత అది పట్టికను సందర్శించి డేటాను చూస్తుంది, అది పిన్ అధికంగా ఉన్న పరిస్థితుల మొత్తాన్ని సూచించే ప్రదర్శనలో సంఖ్యను ప్రదర్శించాలి. PIC దాని అంచనాను సాధించే వరకు ఈ సంఖ్య ఏమిటో మేము నిర్ణయించనందున ఇది ప్రయోజనకరంగా ఉంటుంది.

పట్టికను ఉపయోగించడం ద్వారా, ఏ బొమ్మను చిత్రీకరించాలో PIC నిర్ణయించటానికి మేము అనుమతించగలము. ఈ సమయంలో, డేటా టేబుల్ ఎలా పనిచేస్తుందో నేను మీకు చూపించడానికి ముందు, ప్రోగ్రామ్ పనిచేస్తున్నప్పుడు PIC ప్రోగ్రామ్‌లో ఆచూకీ యొక్క మార్గాన్ని నిర్వహిస్తుందని నేను మీకు చెప్పాల్సి ఉంటుంది.

ఇది బేసిక్‌లో కొన్ని ప్రోగ్రామింగ్ చేసిన వారికి సౌకర్యాలు కల్పిస్తుంది. లేకపోతే, ఆందోళన చెందకండి, మీరు సిద్ధాంతం గురించి తెలుసుకోవడం కొనసాగించాలనుకోవచ్చు. దిగువ ప్రదర్శించిన మాదిరిగానే బేసిక్ ప్రోగ్రామ్ ఉందని vision హించండి:

10 YEARS K = 0
11 K = K + 1
12 IF K> 10 అప్పుడు GOTO 20 ELSE GOTO 11
20 ప్రింట్ కె
21 END

ప్రోగ్రామ్ 10 వ పంక్తిలో ప్రారంభమవుతుంది, K 0 కి షెడ్యూల్ చేయబడిన వెంటనే, అది 11 వ పంక్తికి చేరుకుంటుంది. మేము 1 నుండి K కి చేర్చిన తరువాత, 12 వ పంక్తికి వెళ్తాము.

ఈ సమయంలో K 10 కన్నా ఎక్కువ ఉంటే మనకు ఆసక్తి ఉండవచ్చు. ఒకవేళ అది ఉంటే, తరువాత మనం 20 వ పంక్తికి వెళ్తాము, లేదంటే 11 వ పంక్తికి తిరిగి వస్తాము.

20 వ పంక్తి K ని డాక్యుమెంట్ చేస్తుంది మరియు 21 వ పంక్తి కార్యక్రమాన్ని ముగించింది. లేబుల్‌లకు అధికారం లేనందున, సమస్యలు ఎక్కడ ఉన్నాయో రికార్డు చేయడానికి ప్రోగ్రామర్‌కు సహాయపడటానికి బేసిక్ లైన్ గణాంకాలను ఉపయోగిస్తుంది. గమ్యస్థానాల మధ్య తప్పించుకోవడానికి PIC లేబుళ్ళను ఉపయోగిస్తుంది - లేదా అది నిజంగా చేయగలదా?

సమస్యలు ఎక్కడ ఉన్నాయో మాకు తెలుసునని నిర్ధారించడానికి మేము లేబుల్‌లను ఉపయోగించుకుంటాము, అలాగే ఎక్కడ శోధించాలో PIC కి సరళమైన మార్గంలో తెలియజేయగలమని నిర్ధారించుకోండి.

ప్రోగ్రామ్ కౌంటర్ అని పిలువబడే అంతర్గత పంక్తి కౌంటర్ యొక్క ప్రయోజనాన్ని PIC పొందుతుంది. ప్రోగ్రామ్ కౌంటర్ (పిసికి సంక్షిప్తీకరించబడింది) ప్రస్తుత సూచన ఉన్న మెమరీ గమ్యం యొక్క కాలిబాట.

ఎంచుకున్న లేబుల్‌ను సందర్శించమని మేము పిఐసికి తెలియజేసినప్పుడల్లా, అది మెమరీ స్పాట్‌ను అర్థం చేసుకుంటుంది మరియు అందువల్ల ఆ మెమరీ గమ్యాన్ని చూసే వరకు పిసిని పెంచుతుంది. మేము పైన ఉన్న బేసిక్ ప్రోగ్రామ్‌ను తనిఖీ చేస్తున్నప్పుడు ఇది ఖచ్చితంగా అదే పద్ధతి. ప్రతి సూచనల పక్కన మెమరీ ఖాళీలు లేదా PC యొక్క అంశాలతో కోడ్ యొక్క విభాగం క్రింద ఉంది:

PC Instruction0000 movlw 03
0001 movwf 0C
0002 లూప్ decfsc 0C
0003 గోటో లూప్
0004 ముగింపు

పై ప్రదర్శనలో, మేము PC ని 0000 కు పరిష్కరించాము. దీనిపై మనకు movlw 03 సూచన ఉంది. PIC ఈ డేటాను అమలు చేసినప్పుడు, అది తదుపరి సూచనలను స్కాన్ చేయడానికి PC ని పెంచుతుంది. ఈ సమయంలో PIC movwf 0C ని చూస్తుంది. పిసి మళ్ళీ పెంచబడింది.

ఇప్పుడు PIC అధ్యయనాలు decfsc 0C. ఒకవేళ 0 సి యొక్క వివరాలు 0 కాకపోతే, ఆ సందర్భంలో పిసి 1 ద్వారా పెంచబడుతుంది, అలాగే కింది సూచన, గోటో లూప్, పిసికి 0003 స్థానానికి తిరిగి రావాలని తెలియజేస్తుంది, ఇది చెప్పిన లూప్ ఉంది. ఒకవేళ 0 సి యొక్క వివరాలు 0 అయితే, పిసిని 2 పెంచాలని సలహా ఇస్తే, తరువాతి సూచనలను వదిలివేయండి.

డేటా పట్టికలను అర్థం చేసుకోవడం

ఇది PC ని 0004 స్థానంలో ఉంచుతుంది, దీనిలో ప్రోగ్రామ్ ముగుస్తుంది. గమ్యస్థానాలు సమీకరించేవారిచే నిర్ణయించబడతాయి మరియు PC సాధారణంగా ఏమి సాధిస్తుందో మేము ఆందోళన చెందాల్సిన అవసరం లేదు. వరకు, డేటా పట్టికలను ఉపయోగించినప్పుడు మనం చేసే విధంగానే దానిని నియంత్రణలోకి తీసుకురావాల్సిన అవసరాన్ని మేము కనుగొంటాము. డేటా పట్టిక ఎలా పనిచేస్తుందో వివరించడానికి అత్యంత అనుకూలమైన మార్గం, ఒక దృష్టాంతంతో ప్రారంభించడం.

పిసి ఈక్ 02
movlw 03
కాల్ టేబుల్
:
పట్టిక addwf PC
retlw 01
retlw 02
retlw 03
retlw 04
retlw 05
retlw 06
retlw 07
తిరిగి

ప్రారంభ సూచన ప్రోగ్రామ్ కౌంటర్ (02 హెచ్) చిరునామాతో లేబుల్ పిసిని కేటాయించడం. 03h విలువను w రిజిస్టర్‌లో ఉంచిన వెంటనే మేము ఉంటాము. మేము ఆ తరువాత టేబుల్‌కు కమ్యూనికేట్ చేస్తాము. సబ్‌ట్రౌటిన్ పట్టికలోని మొట్టమొదటి పంక్తి W రిజిస్టర్ (03 హెచ్) వివరాలను ప్రోగ్రామ్ కౌంటర్‌కు పెంచుతుంది.

ఇది ప్రోగ్రామ్ కౌంటర్‌ను 3 పెంచడానికి లేదా వేరే విధంగా చెప్పడానికి ప్రేరేపిస్తుంది, 3 పంక్తులను కొనసాగించడానికి ప్రోగ్రామ్ కౌంటర్‌ను ప్రేరేపిస్తుంది. కౌంటర్ దాని క్రింద 3 పంక్తులు వచ్చినప్పుడు, PIC ఇన్స్ట్రక్షన్ retlw ను గుర్తిస్తుంది. ఈ ఆదేశం దానిని అనుసరించే విలువను W రిజిస్టర్‌లోకి పంపుతుంది, తరువాత సబ్‌ట్రౌటిన్ నుండి తిరిగి వస్తుంది. RETLW ప్రాథమికంగా రిటర్న్, లిటరల్ టు డబ్ల్యూ.

రిటర్న్ అనే పదం తర్వాత నేను కామా ఉంచాను చూడండి. మేము సబ్‌ట్రౌటిన్‌లో ఉన్నందున, దాని ఉపరితలంపై రిటర్న్ ఇన్స్ట్రక్షన్ అవసరం. అందువల్ల బోధనలో RET. RETLW సూచనల తరువాత ఒక సంఖ్య, మరియు ఇది ఖచ్చితంగా W రిజిస్టర్‌లో ఉంచబడుతుంది.

ఈ సందర్భంలో ఇది ఫిగర్ 3. మేము W రిజిస్టర్‌కు ఏదైనా పరిమాణాన్ని నియమించగలము, ఈ సంఖ్యను టేబుల్ సబ్‌ట్రౌటిన్‌లోని ప్రోగ్రామ్ కౌంటర్‌తో కలిపినంత వరకు, మేము ఒక retlw సూచనను కనుగొనబోతున్నాము. పై దృష్టాంతంలో, మేము 1 నుండి 7 వరకు ఏదైనా సంఖ్యను కలిగి ఉండగలమని ఇది సూచిస్తుంది. ఒకవేళ మేము సబ్‌ట్రౌటిన్‌ను దాటి ముందుకు వెళితే, మేము ప్రోగ్రామ్ యొక్క అదనపు విభాగాన్ని ప్రదర్శించగలుగుతాము. ఈ కారణంగా, సాధారణంగా డేటా పట్టికను పిఐసి ప్రోగ్రామ్ చివరలో ఉంచడం చాలా మంచి చర్య, అందువల్ల మేము ఆ సందర్భంలో ఓవర్‌షూట్ చేస్తే మేము ఎలాగైనా ప్రోగ్రామ్ ముగింపుకు చేరుకుంటాము.

అంతరాయాల అంశం త్రూ వెళ్ళడానికి చాలా పొడవైనది మరియు కష్టతరమైనది.

అంతరాయాలను వివరించే సంక్లిష్టమైన పద్ధతిని మీరు కనుగొనలేరు, అయితే ఈ భాగం చివరలో కొంచెం అదృష్టంతో మీరు మీ స్వంత ప్రోగ్రామ్‌లలో అంతరాయాలను వర్తింపజేయవచ్చు.
మేము విభాగాన్ని 2 దశలుగా విభజించాము. అంటే టాపిక్‌ని విభాగాలుగా విడదీయడం, సులభంగా అర్థం చేసుకోవడానికి మీకు సులభమైన ప్లిట్ అప్‌ను అందించడం.

అంతరాయం అంటే ఏమిటి? ఖచ్చితంగా, ఈ పదం సూచించినట్లుగా, అంతరాయం అనేది ఒక సాంకేతికత లేదా ఒక సంకేతం, ఇది మైక్రోప్రాసెసర్ / మైక్రోకంట్రోలర్‌ను ఏదైనా విషయం నుండి నిరోధించగలదు.

మీకు రోజువారీ దృష్టాంతం ఇవ్వడానికి నన్ను అనుమతించండి. మీరు మీ స్వంత ఇంటిలో విశ్రాంతి తీసుకుంటున్నారని, మరొక వ్యక్తితో సంభాషిస్తున్నారని అనుకోండి. అకస్మాత్తుగా ఫోన్ ధ్వనిస్తుంది.

మీరు మాట్లాడటం మానేసి, కాల్ చేసిన వ్యక్తితో మాట్లాడటానికి టెలిఫోన్‌ను పట్టుకోండి. మీరు మీ టెలిఫోన్ పరస్పర చర్య చేసిన తర్వాత, టెలిఫోన్ మోగే ముందు వ్యక్తితో సంభాషించడానికి తిరిగి రావాలని మీరు నిర్ణయించుకుంటారు. మీరు ఎవరితోనైనా చాట్ చేసేటప్పుడు ప్రధాన దినచర్యను పరిగణనలోకి తీసుకోవడం సాధ్యమే, ఫోన్ రింగింగ్ మీ సంభాషణకు అంతరాయం కలిగిస్తుంది మరియు దినచర్యలో విరామం ఫోన్‌లో మాట్లాడే పద్ధతి.

ఫోన్ చర్చ ముగిసినప్పుడు, మీరు మీ ప్రాధమిక దినచర్యకు తిరిగి వెళ్లండి. ప్రాసెసర్ చర్య తీసుకోవడానికి ఎలా అంతరాయం కలిగిస్తుందో ఈ దృష్టాంతం ఖచ్చితంగా చెప్పవచ్చు.

ప్రాధమిక ప్రోగ్రామ్ పనిచేస్తోంది, ఒక సర్క్యూట్లో నిర్దిష్ట పనితీరును నిర్వహిస్తుంది, అయితే అంతరాయం ఏర్పడినప్పుడు ప్రాధమిక ప్రోగ్రామ్ ఆగిపోతుంది, అయితే వేరే దినచర్య జరుగుతుంది. రొటీన్ ముగుస్తుంది, ప్రాసెసర్ మునుపటిలాగే ప్రాధమిక దినచర్యకు తిరిగి వెళుతుంది.

అంతరాయాలను అర్థం చేసుకోవడం

PIC అంతరాయం యొక్క 4 వనరులను కలిగి ఉంది. వాటిని రెండు గ్రూపులుగా విభజించవచ్చు. రెండు అంతరాయాల మూలాలు, వీటిని పిఐసికి బాహ్యంగా ఉపయోగించుకోవచ్చు, మిగిలిన రెండు అంతర్గత ప్రక్రియలు. ఇక్కడ రెండు బాహ్య రకాలను స్పష్టం చేద్దాం. మేము టైమర్‌ల వద్దకు వచ్చి డేటాను నిల్వ చేసిన తర్వాత మిగతా రెండు వేర్వేరు ట్యుటోరియల్‌లలో వివరించబడతాయి.

మీరు PIC యొక్క పిన్-అవుట్ ను తనిఖీ చేస్తే, పిన్ 6 అది RB0 / INT అని మీరు గమనించవచ్చు. ఈ సమయంలో, RB0 స్పష్టంగా పోర్ట్ B బిట్ 0. INT ఇది బయటి అంతరాయ పిన్‌గా కాన్ఫిగర్ చేయవచ్చని సూచిస్తుంది. ఇంకా, పోర్ట్ బి పిన్స్ 4 నుండి 7 వరకు (పిన్స్ 10 నుండి 13 వరకు) అంతరాయాల కోసం కూడా ఉపయోగించవచ్చు. మేము INT లేదా మరొక పోర్ట్ B పిన్‌లను ఉపయోగించుకునే ముందు, మేము రెండు పనులను సాధించాలి. మొదట మేము అంతరాయాలను ఉపయోగించుకుంటామని పిఐసికి తెలియజేయాలి.

తరువాత, మనం ఏ పోర్ట్ బి పిన్‌ను I / O పిన్‌గా కాకుండా అంతరాయంగా ఉపయోగించుకోబోతున్నాం. PIC లోపల మీరు INTCON అని పిలువబడే రిజిస్టర్‌ను కనుగొనవచ్చు మరియు చిరునామా 0Bh వద్ద ఉంటుంది. ఈ రిజిస్టర్‌లో మీరు ప్రారంభించబడిన లేదా నిలిపివేయబడిన 8 బిట్‌లను కనుగొంటారు. INTCON యొక్క బిట్ 7 ను GIE అంటారు. ఇది గ్లోబల్ ఇంటర్‌రంగ్ప్ట్ ఎనేబుల్. దీన్ని 1 కి పరిష్కరించడం మేము అంతరాయాన్ని ఉపయోగిస్తామని PIC కి తెలియజేస్తుంది.

INTCON యొక్క బిట్ 4 ను INTE, INTerrupt Enable అంటారు. ఈ బిట్‌ను 1 కి ఉంచడం వలన RB0 అంతరాయ పిన్‌గా మారబోతోందని PIC కి తెలియజేస్తుంది. RBIE అని పిలువబడే బిట్ 3 ను కాన్ఫిగర్ చేయడం, మేము పోర్ట్ బి బిట్లను 4 నుండి 7 వరకు ఉపయోగించబోతున్నామని పిఐసికి తెలియజేస్తుంది. ఈ సమయంలో పిన్ ఈ పిన్ ఎప్పుడు ఎక్కువ లేదా తక్కువగా ఉంటుందో అర్థం చేసుకుంటుంది, అది ఏమి చేస్తుందో ఆపివేసి, అంతరాయంతో ముందుకు సాగాలి దినచర్య. ఈ సమయంలో, అంతరాయం ఆరోహణ అంచు (0V నుండి + 5V) లేదా సిగ్నల్ యొక్క డ్రాపింగ్ ఎడ్జ్ (+ 5V నుండి 0V) పరివర్తనలో ఉందా లేదా అనే విషయాన్ని మేము PIC కి తెలియజేయాలి.

ఒక్కమాటలో చెప్పాలంటే, ప్రతిసారీ సిగ్నల్ తక్కువ నుండి ఎత్తుకు లేదా అధిక నుండి తక్కువకు కదిలేటప్పుడు PIC అంతరాయం కలిగించాలని మేము కోరుకుంటున్నాము. అపరాధం ద్వారా, పెరుగుతున్న అంచున ఉంచడానికి దీనిని ఏర్పాటు చేయవచ్చు.

అంచు ‘ట్రిగ్గరింగ్’ 81 వ చిరునామాలో OPTION రిజిస్టర్ అని పిలువబడే అదనపు రిజిస్టర్‌లో షెడ్యూల్ చేయబడింది. మేము ఉత్సాహంగా ఉన్న బిట్ బిట్ 6, దీనిని తరచుగా INTEDG అని పిలుస్తారు.

దీన్ని 1 కి సెట్ చేయడం వలన మౌంటు అంచు (డిఫాల్ట్ స్టేట్) పై అంతరాయం కలిగించడానికి PIC ని ప్రేరేపిస్తుంది మరియు దానిని 0 కి సెట్ చేయడం వలన స్లైడింగ్ అంచున అంతరాయం కలిగించడానికి PIC ని ప్రేరేపిస్తుంది. పెరుగుతున్న అంచున PIC సక్రియం కావాలని మీరు కోరుకుంటే, మీరు ఖచ్చితంగా ఈ పనికి ఏమీ చేయనవసరం లేదు.

ఈ సమయంలో, పాపం, ఆప్షన్ రిజిస్టర్ బ్యాంక్ 1 లో ఉంది, అంటే బ్యాంక్ 0 నుండి బ్యాంక్ 1 కి సవరించడం, ఆప్షన్ రిజిస్టర్‌లో బిట్‌ను సెట్ చేయడం, బ్యాంక్ 0 కి తిరిగి వచ్చిన తర్వాత మేము ఆనందించాము. ఇక్కడ ప్రతి బిట్‌ను సాధించడం ఇక్కడ ముఖ్యమైనది ఒకే సమ్మెలో బ్యాంక్ 1 రిజిస్టర్లలో, ఉదాహరణకు పోర్ట్ పిన్‌లను ఏర్పాటు చేయడం, మీరు పూర్తి చేసిన తర్వాత బ్యాంక్ 0 కి తిరిగి రావడం.

మంచిది, తత్ఫలితంగా పిఐసికి ఏ పిన్ అంతరాయం కలిగిస్తుందో మేము తెలియజేసాము, మరియు ఎక్కడ ట్రిగ్గర్ చేయాలో, ప్రోగ్రామ్‌లో ఏమి జరుగుతుంది మరియు పిఐసి ఎప్పుడైనా అంతరాయం జరిగినప్పుడు? కొన్ని అంశాలు జరుగుతాయి. మొదట, ‘జెండా’ షెడ్యూల్ చేయబడింది.

ఇది PIC యొక్క అంతర్గత ప్రాసెసర్‌కు అంతరాయం కలిగించినట్లు తెలియజేస్తుంది. తరువాత, ప్రోగ్రామ్ కౌంటర్ (నేను మునుపటి ట్యుటోరియల్‌లో మాట్లాడాను) PIC లోని ఒక నిర్దిష్ట చిరునామాకు చిట్కాలు. వీటన్నింటినీ ఒక్కొక్కటిగా వేగంగా చూద్దాం. అంతరాయ జెండా మా INTCON రిజిస్టర్‌లో, బిట్ 1 అనేది INTF అని పిలువబడే అంతరాయ జెండా. ఈ సమయంలో, ఏదైనా అంతరాయం ఏర్పడినప్పుడు, ఈ జెండా 1 కు పరిష్కరించబడుతుంది.

అంతరాయం లేనప్పుడు, జెండా 0 కి ఉంచబడుతుంది. అదే విధంగా అన్ని సాధనల గురించి. ఈ సమయంలో మీరు ‘పాయింట్ ఏమిటి?’ అని ఆలోచిస్తూ ఉండవచ్చు, ఖచ్చితంగా, ఈ జెండా 1 కి షెడ్యూల్ చేయబడినప్పటికీ, PIC చేయలేకపోయింది మరియు మరొక అంతరాయానికి ప్రతిస్పందించదు. అందువల్ల, మేము అంతరాయం కలిగించాము. జెండా 1 కి స్థిరంగా ఉంటుంది మరియు అంతరాయం కలిగించే పని కోసం PIC మా దినచర్యకు వెళ్ళవచ్చు.

ఈ జెండా 1 కి పరిష్కరించబడనప్పుడు మరియు అంతరాయానికి సమాధానం ఇవ్వడం కొనసాగించడానికి PIC కి అనుమతి ఇవ్వబడినప్పుడు, పిన్‌ను నిరంతరం పల్సింగ్ చేయడం వలన PIC మా అంతరాయ దినచర్య ప్రారంభానికి తిరిగి రాగలదు మరియు దానిని పూర్తి చేయదు. టెలిఫోన్ యొక్క నా దృష్టాంతానికి తిరిగి రావడం, ఇది టెలిఫోన్‌ను ఎత్తడం లాంటిది, మరియు వెంటనే చర్చించటానికి ముందుకు సాగడం వల్ల మరొక వ్యక్తి మీతో మాట్లాడాలని కోరుకుంటున్నందున మళ్ళీ మళ్లీ మోగడం ప్రారంభమవుతుంది.

ఒక డైలాగ్‌ను పూర్తి చేయడం మంచిది, ఆపై తదుపరి వ్యక్తితో మాట్లాడటానికి ఫోన్‌ను మళ్లీ పట్టుకోండి. మీరు ఈ జెండాతో ఒక చిన్న సమస్యను కనుగొనవచ్చు. PIC ఈ జెండాను త్వరగా 1 కి సెట్ చేసినప్పటికీ, అది మళ్ళీ 0 గా సెట్ చేయదు! ఆ కార్యాచరణను ప్రోగ్రామర్ తప్పక ఉపయోగించాలి - అనగా మీరు. నేను అప్రమత్తంగా ఉన్నందున ఇది అప్రయత్నంగా సాధించవచ్చు మరియు PIC అంతరాయ దినచర్యను నిర్వహించిన తర్వాత సాధించాల్సిన అవసరం ఉంది.

మెమరీ స్థానం మీరు మొదట్లో PIC ని శక్తివంతం చేసినప్పుడు, లేదా రీసెట్ ఉన్నపుడు, 0000h ను పరిష్కరించడానికి ప్రోగ్రామ్ కౌంటర్ చిట్కాలు, ఇది ప్రోగ్రామ్ మెమరీ ప్రారంభంలో వెంటనే ఉంటుంది. కానీ, అంతరాయం ఏర్పడితే, ప్రోగ్రామ్ కౌంటర్ 0004 హెచ్ చిరునామాను సూచిస్తుంది.

అందువల్ల, మేము మా ప్రోగ్రామ్‌ను కంపోజ్ చేస్తున్నప్పుడు, మేము మొదట పిఐసికి 0004 హెచ్ చిరునామాను హాప్ చేయమని తెలియజేయాలి మరియు ప్రోగ్రామ్ యొక్క మిగిలిన భాగం నుండి వివిక్త 0004 హెచ్ చిరునామాతో ప్రారంభమయ్యే అంతరాయ దినచర్యను నిర్వహించాలి.

ఇది నిర్వహించడానికి ఇబ్బంది లేకుండా ఉంటుంది. ప్రారంభంలో, మేము ORG అని పిలువబడే ఆదేశంతో మా ప్రోగ్రామ్‌ను ప్రారంభిస్తాము. ఈ ఆదేశం మూలం లేదా ప్రారంభాన్ని సూచిస్తుంది. మేము దానికి చిరునామాతో అంటుకుంటాము. PIC చిరునామా 0000h వద్ద ప్రారంభమవుతుంది కాబట్టి, మేము ORG 0000h అని టైప్ చేస్తాము. ఆ తరువాత మనం 0004 హెచ్ చిరునామాను దాటాలి. మా ప్రాధమిక ప్రోగ్రామ్‌కు చిట్కాలు ఇచ్చే లేబుల్‌తో పాటు GOTO సూచనలను ఉంచడం ద్వారా మేము దీనిని సాధిస్తాము.

ఆ తరువాత మేము ఈ GOTO ఆదేశానికి మరో ORG తో కట్టుబడి ఉన్నాము, ఈ క్షణం 0004h చిరునామాతో. ఈ ఆదేశం తరువాత మేము మా అంతరాయ దినచర్యను చొప్పించాము. ఈ సమయంలో, మేము రెండవ ORG ఆదేశాన్ని అనుసరించి నేరుగా మా అంతరాయ దినచర్యను టైప్ చేయగలము, లేదా అంతరాయ దినచర్యను సూచించే GOTO స్టేట్‌మెంట్‌ను ఉంచగలుగుతాము.

ఇది నిజంగా మీ వైపు ఉన్న ఎంపికకు సంబంధించినది. ఇది అందించే PIC కి తెలియజేయడానికి అంతరాయ దినచర్య ముగింపుకు చేరుకుంది, మేము RTFIE ఆదేశాన్ని దినచర్య చివరిలో ఉంచాలి. ఈ ఆదేశం అంతరాయ దినచర్య నుండి తిరిగి రావడాన్ని సూచిస్తుంది. PIC దీనిని గమనించినప్పుడు, ప్రోగ్రామ్ కౌంటర్ అంతరాయం ఏర్పడటానికి ముందు PIC వద్ద ఉన్న తుది స్థానానికి సూచిస్తుంది. పై వాటిని ప్రదర్శించడానికి కోడ్ యొక్క సంక్షిప్త విభాగం క్రింద మేము ఏర్పాటు చేసాము:

అంతరాయాలను ఉపయోగించినప్పుడు మీకు తెలియజేయవలసిన కొన్ని అంశాలు ఉన్నాయి. ప్రారంభంలో మీరు మీ ప్రాధమిక ప్రోగ్రామ్ మరియు అంతరాయ దినచర్యలో ఒకేలాంటి రిజిస్టర్‌ను ఉపయోగిస్తుంటే, అంతరాయం జరిగినప్పుడు రిజిస్టర్ వివరాలు చాలావరకు మారుతాయని గుర్తుంచుకోండి.

ఉదాహరణకు, పోర్ట్ ఎ ప్రాధమిక ప్రోగ్రామ్‌కు డేటాను ఫార్వార్డ్ చేయడానికి w రిజిస్టర్‌ను ఉపయోగించుకుందాం, అందువల్ల మీరు డేటాను ఒక గమ్యం నుండి మరొక గమ్యస్థానానికి మార్చడానికి అంతరాయ దినచర్యలో w రిజిస్టర్‌ను ఉపయోగించుకోవచ్చు.

ఒకవేళ మీరు జాగ్రత్తగా ఉండకపోతే, w రిజిస్టర్ అంతరాయ దినచర్యలో ఉన్నప్పుడు అందుకున్న చివరి విలువను కలిగి ఉంటుంది, కాబట్టి మీరు అంతరాయం నుండి తిరిగి వచ్చినప్పుడు ఈ సమాచారం మీరు ఇంతకు ముందు కలిగి ఉన్న విలువ కంటే పోర్ట్ A కి పంపబడుతుంది. అంతరాయం ఏర్పడింది.

అంతరాయ దినచర్యలో మీరు మరోసారి ఉపయోగించుకునే ముందు w రిజిస్టర్ వివరాలను క్షణికావేశంలో సేవ్ చేయడం దీని చుట్టూ ఉన్న మార్గాలు. రెండవది, మీరు ఒక అంతరాయం జరిగినప్పుడు మరియు తరువాత ఎప్పుడు తలెత్తుతుందో మధ్య ఆలస్యాన్ని కనుగొనవచ్చు. మీరు అర్థం చేసుకున్నప్పుడు, PIC బాహ్య గడియారాన్ని కలిగి ఉంది, ఇది క్రిస్టల్ కావచ్చు లేదా అది రెసిస్టర్-కెపాసిటర్ కాంబో కావచ్చు.

ఈ గడియారం యొక్క పౌన frequency పున్యం ఎలా ఉన్నా, PIC దానిని 4 ద్వారా విభజిస్తుంది, తరువాత దాని అంతర్గత సమయం కోసం దీనిని ఉపయోగిస్తుంది. ఉదాహరణకు, మీ PIC కి 4MHz క్రిస్టల్ లింక్ చేయబడి ఉంటే, ఆ సందర్భంలో PIC 1MHz వద్ద సూచనలను చేస్తుంది. ఈ ఇంటీరియర్ టైమింగ్‌ను ఇన్‌స్ట్రక్షన్ సైకిల్ అంటారు. ఈ సమయంలో, మీరు అంతరాయాల మధ్య 3 నుండి 4 ఇన్స్ట్రక్షన్ రౌండ్లను ప్రారంభించాల్సిన అవసరం ఉందని డేటా షీట్ (నిస్సందేహంగా చిన్న ముద్రణలో) పేర్కొంది.

నా 4 రౌండ్లను ప్రారంభించడం. ఆలస్యం వెనుక కారణం పిఐసికి అంతరాయ చిరునామా, జెండాకు దూకడానికి సమయం అవసరం మరియు అంతరాయ దినచర్య నుండి తిరిగి రావడానికి సమయం అవసరం. అందువల్ల, మీరు PIC కోసం అంతరాయాన్ని సక్రియం చేయడానికి ప్రత్యామ్నాయ సర్క్యూట్‌తో పని చేస్తే దీన్ని మీ మనస్సులో ఉంచుకోండి.

ఈ సమయంలో, మీరు పోర్ట్ B యొక్క 4 నుండి 7 బిట్లను అంతరాయంగా ఉపయోగించుకుంటే. మీరు అంతరాయంగా పనిచేయడానికి పోర్ట్ B లో నిర్దిష్ట పిన్‌లను ఎంచుకోలేరు.

అందువల్ల, మీరు ఈ పిన్‌లను అనుమతించినట్లయితే, అవి అన్నింటినీ పొందవచ్చు. కాబట్టి, ఉదాహరణకు, మీరు బిట్స్ 4 మరియు 5 లను కలిగి ఉండలేరు - బిట్స్ 6 మరియు 7 ఒకే సమయంలో అధికారం పొందుతాయి. అంతరాయాన్ని సూచించడానికి నాలుగు బిట్‌లను పొందడం యొక్క ఉద్దేశ్యం ఏమిటి? ఖచ్చితంగా, మీరు PIC వరకు కట్టిపడేసిన సర్క్యూట్ కలిగి ఉండవచ్చు, ఒకవేళ నాలుగు పంక్తులు ఎవరైనా ఎత్తుకు వెళితే, ఆ సందర్భంలో ఇది PIC తక్షణమే ప్రభావితం చేయాల్సిన అవసరం ఉన్న సమస్య కావచ్చు.

దీనికి ఒక ఉదాహరణ హోమ్ సెక్యూరిటీ అలారం కావచ్చు, దీనిలో నాలుగు సెన్సార్లు పోర్ట్ బి పిన్స్ 4 నుండి 7 వరకు అనుసంధానించబడి ఉంటాయి. ఏదైనా నిర్దిష్ట సెన్సార్ PIC ని అలారంను ప్రేరేపించమని ప్రాంప్ట్ చేయగలదు మరియు అలారం సిగ్నలింగ్ దినచర్య అంతరాయ దినచర్య. ఇది పోర్టులను నిరంతరం తనిఖీ చేస్తుంది మరియు విభిన్న విషయాలతో కొనసాగడానికి PIC ని అనుమతిస్తుంది. తదుపరి ట్యుటోరియల్‌లో, అంతరాయాన్ని నిర్వహించడానికి మేము ఒక ప్రోగ్రామ్‌ను కంపోజ్ చేయబోతున్నాము.

చివరి ట్యుటోరియల్‌లో మేము చాలా ప్రాథమిక విషయాలతో వ్యవహరించాము, అందువల్ల మేము మా మొదటి ప్రోగ్రామ్‌ను కంపోజ్ చేసిన సమయం వచ్చిందని నేను భావిస్తున్నాను.

మేము వ్రాసే ప్రోగ్రామ్ మేము స్విచ్ ఆన్ చేసిన సందర్భాల పరిమాణాన్ని లెక్కిస్తుంది, ఆపై సంఖ్యను ప్రదర్శిస్తుంది.

ప్రోగ్రామ్ 0 నుండి 9 వరకు లెక్కించబడుతుంది, బైనరీ రూపంలో 4 LED లలో చూడవచ్చు, ఇన్పుట్ లేదా అంతరాయంతో పాటు RB0 లో ఉంటుంది.

అంతరాయం జరిగినప్పుడల్లా ప్రోగ్రామ్ కౌంటర్ సూచించే చిరునామాపైకి దూసుకెళ్లమని పిఐసికి తెలియజేయడం మనం నిర్వహించాల్సిన మొదటి విషయం.

హెక్సాడెసిమల్ సంఖ్యలను ప్రదర్శించే ప్రత్యేకమైన పద్ధతిని మేము ఉపయోగిస్తున్నామని మీరు గమనిస్తారు. నేను జరగడానికి ముందు F9h ను వర్తించండి, దీనిలో h హెక్సాడెసిమల్‌ను సూచిస్తుంది. మేము దీనిని 0xF9 గా వ్రాయగలము, ఇది ఇప్పటి నుండి మనం ఉపయోగించబోయే నిర్మాణం.

ఇప్పుడు మనం అంతరాయాలను ఉపయోగించబోతున్నామని PIC కి చెప్పాలి మరియు మేము RB0 పిన్ 6 ను అంతరాయ పిన్‌గా ఉపయోగిస్తున్నాము:

bsf INTCON, 7GIE - గ్లోబల్ ఇంటరప్ట్ ఎనేబుల్ (1 = ఎనేబుల్)
bsf INTCON, 4INTE - RB0 ఇంటరప్ట్ ఎనేబుల్ (1 = ఎనేబుల్)
నేను అంతరాయ జెండాను క్లియర్ చేయబోతున్నాను (నేను ఎప్పుడూ దేనినీ నమ్మను!)
bcf INTCON, 1INTF - ఫ్లాగ్ బిట్‌ను క్లియర్ చేయండి

ప్రస్తుతం మన 2 పోర్టులను ఏర్పాటు చేయాలి. మేము ఇప్పుడు RB0 ను అంతరాయ పిన్‌గా ఉపయోగిస్తున్నందున, దీన్ని ఇన్‌పుట్‌గా స్థాపించాల్సిన అవసరం ఉందని గుర్తుంచుకోండి.

స్విచ్ గణనల సంఖ్యను నిల్వ చేయడానికి మేము COUNT అనే వేరియబుల్‌ని ఉపయోగించబోతున్నాము. మేము పోర్ట్ A లో విలువను పెంచవచ్చు, కాని మన అంతరాయ దినచర్యను వ్రాసేటప్పుడు నేను ఎందుకు వేరియబుల్ ఉపయోగిస్తున్నానో మీరు చూస్తారు.

అందువల్ల, మా ప్రధాన కార్యక్రమం కంపోజ్ చేయబడింది మరియు ఈ సమయంలో మేము అంతరాయం జరిగినప్పుడు ఎలా కొనసాగాలో PIC కి తెలియజేయాలి. ఈ ఉదాహరణలో, మా అంతరాయం బహుశా స్విచ్ అవుతుంది. స్విచ్ పరిమితం చేయబడిన ప్రతిసారీ సర్దుబాటు చేయగల COUNT కి PIC ఒకటి కావాలి.

ఏదేమైనా, స్విచ్ 0 నుండి 9 వరకు ఎన్ని సందర్భాలను మూసివేస్తుందో చూపించాలనుకుంటున్నాము. పైన, ప్రతిసారీ అంతరాయం ఏర్పడినప్పుడు పోర్ట్ A లో విలువను పెంచగలిగామని నేను చెప్పాను. ఏదేమైనా, పోర్ట్ A కి 5 బిట్స్ ఉన్నాయి, ఒకవేళ మేము పోర్టును పెంచినట్లయితే, మేము అత్యధికంగా 31 సంఖ్యను కలిగి ఉండబోతున్నాము. 31 వరకు కదలకూడదని నేను ఎందుకు ఎంచుకున్నాను అనేదానికి కొన్ని వివరణలు ఉన్నాయి.

ప్రారంభంలో, మేము 7-సెగ్మెంట్ స్క్రీన్‌ను ఉపయోగిస్తాము, ఇది గరిష్టంగా 0 నుండి 15 వరకు (హెక్స్‌లో 0 నుండి F వరకు) మాత్రమే వెళ్ళగలదు. తరువాత, గత కొన్ని పాఠాలలో మీరు పొరపాట్లు చేసిన కొన్ని అంకగణిత ఆదేశాలను మీకు చూపించాలనుకుంటున్నాను.

అందువల్ల మేము మా అంతరాయ దినచర్యతో కొనసాగుతాము. COUNT లోని విషయాలను పోర్టాకు మార్చడానికి మేము దీనిని వర్తింపజేస్తున్నందున, ప్రస్తుతం మనం సాధించాల్సిన మొదటిది మా w రిజిస్టర్ వివరాలను క్లుప్తంగా నిల్వ చేస్తుంది. ఒకవేళ మేము దాన్ని సేవ్ చేయకపోతే, మన అంకగణితం కారణంగా మనం పూర్తిగా భిన్నమైన సంఖ్యను ఇవ్వగలుగుతాము. అందువల్ల మొదట దాన్ని సాధిద్దాం:

ఈ సమయంలో COUNT విలువ 9 లేదా అంతకంటే ఎక్కువ ఉంటే మేము అర్థం చేసుకున్నాము. COUNT 9 కన్నా ఎక్కువ ఉంటే, దాన్ని తిరిగి 0 కి ఉంచండి, లేదంటే మేము దానిని పోర్ట్ A కి బట్వాడా చేయగలమని నిర్ధారించుకోవడానికి ప్రధాన ప్రోగ్రామ్‌కు తిరిగి వెళ్ళండి. BTFSS ఆదేశం మీరు అర్థం చేసుకున్నప్పటి నుండి
క్యారీ ఫ్లాగ్ షెడ్యూల్ చేయబడితే సూచన, అంటే COUNT = 10:

ఇప్పుడు చేయవలసిన ఏకైక విషయం ఏమిటంటే, సమిష్టిగా నమోదు చేయడం మరియు మా స్థిరాంకాలకు విలువలను నిర్ణయించడం, ఇది మా ప్రోగ్రామ్ ప్రారంభంలోనే మేము చేయగలుగుతాము.

మీరు స్విచ్ ఆన్ చేసిన ప్రతిసారీ, LED లు బైనరీలో 0000 నుండి 1010 వరకు లెక్కించబడతాయి మరియు తరువాత 0000 వరకు ఉంటాయి.

కింది బొమ్మ పైన వివరించిన కోడ్‌కు అనుకూలమైన సర్క్యూట్ రేఖాచిత్రాన్ని చూపిస్తుంది. ఆసక్తికరంగా మీరు టైమింగ్ కెపాసిటర్ డిజైన్‌లో చేర్చబడిందని కనుగొంటారు. ఆ సమయంలో మీతో ఏవీ లేనట్లయితే కెపాసిటర్‌ను చేర్చడాన్ని నివారించే స్వేచ్ఛ మీకు లభిస్తుంది.

ఇక్కడ కెపాసిటెన్స్ ఓసిలేటర్ పిన్ మరియు గ్రౌండ్ అంతటా విచ్చలవిడి కెపాసిటెన్స్ ద్వారా అమలులోకి వస్తుంది.
వాస్తవానికి ఇది కెపాసిటర్‌ను ఆచరణాత్మకంగా నివారించడానికి చాలా తెలివైన మార్గంగా అనిపించకపోవచ్చు, ఎందుకంటే విచ్చలవిడి విలువ వేర్వేరు ఇచ్చిన పరిస్థితులతో మారవచ్చు.

సర్క్యూట్లో కనిపించే మరొక విభాగం స్విచ్ అంతటా ఖండించే నెట్‌వర్క్. ఇది యాంత్రిక మార్పిడిలో జోక్యాన్ని నిరోధిస్తుంది మరియు మారడం ఒకే టోగుల్ లేదా బహుళ టోగుల్స్ అయితే PIC గందరగోళానికి గురికాకుండా చేస్తుంది.




మునుపటి: ప్రోగ్రామబుల్ బైడైరెక్షనల్ మోటార్ టైమర్ సర్క్యూట్ తర్వాత: బక్-బూస్ట్ సర్క్యూట్లు ఎలా పనిచేస్తాయి