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 அனுமதிக்கிறது, அதே நேரத்தில் போர்ட் B இல் வெளியீடு மற்றும் உள்ளீட்டு முள் இடையே தேர்ந்தெடுக்க TRISB வசதி செய்கிறது. வங்கி 0 இல் உள்ள தேர்வு பதிவு பயனரை அனுமதிக்கிறது வங்கி 1 க்கு புரட்ட.

முழு கருத்தையும் பின்வரும் விளக்கத்துடன் சுருக்கமாகக் கூறுவோம்:

நிலை:

வங்கி 0 இலிருந்து வங்கி 1 க்கு மாறுவதற்கு, STATUS பதிவேட்டைக் கட்டளையிடுகிறோம். STATUS பதிவின் பிட் # 5 ஐ 1 ஆக அமைப்பதன் மூலம் இது செயல்படுத்தப்படுகிறது. வங்கி 0 க்குத் திரும்புவதற்காக, STATUS பதிவின் பிட் 5 ஐ 0 க்கு ஒதுக்குகிறோம். STATUS பதிவு 03h முகவரியில் நிலைநிறுத்தப்பட்டுள்ளது, இங்கே h என்பது எண்ணைக் குறிக்கிறது ஹெக்ஸாடெசிமலில் இருக்கலாம்.

TRISA மற்றும் TRISB:

இவை 85h மற்றும் 86h முகவரியில் அமைந்துள்ளன. ஒரு முள் ஒரு வெளியீடு அல்லது உள்ளீடாக நிரலாக்க, பதிவேட்டில் உள்ள குறிப்பிட்ட பிட்டுக்கு பூஜ்ஜியம் அல்லது ஒன்றை வழங்குவோம். இப்போது இது பைனரி அல்லது ஹெக்ஸ் வழியாக இரண்டு வழிகளில் செய்யப்படலாம். ஒருவர் அளவுருவை மாற்ற முடியாவிட்டால், அவர் அல்லது அவள் மதிப்புகளை செயல்படுத்த ஒரு அறிவியல் கால்குலேட்டருக்கு செல்லலாம்.

இப்போது போர்ட் ஏ இல் 5 ஊசிகளை வைத்திருக்கிறோம், இது 5 ஊசிகளுக்கு ஒத்திருக்கிறது. ஊசிகளில் ஒன்றை உள்ளீடுகளாக சரிசெய்ய விரும்பினால், குறிப்பிட்ட பிட்டுக்கு “1” ஐ வழங்குகிறோம்.

ஊசிகளில் ஒன்றை வெளியீடுகளாக ஒதுக்க விரும்பினால், குறிப்பிட்ட முள் “0” ஆக அமைப்போம். பிட்கள் பிட்களுடன் தொடர்புடைய துல்லியமாக உதவுகின்றன, அல்லது இன்னும் துல்லியமான பிட் 0 RA0, பிட் 1 RA1, பிட் 2 = RA2 மற்றும் பல. இதை இந்த வழியில் புரிந்துகொள்வோம்:

நீங்கள் RA0, RA3 மற்றும் RA4 ஐ வெளியீடுகளாக சரிசெய்ய விரும்புகிறீர்கள் என்று வைத்துக்கொள்வோம், RA1 / RA2 ஐ / ps ஆக, 00110 (06 ம) அனுப்புவதன் மூலம் இதைச் செய்வீர்கள். இங்கே சுட்டிக்காட்டப்பட்டுள்ளபடி பிட் 0 வலதுபுறம் இருக்கிறதா என்று பாருங்கள்:

போர்ட் ஒரு முள் 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 பதிவு என்பது ஒரு சாதாரண பதிவாகும், இது உங்கள் விருப்பத்தின் எந்த மதிப்பையும் ஒதுக்க உதவுகிறது. W க்கு ஒரு அளவை ஒதுக்கியவுடன், இதை வேறொரு மதிப்பில் சேர்ப்பதன் மூலம் தொடரலாம் அல்லது அதை நகர்த்தலாம். மற்றொரு மதிப்பு ஒதுக்கப்பட்டால், விவரங்கள் W இல் மேலெழுதப்படும்.

எஃப் பதிவு அதன் எழுதப்பட்ட விஷயத்தை ஒரு பதிவேட்டில் அனுப்புகிறது. இந்த எஃப் பதிவேட்டில் ஒரு பதிவின் மீது ஒரு மதிப்பை ஒதுக்க வேண்டும், இது STATUS அல்லது TRISA பதிவேடுகளுக்கு மேல் இருக்கலாம், ஏனெனில் இவை மதிப்புகளை நேரடியாக அவற்றின் மீது வைக்க அனுமதிக்காது. ஒரு எடுத்துக்காட்டு திட்டம்

பின்வரும் எடுத்துக்காட்டு குறியீட்டை ஆராய்வோம், இது மேலே உள்ள அறிவுறுத்தல் எவ்வாறு செயல்படுத்தப்படுகிறது என்பதைக் காண்பிக்கும், மேலும் பாடத்திட்டத்தில் சில வழிமுறைகளையும் காணலாம்.

மேலே விவாதிக்கப்பட்டபடி போர்ட் A ஐ சரிசெய்வதன் மூலம் ஆரம்பிக்கலாம்.

இதற்காக நாம் வங்கி 0 இலிருந்து வங்கி 1 க்கு மாற்ற வேண்டும், இது முகவரி 03 மணி, பிட் 5 முதல் 1 வரை அமைந்துள்ள STATUS பதிவேட்டை அமைப்பதன் மூலம் செய்யப்படுகிறது.

பி.எஸ்.எஃப் 03 ம, 5

பி.எஸ்.எஃப் என்றால் பிட் செட் எஃப். இந்த அறிவுறுத்தலுக்குப் பிறகு நாங்கள் இரண்டு எண்களைப் பயன்படுத்துகிறோம் - 03 மணி, இது STATUS பதிவு முகவரி, மற்றும் பிட் எண்ணுக்கு ஒத்த எண் 5.

எனவே, நாங்கள் சொல்வது “03h முதல் 1 வரை முகவரியில் பிட் 5 ஐ அமைக்கவும்”.

நாங்கள் இப்போது வங்கி 1 இல் இருக்கிறோம்.

MOVLW 00110 பி

பைனரி மதிப்பு 00110 ஐ (பி என்ற எழுத்தின் அர்த்தம் பைனரியில் உள்ளது) எங்கள் பொது நோக்கப் பதிவேட்டில் வைக்கிறோம். நிச்சயமாக இதை நான் ஹெக்ஸில் செய்திருக்க முடியும், இந்த விஷயத்தில் எங்கள் அறிவுறுத்தல் இருக்கும்:

MOVLW 06 ம

ஒன்று வேலை செய்கிறது. MOVLW என்பது ‘எழுத்து மதிப்பை W க்குள் நகர்த்தவும்’, அதாவது ஆங்கிலத்தில் நேரடியாகப் பின்தொடரும் மதிப்பை W பதிவேட்டில் வைக்கவும்.

இப்போது துறைமுகத்தை அமைக்க இந்த மதிப்பை எங்கள் TRISA பதிவேட்டில் வைக்க வேண்டும்:

MOVWF 85 ம

இந்த அறிவுறுத்தல் 'W இன் உள்ளடக்கங்களை தொடர்ந்து வரும் பதிவு முகவரிக்கு நகர்த்தவும்' என்பதைக் குறிக்கிறது, இந்த நிகழ்வில் முகவரி TRISA ஐக் குறிக்கிறது.

இந்த நேரத்தில் எங்கள் TRISA பதிவு 00110 ஐக் கொண்டுள்ளது, அல்லது வரைபடமாக வழங்கப்படுகிறது:

போர்ட் ஒரு முள் RA4 RA3 RA2 RA1 RA1 RA0

பைனரி 0 0 1 1 0

உள்ளீடு / வெளியீடு O O I I O.

எனவே இப்போது எங்கள் போர்ட் ஏ ஊசிகளை வைத்திருக்கிறோம், தகவல்களில் ஒன்றை சரிசெய்ய வங்கி 0 க்கு திரும்ப வேண்டும்.

பி.சி.எஃப் 03 ம, 5

இந்த அறிவுறுத்தல் பி.எஸ்.எஃப் இன் தலைகீழ் நிறைவேற்றுகிறது. இது “பிட் க்ளியர் எஃப்” என்பதைக் குறிக்கிறது. ஒத்த ஒரு ஜோடி எண்கள் பதிவின் முகவரி, இங்கே STATUS பதிவு, அதே போல் பிட் எண்ணிக்கை, இந்த நிகழ்வில் பிட் ஐந்து. தற்போது நாம் சரியாக முடித்திருப்பது என்னவென்றால், பிட் ஐந்தில் வரையறுக்கப்பட்டுள்ளது

STATUS பதிவு 0

இந்த நேரத்தில் நாங்கள் வங்கி 0 இல் திரும்பியுள்ளோம்.
பின்வருபவை அனைத்தும் ஒரே தொகுதியில் உள்ள குறியீடு:

பி.எஸ்.எஃப் 03 ம, 5 வங்கி 1 க்குச் செல்லுங்கள்
MOVLW 06h 00110 ஐ W இல் வைக்கவும்
MOVWF 85h 00110 ஐ TRISA இல் நகர்த்தவும்
BCF 03h, 5 வங்கி 0 க்கு திரும்பி வாருங்கள்

கடைசி அறிவுறுத்தலுக்குள், PIC இல் IO போர்ட் ஊசிகளை உள்ளீடு அல்லது வெளியீடாக நிறுவுவதற்கான வழியை நாங்கள் உறுதிப்படுத்தினோம்.

இந்த பாடத்திட்டத்தின் மூலம், துறைமுகங்களுக்கு தரவை அனுப்ப உங்களுக்கு உதவுகிறேன்.

துறைமுகங்களுக்கு தரவை அனுப்புகிறது

அடுத்தடுத்த டுடோரியலில், ஒரு முழுமையான நிரல் விவரம் மற்றும் நேரடியான சுற்று வரைபடம் ஆகியவற்றைக் கொண்ட ஒரு எல்.ஈ.டியை ஒளிரச் செய்வதன் மூலம் நாங்கள் முடிக்கப் போகிறோம், இதன் மூலம் பி.ஐ.சி நாங்கள் எதிர்பார்ப்பதை துல்லியமாகச் செய்வதைக் காணலாம்.

கீழேயுள்ள முடிவுகளுடன் உங்கள் PIC ஐ ஒன்றிணைத்து நிரல் செய்ய முயற்சிக்காதீர்கள், ஏனெனில் அவை எடுத்துக்காட்டுகள் மட்டுமே. ஆரம்பத்தில், போர்ட் ஏ பிட் 2 ஐ ஒரு வெளியீடாக நிறுவுவோம்:

முந்தைய அறிவுறுத்தலிலிருந்து இது அடையாளம் காணப்படலாம். ஒரே வேறுபாடு என்னவென்றால், முத்தரப்பு பதிவேட்டில் 0 மணிநேரத்தை வழங்குவதன் மூலம், A இன் ஒவ்வொரு பிட்டையும் வெளியீடாக சரி செய்துள்ளோம். எனவே இப்போது அவர் செய்ய வேண்டியது எல்.ஈ.டி.

ஊசிகளில் ஒன்றை (எல்.ஈ.டி உடன் இணைக்கப்பட்டவை) உயர்வாக திட்டமிடுவதன் மூலம் இதைச் செய்கிறோம். வேறுவிதமாகக் கூற, முள் ஒரு ‘1’ ஐப் பயன்படுத்துகிறோம். இது எவ்வாறு மேற்கொள்ளப்படுகிறது என்பதுதான் (ஒவ்வொரு வரியிலும் தெளிவுபடுத்துவதற்கான கருத்துகளைக் கவனிக்கவும்):

எனவே, இப்போது நாம் சாதித்திருப்பது எல்.ஈ.டி.யை ஒரு முறை அணைக்க வேண்டும். எல்.ஈ.டி தொடர்ந்து அணைக்க வேண்டும் என்பதே நாங்கள் விரும்புகிறோம்.

தொடக்கத்திற்குத் திரும்புவதற்கான நிரலைப் பெறுவதன் மூலம் இதை நாங்கள் அடைகிறோம். ஆரம்பத்தில் எங்கள் திட்டத்தின் தொடக்கத்தில் ஒரு குறிச்சொல்லை நிறுவுவதன் மூலம் இதைச் செய்கிறோம், அதன் பிறகு அங்கு திரும்பிச் செல்ல நிரலைத் தெரிவிப்போம். நாங்கள் ஒரு குறிச்சொல்லை மிகவும் நேராக குறிப்பிடுகிறோம்.

ஒரு வார்த்தையில் நாம் முக்கியமாக, START என்று சொல்லுங்கள், அடுத்த குறியீட்டை தட்டச்சு செய்க:

நிரூபிக்கப்பட்டபடி, திட்டத்தின் ஆரம்பத்தில் உடனடியாக ‘தொடங்கு’ என்ற வெளிப்பாட்டைக் குறிப்பிட்டோம்.

அடுத்து, திட்டத்தின் முடிவில் நாங்கள் ‘கோட்டோ ஸ்டார்ட்’ என்று தெளிவாகக் குறிப்பிட்டோம். ‘கோட்டோ’ அறிவுறுத்தல் அது அறிவித்ததைச் செய்கிறது.

இந்த நிரல் எல்.ஈ.டியை நாம் மின்சக்தியை அகற்றும் போதெல்லாம் அணைக்க மற்றும் முடக்குகிறது. எங்கள் திட்டத்தை மீண்டும் சரிபார்க்க வேண்டும்:

நிச்சயமாக நாங்கள் கருத்துகளைத் தவிர்த்துவிட்டோம், இருப்பினும் அறிவுறுத்தல்களையும் எண்களையும் நாம் இன்னும் அவதானிக்கலாம்.

நீங்கள் நிரலை சரிசெய்ய முயற்சித்தாலும், குறியீட்டை எழுதும் போது நீங்கள் முகவரிகளை நினைவில் வைத்துக் கொண்டால் இது சற்று குழப்பமாக இருக்கும்.

கருத்துகள் வைக்கப்படலாம் என்றாலும், அது சற்று இரைச்சலாக மாறும். இதற்கு எண்களுக்கு பெயரிடுவது தேவைப்படும் மற்றும் கூடுதல் அறிவுறுத்தலால் நிறைவேற்றப்படலாம்: 'சமம்' சில விஷயங்கள் மற்றொரு விஷயத்திற்கு சமமாக இருக்கலாம் என்று 'சம' அறிவுறுத்தல் அறிவுறுத்துகிறது.

இது பி.ஐ.சிக்கு ஒரு அறிவுறுத்தலாக இருக்கக்கூடாது, மாறாக அசெம்பிளருக்கு. இந்த அறிவுறுத்தல் ஒரு பதிவு முகவரி இருப்பிடத்திற்கு பெயரை ஒதுக்க உதவுகிறது, அல்லது நிரலாக்க காலத்திற்கு மாறானது.

எங்கள் திட்டத்திற்கு ஒரு சில மாறிலிகளை நாங்கள் நிறுவுவோம், மேலும் இது நிரலை எவ்வளவு நேரடியான முறையில் படிக்கிறது என்பதற்கு சாட்சியாக இருக்கும்.

இப்போது இருந்து நிலையான மதிப்புகளை நாங்கள் சரிசெய்துள்ளோம், அவற்றை எங்கள் நிரலில் அமைப்பதன் மூலம் தொடரலாம். நிலையான மதிப்புகள் அவற்றைப் பயன்படுத்துவதற்கு முன்பு நியமிக்கப்பட வேண்டும்.

எனவே அவற்றை எப்போதும் திட்டத்தின் தொடக்கத்தில் நிலைநிறுத்துவதை உறுதிசெய்க. முந்தைய லேபிளிங்கை சமீபத்தியவற்றுடன் ஒப்பிடுவதற்காக, கருத்துகளைத் தவிர்த்து நிரலை மீண்டும் எழுதுவோம்.

மாறிலிகள் நிரலைப் பற்றி சற்று எளிதாக புரிந்துகொள்வதை நீங்கள் கவனிக்கக்கூடும், இருப்பினும் நாங்கள் இன்னும் கருத்துகள் இல்லாமல் இருக்கிறோம், எந்த கவலையும் இல்லை, நாங்கள் இன்னும் முடிக்கவில்லை என்பதால்.

எங்கள் ஒளிரும் எல்.ஈ.டி திட்டத்தின் சிறிய தீங்கு இருக்கலாம்.
ஒவ்வொரு அறிவுறுத்தலையும் முடிக்க 1 கடிகார வரிசை தேவை. நாங்கள் 4 மெகா ஹெர்ட்ஸ் படிகத்தைப் பயன்படுத்துகிறோம் என்றால், ஒவ்வொரு அறிவுறுத்தலும் 1 / 4MHz அல்லது 1uS ஐ முடிக்க வேண்டும்.

நாங்கள் ஐந்து வழிமுறைகளைப் பயன்படுத்துவதால், எல்.ஈ.டி 5uS இல் செயல்படுத்தப்படும். எல்லோரும் கவனிக்க இது மிகவும் விரைவாக இருக்கலாம், கூடுதலாக, எல்.ஈ.டி முழுமையாக இயக்கப்பட்டிருப்பதாகத் தோன்றும்.

எல்.ஈ.டி ஆன் மற்றும் எல்.ஈ.டி அணைக்கப்படுவதற்கு இடையே ஒரு தடுப்பை உருவாக்குவதே நாம் அதற்கு பதிலாக செய்ய வேண்டும். தடுப்பின் கோட்பாடு என்னவென்றால், முந்தைய அளவிலிருந்து நாம் எண்ணுவோம், எனவே அது பூஜ்ஜியத்திற்கு வரும்போது, ​​எண்ணுவதை விட்டுவிடுகிறோம்.

பூஜ்ஜிய மதிப்பு தாமதத்தின் முடிவைக் குறிக்கிறது, மேலும் நிரல் முழுவதும் எங்கள் செயல்முறையைச் செயல்படுத்துகிறோம். ஆகையால், முதலில் நாம் செய்ய வேண்டியது, எங்கள் கவுண்டராகப் பயன்படுத்த ஒரு மாறிலியைத் தீர்மானிப்பதாகும்.

இந்த நிலையான COUNT ஐக் குறிப்பிடுவோம். அதன்பிறகு, எண்ணைத் தொடங்க எவ்வளவு முக்கியம் என்பதை நாம் தீர்மானிக்க வேண்டும். நிச்சயமாக, நாம் சேர்க்கக்கூடிய மிகப்பெரிய எண்ணிக்கை 255, அல்லது ஹெக்ஸில் எஃப்.எஃப்.எச்., முந்தைய டுடோரியலில் நான் பேசியது போல, சம அறிவுறுத்தல் ஒரு பதிவு நிலைமைக்கு ஒரு வெளிப்பாட்டை ஒதுக்குகிறது.

இது எங்கள் COUNT ஐ எந்த அளவு ஒதுக்கினாலும், அது ஒரு பதிவின் உருப்படிகளுடன் பொருந்தும் என்பதை இது குறிக்கிறது. ஒரு வேளை நாம் FFh மதிப்பைக் குறிப்பிட முயற்சித்தால், நிரலைத் தொகுக்கும்போது ஒரு தவறை நாம் பெறப்போகிறோம்.

FFh இருப்பிடமாக இருப்பதற்கான காரணம், எனவே இதை அணுக முடியாது. எனவே, உண்மையான எண்ணை எவ்வாறு நியமிக்க வேண்டும்? நிச்சயமாக, இதற்கு ஒரு சிறிய அளவு பக்கவாட்டு சிந்தனை தேவைப்படும்.

உதாரணமாக, எங்கள் COUNT ஐ 08h முகவரிக்கு நியமித்தால், இது ஒரு அடிப்படை புறநிலை பதிவு இலக்கைக் குறிக்கும். இயல்பாக, தீண்டப்படாத பகுதிகள் FFh ஆக அமைக்கப்பட்டன. இதன் விளைவாக, COUNT 08h க்கு இட்டுச் சென்றால், நாங்கள் முதலில் சக்தியளிக்கும் போது FFh இன் மதிப்பை நீங்கள் சந்திப்பீர்கள். ஆயினும்கூட, நான், COUNT ஐ மற்றொரு எண்ணுக்கு எவ்வாறு சரிசெய்வது ?, நாங்கள் விண்ணப்பிப்பது எல்லாம் முதலில் இந்த இலக்கை நோக்கி ஒரு மதிப்பீட்டை ‘நகர்த்த’.

ஒரு எடுத்துக்காட்டுக்கு, COUNT க்கு 85h மதிப்பைக் கொண்டிருக்க வேண்டும் என்று நாங்கள் விரும்பினோம் என்று வைத்துக்கொள்வோம், COUNT சம 85h ஐ நாம் குறிப்பிட முடியாது, ஏனெனில் இது போர்ட் ஏ-க்கான முத்தரப்பு பதிவேட்டின் நிலைப்பாடு. W பதிவேட்டில் 85h இன் மதிப்பு movwf 08h

இப்போது அதை எங்கள் 08 மணிநேர பதிவேட்டில் நகர்த்தவும். பின்னர், நாம் COUNT சம 08h ஐ வெளிப்படுத்தினால், COUNT 85h மதிப்புடன் பொருந்தும். மென்மையானது, இல்லையா! எனவே, ஆரம்பத்தில் நாம் நமது மாறிலியை தீர்மானிக்கிறோம்: COUNT equ 08h தொடர்ந்து இந்த COUNT ஐ பூஜ்ஜியமாக மாற்றும் வரை குறைக்க வேண்டும்.

ஒரு ‘கோட்டோ’ மற்றும் ஒரு குறிச்சொல்லைப் பயன்படுத்துவதன் மூலம் இதை நிறைவேற்ற வடிவமைக்கப்பட்ட ஒரு வழிமுறை உள்ளது.

நாங்கள் விண்ணப்பிக்கப் போகும் அறிவுறுத்தல்: DECFSZ COUNT, 1 இந்த அறிவுறுத்தல் கமாவை கண்காணிக்கும் எண்ணால் ‘பதிவேட்டை (இங்கே அது COUNT) குறைக்கவும். நாம் பூஜ்ஜியத்தை அடைந்தால், இரண்டு இடங்களை முன்னால் நம்புங்கள். ’அதை எங்கள் போக்கில் வைப்பதற்கு முன்பு, அதை முதலில் செயலில் காணலாம்.

நாங்கள் என்ன செய்தோம் என்பது ஆரம்பத்தில் எங்கள் நிலையான COUNT ஐ 255 ஆக நிறுவுகிறது. அடுத்தடுத்த பிரிவு ஒரு குறிச்சொல்லை நிலைநிறுத்துகிறது, இது LABEL என அழைக்கப்படுகிறது, இது எங்கள் decfsz அறிவுறுத்தலுக்கு நெருக்கமாக உள்ளது.

Decfsz COUNT, 1 COUNT இன் மதிப்பை ஒவ்வொன்றாகக் குறைக்கிறது, மேலும் இறுதி முடிவை COUNT க்கு நேராக வைத்திருக்கிறது. மேலும் COUNT 0 மதிப்பைக் கொண்டிருக்கிறதா என்று சரிபார்க்க இது சரிபார்க்கிறது.

அவ்வாறு இல்லையென்றால், அது நிரலை அடுத்தடுத்த வரிக்கு மாற்ற தூண்டுகிறது. இப்போது எங்களிடம் ஒரு ‘கோட்டோ’ அறிவிப்பு உள்ளது, இது எங்கள் decfsz அறிவுறுத்தலுக்கு நம்மை மீண்டும் வழங்குகிறது.

COUNT இன் மதிப்பு சமமாக செயல்பட்டால், எங்கள் திட்டத்தில் decfsz அறிவுறுத்தல் 2 இடங்களை முன்னேறச் செய்கிறது, மேலும் ‘இங்கே கொண்டு செல்லுங்கள்’ என்று நாங்கள் கூறிய இடத்திற்கு அனுப்பப்படும்.

ஆகையால், நீங்கள் கவனிக்கக்கூடியது என்பதால், தொடர்வதற்கு முன் ஒரு முன்னரே தீர்மானிக்கப்பட்ட நேரத்திற்கு ஒரே இடத்தில் உட்கார்ந்து கொள்வதற்கான திட்டத்தை நாங்கள் கொண்டு வந்துள்ளோம். இதற்கு தாமத வளையம் என்று பெயரிடலாம்.

தாமத சுழல்களைப் புரிந்துகொள்வது

எங்களுக்கு இன்னும் கணிசமான தாமதம் தேவைப்பட்டால், அடுத்ததாக ஒரு வட்டத்தைத் தொடரலாம். கூடுதல் சுழல்கள், நீட்டிப்பை தாமதப்படுத்தின. எல்.ஈ.டி ஃபிளாஷ் கண்காணிக்க விரும்புகிறோம் என்று கருதி குறைந்தபட்சம் இரண்டையாவது செய்வோம் .. இந்த தாமத சுழல்களை எங்கள் திட்டத்தில் வைப்போம், மேலும் கருத்துகளை அறிமுகப்படுத்துவதன் மூலம் அதை ஒரு உண்மையான நிரலாக மாற்றுவதன் மூலம் நிறைவேற்றுவோம்:

பி.ஐ.சி எந்த நிரலுக்குப் பிறகு இந்த திட்டத்தை தொகுக்க முடியும். வெளிப்படையாக, சுற்று உண்மையில் செயல்படுகிறதா என்று சோதிக்க முயற்சிக்கிறீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். பின்வருவது நீங்கள் PIC ஐ நிரல் செய்தவுடன் கட்டமைக்க வேண்டிய ஒரு சுற்று வரைபடம்.


நல்லது, நீங்கள் உண்மையில் உங்கள் முதல் PIC திட்டத்தை இயற்றியிருக்கலாம், அதே போல் ஒரு எல்.ஈ.டி. இப்போது வரை, நீங்கள் இந்த படிப்புகளைத் தொடர்ந்திருந்தால், 35 இல் ஏழு வழிமுறைகளை நீங்கள் கற்றுக்கொண்டிருக்கலாம், ஆனால் சந்தேகத்திற்கு இடமின்றி இதுவரை நீங்கள் I / O துறைமுகங்களைக் கட்டுப்படுத்தலாம்!

எல்.ஈ.டி ஃபிளாஷ் விரைவாக வழங்க தாமத சுழல்களை மாற்ற முயற்சிக்கிறீர்களா - எல்.ஈ.டி ஃபிளாஷ் பார்க்க COUNT இன் குறைந்தபட்ச மதிப்பு என்ன? அல்லது ஒருவேளை, எல்.ஈ.டி கீழே நிலைப்படுத்த ஆரம்பத்திற்குப் பிறகு 3 வது அல்லது துணை தாமத சுழல்களை நீங்கள் சேர்க்க விரும்புவீர்கள். ஒவ்வொரு தாமத வளையத்திற்கும் ஒரு தனித்துவமான மாறிலி.

எல்.ஈ.டி ஃபிளாஷ் ஒரு குறிப்பிட்ட வேகத்தில் வழங்க உங்கள் தாமத சுழல்களுடன் நீங்கள் உண்மையில் பிடில் செய்யலாம், உதாரணமாக ஒரு விநாடிக்குப் பிறகு. அடுத்த அறிவுறுத்தலுக்குள், நிரல் சுருக்கமாகவும் அடிப்படையாகவும் பராமரிக்க ஒரு சப்ரூட்டீன் எனப்படும் ஒன்றை எவ்வாறு பயன்படுத்த முடியும் என்பதைப் பார்ப்போம். ஒரு சப்ரூட்டீன் என்பது குறியீடு அல்லது நிரலின் ஒருங்கிணைந்த பகுதியாகும், இது உங்களுக்கு எப்போது தேவைப்படலாம் என்று குறிப்பிடப்படலாம். ஒரே மாதிரியான செயல்பாட்டை நீங்கள் அடிக்கடி நிறைவேற்றும் சந்தர்ப்பங்களில் சப்ரூட்டின்கள் பயன்படுத்தப்படுகின்றன.

சப்ரூட்டின்கள் என்றால் என்ன

ஒரு சப்ரூட்டினைப் பயன்படுத்துவதன் நன்மைகள் என்னவென்றால், உங்கள் திட்டத்தின் மூலம் பத்து மடங்குக்கு பதிலாக ஒரு சப்ரூட்டினுக்குள் ஒரு முறை மதிப்பை மாற்றுவது எளிமையாக இருக்கும், அதே போல் உங்கள் நிரல் உள்ளே உட்கொள்ளும் நினைவகத்தின் அளவைக் குறைக்க இது பெரிதும் உதவுகிறது. பி.ஐ.சி. நாங்கள் ஒரு சப்ரூட்டீனைப் பார்ப்போம்:

ஆரம்பத்தில், நாங்கள் எங்கள் சப்ரூட்டினுக்கு ஒரு பதவியை வழங்க வேண்டும், இந்த சூழ்நிலையில் நாங்கள் ROUTINE ஐ தேர்ந்தெடுத்துள்ளோம். அதற்குப் பிறகு நாம் சாதாரணமாக நடத்த விரும்பும் குறியீட்டை தட்டச்சு செய்கிறோம். அதனால்தான், எங்கள் ஒளிரும் தலைமையிலான திட்டத்தின் தாமதத்தை நாங்கள் தேர்ந்தெடுத்துள்ளோம். கடைசியாக, ரிட்டர்ன் அறிவுறுத்தலை சாவி செய்வதன் மூலம் சப்ரூட்டீனை முடிக்கிறோம்.

எங்கள் திட்டத்தில் எங்கிருந்தும் சப்ரூட்டினைத் தொடங்க, நாங்கள் விரைவாக அழைப்பை அழைப்போம், பின்னர் சப்ரூட்டீன் பதவி.

இதை இன்னும் கொஞ்சம் ஆழமாகக் கருதுவோம். எங்கள் திட்டத்தின் ஒரு பகுதிக்கு வந்தவுடன், xxx ஐ அழைக்கவும், இதில் xxx என்பது எங்கள் சப்ரூட்டினின் பெயர், நிரல் சப்ரூட்டீன் xxx நிறுவப்பட்ட எங்கும் பாய்கிறது. சப்ரூட்டினுக்குள் உள்ள வழிமுறைகள் மேற்கொள்ளப்படுகின்றன.

அறிவுறுத்தல் திரும்பப் பெறும்போதெல்லாம், நிரல் எங்கள் முதன்மை திட்டத்திற்கு எங்கள் அழைப்பு xxx அறிவுறுத்தலுக்குப் பின் வரும் அறிவுறுத்தலுக்குத் திரும்புகிறது.

நீங்கள் விரும்பும் விதத்தில் இதேபோன்ற சப்ரூட்டீனை பல முறை அழைக்க முடியும், இது சப்ரூட்டின்களைப் பயன்படுத்துவது எங்கள் திட்டத்தின் பொதுவான காலத்தை ஏன் குறைக்கிறது என்பதை விளக்குகிறது.

ஆயினும்கூட, நீங்கள் தெரிந்து கொள்ள வேண்டிய இரண்டு காரணிகள் உள்ளன. ஆரம்பத்தில், எங்கள் முதன்மை திட்டத்தைப் போலவே, எந்தவொரு குறிப்பிட்ட மாறிலிகளையும் நீங்கள் பயன்படுத்துவதற்கு முன்பு ஒப்புக் கொள்ள வேண்டும்.

இவை சப்ரூட்டினுள் அல்லது முதன்மை திட்டத்தின் தொடக்கத்தில் நேரடியாக ஒப்புக் கொள்ளப்படலாம். உங்கள் பிரதான திட்டத்தின் தொடக்கத்தில் எல்லாவற்றையும் நீங்கள் ஒப்புக் கொள்ள வேண்டும் என்று நான் உங்களுக்கு முன்மொழிகிறேன், அப்போதிருந்து விஷயங்கள் ஒரே மாதிரியான நிலையில் இருப்பதை நீங்கள் அங்கீகரிக்கிறீர்கள். அடுத்து, பிரதான நிரல் சப்ரூட்டினுக்கு மேல் தவிர்க்கப்படுவதை உறுதி செய்ய வேண்டும்.

இதன் மூலம் நான் குறிப்பிடுவது என்னவென்றால், உங்கள் முதன்மை திட்டத்தின் முடிவில் நீங்கள் நேரடியாக சப்ரூட்டீனை வைக்க வேண்டும், தவிர, சப்ரூட்டீன் இருக்கும் இடத்திலிருந்து குதிக்க ஒரு 'கோட்டோ' அறிவிப்பைப் பயன்படுத்தினால் தவிர, நிரல் தொடர்கிறது மற்றும் சப்ரூட்டீனை செயல்படுத்தும் அதற்கு அல்லது வேறு தேவை.

பி.ஐ.சி ஒரு சப்ரூட்டினுக்கும் முதன்மை திட்டத்திற்கும் இடையில் வேறுபாடு காட்டாது. எங்கள் ஒளிரும் தலைமையிலான திட்டத்தை நாங்கள் பார்ப்போம், இருப்பினும் இந்த நேரத்தில் தாமத சுழற்சிக்கு ஒரு சப்ரூட்டினைப் பயன்படுத்தப் போகிறோம். வெறுமனே, நிரல் எவ்வளவு குறைவான சிக்கலானது என்பதை நீங்கள் கண்டுபிடிப்பீர்கள், அதே போல் சப்ரூட்டீன் நடைமுறையில் எவ்வாறு பொருந்தும் என்பதை நீங்கள் காணலாம்.

இறுதியில், எங்கள் தாமத வளையத்திற்கு ஒரு சப்ரூட்டீனைப் பயன்படுத்துவதன் மூலம், நிரலின் பரிமாணங்களை நாங்கள் குறைத்திருக்கலாம்.

ஒவ்வொரு முறையும் நாம் தாமதத்தை விரும்புகிறோம், எல்.ஈ.டி இயக்கத்தில் அல்லது முடக்கத்தில் இருக்கும்போது, ​​தாமதத்தை சப்ரூட்டீன் என்று அழைக்கிறோம். சப்ரூட்டினின் முடிவில், எங்கள் ‘அழைப்பு’ அறிவுறுத்தலைப் பின்பற்றி நிரல் மீண்டும் வரிக்கு செல்கிறது. மேலே உள்ள விளக்கத்தில், எல்.ஈ.டி.

அதன் பிறகு நாங்கள் சப்ரூட்டினுடன் தொடர்பு கொள்கிறோம். எல்.ஈ.டி அணைக்கக்கூடிய வகையில் நிரல் மீண்டும் வருகிறது. சப்ரூட்டீன் ஒரு முறை முடிந்துவிட்டால், நிரல் திரும்பி வந்து, அதை அங்கீகரிக்கும் அறிவுறுத்தல் ‘கோட்டோ ஸ்டார்ட்’. சதி செய்யக்கூடிய எவருக்கும், எங்கள் முதல் திட்டம் 120 பைட்டுகள் நீளமானது.

சப்ரூட்டினின் பயன்பாட்டின் மூலம், எங்கள் நிரல் அளவை 103 பைட்டுகளாகக் குறைக்கலாம். இது மிகவும் அருமையாக இருக்க முடியாது, இருப்பினும் PIC க்குள் ஒட்டுமொத்தமாக 1024 பைட்டுகள் மட்டுமே உள்ளன என்ற உண்மையை கருத்தில் கொண்டு, ஒவ்வொரு சிறிய அளவு நன்மைகளும்.

அடுத்த அறிவுறுத்தலுக்குள், துறைமுகங்களிலிருந்து வாசிப்பதைப் பார்ப்போம்.

இதுவரை, எல்.ஈ.டி ஆன் மற்றும் ஆஃப் செய்யக்கூடிய வகையில் போர்ட் ஏ-க்கு இசையமைத்து வருகிறோம். இந்த கட்டத்தில், துறைமுகங்களில் உள்ள ஐ / ஓ ஊசிகளை எவ்வாறு படிக்கப் போகிறோம் என்று பார்ப்போம்.

உள்ளீடு / வெளியீட்டு துறைமுகங்களைப் படித்தல்

இது ஒரு வெளிப்புற சுற்றுடன் இணைக்க முடிகிறது என்பதையும், அது வழங்கும் எந்த குறிப்பிட்ட வெளியீடுகளையும் பாதிக்கும் என்பதையும் இது உறுதிசெய்கிறது.

எங்கள் முந்தைய படிப்புகளிலிருந்து நீங்கள் மனப்பாடம் செய்ய வேண்டுமா, நீங்கள் ஐ / ஓ துறைமுகங்களை நிறுவ விரும்பினால், நாங்கள் வங்கி 0 இலிருந்து வங்கி 1 க்கு செல்ல வேண்டும். நாங்கள் அதை ஆரம்பத்தில் நிறைவேற்றுவோம்:

இந்த கட்டத்தில் நாம் போர்ட் A இன் பிட் 0 ஐ உள்ளீட்டிற்கு சரி செய்துள்ளோம். முள் அதிகமாகவோ அல்லது குறைவாகவோ இருக்கிறதா என்பதை இப்போது நாம் ஆராய வேண்டும். இதை நிறைவேற்ற, ஒருவர் இரண்டு வழிமுறைகளில் ஒன்றை மட்டுமே பயன்படுத்தலாம்:

BTFSC மற்றும் BTFSS.

BTFSC அறிவுறுத்தல் ‘பதிவேட்டில் ஒரு பிட் சோதனை செய்யுங்கள், அதே போல் நாங்கள் நியமிக்கிறோம்.

அது 0 ஆக இருந்தால், அந்த வழக்கில் அடுத்தடுத்த அறிவுறுத்தலை நாங்கள் தவிர்க்கிறோம் ’. BTFSS என்பது ‘பதிவேட்டில் ஒரு பிட் சோதனை செய்யுங்கள் மற்றும் நாங்கள் நிறுவும் பிட். இது 1 ஆக அமைக்கப்பட்டால், அடுத்தடுத்த அறிவுறுத்தலை நாங்கள் கடந்து செல்கிறோம்.

நாம் உள்ளீட்டைப் படிக்கும்போது எங்கள் நிரல் எவ்வாறு பதிலளிக்க வேண்டும் என்பதை நாங்கள் விரும்புகிறோம் என்பதன் மூலம் நாம் எதைப் பயன்படுத்துகிறோம் என்பது தீர்மானிக்கப்படுகிறது. ஒரு எடுத்துக்காடாக, உள்ளீட்டை 1 ஆகக் காத்திருக்கிறோம் என்றால், BTFSS அறிவுறுத்தலை பின்வரும் முறையில் பயன்படுத்த முடியும்:

இங்கே குறியீடு:

BTFSS PortA, 0 இங்கே தொடங்கவும்:
:

போர்ட்ஏவில் பிட் 0 1 க்கு திட்டமிடப்பட்டிருந்தால், நிரல் ‘இங்கே கொண்டு செல்லுங்கள்’ என்பதற்கு மாறும்.

எல்.ஈ.டி யை ஒரு விகிதத்தில் கேட்கக்கூடிய ஒரு நிரலை நாங்கள் தற்போது எழுதுவோம், இருப்பினும் ஒரு சுவிட்ச் கட்டுப்படுத்தப்பட்டால் அது எல்.ஈ.டியை இரண்டு மடங்கு மெதுவாக ஒளிரச் செய்யும்.

இந்த திட்டத்தை உங்கள் சொந்தமாக பயன்படுத்திக் கொள்ளலாம், இன்னும் நாங்கள் பட்டியலை எப்படியாவது இணைத்துள்ளோம்.

நீங்கள் கொள்கைகளைப் புரிந்து கொண்டீர்களா என்பதைச் சரிபார்க்க, முழு நிரலையும் முயற்சி செய்து எழுதலாம். PIC இன் சுவிட்ச் இணைக்கப்பட்ட RA0 மற்றும் எங்கள் விநியோகத்தின் நேர்மறை ரெயில் ஆகியவற்றைச் சேர்த்து, முன்பு போலவே சமமான சுற்றுகளையும் பயன்படுத்துவோம்.

எல்.ஈ.டியை மாற்றுவதே இங்கு நாம் சாதித்திருக்கிறோம். சுவிட்ச் மூடப்பட்டதா என்பதை நான் பின்னர் தீர்மானிக்கிறேன்.

அது மட்டுப்படுத்தப்பட்டிருந்தால், அடுத்து எங்கள் தாமத சப்ரூட்டினுடன் இணைக்கிறேன். இது முந்தையதைப் போன்ற சமமான தாமதத்தை எங்களுக்கு வழங்குகிறது, இருப்பினும் இந்த நேரத்தில் நாங்கள் அதை இரண்டு முறை தொடர்பு கொள்கிறோம்.

எல்.ஈ.டி அணைக்கப்படும் போதெல்லாம் இதே விஷயம் பொருந்தும். சுவிட்ச் மூடப்படாவிட்டால், எங்கள் முந்தைய காலங்களில் மற்றும் ஆஃப் காலங்களில் பதிவு செய்யப்பட்டுள்ளோம்.

ஆரம்பத்தில் இருந்தே இந்த படிப்பினைகளைப் பின்பற்றுகிறீர்களா, PIC 16F84 க்கான 35 வழிமுறைகளில் பத்துவற்றை நீங்கள் தற்போது கண்டுபிடித்துள்ளீர்கள் என்பதை நீங்கள் புரிந்துகொள்ள முற்படலாம்! இவற்றில் ஒவ்வொரு பிட்டும் ஒரு எல்.ஈ.டி ஆன் மற்றும் ஆஃப் செய்வதன் மூலம் கற்றுக்கொள்ளப்படும்.

இப்போது வரை, நாங்கள் PIC ஒளிரும் ஒரு எல்.ஈ.டி.

பின்னர் நாங்கள் ஒரு சுவிட்சைச் சேர்ப்பதன் மூலம் எங்கள் PIC உடன் திறன் கொண்டோம், எனவே ஃபிளாஷ் வேகத்தை வேறுபடுத்துகிறோம்.

நினைவக இடத்தை திறம்பட பயன்படுத்துதல்

ஒரே பிரச்சினை என்னவென்றால், நிரல் மிகவும் நீளமானது மற்றும் நினைவக இடத்தின் திறனற்றது. நான் முதன்முறையாக கட்டளைகளைச் சேர்க்கும்போது பரவாயில்லை என்று தோன்றியது, இருப்பினும் அதை செயல்படுத்த எளிதான வழி இருக்க வேண்டும். நேர்மறையாக உள்ளது, எல்.ஈ.டியை எவ்வாறு இயக்குகிறோம் மற்றும் அணைக்கிறோம் என்பதை நாங்கள் பகுப்பாய்வு செய்வோம்.

movlw 02hmovwf PORTAmovlw 00hmovlw PORTA

முதலில் நாங்கள் எங்கள் w பதிவேட்டை 02 மணிநேரத்துடன் அடைத்தோம், அதன் பிறகு எல்.ஈ.டி இயக்க எங்கள் போர்ட்ஏ பதிவேட்டில் மாற்றினோம். அதை அணைக்க, நாங்கள் 00h உடன் w ஐ பேக் செய்தோம், அதன் பிறகு அதை எங்கள் போர்ட்ஏ பதிவேட்டில் மாற்றினோம்.

இந்த எல்லா நடைமுறைகளுக்கும் இடையில், எல்.ஈ.டி ஒளிரும் தன்மையை நாம் கவனிக்க முடியும் என்பதை உறுதிப்படுத்த ஒரு சப்ரூட்டினுடன் தொடர்பு கொள்ள வேண்டிய கட்டாயம் ஏற்பட்டது.

ஆகையால், நாங்கள் இரண்டு செட் தகவல்களை ஓரிரு முறை மாற்ற வேண்டியிருந்தது (ஒரு முறை w பதிவேட்டில் பின்னர் போர்ட்டாவுக்கு) அதே போல் ஒரு சப்ரூட்டீனை இரண்டு முறை அழைக்கவும் (ஒரு முறை ஒரு முறை ஆஃப் ஆஃப்). எனவே, கூடுதல் செயல்திறனுடன் இதை எவ்வாறு அடைய முடியும்? மிக எளிய.

XORF எனப்படும் வேறுபட்ட வழிமுறையைப் பயன்படுத்துகிறோம். நாங்கள் வழங்கும் தகவலுடன் நாங்கள் நிர்ணயிக்கும் பதிவேட்டில் XORF அறிவுறுத்தல் ஒரு பிரத்யேக அல்லது செயல்பாட்டைச் செய்கிறது. நாம் தொடர்வதற்கு முன்பு உலகில் ஒரு பிரத்யேக அல்லது என்ன என்பதை நான் தெளிவுபடுத்த வேண்டும் என்று நான் நம்புகிறேன். எங்களிடம் இரண்டு உள்ளீடுகள் மற்றும் ஒரு வெளியீடு இருந்தால், உள்ளீடு 1 ஆக இருந்தால் மட்டுமே, இரண்டு உள்ளீடுகள் வேறுபடுகின்றன. அவை ஒரே மாதிரியாக இருக்கும்போது, ​​வெளியீடு அநேகமாக 0 ஆக இருக்கும். பின்வருவது ஒரு உண்மை அட்டவணை, இவற்றைப் பார்க்க தேர்வுசெய்யும் நபர்களுக்கு:

A B F0 0 00 1 11 0 11 1 0

எங்கள் முந்தைய வெளியீட்டைப் போலவே B ஐ வழங்கினால் என்ன நடக்கிறது என்பதை இந்த கட்டத்தில் பார்ப்போம், மேலும் A இன் மதிப்பை மாற்றினால்:

ஒரு பி எஃப்
0 0 0
0 0 0
1 0 1
1 1 0
1 0 1

1 இன் மதிப்பை நாம் பராமரித்து, பிரத்தியேகமாக அல்லது வெளியீட்டைக் கொண்டு அதை வெளியிட்டால், வெளியீடு மாறும். உண்மை அட்டவணையில் இருந்து இதை நீங்கள் கவனிக்க முடியாவிட்டால், பைனரியைப் பயன்படுத்துவதற்கு கீழே காணலாம்:

0 தற்போதைய வெளியீடு
1-புதிய வெளியீட்டில் EX-OR
1-புதிய வெளியீட்டில் EX-OR

1 உடன் வெளியீட்டை பிரத்தியேகமாக மாற்றுவதன் மூலம், இப்போது வெளியீட்டை 0 முதல் 1 வரை மாற்றுவோம்.
எனவே, எங்கள் எல்.ஈ.டி ஆன் மற்றும் ஆஃப் செய்ய, எங்களுக்கு இரண்டு வாக்கியங்கள் மட்டுமே தேவை:

MOVLW 02 ம
XORWF கதவு, 1

துல்லியமாக நாம் என்ன செய்யப்போகிறோம் என்பது எங்கள் w பதிவேட்டை 02 மணிநேரத்துடன் சேர்ப்பதாகும். நாங்கள் அந்த விஷயத்தில் பிரத்தியேகமாக இருக்கிறோம் அல்லது எங்கள் போர்ட்டில் என்ன இருந்தாலும் இந்த எண்ணை பிரிக்கிறோம். பிட் 1 என்பது 1 ஆக இருந்தால், அது 0 க்கு மாற்றப் போகிறது. பிட் 1 என்பது 0 ஆக இருந்தால், அது 1 க்கு மாற்றப் போகிறது. இந்த குறியீட்டை ஒருமுறை அல்லது இரண்டு முறை ஆராய்வோம், இது பைனரி எவ்வாறு இயங்குகிறது என்பதைக் காண்பிக்க:

கதவு
00010
xorwf 00000
xorwf 00010
xorwf 00000
xorwf 00010

ஒவ்வொரு முறையும் ஒரே மாதிரியான மதிப்பை எங்கள் பதிவேட்டில் ஏற்ற வேண்டிய அவசியமில்லை, எனவே தொடக்கத்தில் இதை ஒரு முறை நிறைவேற்ற முடியும், மேலும் எங்கள் மாற்று கட்டளைக்குத் திரும்பவும். கூடுதலாக, எங்கள் போர்ட்ஏ பதிவேட்டில் ஒரு மதிப்பை நாங்கள் சரிசெய்ய வேண்டியதில்லை. காரணம்? நிச்சயமாக, அதிகாரம் இருந்தால் அது 1 என்பதால், அதை எளிதாக மாற்றலாம். நான், மாற்றாக ஒரு 0 சக்தியைக் கொண்டுள்ளோம், இப்போது அதை மாற்றுவோம்.

எனவே புதிதாக உருவாக்கப்பட்ட எங்கள் குறியீட்டை நீங்கள் காண விரும்புகிறீர்கள். முதலாவது எங்கள் ஒளிரும் எல்.ஈ.டி குறியீட்டைக் குறிக்கிறது, இரண்டாவது சுவிட்சைச் சேர்ப்பதைக் காட்டுகிறது:

ஒரு சுலபமான வழிமுறையைப் பயன்படுத்துவதன் மூலம், இப்போது எங்கள் திட்டத்தின் அளவைக் குறைத்துள்ளோம் என்பதைக் கண்டுபிடிக்க விரும்புகிறோம். உண்மை என்னவென்றால், எங்கள் நிரல்களை எவ்வளவு குறைக்க முடியும் என்பதைக் காண்பிப்பதற்காக, இரண்டு நிரல்களையும், இயற்றப்பட்டவற்றையும், அவற்றின் பரிமாணங்களையும் கீழே உள்ள அட்டவணையில் நிரூபித்துள்ளோம்:

நிரல் மாற்று பரிமாணங்கள் (பைட்டுகள்)
ஒளிரும் எல்இடி அசல் 120
ஒளிரும் எல்.ஈ.டி சப்ரூட்டீன் 103 சேர்க்கப்பட்டது
ஒளிரும் LED XOR செயல்பாடு 91 பயன்படுத்தப்பட்டது
எல்.ஈ.டி வித் ஸ்விட்ச் அசல் 132
எல்.ஈ.டி வித் ஸ்விட்ச் எக்ஸ்ஓஆர் செயல்பாடு 124 பயன்படுத்தப்பட்டது.

எனவே, நாங்கள் ஒரு சில புதுமையான வழிமுறைகளைக் கண்டுபிடித்தது மட்டுமல்லாமல், நிச்சயமாக எங்கள் ஸ்கிரிப்ட்டின் அளவைக் குறைத்துள்ளோம்!

கீழே, நீங்கள் எவ்வாறு தனிப்பட்ட பிட்களை அசைப்பது, சில நேரடியான எண்கணிதம் மற்றும் தரவு அட்டவணைகளை எவ்வாறு செயல்படுத்தலாம் என்பதை நாங்கள் பகுப்பாய்வு செய்வோம்.

தருக்க மேலாளர்கள்

கடைசி டுடோரியலுக்குள் நான் பிரத்தியேக அல்லது செயல்பாட்டை வழங்கினேன். EXOR செயல்பாடு ஒரு தருக்க ஆபரேட்டராக புரிந்து கொள்ளப்படுகிறது.

இந்த டுடோரியலுக்குள் பி.ஐ.சி ஊக்குவிக்கும் கூடுதல் தருக்க ஆபரேட்டர்களை நான் அறிவேன். புள்ளி நிரல்களில் எந்தவிதமான விஷயமும் இருக்காது, இருப்பினும் குறியீட்டின் சிறிய பகுதிகளைப் பயன்படுத்துவதன் மூலம் ஆபரேட்டர்களைப் பயன்படுத்த எளிதான முறைகளைக் கற்றுக்கொள்வோம்.

மற்றும் AND செயல்பாடு அடிப்படையில் இரண்டு பிட்களை பகுப்பாய்வு செய்து 1 அவை ஒன்றா என்பதை 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 இன் இறுதி முடிவு நாம் நிர்ணயித்த பதிவேட்டில் சேமிக்கப்படுகிறது. கீழே உள்ள குறியீட்டின் இரண்டு பகுதிகள் ஒவ்வொன்றிற்கும் செயல்பாட்டிற்கும் ஒரு சிறந்த எடுத்துக்காட்டைக் காட்டுகின்றன.

ஆரம்பமானது PORTA இன் நிலையை ஆராய்கிறது, இதில் உள்ளீடுகள் 1100 என்பதை நாம் சரிபார்க்க வேண்டும். முடிவை மீண்டும் W பதிவேட்டில் வைக்கலாம்

movlw 1100
ANDWF 05h, 0 இரண்டாவது விளக்கம் இப்போது W பதிவின் உள்ளடக்கங்களை சரிபார்க்கக்கூடும்:
ANDLW 1100

அல்லது

XOR ஐ துல்லியமாக இருக்க, இப்போது ஒரு OR செயல்பாட்டைக் கண்டுபிடித்துள்ளோம். இரண்டு பிட்கள் ஒரே மாதிரியாக இல்லை, ஆனால் வேறுபட்டால் இது 1 ஆக உருவாகிறது. IOR எனப்படும் மற்றொரு OR செயல்பாட்டை நீங்கள் காணலாம், இது உள்ளடக்கியது OR. பிட் 1 ஆக இருந்தால் இந்த செயல்பாடு 1 ஐ உருவாக்கும், ஆனால் கூடுதலாக ஒவ்வொரு பிட்களும் 1 ஆக இருந்தால். இதை விளக்குவதற்கு ஒரு தெளிவான உண்மை அட்டவணை கீழே உள்ளது:

எ பி ஓ / பி
0 0 0
0 1 1
1 0 1
1 1 1

எண்கணித ஆபரேட்டர்கள் என்றால் என்ன

கூட்டு

இந்த செயல்பாடு பொதுவாகக் கூறுவதை நிறைவேற்றுகிறது. இது இரண்டு புள்ளிவிவரங்களை பங்களிக்கிறது! இரண்டு புள்ளிவிவரங்களைச் சேர்ப்பதன் விளைவு 8 பிட்களைத் தாண்டினால், அந்த விஷயத்தில் ஒரு கேரி கொடி அமைக்கப்படும். CARRY கொடி முகவரி 03h பிட் 0 இல் அமைந்துள்ளது.

இந்த பிட் திட்டமிடப்பட்டபோது, ​​இரண்டு புள்ளிவிவரங்களும் 8 பிட்களைத் தாண்டின. இது 0 ஆக இருக்கும்போது, ​​அதன் விளைவு 8 பிட்களுக்குள் அமைந்துள்ளது. முன்பு போலவே, PIC எங்களுக்கு ADD இன் இரண்டு பாணிகளை வழங்குகிறது, குறிப்பாக ADDLW மற்றும் ADDWF. நீங்கள் கருதியபடி, இது மேலே உள்ள செயல்பாடு போன்றது. ADDLW W பதிவின் உள்ளடக்கங்களை நாங்கள் விதிக்கிறோம். தொடரியல்: ADDLW ADDWF W பதிவின் உள்ளடக்கங்களையும், நாங்கள் நியமிக்கும் வேறு சில பதிவுகளையும் சேர்க்கிறது.

தொடரியல்: ADDWF, d என்பது எங்கே

SUB

இந்த கட்டத்தில், இந்த செயல்பாடு என்ன செய்கிறது என்பதை உங்களால் கருத முடியாது என்று நினைக்கிறேன்! உண்மையில், நீங்கள் இதை சந்தேகித்தீர்கள், இந்த செயல்பாடு
ஒரு பிட்டை மற்றொன்றிலிருந்து கழிக்கிறது. மீண்டும் PIC எங்களுக்கு 2 சுவைகளை வழங்குகிறது: SUBLW மற்றும் SUBWF. தொடரியல் ADD செயல்பாட்டிற்கு துல்லியமாக ஒத்திருக்கிறது, தவிர நீங்கள் ADD க்கு பதிலாக SUB ஐ தட்டச்சு செய்கிறீர்கள்!

அதிகரிப்பு PIC இல் ஒரு எண்ணுக்கு 1 ஐ சேர்க்க விரும்பினால், நாங்கள் ADD செயல்பாட்டை முற்றிலும் பயன்படுத்திக் கொள்ளலாம், மேலும் முதலிடத்தைப் பயன்படுத்தலாம். With இதில் உள்ள சிரமம் என்னவென்றால், நாம் முதலில் அந்த உருவத்தை W பதிவேட்டில் வைக்க வேண்டும், பின்னர் அதை அதிகரிக்க ADDLW 1 கட்டுப்பாட்டைப் பயன்படுத்த வேண்டும். ஒரு பதிவேட்டில் 1 ஐ சேர்க்க நாங்கள் விரும்பினால், அது இன்னும் மோசமாக இருக்கும். ADDWF, 1 ஐப் பயன்படுத்திய பிறகு, நாம் முதலில் எண் 1 ஐ W பதிவேட்டில் வைக்க வேண்டும். ஆகையால், உதாரணமாக, இடம் 0C க்கு 1 ஐ சேர்க்க, ஸ்கிரிப்ட்டின் பின்வரும் பகுதியை நாம் வைத்திருக்க வேண்டும் என்று கூறுங்கள்:

movlw 01
addwf 0c, 1

இதை நடத்துவதற்கு எளிதான முறை உள்ளது. ஐ.என்.சி.எஃப் என்ற கட்டளையை நாம் பயன்படுத்தலாம். தொடரியல்: ஐ.என்.சி.எஃப், டி எங்கே, நாங்கள் அக்கறை கொண்டுள்ள பதிவு அல்லது இடம், மற்றும் நீங்கள் முடிவை எங்கு வைக்க வேண்டும் என்று பி.ஐ.சி. வழக்கில் d = 0, விளைவு W பதிவேட்டில் உள்ளது, மற்றும் d = 1 வழக்கில், இதன் விளைவாக நாம் நிர்ணயித்த பதிவேட்டில் அமைக்கப்படுகிறது.

இந்த தனிப்பட்ட வழிமுறையைப் பயன்படுத்துவதன் மூலம் நாம் குறியீட்டின் ஐம்பது சதவீதத்தை உண்மையில் செய்ய முடியும். W பதிவேட்டில் விளைவுகளை மீட்டெடுக்க நாங்கள் விரும்பினால், மேலே உள்ள நிகழ்வைப் பயன்படுத்தினால், 0C இன் உருப்படிகளை மீண்டும் W பதிவேட்டில் மாற்ற கூடுதல் கட்டளையை நாங்கள் சேர்க்க வேண்டியிருக்கும், அதன் பிறகு 0C பதிவேட்டை மீண்டும் இல்லை அது என்ன என்பது முக்கியம்.

அதிகரிப்பு கட்டளை உள்ளது. இது INCFSZ. இந்த கட்டளை நாம் நிர்ணயிக்கும் பதிவேட்டை அதிகரிக்கக்கூடும், இருப்பினும் பதிவுசெய்தல் 0 க்கு சமமானால் (1 முதல் 127 வரை சேர்க்கும்போது இது நிகழும்) அதன்பிறகு PIC அடுத்தடுத்த வழிமுறைகளை அனுப்பும். கீழே உள்ள குறியீட்டின் பகுதி இதைப் பிரதிபலிக்கிறது:

லூப் incfsz 0C
கோட்டோ லூப்
:
:
நிரலின் மீதமுள்ள.

குறியீட்டின் மேலேயுள்ள பகுதியில், 0C ஐ 1 ஆல் அதிகரிக்கப் போகிறது. அடுத்ததாக PIC ஐ லூப் என்ற எங்கள் குறிச்சொல்லுக்குத் திரும்பவும், 0C ஐ மீண்டும் 1 ஆக அதிகரிக்கவும் அறிவுறுத்துகிறோம். 0C 127 க்கு சமமாக இருக்கும் வரை இது தொடர்கிறது. இந்த சூழ்நிலையில், 0C ஐ 1 ஆல் அதிகரிக்கும் போது, ​​0C இப்போது 0 உடன் பொருந்தப் போகிறது. எங்கள் INCFSZ அறிவுறுத்தல் அடுத்தடுத்த அறிவுறுத்தலைத் தவிர்க்க PIC ஐ நன்கு தெரிவிக்கக்கூடும், இந்த நிகழ்வில் கோட்டோ அறிவிப்பு, எனவே மீதமுள்ள நிரலுடன் PIC முன்னோக்கி செல்லும்.

குறைவு

முந்தைய பயிற்சியின் குறைவு செயல்பாடு குறித்து இப்போது விவாதித்தோம், எனவே நான் இதை இனி திருத்த மாட்டேன்.

பூர்த்தி

இந்த விவாதத்தின் இறுதி அறிவுறுத்தல் நாம் நிர்ணயிக்கும் பதிவேட்டில் உள்ள ஒவ்வொரு பிட்டையும் மாற்றியமைக்கும். தொடரியல்: COMF, d இதில்

பிட் செயல்பாடுகளைப் புரிந்துகொள்வது

உதாரணமாக, ஒரு துறைமுகத்தின் ஊசிகளை வெளியீட்டிலிருந்து உள்ளீட்டிற்கு விரைவாக மாற்றுவதற்கு இது பயன்படுத்தப்படலாம். பிட் செயல்பாடுகள் ஒரு வெளிப்பாட்டிற்குள் ஒரு பிட்டை வடிவமைக்க அனுமதிக்கின்றன. நாங்கள் நிர்ணயிக்கும் பதிவேடுகள் அல்லது எண்களில் ஒற்றை பிட்களைத் தொடர, அமைக்க மற்றும் அகற்ற அவை அனுமதிக்கின்றன.

இந்த பாடத்திட்டத்தின் முடிவில், முன்னோக்கி செல்லும் தலைகீழ் வழி, தொடர்ச்சியான விளக்குகளின் தொகுப்பை உருவாக்க வடிவமைக்கப்பட்ட ஒரு திட்டத்தை நாங்கள் வெளியிடுவோம். பிரத்தியேக OR செயல்பாட்டை ஆராய்ந்தபோது இதை முன்னரே நாங்கள் கவனித்தோம், அதில் ஒரு வெளிப்பாட்டுடன் துறைமுகங்களை பிரத்தியேகமாக OR செய்தோம். பி.ஐ.சியில் துறைமுகங்களை நிறுவும் போது சில பிட் செயல்பாடுகளை இப்போது கவனித்திருக்கிறோம், மற்றும்

அவற்றின் பயன்பாட்டை இங்கே மீண்டும் வலியுறுத்துகிறேன்.

பி.சி.எஃப்

இந்த அறிவுறுத்தல் நாம் நியமிக்கும் ஒரு பதிவேட்டில் நாம் குறிப்பிடும் ஒரு பிட் துடைக்கும். தொடரியல்
இருக்கிறது:
BCF,

STATUS பதிவேட்டில் ஒரு பிட்டை அகற்றுவதன் மூலம் பக்கம் 1 இலிருந்து பக்கம் 0 க்கு மாற்றுவதற்கு இதை நாங்கள் முன்பு பயன்படுத்தினோம். வேறு எந்த பதிவேட்டில் / இருப்பிடத்திலும் 0 ஐ ஒரு பிட் சரி செய்ய இதைப் பயன்படுத்தலாம். உதாரணமாக, பிரிவு 3C இல் சேமிக்கப்பட்ட 11001101 இல் 3 வது பிட்டை அமைக்க விரும்பினால், நாம் செய்யலாம்
செருக:

பி.சி.எஃப் 0 சி, 03

பி.எஸ்.எஃப்

இந்த அறிவுறுத்தல் நாம் குறிப்பிடும் எந்தவொரு பதிவிலும் 1 ஐ நிர்ணயிக்கும். பக்கம் 0 இலிருந்து பக்கம் 1 க்குச் செல்ல இதை முன்னர் பயன்படுத்தினோம். தொடரியல்: பி.எஸ்.எஃப்., மற்றும் மேலே உள்ள பி.சி.எஃப் போன்ற துல்லியமாக அதே முறையில் பயன்படுத்தப்படுகிறது.

BTFSCUp இப்போது ஒரு பதிவேட்டில் ஒரு பிட் அமைக்கலாம் அல்லது அழிக்கலாம். எவ்வாறாயினும், ஒரு பதிவேட்டில் ஒரு பிட் 1 அல்லது 0 என்பதை நாம் அடிப்படையில் சோதிக்க வேண்டுமா என்று கற்பனை செய்து பாருங்கள்?

நிச்சயமாக, BTFSC ஐப் பயன்படுத்த முடியும். இது பிட் டெஸ்ட் ரெஜிஸ்டர் எஃப், மற்றும் தெளிவாக இருந்தால் தவிர். இந்த அறிவுறுத்தல் பதிவேட்டில் நாம் நியமிக்கும் பிட்டை பகுப்பாய்வு செய்யப் போகிறது. பிட் 0 ஆக இருந்தால், அறிவுறுத்தல் அடுத்தடுத்த வழிமுறைகளை அனுப்ப PIC க்கு தெரிவிக்கும்.

ஒரு கொடியை சரிபார்க்க நாங்கள் விரும்பினால் இந்த வழிமுறையைப் பயன்படுத்தலாம், எடுத்துக்காட்டாக கேரி கொடி. இது STATUS பதிவேட்டைப் படிக்க வேண்டும் மற்றும் எந்தக் கொடிகள் சரி செய்யப்பட்டுள்ளன என்பதை அறிய தனிப்பட்ட பிட்களைத் தேட வேண்டும். 29 உதாரணமாக, நாங்கள் 2 புள்ளிவிவரங்களைச் சேர்த்த பிறகு கேரி கொடி 1 ஆக அமைக்கப்பட்டிருக்கிறதா என்று சோதிக்க விரும்பினால், பின்வருவனவற்றை தட்டச்சு செய்யலாம்:

BTFSC 03 ம, 0
1 என அமைக்கப்பட்டால் இங்கே தொடரவும்
அல்லது 0 என அமைக்கப்பட்டால் இங்கே

பிட்டின் நிலை 1 ஆக இருந்தால், அந்த வழக்கில் BTFSC க்கு அடுத்தடுத்த அறிவுறுத்தல் முடிக்கப்படும். அது 0 ஆக அமைக்கப்பட்டால், அந்த வழக்கில் அடுத்தடுத்த அறிவுறுத்தல் தவிர்க்கப்படும். குறியீட்டின் பின்வரும் பகுதி அதில் பயன்படுத்தப்படலாம்:

கண்ணி:
:
:
பி.டி.எஃப்.எஸ்.சி 03,0
கோட்டோ லூப்

மேலே உள்ள குறியீட்டில், STATUS பதிவின் பிட் 0 (அல்லது கேரி கொடி) 0 என வரையறுக்கப்பட்டால், PIC வெறுமனே வளையிலிருந்து வெளியேறும். இல்லையெனில், கோட்டோ கட்டளை நடத்தப்படும்.

BTFSS

இந்த அறிவுறுத்தல் பிட் டெஸ்ட் ரெஜிஸ்டர் எஃப், மற்றும் அமைத்தால் தவிர். இது BTFSC அறிவுறுத்தலுடன் ஒப்பிடலாம், தவிர, நாம் மதிப்பீடு செய்த பிட் 0 க்கு பதிலாக 1 ஆக அமைக்கப்பட்டால், பி.ஐ.சி அடுத்தடுத்த அறிவுறுத்தலை தவிர்க்கும்.

சி.எல்.ஆர்.எஃப்

இந்த அறிவுறுத்தல் ஒரு பதிவின் முழு விவரங்களையும் 0 ஆக சரிசெய்யும். தொடரியல்:

சி.எல்.ஆர்.எஃப்
சி.எல்.ஆர்.எஃப் 85 ஹெச் பயன்படுத்துவதன் மூலம் துறைமுகங்களின் வெளியீட்டை 0 ஆக அமைக்க இதை முன்னர் பயன்படுத்தினோம். சி.எல்.ஆர்.எஃப் ஐப் பயன்படுத்துவதன் மூலம் அனைத்து ஊசிகளையும் வெளியீட்டில் சேர்க்க துறைமுகங்களை சரிசெய்ய நாங்கள் இதைப் பயன்படுத்தினோம்
05 ம.

சி.எல்.ஆர்.டபிள்யூ

இது W பதிவேட்டை அழிப்பதைத் தவிர, CLRF அறிவுறுத்தலை ஒத்ததாக இருக்கலாம். தொடரியல் மிகவும் எளிமையானது:

சி.எல்.ஆர்.டபிள்யூ

ஆர்.எல்.எஃப் மற்றும் ஆர்.ஆர்.எஃப்

இந்த திசைகள் ஒரு பதிவேட்டில் ஒரு ஸ்லாட்டை இடது (ஆர்.எல்.எஃப்) அல்லது வலது (ஆர்.ஆர்.எஃப்) ஒரு பதிவேட்டில் கொண்டு செல்லும். உதாரணமாக, எங்களுக்கு 00000001 தேவைப்பட்டால், நாங்கள் ஆர்.எல்.எஃப் ஐப் பயன்படுத்தினோம், அந்த விஷயத்தில் நாங்கள் 00000010 ஐ வைத்திருக்கலாம். இந்த கட்டத்தில், 10000000 இருந்தால் மற்றும் ஆர்.எல்.எஃப் அறிவுறுத்தலைப் பயன்படுத்தினால் என்ன நடக்கும்? நிச்சயமாக, 1 கேரி கொடியில் நிலைநிறுத்தப்படும். நாங்கள் மீண்டும் ஒரு முறை ஆர்.எல்.எஃப் அறிவுறுத்தலைப் பயன்படுத்தினால், 1 மீண்டும் மீண்டும் தோன்றும். ஆர்.ஆர்.எஃப் அறிவுறுத்தலுக்கு நேர்மாறாக, ஒரே மாதிரியாக நிகழ்கிறது. கீழேயுள்ள வழக்கு ஆர்.எல்.எஃப் அறிவுறுத்தலுக்காக இதைக் காட்டுகிறது, இதில் ஒரு பதிவேட்டின் 8 பிட்களையும், கேரி கொடியையும் காணலாம்:

சி 87654321
0 00000001
ஆர்.எல்.எஃப் 0 00000010
ஆர்.எல்.எஃப் 0 00000100
ஆர்.எல்.எஃப் 0 00001000
ஆர்.எல்.எஃப் 0 00010000
ஆர்.எல்.எஃப் 0 00100000
ஆர்.எல்.எஃப் 0 01000000
ஆர்.எல்.எஃப் 0 10000000
ஆர்.எல்.எஃப் 1 00000000
ஆர்.எல்.எஃப் 0 00000001

எடுத்துக்காட்டு திட்டம்

ஒருவர் தொகுத்து இயக்கக்கூடிய ஒரு உதாரணக் குறியீட்டை இப்போது பார்க்கப்போகிறோம். இது போர்ட்ஏ பிட் 0 இல் தொடங்கி ஒரு தொடர்ச்சியான ஒளியை உருவாக்கும், இது போர்ட் பி பிட் 8 மற்றும்
பின்னர் திரும்பும்.
போர்ட் ஊசிகளில் ஒவ்வொன்றிற்கும் எல்.ஈ.டி. எங்களுக்கு சில பிட் இருக்கும்
இந்த டுடோரியலில் சுட்டிக்காட்டப்பட்ட நடைமுறைகள்.

தாமத வளையத்திற்கான TIME EQU 9FH மாறி.
PORTB EQU 06H போர்ட் பி முகவரி.
TRISB EQU 86H போர்ட் பி டிரிஸ்டேட் முகவரி.
PORTA 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 தெளிவான போர்ட் ஏ.
MOVWF கதவு

பிரதான திட்டத்தின் தொடக்க

RUNMOVLW
01H முதல் bitMOVWF ஐ அமைக்கவும்
போர்ட் B.CALL இல் PORTB
தாமதமாக சிறிது நேரம் காத்திருங்கள்
தாமதம்
போர்ட் பி இடதுபுறத்தில் பிட் நகர்த்தவும், பின்னர் இடைநிறுத்தவும். ஆர்.எல்.எஃப்
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 இது பிட் கேரி கொடிக்கு நகரும்
இப்போது போர்ட் ஏ மீது நகர்ந்து, பிட் இடதுபுறமாக நகர்த்தவும். ஆர்.எல்.எஃப்
PORTA, 1 இது பூஜ்ஜியக் கொடியிலிருந்து பிட்டை PortACALL க்கு நகர்த்துகிறது
DELAYCALL DELAYRLF
கதவு, 1 அழைப்பு
DELAYCALL
DELAYRLF
கதவு, 1 அழைப்பு
DELAYCALL
DELAYRLF
கதவு, 1 அழைப்பு
DELAYCALL
தாமதம்
போர்ட் ARRF இல் பிட்டை மீண்டும் நகர்த்தவும்
கதவு, 1 அழைப்பு
DELAYCALL
DELAYRRF
கதவு, 1 அழைப்பு
DELAYCALL
DELAYRRF
கதவு, 1 அழைப்பு
DELAYCALL
DELAYRRF
போர்டா, 1 இது பிட்டை பூஜ்ஜியக் கொடிக்கு நகர்த்துகிறது இப்போது பிட் நகர்த்தவும்
போர்ட் பி.ஆர்.ஆர்.எஃப்
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 பராமரிக்கிறது என்பதை நான் உங்களுக்குச் சொல்ல வேண்டியிருக்கும்.

BASIC இல் சில நிரலாக்கங்களைச் செய்தவர்களுக்கு இது உதவுகிறது. இல்லையெனில், கவலைப்பட வேண்டாம், நீங்கள் தொடர்ந்து கோட்பாட்டைப் பற்றி அறிய விரும்பலாம். கீழே வழங்கப்பட்டதைப் போன்ற ஒரு அடிப்படை நிரல் உள்ளது என்று கற்பனை செய்யுங்கள்:

10 ஆண்டுகள் K = 0
11 கே = கே + 1
12 IF K> 10 THEN GOTO 20 ELSE GOTO 11
20 அச்சு கே
21 END

நிரல் 10 வது வரியில் தொடங்குகிறது. K 0 என திட்டமிடப்பட்டவுடன், அது அடுத்த 11 வது வரிக்கு முன்னேறும். நாம் 1 க்கு K ஐ சேர்த்த பிறகு, 12 வது வரிக்கு செல்கிறோம்.

இந்த கட்டத்தில் கே 10 ஐ விட அதிகமாக இருந்தால் நாம் ஆர்வமாக இருக்கலாம். அப்படியானால், அடுத்ததாக நாம் 20 வது வரிக்கு செல்கிறோம், இல்லையெனில் 11 வது வரிக்கு திரும்புவோம்.

வரி 20 ஆவணங்களை K, மற்றும் வரி 21 நிரலை முடிக்கிறது. லேபிள்களுக்கு அங்கீகாரம் இல்லாததால், சிக்கல்கள் எங்கு இருக்கின்றன என்பதைப் பதிவுசெய்ய புரோகிராமருக்கு உதவ பேஸிக் வரி புள்ளிவிவரங்களைப் பயன்படுத்துகிறது. இலக்குகளுக்கு இடையில் தப்பிக்க PIC லேபிள்களைப் பயன்படுத்துகிறது - அல்லது உண்மையில் முடியுமா?

சிக்கல்கள் எங்கு இருக்கின்றன என்பதை நாங்கள் அறிந்திருப்பதை உறுதிசெய்ய லேபிள்களைப் பயன்படுத்துகிறோம், அத்துடன் எங்கு தேட வேண்டும் என்பதை PIC க்கு எளிமையான முறையில் தெரிவிக்க முடிகிறது.

ஒரு நிகழ்ச்சி நிரல் எனப்படும் உள் வரி கவுண்டரை PIC சாதகமாகப் பயன்படுத்துகிறது. தற்போதைய அறிவுறுத்தல் இருக்கும் நினைவக இலக்கின் நிரல் கவுண்டர் (பிசிக்கு சுருக்கமாக) பாதை.

தேர்ந்தெடுக்கப்பட்ட லேபிளைப் பார்வையிட நாங்கள் PIC க்குத் தெரிவிக்கும்போதெல்லாம், அது நினைவக இடத்தைப் புரிந்துகொண்டு, அந்த நினைவக இலக்கைக் காணும் வரை கணினியை அதிகரிக்கிறது. மேலே உள்ள அடிப்படை திட்டத்தை நாங்கள் பார்க்கும்போது இது துல்லியமாக அதே முறையாகும். ஒவ்வொரு அறிவுறுத்தலுக்கும் அருகில், நினைவக இடைவெளிகள் அல்லது கணினியின் உருப்படிகளுடன் குறியீட்டின் ஒரு பகுதி கீழே உள்ளது:

PC Instruction0000 movlw 03
0001 movwf 0C
0002 லூப் decfsc 0C
0003 கோட்டோ லூப்
0004 முடிவு

மேலே உள்ள ஆர்ப்பாட்டத்தில், நாங்கள் கணினியை 0000 ஆக நிர்ணயித்துள்ளோம். இதில் எங்களிடம் movlw 03 என்ற அறிவுறுத்தல் உள்ளது. பி.ஐ.சி இந்தத் தரவைச் செயல்படுத்தும்போது, ​​அடுத்தடுத்த அறிவுறுத்தல் ஸ்கேன் செய்யப்படுவதற்காக பி.சி. இந்த கட்டத்தில் PIC movwf 0C ஐக் காண்கிறது. பிசி மீண்டும் அதிகரிக்கப்படுகிறது.

இப்போது PIC ஆய்வுகள் decfsc 0C. 0C இன் விவரங்கள் 0 இல்லையென்றால், அந்த வழக்கில் பிசி 1 ஆல் அதிகரிக்கப்படுகிறது, அதேபோல் பின்வரும் அறிவுறுத்தலான கோட்டோ லூப், பி.சி.க்கு 0003 நிலைக்குத் திரும்பும்படி பிசிக்குத் தெரிவிக்கிறது, அதில் அந்த லூப் உள்ளது. 0C இன் விவரங்கள் 0 ஆக இருந்தால், பிசி 2 ஆல் அதிகரிக்க அறிவுறுத்தப்படுகிறது, அடுத்தடுத்த வழிமுறைகளைத் தவிர்க்கவும்.

தரவு அட்டவணைகளைப் புரிந்துகொள்வது

இது கணினியை 0004 நிலையில் வைக்கிறது, அதில் நிரல் முடிகிறது. அசெம்பிளரால் இலக்குகள் நிர்ணயிக்கப்படுகின்றன, மேலும் பிசி என்ன சாதிக்கிறது என்பதை நாங்கள் பொதுவாக கவலைப்பட வேண்டியதில்லை. தரவு அட்டவணைகளைப் பயன்படுத்தும்போது நாம் செய்வது போலவே அதைக் கட்டுக்குள் கொண்டுவருவதன் அவசியத்தை நாங்கள் காணலாம். தரவு அட்டவணை எவ்வாறு செயல்படுகிறது என்பதை விவரிக்க மிகவும் வசதியான வழி, ஒரு விளக்கத்துடன் தொடங்குவது.

பிசி சம 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 வரிகளுக்கு கீழே வரும்போது, ​​பி.ஐ.சி அறிவுறுத்தலை மறுபரிசீலனை செய்கிறது. இந்த கட்டளை அதைத் தொடர்ந்து வரும் மதிப்பை W பதிவேட்டில் அனுப்புகிறது, அதன் பிறகு சப்ரூட்டினிலிருந்து திரும்பி வருகிறது. RETLW அடிப்படையில் வருவாயைக் குறிக்கிறது, அதாவது W க்கு.

ரிட்டர்ன் என்ற சொல்லுக்குப் பிறகு நான் கமாவை வைத்தேன். நாங்கள் ஒரு சப்ரூட்டினில் இருப்பதால், அதன் மேற்பரப்பில் திரும்புவதற்கான அறிவுறுத்தல் தேவை. எனவே அறிவுறுத்தலில் RET. RETLW அறிவுறுத்தலுக்குப் பிறகு ஒரு எண், இதுதான் W பதிவேட்டில் வைக்கப்பட்டுள்ளது.

இந்த நிகழ்வில் இது எண்ணிக்கை 3. W பதிவேட்டில் எந்த அளவையும் நாம் நியமிக்க முடியும், இந்த எண்ணிக்கை அட்டவணை சப்ரூட்டினில் உள்ள நிரல் கவுண்டருடன் இணைக்கப்படும் வரை, நாங்கள் ஒரு மறுபரிசீலனை வழிமுறையைக் கண்டறியப் போகிறோம். மேலேயுள்ள எடுத்துக்காட்டில், 1 முதல் 7 வரையிலான எந்த எண்ணையும் நாம் வைத்திருக்க முடியும் என்பதை இது குறிக்கிறது. நாம் சப்ரூட்டினைக் கடந்தால், நிரலின் கூடுதல் பகுதியைச் செய்து முடிக்க முடியும். இந்த காரணத்திற்காக, தரவு அட்டவணையை பி.ஐ.சி திட்டத்தின் முடிவில் சரியாக வைப்பது ஒரு புத்திசாலித்தனமான நடவடிக்கையாகும், எனவே அந்த விஷயத்தில் நாம் ஓவர்ஷூட் செய்தால் எப்படியாவது திட்டத்தின் முடிவுக்கு வருவோம்.

குறுக்கீடுகளின் தலைப்பு மிக நீண்ட மற்றும் கடினமானதாக இருக்கும்.

குறுக்கீடுகளை விவரிக்கும் சிக்கலான எந்த முறையையும் நீங்கள் கண்டுபிடிக்க முடியாது, இருப்பினும் இந்த பகுதியின் முடிவில் ஒரு சிறிய அதிர்ஷ்டத்துடன் நீங்கள் உங்கள் சொந்த நிரல்களில் குறுக்கீடுகளைப் பயன்படுத்தலாம்.
பகுதியை 2 நிலைகளாக பிரித்துள்ளோம். இது தலைப்பை பிரிவுகளாக பிரிக்க உதவுவதோடு, எளிதான புரிதலுக்காக உங்களுக்கு எளிமையாக வழங்குவதும் ஆகும்.

குறுக்கீடு என்றால் என்ன? நிச்சயமாக, இந்த சொல் குறிப்பிடுவது போல, குறுக்கீடு என்பது ஒரு நுட்பம் அல்லது ஒரு சமிக்ஞை ஆகும், இது ஒரு நுண்செயலி / மைக்ரோகண்ட்ரோலரை எந்தவொரு விஷயத்திலிருந்தும் தடுக்கிறது.

உங்களுக்கு தினசரி விளக்கம் கொடுக்க என்னை அனுமதிக்கவும். நீங்கள் உங்கள் சொந்த வீட்டில் ஓய்வெடுக்கிறீர்கள் என்று நினைத்து, வேறொரு நபருடன் உரையாடுகிறீர்கள். திடீரென்று தொலைபேசி ஒலிக்கிறது.

நீங்கள் பேசுவதை விட்டுவிட்டு, அழைப்பாளரிடம் பேச தொலைபேசியைப் பற்றிக் கொள்ளுங்கள். உங்கள் தொலைபேசி தொடர்பு கிடைத்ததும், தொலைபேசி ஒலிக்கும் முன்பு தனிநபருடன் உரையாடத் திரும்ப முடிவு செய்கிறீர்கள். நீங்கள் ஒருவரிடம் அரட்டை அடிக்கும் போது முதன்மை வழக்கத்தை கருத்தில் கொள்ள முடியும், தொலைபேசி ஒலிப்பது உங்கள் உரையாடலை சீர்குலைக்கும், மேலும் வழக்கமான இடைவெளி என்பது தொலைபேசியில் பேசும் முறையாகும்.

தொலைபேசி விவாதம் முடிவுக்கு வரும்போது, ​​நீங்கள் அரட்டையடிக்கும் முதன்மை நடைமுறைக்குச் செல்கிறீர்கள். இந்த எடுத்துக்காட்டு துல்லியமாக ஒரு செயலியை எவ்வாறு குறுக்கிடுகிறது.

முதன்மை நிரல் இயங்குகிறது, ஒரு சுற்றுவட்டத்தில் சில செயல்பாடுகளைச் செய்கிறது, இருப்பினும் ஒரு குறுக்கீடு நிகழும்போது முதன்மை நிரல் நிறுத்தப்படும் போது வேறுபட்ட வழக்கம் செய்யப்படுகிறது. வழக்கமான முடிவடைகிறது, செயலி முன்பு போலவே முதன்மை வழக்கத்திற்கு நகரும்.

புரிந்துகொள்ளும் குறுக்கீடுகள்

PIC குறுக்கீட்டின் 4 ஆதாரங்களைக் கொண்டுள்ளது. அவை ஓரிரு குழுக்களாக உடைக்கப்படலாம். இரண்டு குறுக்கீடுகளின் ஆதாரங்கள், அவை பி.ஐ.சிக்கு வெளிப்புறமாகப் பயன்படுத்தப்படலாம், மற்றொன்று உள் செயல்முறைகள். இரண்டு வெளிப்புற வகைகளையும் இங்கே தெளிவுபடுத்துகிறேன். நாங்கள் டைமர்கள் வந்து தரவைச் சேமித்தவுடன் மற்ற இரண்டு வெவ்வேறு பயிற்சிகளில் விவரிக்கப் போகின்றன.

PIC இன் பின்-அவுட்டை நீங்கள் பார்க்க வேண்டுமானால், பின் 6 இது RB0 / INT என்பதை நீங்கள் கவனிப்பீர்கள். இந்த கட்டத்தில், RB0 தெளிவாக போர்ட் பி பிட் 0 ஆகும். ஐஎன்டி இது வெளிப்புற குறுக்கீடு முள் போல உள்ளமைக்கப்படலாம் என்பதைக் குறிக்கிறது. மேலும், போர்ட் பி பின்ஸ் 4 முதல் 7 வரை (பின்ஸ் 10 முதல் 13 வரை) குறுக்கீடுகளுக்கு பயன்படுத்தப்படலாம். ஐ.என்.டி அல்லது மற்றொரு போர்ட் பி ஊசிகளைப் பயன்படுத்துவதற்கு முன்பு, நாங்கள் இரண்டு பணிகளைச் செய்ய வேண்டும். முதலில் நாங்கள் குறுக்கீடுகளைப் பயன்படுத்துவோம் என்று பி.ஐ.சிக்கு தெரிவிக்க வேண்டும்.

அடுத்து, எந்த போர்ட் பி முள் ஐ / ஓ முள் என்பதைக் காட்டிலும் குறுக்கீடாகப் பயன்படுத்தப் போகிறோம் என்பதை நாம் நியமிக்க வேண்டும். PIC இன் உள்ளே நீங்கள் INTCON எனப்படும் ஒரு பதிவைக் காணலாம், மேலும் அது 0Bh முகவரியில் உள்ளது. இந்த பதிவேட்டில் நீங்கள் இயக்கப்பட்ட அல்லது முடக்கப்பட்ட 8 பிட்களைக் கண்டுபிடிப்பீர்கள். INTCON இன் பிட் 7 GIE என அழைக்கப்படுகிறது. இது குளோபல் இன்டர்ரங்குப்ட் இயக்கு. இதை 1 ஆக சரிசெய்வது, நாங்கள் ஒரு குறுக்கீட்டைப் பயன்படுத்துவோம் என்று PIC க்குத் தெரிவிக்கிறது.

INTCON இன் பிட் 4 ஐ INTE, INTerrupt Enable என அழைக்கப்படுகிறது. இந்த பிட்டை 1 ஆக வைப்பது RIC0 ஒரு குறுக்கீடு முள் ஆகப் போகிறது என்பதை PIC க்கு தெரிவிக்கிறது. பிட் 3 ஐ கட்டமைத்தல், RBIE என அழைக்கப்படுகிறது, நாங்கள் போர்ட் பி பிட்களை 4 முதல் 7 வரை பயன்படுத்தப் போகிறோம் என்று பிஐசிக்குத் தெரிவிக்கிறது. இந்த கட்டத்தில் பிஐசி இந்த முள் எப்போது அதிகமாகவோ அல்லது குறைவாகவோ இருக்கக்கூடும் என்பதைப் புரிந்துகொள்கிறது, அது செயல்படுவதை நிறுத்தி குறுக்கீட்டைத் தொடர வேண்டும் வழக்கமான. இந்த கட்டத்தில், குறுக்கீடு ஏறும் விளிம்பில் (0V முதல் + 5V வரை) அல்லது சிக்னலின் வீழ்ச்சி விளிம்பில் (+ 5V முதல் 0V வரை) இருக்குமா என்பதை PIC க்கு தெரிவிக்க வேண்டும்.

எளிமையாகச் சொல்வதானால், ஒவ்வொரு முறையும் சமிக்ஞை குறைந்த அளவிலிருந்து உயரத்திற்கு அல்லது உயர் மட்டத்திலிருந்து நகரும் போது பி.ஐ.சி குறுக்கிட விரும்புகிறோம். குற்றத்தால், உயரும் விளிம்பில் வைக்க இது நிறுவப்படலாம்.

விளிம்பு ‘தூண்டுதல்’ 81 வது முகவரியில் OPTION பதிவு எனப்படும் கூடுதல் பதிவேட்டில் திட்டமிடப்பட்டுள்ளது. நாம் ஆர்வமாக இருக்கும் பிட் பிட் 6 ஆகும், இது பெரும்பாலும் INTEDG என குறிப்பிடப்படுகிறது.

இதை 1 என அமைப்பது PIC ஐ பெருகிவரும் விளிம்பில் (இயல்புநிலை நிலை) சீர்குலைக்க தூண்டுகிறது மற்றும் அதை 0 ஆக அமைப்பது PIC ஐ நெகிழ் விளிம்பில் சீர்குலைக்க தூண்டுகிறது. PIC உயரும் விளிம்பில் செயல்படுத்த நீங்கள் விரும்பினால், நீங்கள் நிச்சயமாக இந்த பிட் எதுவும் செய்ய வேண்டியதில்லை.

இந்த கட்டத்தில், துரதிர்ஷ்டவசமாக, விருப்பப் பதிவு வங்கி 1 இல் உள்ளது, அதாவது வங்கி 0 இலிருந்து வங்கி 1 க்கு மாற்றியமைக்க நாங்கள் விரும்புகிறோம், விருப்பத்தேர்வு பதிவேட்டில் பிட் அமைக்கவும், அது வங்கி 0 க்குத் திரும்பிய பிறகு. ஒவ்வொரு பிட்டையும் நிறைவேற்றுவதே இங்கு முக்கியமானது ஒரே வேலைநிறுத்தத்தில் வங்கி 1 பதிவேடுகளில், எடுத்துக்காட்டாக துறைமுக ஊசிகளை நிறுவுதல், நீங்கள் முடித்திருந்தால் வங்கி 0 க்குத் திரும்புதல்.

நல்லது, இதன் விளைவாக பி.ஐ.சிக்கு எந்த முள் குறுக்கீடு இருக்கும் என்பதை நாங்கள் அறிவித்துள்ளோம், எங்கு விளிம்பைத் தூண்ட வேண்டும், எந்த நேரத்திலும் குறுக்கீடு நிகழும்போது நிரல் மற்றும் பி.ஐ.சி ஆகியவற்றில் என்ன நடக்கிறது? ஓரிரு விஷயங்கள் நடைபெறுகின்றன. முதலில், ஒரு ‘கொடி’ திட்டமிடப்பட்டுள்ளது.

இது பி.ஐ.சியின் உள் செயலிக்கு ஒரு குறுக்கீடு ஏற்பட்டதை தெரிவிக்கிறது. அடுத்து, நிரல் கவுண்டர் (முந்தைய டுடோரியலுக்குள் நான் பேசினேன்) PIC க்குள் ஒரு குறிப்பிட்ட முகவரிக்கான உதவிக்குறிப்புகள். இவை அனைத்தையும் தனித்தனியாக விரைவாகப் பார்ப்போம். குறுக்கீடு கொடி எங்கள் INTCON பதிவேட்டில், பிட் 1 என்பது INTF எனப்படும் குறுக்கீடு கொடி. இந்த கட்டத்தில், ஏதேனும் குறுக்கீடு ஏற்பட்டால், இந்த கொடி 1 ஆக சரி செய்யப்படும்.

குறுக்கீடு இல்லாதபோது, ​​கொடி 0 ஆக வைக்கப்படுகிறது. அதே போல் அது எல்லா சாதனைகளையும் பற்றியது. இந்த கட்டத்தில் நீங்கள் ‘என்ன பயன்?’ என்று யோசித்துக்கொண்டிருக்கலாம், நிச்சயமாக, இந்த கொடி 1 என திட்டமிடப்பட்டிருந்தாலும், பி.ஐ.சிக்கு முடியவில்லை, மற்றொரு குறுக்கீட்டிற்கு பதிலளிக்க முடியாது. எனவே, நாங்கள் ஒரு குறுக்கீட்டைக் கொண்டுவருகிறோம் என்பதை வெளிப்படுத்தலாம். கொடி 1 ஆக நிர்ணயிக்கப்படும், மேலும் PIC குறுக்கீட்டைச் செயல்படுத்துவதற்கான எங்கள் வழக்கத்திற்குச் செல்லக்கூடும்.

இந்த கொடி 1 ஆக நிர்ணயிக்கப்படாதபோது, ​​குறுக்கீட்டிற்கு தொடர்ந்து பதிலளிக்க PIC அனுமதிக்கப்பட்டபோது, ​​தொடர்ந்து முள் துடிப்பதால் PIC எங்கள் குறுக்கீடு வழக்கத்தின் தொடக்கத்திற்குத் திரும்பும், எந்த வகையிலும் அதை முடிக்க முடியாது. தொலைபேசியைப் பற்றிய எனது விளக்கத்திற்குத் திரும்புவது, தொலைபேசியைத் தூக்குவதற்கு ஒத்ததாகும், உடனடியாக விவாதிக்கத் தொடங்கியதும், மற்றொரு நபர் உங்களுடன் பேச விரும்புவதால் மீண்டும் ஒலிக்கத் தொடங்குகிறது.

ஒரு உரையாடலை நிறைவு செய்வது நல்லது, பின்னர் அடுத்தவருடன் பேச தொலைபேசியைப் பிடிக்கவும். இந்த கொடியுடன் ஒரு சிறிய சிக்கலை நீங்கள் காணலாம். PIC இந்த கொடியை விரைவாக 1 ஆக அமைத்தாலும், அது மீண்டும் 0 ஐ அமைக்காது! அந்த செயல்பாட்டை புரோகிராமர் பயன்படுத்த வேண்டும் - அதாவது நீங்கள். நான் உறுதியாகக் கருதுவதால், இதை சிரமமின்றி நிறைவேற்ற முடியும், மேலும் பி.ஐ.சி குறுக்கீடு வழக்கத்தை மேற்கொண்ட பிறகு அதை அடைய வேண்டும்.

நினைவக இருப்பிடம் நீங்கள் ஆரம்பத்தில் PIC ஐ இயக்கும் போதெல்லாம், அல்லது மீட்டமைப்பு இருந்தால், 0000h ஐ நிவர்த்தி செய்வதற்கான நிரல் கவுண்டர் உதவிக்குறிப்புகள், இது நிரல் நினைவகத்தின் தொடக்கத்திலேயே உடனடியாக இருக்கக்கூடும். ஆனால், குறுக்கீடு ஏற்பட்டால், நிரல் கவுண்டர் 0004h முகவரியைக் குறிக்கும்.

ஆகையால், எங்கள் திட்டத்தை நாங்கள் உருவாக்கும் போது, ​​குறுக்கீடுகள் இருக்கும், நாங்கள் முதலில் PIC க்கு முகவரி 0004h ஐ நம்ப வேண்டும், மேலும் திட்டத்தின் மீதமுள்ள மீதமுள்ள 0004h முகவரியில் தொடங்கும் குறுக்கீடு வழக்கத்தை பராமரிக்க வேண்டும்.

இது செய்ய தொந்தரவில்லாமல் இருக்கலாம். ஆரம்பத்தில், எங்கள் திட்டத்தை ORG எனப்படும் கட்டளையுடன் தொடங்குவோம். இந்த கட்டளை தோற்றம் அல்லது தொடக்கத்தைக் குறிக்கிறது. நாங்கள் ஒரு முகவரியுடன் ஒட்டிக்கொள்கிறோம். PIC முகவரி 0000h இல் தொடங்குவதால், நாங்கள் ORG 0000h என தட்டச்சு செய்கிறோம். அதன் பிறகு நாம் 0004h முகவரியைக் கடந்து செல்ல வேண்டும். எங்கள் முதன்மை திட்டத்திற்கு உதவிக்குறிப்புகளைக் கொண்ட லேபிளுடன் கோட்டோ அறிவுறுத்தலை வைப்பதன் மூலம் இதை நாங்கள் நிறைவேற்றுகிறோம்.

அதன்பிறகு இந்த கோட்டோ கட்டளையை இன்னும் ஒரு ORG உடன் பின்பற்றுகிறோம், இந்த தருணம் 0004h முகவரியுடன். இந்த கட்டளைக்குப் பிறகுதான் எங்கள் குறுக்கீடு வழக்கத்தை செருகுவோம். இந்த கட்டத்தில், இரண்டாவது ORG கட்டளையைத் தொடர்ந்து நேராக எங்கள் குறுக்கீடு வழக்கத்தை தட்டச்சு செய்ய முடியும், அல்லது குறுக்கீடு வழக்கத்தை சுட்டிக்காட்டும் ஒரு GOTO அறிக்கையை வைக்க முடியும்.

இது உண்மையிலேயே உங்கள் பங்கில் உள்ள விருப்பத்துடன் தொடர்புடையது. இது வழங்கும் பி.ஐ.சிக்கு குறுக்கீடு வழக்கத்தின் முடிவில் வந்துவிட்டது, RTFIE கட்டளையை வழக்கமான முடிவில் வைக்க வேண்டும். இந்த கட்டளை குறுக்கீடு வழக்கத்திலிருந்து திரும்புவதைக் குறிக்கிறது. பி.ஐ.சி இதைக் கவனிக்கும்போது, ​​குறுக்கீடு ஏற்படுவதற்கு முன்னர் பி.ஐ.சி இருந்த இறுதி நிலைக்கு நிரல் கவுண்டர் குறிக்கிறது. மேலே உள்ளதைக் காண்பிக்க குறியீட்டின் சுருக்கமான பகுதியை கீழே நிறுவியுள்ளோம்:

குறுக்கீடுகளைப் பயன்படுத்தும்போது உங்களுக்குத் தெரிவிக்க வேண்டிய இரண்டு விஷயங்கள் உள்ளன. ஆரம்பத்தில் உங்கள் முதன்மை நிரலிலும் குறுக்கீடு வழக்கத்திலும் ஒரே மாதிரியான பதிவேட்டைப் பயன்படுத்தினால், குறுக்கீடு நிகழும்போது பதிவின் விவரங்கள் பெரும்பாலும் மாறும் என்பதை நினைவில் கொள்ளுங்கள்.

உதாரணமாக, போர்ட் எ முதன்மைத் திட்டத்திற்கு தரவை அனுப்ப w பதிவேட்டைப் பயன்படுத்துவோம், எனவே ஒரு இடத்திலிருந்து இன்னொரு இடத்திற்கு தரவை மாற்ற குறுக்கீடு வழக்கத்தில் w பதிவேட்டை கூடுதலாகப் பயன்படுத்தலாம்.

நீங்கள் எச்சரிக்கையாக இல்லாவிட்டால், w பதிவேட்டில் அது குறுக்கீடு வழக்கத்தில் இருந்தபோது பெறப்பட்ட கடைசி மதிப்பை உள்ளடக்கும், எனவே நீங்கள் குறுக்கீட்டிலிருந்து திரும்பும்போது இந்த தகவல் நீங்கள் முன்பு வைத்திருந்த மதிப்பை விட போர்ட் A க்கு வழங்கப்படும். குறுக்கீடு ஏற்பட்டது.

இதைச் சுற்றியுள்ள வழிமுறைகள், w பதிவேட்டின் விவரங்களை நீங்கள் குறுக்கீடு வழக்கத்தில் மீண்டும் பயன்படுத்தும்போது அதை சிறிது நேரத்தில் சேமிப்பதாகும். இரண்டாவதாக, ஒரு குறுக்கீடு எப்போது நிகழ்கிறது, அதன்பிறகு எழலாம். நீங்கள் புரிந்து கொள்ளும்போது, ​​PIC ஒரு வெளிப்புற கடிகாரத்தைக் கொண்டுள்ளது, இது ஒரு படிகமாக இருக்கலாம் அல்லது அது ஒரு மின்தடை-மின்தேக்கி சேர்க்கையாக இருக்கலாம்.

இந்த கடிகாரத்தின் அதிர்வெண் என்னவாக இருந்தாலும், பி.ஐ.சி அதை 4 ஆல் வகுக்கிறது, அதன் பிறகு இது உள் நேரத்திற்கு பயன்படுத்தப்படுகிறது. உதாரணமாக, உங்கள் பி.ஐ.சியுடன் 4 மெகா ஹெர்ட்ஸ் படிகம் இணைக்கப்பட்டிருந்தால், அந்த வழக்கில் பி.ஐ.சி 1 மெகா ஹெர்ட்ஸில் வழிமுறைகளைச் செய்யும். இந்த உள்துறை நேரம் ஒரு வழிமுறை சுழற்சி என்று அழைக்கப்படுகிறது. இந்த கட்டத்தில், குறுக்கீடுகளுக்கு இடையில் 3 முதல் 4 வழிமுறை சுற்றுகளை நீங்கள் இயக்க வேண்டும் என்று தரவு தாள் கூறுகிறது (சந்தேகத்திற்கு இடமின்றி குறைவான அச்சில்).

4 சுற்றுகளை இயக்க வேண்டும். தாமதத்திற்கு காரணம் பி.ஐ.சிக்கு குறுக்கீடு முகவரி, கொடி, மற்றும் குறுக்கீடு வழக்கத்திலிருந்து திரும்பி வர நேரம் தேவைப்படுகிறது. ஆகையால், பி.ஐ.சிக்கு ஒரு குறுக்கீட்டைச் செயல்படுத்த மாற்று சுற்றுடன் பணிபுரிந்தால் இதை உங்கள் மனதில் கொள்ளுங்கள்.

இந்த கட்டத்தில், போர்ட் பி இன் 4 முதல் 7 பிட்களை நீங்கள் குறுக்கீடாகப் பயன்படுத்தினால், ஒரு புள்ளி. குறுக்கீடாக செயல்பட போர்ட் பி இல் குறிப்பிட்ட ஊசிகளை நீங்கள் தேர்வு செய்ய முடியவில்லை.

எனவே, நீங்கள் இந்த ஊசிகளை அனுமதித்தால், அவை அனைத்தும் பெறக்கூடியதாக இருக்கலாம். எனவே, உதாரணமாக, நீங்கள் 4 மற்றும் 5 பிட்களை வைத்திருக்க முடியாது - 6 மற்றும் 7 பிட்கள் ஒரே நேரத்தில் அதிகாரம் பெறலாம். குறுக்கீட்டைக் குறிக்க நான்கு பிட்களைப் பெறுவதன் நோக்கம் என்ன? நிச்சயமாக, நீங்கள் PIC வரை இணைந்த ஒரு சுற்று வைத்திருக்கலாம், நான்கு வரிகளில் யாராவது உயர்ந்தால், அந்த விஷயத்தில் இது PIC உடனடியாக செல்வாக்கு செலுத்த வேண்டிய ஒரு சிக்கலாக இருக்கலாம்.

இதன் ஒரு எடுத்துக்காட்டு ஒரு வீட்டு பாதுகாப்பு அலாரமாக இருக்கலாம், இதில் நான்கு சென்சார்கள் போர்ட் பி ஊசிகளுடன் 4 முதல் 7 வரை இணைக்கப்பட்டுள்ளன. இது துறைமுகங்களை தொடர்ந்து சோதித்துப் பார்க்கிறது மற்றும் பி.ஐ.சி வெவ்வேறு விஷயங்களைத் தொடர அனுமதிக்கிறது. அடுத்த டுடோரியலுக்குள், குறுக்கீட்டை நிர்வகிக்க ஒரு நிரலை உருவாக்க உள்ளோம்.

கடைசி டுடோரியலுக்குள் நாங்கள் பல அடிப்படைகளைக் கையாண்டோம், எனவே எங்கள் முதல் திட்டத்தை நாங்கள் இயற்றிய நேரம் வந்துவிட்டது என்று நினைக்கிறேன்.

நாம் எழுதும் நிரல் நாம் ஒரு சுவிட்சை இயக்கும் சந்தர்ப்பங்களின் அளவைக் கணக்கிட்டு, பின்னர் எண்ணைக் காண்பிக்கும்.

நிரல் 0 முதல் 9 வரை கணக்கிடப்படும், பைனரி வடிவத்தில் 4 எல்.ஈ.டிகளில் காணக்கூடியது, உள்ளீடு அல்லது குறுக்கீடு ஆகியவை RB0 இல் இருக்கும்.

குறுக்கீடு நிகழும் போதெல்லாம் நிரல் கவுண்டர் சுட்டிக்காட்டும் முகவரியின் மீது பாய்ச்சுமாறு பி.ஐ.சிக்கு நாம் தெரிவிக்க வேண்டிய முதல் விஷயம்.

அறுகோண எண்களைக் காண்பிக்கும் ஒரு தனித்துவமான முறையை நாங்கள் பயன்படுத்துகிறோம் என்பதை நீங்கள் கவனிப்பீர்கள். நான் நடக்கும் முன் F9h ஐப் பயன்படுத்துங்கள், இதில் h என்பது ஹெக்ஸாடெசிமலைக் குறிக்கிறது. இதை நாம் 0xF9 என எழுதலாம், இது இனிமேல் நாம் பயன்படுத்தப் போகும் அமைப்பு.

இப்போது நாம் குறுக்கீடுகளைப் பயன்படுத்தப் போகிறோம் என்று PIC க்குச் சொல்ல வேண்டும், மேலும் RB0 பின் 6 ஐ ஒரு குறுக்கீடு முள் பயன்படுத்துகிறோம்:

bsf INTCON, 7GIE - உலகளாவிய குறுக்கீடு செயலாக்கம் (1 = இயக்கு)
bsf INTCON, 4INTE - RB0 குறுக்கீடு செயலாக்கம் (1 = இயக்கு)
நான் குறுக்கீடு கொடியை அழிக்கப் போகிறேன் (நான் எதையும் நம்ப மாட்டேன்!)
bcf INTCON, 1INTF - கொடி பிட்டை அழிக்கவும்

தற்போது நாங்கள் எங்கள் 2 துறைமுகங்களை நிறுவ வேண்டும். நாம் இப்போது RB0 ஐ குறுக்கீடு முள் போல பயன்படுத்துவதால், இது ஒரு உள்ளீடாக நிறுவப்பட வேண்டும் என்பதை நினைவில் கொள்ளுங்கள்:

சுவிட்ச் எண்ணிக்கையின் எண்ணிக்கையை சேமிக்க COUNT எனப்படும் மாறியைப் பயன்படுத்தப் போகிறோம். போர்ட் A இல் மதிப்பை நாம் வெறுமனே அதிகரிக்க முடியும், ஆனால் எங்கள் குறுக்கீடு வழக்கத்தை எழுதும்போது நான் ஏன் ஒரு மாறியைப் பயன்படுத்துகிறேன் என்பதை நீங்கள் காண்பீர்கள்.

எனவே, எங்கள் முதன்மை திட்டம் இயற்றப்பட்டுள்ளது, இந்த கட்டத்தில் குறுக்கீடு ஏற்படும் போதெல்லாம் எவ்வாறு தொடரலாம் என்பதை பி.ஐ.சிக்கு தெரிவிக்க வேண்டும். இந்த எடுத்துக்காட்டுக்குள், எங்கள் குறுக்கீடு சுவிட்சாக இருக்கும். ஒவ்வொரு முறையும் சுவிட்ச் கட்டுப்படுத்தப்படும்போது சரிசெய்யக்கூடிய COUNT க்கு PIC ஐ நாங்கள் விரும்புகிறோம்.

ஆயினும்கூட, சுவிட்ச் 0 முதல் 9 வரை எத்தனை சந்தர்ப்பங்களை மூடுகிறது என்பதைக் காட்ட விரும்புகிறோம். மேலே, ஒவ்வொரு முறையும் குறுக்கீடு ஏற்படும் போது போர்ட் ஏ இன் மதிப்பை வெறுமனே அதிகரிக்க முடியும் என்று நான் கூறினேன். இருப்பினும், போர்ட் ஏ 5 பிட்களைக் கொண்டுள்ளது, நாங்கள் துறைமுகத்தை அதிகப்படுத்தியிருந்தால், நாங்கள் அதிக எண்ணிக்கையிலான 31 ஐக் கொண்டிருக்கப் போகிறோம். 31 வரை செல்ல வேண்டாம் என்று நான் ஏன் தேர்ந்தெடுத்தேன் என்பதற்கு இரண்டு விளக்கங்கள் உள்ளன.

ஆரம்பத்தில், நாங்கள் 7-பிரிவு திரையைப் பயன்படுத்துவோம், இது அதிகபட்சமாக 0 முதல் 15 வரை (ஹெக்ஸில் 0 முதல் எஃப் வரை) மட்டுமே செல்ல முடியும். அடுத்து, கடந்த சில பாடங்களில் நீங்கள் தடுமாறிய சில எண்கணித கட்டளைகளையும் உங்களுக்குக் காட்ட விரும்புகிறேன்.

எனவே எங்கள் குறுக்கீடு வழக்கத்துடன் தொடருவோம். COUNT இன் உள்ளடக்கங்களை PORTA க்கு மாற்றுவதற்காக இதைப் பயன்படுத்துவதால், தற்போது நாம் முதலில் செய்ய வேண்டியது எங்கள் w பதிவின் விவரங்களைச் சுருக்கமாக சேமிப்பதாகும். நாம் அதைச் சேமிக்காவிட்டால், எங்கள் எண்கணிதத்தின் காரணமாக முற்றிலும் வேறுபட்ட எண்ணை வழங்க முடியும். எனவே முதலில் அதை நிறைவேற்றுவோம்:

இந்த கட்டத்தில் COUNT இன் மதிப்பு 9 அல்லது அதற்கு மேற்பட்டதா என்பதை நாங்கள் புரிந்துகொள்கிறோம். COUNT 9 ஐ விட அதிகமாக இருந்தால், அதை மீண்டும் 0 க்கு வைக்கவும், இல்லையெனில் முக்கிய திட்டத்திற்குத் திரும்பவும், அதை நாங்கள் போர்ட் ஏ-க்கு வழங்க முடிகிறதா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். BTFSS கட்டளை நீங்கள் புரிந்துகொண்டதிலிருந்து அடுத்தது
கேரி கொடி திட்டமிடப்பட்டிருந்தால் அறிவுறுத்தல் அதாவது COUNT = 10:

இப்போது செய்ய வேண்டிய ஒரே விஷயம், கூட்டாக உள்ளிடுவதோடு, எங்கள் மாறிலிகளுக்கு மதிப்புகளைத் தீர்மானிப்பதும் ஆகும், அவை எங்கள் திட்டத்தின் தொடக்கத்தில் சரியாகச் செய்ய முடியும்.

ஒவ்வொரு முறையும் நீங்கள் சுவிட்சை இயக்கும்போது, ​​எல்.ஈ.டிக்கள் பைனரியில் 0000 முதல் 1010 வரை எண்ணப்படும், பின்னர் 0000 வரை இருக்கும்.

பின்வரும் விளக்கம் மேலே விளக்கப்பட்ட குறியீட்டோடு இணக்கமான சுற்று வரைபடத்தைக் காட்டுகிறது. சுவாரஸ்யமாக நீங்கள் வடிவமைப்பில் நேர மின்தேக்கி சேர்க்கப்பட்டுள்ளது என்பதைக் காண்பீர்கள். அந்த நேரத்தில் உங்களிடம் எதுவும் இல்லை என்றால் மின்தேக்கியைச் சேர்ப்பதைத் தவிர்ப்பதற்கான சுதந்திரத்தை நீங்கள் பெறுவீர்கள்.

இங்கே மின்தேக்கி ஆஸிலேட்டர் முள் மற்றும் தரை முழுவதும் தவறான கொள்ளளவு வழியாக செயல்படுகிறது.
நிச்சயமாக இது ஒரு மின்தேக்கியைத் தவிர்ப்பதற்கான மிகவும் புத்திசாலித்தனமான வழியாகத் தெரியவில்லை, ஏனெனில் தவறான மதிப்பு வெவ்வேறு கொடுக்கப்பட்ட நிலைமைகளுடன் மாறுபடக்கூடும்.

சுற்றுவட்டத்தில் காணக்கூடிய மற்றொரு பிரிவு சுவிட்ச் முழுவதும் கண்டிக்கும் நெட்வொர்க் ஆகும். இது இயந்திர மாறுதலின் போது குறுக்கீட்டைத் தடுக்கிறது மற்றும் மாறுதல் ஒரு மாற்று அல்லது பல மாற்றங்களாக இருந்தால் PIC குழப்பமடைவதைத் தடுக்கிறது.




முந்தைய: நிரல்படுத்தக்கூடிய இருதரப்பு மோட்டார் டைமர் சுற்று அடுத்து: பக்-பூஸ்ட் சுற்றுகள் எவ்வாறு இயங்குகின்றன