Hi, I have been working in a project with AT89C51. Specifically it is a car that follows a black line and it has to be communicated with a raspberry pi 2 that has a camera to see some signals like turn left, turn right or stop. It is neccesary to use interruptions and serial communication ( it is the only way to communicate both things), the problem is the microcontroller doesn´t recognize serial inputs. I have simulated the code in proteus and it is working pretty well but in real life the serial communication is not working. I have tried serial communication with an arduino but has the same problem.I don´t know if Im missing something. My code is the next one:
ORG 000H // origin LJMP MAIN ORG 23H LJMP SERIAL MAIN: MOV P1,#204 // sets port 1 as input port MOV P2,#0000000B // sets port 0 as output port MOV P0,#0000000B MOV A,#0000 MOV SCON,#50H MOV TMOD,#20H // TIMER1 mode autoreload MOV TH1,#0FDH //9600 baudrate MOV IE,#10010000B SETB TR1 (HERE IT IS THE MAIN CODE OF LINE FOLLOWER AND DEPENDIG OF THE VALUE OF REGISTER A,THE CAR STOPS OR TURNS LEFT/RIGHT) HERE IT IS THE SERIAL INTERRUPT PART //SERIAL PORT SUBRUTINA ORG 120H SERIAL: SETB P0.1 MOV A,SBUF CLR RI RETI END // end statement
Thanks for your help
Go on - seriously: you're doing a school project in 8051 assembler, and you don't have access to an instruction set document?
Not even an old-fashioned, hard-copy book from a real-life, bricks-and-mortar library?
Inconceivable!
found it
web.itu.edu.tr/.../setb_setnae.html
That's not 8051 - is it?
Again, having an Instruction Set reference to had is an absolutely fundamental requirement for programming in assembler. And, of course, it has to be the Instruction Set for the processor you are using!
How can you possibly have even considered starting this project without that?
You seem to have missed some really important classes - you need to talk to your teachers about catching up.