प्रौद्योगिकी साझेदारी

05: समयनिर्धारकः व्यत्ययः

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


१ .मूलतः कार्यं कुर्वन् एतादृशी प्रक्रिया व्यत्ययकारी इति उच्यते स्म ।
2. सामान्यतः, व्यत्ययस्रोतः व्यत्ययस्रोतस्य प्राथमिकतानुसारं पङ्क्तिबद्धः भवति, तथा च अत्यन्तं तात्कालिकघटनायाः व्यत्ययानुरोधस्रोतः प्रथमं संसाधितः भवति, अर्थात् प्रत्येकस्य व्यत्ययस्रोतः प्राथमिकतास्तरः निर्धारितः भवति CPU सर्वदा प्रथमं सर्वोच्चप्राथमिकतापूर्वकं व्यत्यय-अनुरोधस्य प्रतिक्रियां ददाति ।
3. C51 सूक्ष्मनियन्त्रकस्य 8 व्यत्यय-अनुरोध-स्रोताः सन्ति:

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

1. समयनिर्धारक T0 व्यत्यय

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

यथा चित्रे दर्शितम् अस्ति : व्यत्ययस्य अपि विन्यासपञ्जिकायाः ​​आवश्यकता भवति प्रथमः बिटव्यत्ययनियन्त्रणपञ्जिका (IE तथा XICON), द्वितीयः प्राथमिकता नियन्त्रणपञ्जिका अस्ति । अत्र वयं केवलं Timer T0 इत्यस्य interrupt इत्यस्य अध्ययनं कुर्मः ।
समयनिर्धारक T0 व्यत्ययस्य उपयोगाय : १.

ET0 = 1;ET0为定时器T0的中断开关,为1时打开中断
EA = 1;  EA为中断源的总开关。
  • 1
  • 2

सेट् टाइम् समाप्तस्य अनन्तरं interrupt function इत्यस्मिन् program execute कुर्वन्तु अतः भवन्तः कथं ज्ञास्यन्ति यत् interrupt function इति कः function अस्ति । — व्यत्ययसङ्ख्यां पृच्छन्तु (विभिन्नव्यत्ययस्रोतैः उत्पन्नाः व्यत्ययसङ्ख्याः भिन्नाः सन्ति)
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

2. प्रकरणम् : 1s अन्तरालेषु प्रकाशस्य चालू-निष्क्रियस्य साक्षात्कारं कर्तुं टाइमर T0 व्यत्ययस्य उपयोगेन

#include <REGX52.H>

sbit LED1 = P3^7;
int cnt = 0;

void Timer0_Init_10ms(void)		//10毫秒@11.0592MHz
{
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x00;		//设置定时初值
	TH0 = 0xDC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
}

void Timer0_interrupt_Init(void)//定时器T0中断初始化
{
	ET0 = 1;
	EA = 1;
}

void main(void)
{ 
	LED1 = 1;//先让灯熄灭的状态
	Timer0_Init_10ms();//打开定时器T0
	Timer0_interrupt_Init();//打开定时器T0中断
	while(1)
	{
		
	 }
}

/*定义中断函数*/
void Timer0Hander() interrupt 1
{
	TF0 = 0;//软件清零
	TL0 = 0x00; //重新给初值
	TH0 = 0xDC;
	cnt++;
	if(cnt == 100)//数100次,相当于1s
	{
		cnt = 0;
		LED1 = !LED1;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • यदा व्यत्ययः सक्षमः भवति तदा मुख्यकार्यं प्रत्येकं 10ms मध्ये कूर्दितं भविष्यति तथा च व्यत्ययकार्यस्य कार्यक्रमः निष्पादितः भविष्यति ।
  • यदा प्रथमः 10ms समयः आगच्छति तदा interrupt function निष्पादयन्तु, timer 10ms, cnt = 1 यावत् पुनः सेट् कुर्वन्तु, अपि च प्रकाशः अद्यापि निष्क्रियः अस्ति ।
  • यदा समयनिर्धारकस्य द्वितीयः 10ms आगच्छति तदा interrupt function निष्पादयन्तु, timer 10ms, cnt = 2 यावत् पुनः सेट् कुर्वन्तु, ततः प्रकाशः अद्यापि निष्क्रियः अस्ति ।
  • यदा टाइमरस्य 100तमः 10ms आगच्छति तदा interrupt फंक्शन् निष्पादयन्तु, टाइमर् 10ms यावत् रीसेट् कुर्वन्तु, cnt = 100, ततः प्रकाशः प्रज्वलितः भवति ।

एवं प्रकारेण १s इत्यस्य on-off अन्तरालः सिद्ध्यति ।