2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
टाइमर्, काउण्टर् च हार्डवेयर मॉड्यूल् सन्ति, येषां उपयोगः समयान्तराणां मापनार्थं वा घटनानां गणनायाः वा भवति । तेषां उपयोगः बहुषु अनुप्रयोगेषु यथा सटीकसमयविलम्बं जनयितुं, आवृत्तीनां मापनं, बाह्यघटनानां गणना इत्यादिषु कर्तुं शक्यते । ५१ सूक्ष्मनियन्त्रकस्य समयनिर्धारकः सूक्ष्मनियन्त्रकस्य आन्तरिकसम्पदां भवति, तस्य परिपथस्य संयोजनं संचालनं च सूक्ष्मनियन्त्रकस्य अन्तः एव सम्पन्नं भवति अस्मिन् लेखे ५१ सूक्ष्मनियन्त्रके टाइमर्-गणकयोः कार्यसिद्धान्तस्य, विन्यासविधिस्य, अनुप्रयोगस्य च विस्तरेण परिचयः भविष्यति ।
अस्मिन् अध्याये व्यत्ययसम्बद्धं ज्ञानं विशिष्टसामग्रीणां कृते कृपया पश्यन्तु ।व्यत्यय प्रणाली व्याख्या
नोटः- समयनिर्धारकसंसाधनाः सूक्ष्मनियन्त्रकस्य आदर्शेन सह सम्बद्धाः सन्ति
समयनिर्धारकः सूक्ष्मनियन्त्रकस्य अन्तः लघु अलार्मघटिका इव भवति घण्टायाः निर्गमसंकेतस्य अनुसारं गणना-एककस्य मूल्यं प्रत्येकं "एकसेकेण्ड्" एकेन वर्धते । यदा गणना-एककस्य मूल्यं "सेट् अलार्म-स्मरणसमये" वर्धते, तदा गणना-एककं व्यत्यय-प्रणाल्यां व्यत्यय-अनुरोधं निर्गच्छति, "रिंग-स्मरणं" जनयिष्यति, तथा च कार्यक्रमं निष्पादनार्थं व्यत्यय-सेवा-कार्यं प्रति कूर्दति .
समयनिर्धारकस्य/गणकस्य कार्यसिद्धान्तः घण्टानाडीषु आधारितः भवति । समयनिर्धारकविधाने ते गणनाय आन्तरिकघटिकास्रोतः उपयुञ्जते; प्रत्येकं समयनिर्धारकस्य/गणकस्य एकः रजिस्टरः भवति यः वर्तमानगणनामूल्यं संगृह्णाति ।
समयः गणना च कार्याणि विशेषकार्यपञ्जिकायाः TMOD इत्यस्य नियन्त्रणबिट्-द्वारा नियन्त्रितानि भवन्ति । सीटी Csqrt{T}गटी चयनं कर्तुं TMOD रजिस्टरस्य सूचना निम्नलिखितसारणीयां सूचीबद्धा अस्ति । द्रष्टुं शक्यते यत् २ टाइमर्/काउण्टर् मध्ये चत्वारः ऑपरेटिङ्ग् मोड्स् सन्ति, ये TMOD इत्यस्य M1 तथा M0 इत्येतयोः माध्यमेन चयनिताः सन्ति । द्वयोः टाइमर्/गणकयोः मोड् ०, १, २ च समानाः सन्ति, परन्तु मोड् ३ प्रत्येकस्मिन् मोड् मध्ये कार्याणि यथा सन्ति ।
रजिस्टर TMOD रजिस्टर् मध्ये M1 तथा M0 सेट् कृत्वा टाइमर्/काउण्टर् 0 तथा 1 इत्येतयोः चत्वारः भिन्नाः ऑपरेटिंग् मोड् भवन्ति ।
कार्यविधिचित्रं निम्नलिखितम् अस्ति ।
मोड् १ मोड् ० इत्यस्य समानः अस्ति केवलं TH0 तथा TL0 इत्येतयोः सर्वे १६ बिट् उपयुज्यन्ते । अस्मिन् मोड् मध्ये TL0 इत्यस्य 8-बिट् ओवरफ्लो TH0 यावत् वहति, TH0 इत्यस्य ओवरफ्लो च TCON मध्ये ओवरफ्लो ध्वजं TF0 सेट् करोति ।
यदा GATE=0(TMOD.3), यदि TR0=1, तर्हि समयनिर्धारकः गण्यते । यदा GATE=1 भवति तदा बाह्यनिवेशः INTO इत्यस्य समयनिर्धारकं 0 नियन्त्रयितुं अनुमतिः भवति, येन नाडीविस्तारमापनं प्राप्तुं शक्यते । TRO TCON रजिस्टर् मध्ये नियन्त्रणबिट् अस्ति ।
नोटः STC89C51RC/RD+ श्रृङ्खलायाः सूक्ष्मनियन्त्रकस्य समयनिर्धारके द्वौ गणनादरौ स्तः: एकः 12T मोडः अस्ति, प्रत्येकं 12 घण्टासु 1 योजयति, पारम्परिकस्य 8051 सूक्ष्मनियन्त्रकस्य समानः, अन्यः 6T मोडः अस्ति, प्रत्येकं 6 घण्टासु 1 योजयति, गतिः The T0 दरः, यः पारम्परिकस्य 8051 सूक्ष्मनियन्त्रकस्य 2 गुणा भवति, सः उपयोक्तृप्रोग्रामं दहनसमये STC-ISP प्रोग्रामर् मध्ये सेट् भवति ।
अस्मिन् मोड् मध्ये टाइमर्/काउण्टर् स्वयमेव 8-बिट् काउण्टर् पुनः लोड् कर्तुं शक्नोति TL0 इत्यस्य ओवरफ्लो न केवलं TF0 सेट् करोति, अपितु TH0 इत्यस्य सामग्रीं TL0 इत्यत्र पुनः लोड् करोति । (TH0 प्रथमं सेट् कर्तुं शक्यते, पुनःस्थापनकाले च TH0 इत्यस्य सामग्री अपरिवर्तिता एव तिष्ठति)
Timer 0 कृते अस्मिन् मोड् मध्ये Timer 1 गणनां स्थगयति, प्रभावः च TR1 इत्यस्य 0 इति सेट् करणस्य समानः भवति ।
टाइमर 0 कृते अस्मिन् मोड् मध्ये टाइमर 0 इत्यस्य TL0 तथा TH0 द्वौ स्वतन्त्रौ 8-बिट् गणकौ रूपेण कार्यं कुर्वन्ति । अधोलिखिते चित्रे 3 मोड् मध्ये टाइमर् 0 इत्यस्य तर्कचित्रं दृश्यते । TL0 टाइमर 0 इत्यस्य नियन्त्रणबिट् व्याप्नोति: सीटी Csqrt{T}गटी , GATE, TRO, INTO तथा TFO इति । THO टाइमर फंक्शन् (काउण्टर पीरियड्) यावत् सीमितं भवति तथा च टाइमर 1 इत्यस्य TR1 तथा TF1 इत्यत्र कब्जां करोति । अस्मिन् समये TH0 समयनिर्धारकं 1 व्यत्ययं नियन्त्रयति ।
अतिरिक्तं ८-बिट् टाइमर्/काउण्टरं योजयितुं मोड् ३ प्रदत्तः अस्ति, येन सूक्ष्मनियन्त्रकं त्रीणि टाइमर्/काउण्टर् ददाति । मोड् ३ केवलं टाइमर्/काउण्टर् ० कृते एव प्रयोज्यः यदा टाइमर् T1 मोड् ३ मध्ये भवति तदा सः TR1-0 इत्यस्य समकक्षः भवति तथा च गणनां स्थगयति, तथा च T0 इत्यस्य उपयोगः द्वौ टाइमर् इत्यस्य रूपेण कर्तुं शक्यते
नोट्: STC-ISP प्रोग्रामिंग टूल् गणना कर्तव्यस्य समयस्य प्रारम्भिकमूल्येन सह आगच्छति यत् भवान् चयनितस्य मोड् इत्यस्य अनुसारं कोडं प्रतिलिखितुं शक्नोति ।
LED1 सूचकप्रकाशः टाइमर 0 व्यत्ययस्य माध्यमेन 1 सेकण्डस्य अन्तरालेन ज्वलति इति नियन्त्रितः भवति: D1 P2_0 पिन इत्यनेन सह सम्बद्धं भवति प्रत्येकं समये interrupt trigger function इत्यस्य उपयोगः भवति यदा 1000 भवति तदा एकं सेकण्ड् भवति ।
#include <REGX52.H>
sbit LED1 = P2^0;
void External0_ISR(void) interrupt 1
{
static unsigned int count = 0;
TL0 = 0x18; //需要手动复原
TH0 = 0xFC; //需要手动复原
// 中断处理代码
if(count == 1000)
{
count = 0;
LED1 = !LED1;
}
count++;
}
void Timer0_Init(void) //1毫秒@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x18; //设置定时初始值
TH0 = 0xFC; //设置定时初始值
TF0 = 0; //清除TF0标志
ET0 = 1;//打开T0中断
EA = 1;//打开总中断
TR0 = 1; //定时器0开始计时
}
void main()
{
Timer0_Init();
while(1)
{
}
}
अस्मिन् प्रदर्शने INTRINS.H पुस्तकालये _crol_left shift तथा _cror_right shift कार्याणि उपयुज्यन्ते यदा KEY1 बटनं दबावति तदा LED चालनप्रकाशः दिशास्थितिं परिवर्तयिष्यति, ज्वलति च । भौतिकचित्रसंयोजनम् : K1 P0_0 पिन इत्यनेन सह सम्बद्धं भवति, अष्टौ LED प्रकाशाः च P2 पिनमध्ये सम्मिलिताः भवन्ति ।
#include <REGX52.H>
#include <INTRINS.H>
sbit KEY1 = P0^0;
sbit KEY2 = P0^1;
unsigned char LEDMode;
void DelayXms(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void Timer0_Init(void) //1毫秒@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x18; //设置定时初始值
TH0 = 0xFC; //设置定时初始值
TF0 = 0; //清除TF0标志
ET0 = 1;//打开T0中断
EA = 1;//打开总中断
TR0 = 1; //定时器0开始计时
}
void External0_ISR(void) interrupt 1
{
static unsigned int count = 0;
TL0 = 0x18; //需要手动复原
TH0 = 0xFC; //需要手动复原
// 中断处理代码
if(count == 1000)
{
count = 0;
if(LEDMode == 0)
P2 = _crol_(P2,1);
if(LEDMode == 1)
P2 = _cror_(P2,1);
}
count++;
}
unsigned char Getkey()
{
unsigned char keyNumber = 0;
if(KEY1 == 0)
{
DelayXms(5);
while(KEY1 == 0);
DelayXms(5);
keyNumber = 1;
}
if(KEY2 == 0)
{
DelayXms(5);
while(KEY2 == 0);
DelayXms(5);
keyNumber = 2;
}
return keyNumber;
}
void main()
{
unsigned char keyNum = 0;
P2 = 0xfe;
Timer0_Init();
while(1)
{
keyNum = Getkey();
if(keyNum)
{
if(keyNum == 1)
{
LEDMode++;
if(LEDMode>=2)
{
LEDMode = 0;
}
}
}
}
}
अयं प्रदर्शनसङ्केतः LCD1602 मॉड्यूलस्य उपयोगं प्रदर्शनरूपेण करोति LCD1602 मॉड्यूलस्य विस्तरेण व्याख्यानं न भविष्यति, विशेषाध्यायनिर्देशाः च पश्चात् प्रदत्ताः भविष्यन्ति । यदि भवद्भ्यः LCD1602 पुस्तकालयस्य आवश्यकता अस्ति तर्हि भवान् मां निजीरूपेण सन्देशं कर्तुं शक्नोति। भौतिकचित्रसंयोजनम् : केवलं LCD1602 मॉड्यूल् बोर्ड् मध्ये प्लगं कुर्वन्तु।
#include <REGX52.H>
#include "LCD1602.h"
unsigned char Sec=55,Min=59,Hour;//秒分时
void DelayXms(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void Timer0_Init(void) //1毫秒@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x18; //设置定时初始值
TH0 = 0xFC; //设置定时初始值
TF0 = 0; //清除TF0标志
ET0 = 1;//打开T0中断
EA = 1;//打开总中断
TR0 = 1; //定时器0开始计时
}
void External0_ISR(void) interrupt 1
{
static unsigned int count = 0;
TL0 = 0x18; //需要手动复原
TH0 = 0xFC; //需要手动复原
// 中断处理代码
if(count == 1000)
{
count = 0;
Sec++;
if(Sec == 60)
{
Sec = 0;
Min++;
if(Min == 60)
{
Min = 0;
Hour++;
if(Hour == 24)
{
Hour = 0;
}
}
}
}
count++;
}
void main()
{
Timer0_Init();
LCD_Init();
LCD_ShowString(1,1,"Time:");
LCD_ShowString(2,1,"00:00:00");
while(1)
{
LCD_ShowNum(2,1,Hour,2);
LCD_ShowNum(2,4,Min,2);
LCD_ShowNum(2,7,Sec,2);
}
}