??? 06/17/04 05:07 Read: times |
#72621 - 89C51 external interrupts using Keil C51 Responding to: ???'s previous message |
Hi ,
Thanks alot Mr. Oleg Sergeev now in assembly program i'm getting the sharp pulse for both the external interrupts. I want to use these interrupts to receive/transmit data using sync modem. Now same i want same in C program using C51 compiler . Following is the C code i have written but that is not working.I'm using evaluation version of Keil Compiler . I have following doubts about ISR in C 1. Do we need to enable and disable the interrupt in its ISR to prohibit it to interrupt unless its ISR is over. 2. It it necessary to specify the register bank ( using 1 ..... etc ) 3. To set serial port baud rate do we need to set TCON regs , default C51 setting is sufficient or not. 4. Do I need to modify startup.a51 file for this code. Can anybody suggest me any other way to control sync modem ( source code or any url ) ? thaks Sanjay /*;Program to Transmit data to GMSK CMX469 Modem ;Int0 -> Applied RxSync clock used for data sending P3.2 ;Int1 -> Applied Txsync clock used for data receiving P3.3 ;P1.0 -> Tx data ;P1.1 -> Rx data ;P1.2 -> Carrier Detect */ #include <reg51.h> #include <stdio.h> //void ReceiveData(void); //to be called by interrupt ISR //void TransmitData(void); //to be called by interrupt ISR void InitializeInterrupts(void); void InitSerialPort(void); static void INT0_ISR (void); //RX Sync clock static void INT1_ISR (void); //TX sync clock void main() { InitSerialPort(); InitializeInterrupts(); while(1) { P0=0xff; P2=0xff; } } static void INT1_ISR (void) interrupt 2 using 1 //for tx { EX1=0; //disable int1 P2=0x00; // making it zero to know whether intr has ocured on falling edge // TransmitData(); //function to tranmit data EX1=1; //enable int1 } static void INT0_ISR (void) interrupt 0 using 1 //for receive { EX0=0; //disable int0 P0=0x00; // making it zero to know whether intr has ocured on falling edge //ReceiveData(); //function to receive data EX0=1; //enable int0 } void InitializeInterrupts(void) { EX0=1; IT0=1; //falling edge EX1=1; IT1=1; //falling edge EA=1; } void InitSerialPort(void) { SCON = 0x52; /* SCON */ /* setup serial port control */ TMOD = 0x20; /* TMOD */ /* hardware (9600 BAUD @12MHZ) */ TCON = 0x69; /* TCON */ TH1 = 0xfd; /* TH1 */ //9600 baud rate TR1=1; printf("nModem Program is runningn"); } |
Topic | Author | Date |
Using 89C51 external interrupts | 01/01/70 00:00 | |
RE: Using 89C51 external interrupts | 01/01/70 00:00 | |
89C51 external interrupts using Keil C51 | 01/01/70 00:00 | |
RE: 89C51 external interrupts using Keil C51 | 01/01/70 00:00 | |
RE: 89C51 external interrupts using Keil C51 | 01/01/70 00:00 | |
RE: 89C51 external interrupts using Keil C51![]() | 01/01/70 00:00 | |
89C51 external interrupts using Keil C51 | 01/01/70 00:00 | |
RE: Using 89C51 external interrupts | 01/01/70 00:00 | |
RE: Using 89C51 external interrupts | 01/01/70 00:00 | |
RE: Using 89C51 external interrupts | 01/01/70 00:00 | |
Did you notice Olegs replies??? | 01/01/70 00:00 | |
RE: Using 89C51 external interrupts | 01/01/70 00:00 |