??? 05/25/09 09:41 Read: times |
#165575 - Project using 89s52 |
Hello guys!I am a newcomer in the area of microcontroller but i have to do a project using 89s52 .It's about controlling the access of an automobile in a parking area. I have at my disposal a Parallax Rfid card reader, a servo motor Futaba s3003,the 89s52 uC integrated on a EEDT 5.0 board.
I've connected the rfid to the uC and wrote a code that is supposed to get a tag ID from the reader,compare it with a tag ID kept in memory and if the two ID's are the same to make a LED glow.But it's not working.If there is anybody that can help me figure out what is wrong with my code please don't hesitate to reply to this thread. Many thanks! COUNTER:DS 1 RECEIVED BIT 00h ;this is the bit that confirms the receival of 10 bytes VALID_TAG BIT 01h ;this is the bit that confirms the receival of a valid tag BYTE: DS 10 ;in this variable i will store the values of the incoming bytes BYTES: DB 30h,34h,31h,35h,44h,38h,41h,31h,46h,31h ;Is this correct??? ;this is a valid tag ID AJMP START START: MOV TMOD,#20h MOV SCON,#50h MOV TH1,#0F4h MOV TL1,#0F4h SETB TR1 MOV COUNTER,#01h ;init counter CLR RECEIVED CLR VALID_TAG SETB P2.0 ;the LED must be in off state FIRST_BYTE: JB TI,TRANS ;if transmission is over jump to trans MOV A,SBUF CJNE A,#0Ah,LAST_BYTE ;check first byte MOV COUNTER,#01h AJMP RECEV LAST_BYTE: CJNE A,#0Dh,SEC_BYTE ;check 12-th byte MOV COUNTER,#01h AJMP RECEV SEC_BYTE: MOV R1,COUNTER ;second byte CJNE R1,#01h,TRD_BYTE MOV BYTE,A AJMP INC TRD_BYTE: CJNE R1,#02h,FRTH_BYTE ;third byte MOV BYTE+1,A AJMP INC FRTH_BYTE: CJNE R1,#03h,FIFTH_BYTE ;fourth byte MOV BYTE+2,A AJMP INC FIFTH_BYTE: CJNE R1,#04h,SIXTH_BYTE ;fifth byte MOV BYTE+3,A AJMP INC SIXTH_BYTE: CJNE R1,#05h,SEVENTH_BYTE ;sixth byte MOV BYTE+4,A AJMP INC SEVENTH_BYTE: CJNE R1,#06h,EIGHT_BYTE ;seventh byte MOV BYTE+5,A AJMP INC EIGHT_BYTE: CJNE R1,#07h,NINTH_BYTE ;eight byte MOV BYTE+6,A AJMP INC NINTH_BYTE: CJNE R1,#08h,TENTH_BYTE ;ninth byte MOV BYTE+7,A AJMP INC TENTH_BYTE: CJNE R1,#09h,ELEVENTH_BYTE ;tenth byte MOV BYTE+8,A AJMP INC ELEVENTH_BYTE: CJNE R1,#0Ah,INC ;eleventh MOV BYTE+9,A SETB RECEIVED AJMP INC INC: INC COUNTER RECEV: CLR RI RET TRANS: CLR TI RET CHECK: JB RECEIVED,COMPARE ;if we received a 10 bytes tag ID jump to compare RET COMPARE: MOV A,BYTES ;compare the content of what we received with what we have in memory CJNE A,BYTE,FGG ;the comparisson is done at a byte-by-byte level MOV A,BYTES+1 CJNE A,BYTE+1,FGG MOV A,BYTES+2 CJNE A,BYTE+2,FGG MOV A,BYTES+3 CJNE A,BYTE+3,FGG MOV A,BYTES+4 CJNE A,BYTE+4,FGG MOV A,BYTES+5 CJNE A,BYTE+5,FGG MOV A,BYTES+6 CJNE A,BYTE+6,FGG MOV A,BYTES+7 CJNE A,BYTE+7,FGG MOV A,BYTES+8 CJNE A,BYTE+8,FGG MOV A,BYTES+9 CJNE A,BYTE+9,FGG SETB VALID_TAG FGG: RET LED_CHECK: JB VALID_TAG,GLOW_LED ;if tag ID is a valid tag then make a LED glow RET GLOW_LED: CLR P2.0 SJMP GLOW_LED END |