Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[51] 8051 based controller with more than two interrupts?

Status
Not open for further replies.

hydr.ali

Newbie level 3
Newbie level 3
Joined
Dec 12, 2014
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
23
Hi,

I am currently using AT89C2051 to measure the width of two PWM signals connected to two external interrupts (INT0 and INT1) available on pins P3.2 and P3.3 respectively. Now, I need to measure another PWM signal using external interrupt. I wanted to know whether there is some 8051 based CHEAP controller (preferably without ADC and with minimal pins like AT89C2051 which has 20 pins) which I can use? Or is there any way that I can increase the number of external interrupt handling capability of AT89C2051 (using some logic circuitry maybe?)

Thanks.
 

You can use another AT89C2051 which works as slave controller and sending data on UART to your master means your current AT89C2051 with two external interrupts
 
You can use another AT89C2051 which works as slave controller and sending data on UART to your master means your current AT89C2051 with two external interrupts

Yeah, I think that would work for me. Can you please suggest some other 8051 family controller with more than two external interrupts so that I can use that single controller instead of one?

Thanks.
 

you can search for 89s53 or silicon labs controllers but as per your requirements of 20 pins compatible is hard to find or may be I don't know the name of that part
 
you can manage one interrupt pin and one io port
i hope this will helps you
untitled.JPG
Code:
#include <REG2051.H>
void main()
{
	IT0=1;
	EX0=1;
	EA=1;
	P3=0xFF;
	while(1)
	{
		//do some thing
	}
}
void ISR_INT0() interrupt 0
{
	unsigned char a;
	a=P3|0x04|0x40;
	switch(a)
	{
		case (~0x02):
			P1=0x01;
		break;
		case (~0x80):
			P1=0x02;
		break;
		case (~0x20):
			P1=0x04;
		break;
		case (~0x10):
			P1=0x08;
		break;
		case (~0x08):
			P1=0x10;
		break;
		default :
			break;
	}
}
 
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top