??? 03/10/12 14:43 Read: times |
#186556 - Jumping from RET to Jump Start Responding to: ???'s previous message |
Ok, my module has decided to start talking to my MCU, I didnt change anything, might do lotto later seems to be a lucky day....
Now it is reading the ack packet from module and storing it in RAM. When my program gets to RET instruction of my READ_SERIAL_TABLE, it jumps back up to JMP START which is the start of my entire program. Its suppose to LJMP COMPARE_ACK. The READ_SERIAL_TABLE is very similar to WRITE_TABLE_SERIAL and i have no issues with Write subroutine I have included all the code that i think is relevant to the issue, if more is needed I can post Dave #define BUF 0X40 ;DECLARE BUF AT LOCATION 40 OF MEMORY RS EQU P2.2 ;DELARE RS (REGISTER SELECT) TO PORT 2 PIN 2 E EQU P2.3 ;DECLARE E (ENABLE LINE) TO PORT 2 PIN 3 ORG 0 ;START OF PROGRAM (RESET) JMP START ;INSTRUCTS PROGRAM TO JUMP TO START SUBROUTINE ;ORG A3H ;UART1 INTERRUPT IS RECOGNISED ;LJMP ISR_SERIAL ;INSTRUCTS PROGRAM TO JUMP TO INTERRUPT SUBROUTINE FOR SERIAL COMMS ;=========================================================================== ;HERE IS THE MAIN PROGRAM WHERE ALL THE SUBROUTINES ARE CALLED AND DEVICES ARE INITILIZED, ;STACK POINTER IS SET TO LOCATION 4FH WHILE THE WATCHDOG IS DISABLED AS IT IS NOT NECESSARY FOR THIS PROGRAMME ;REGISTER 1 IS SET AS BUF TO STORE ACK PACKET FOROM FINGERPRINT MODULE WHEN NEEDED, ;REGISTER 2 IS SET AT 25 AS THIS IS THE SIZE OF THE COMMS PACKETS BEING SENT AND RECIEVED FROM FINGERPRINT MODULE. ;THE LCD,PORTS, PUSHBUTTONS AND UART ARE CALLED AND INITILIZED. ALSO A REQUSET CONECTION IS SENT TO THE MODULE TO ALLOW COMMS BETWEEN IT AND THE MCU ;============================================================================ ORG 100H START: MOV SP,#4FH ;START STACK @ 50H MOV WDTCN,#0DEH ;DISABLE WATCHDOG MOV WDTCN,#0ADH LCALL LCD_INIT ;INITILIZE LCD DISPLAY ;LCALL CONFIGURE_INTERRUPT ;SETS UP INTERRUPTS FPR SERIAL COMMS (IF REQUIRED) LCALL CONFIGURE_PORTS ;CALLS SUBROUTINE TO INITILIZE PORTS LCALL CONFIGURE_UART1 ;CALLS SUBROUTINE TO INITILIZE UART ON CROSSBAR LCALL REQUEST_CONNECTION ;CALLS REQUEST CONNECTION TO FINGERPRINT MODULE LCALL MAIN MAIN: LCALL DISPLAY_6 ;CALLS DISPLAY 'PRESS BUTTON TO SCAN FINGER' LCALL PUSHBUTTONS ;CALL PUSHBUTTON SUBROUTINE THATS CHECKS TO SEE IF A BUTTON IS PUSHED LJMP MAIN ;=========================================================================================== ;THESE SUBROUTINES ARE WHERE THE PROGRAME COMES TO ONCE A PUSHBUTTON IS PRESSED, THEY INITIATE READ/WRITE COMMANDS FOR SERIAL PORT COMMS, ;AND ALSO DISPLAY MESSAGES ON LCD DISPLAY ;============================================================================================ REQUEST_CONNECTION: LCALL REQUEST_CONNECT ;CALL RQST CONNECT SUBROUTINE TO CONNECT MODULE TO MCU ;LCALL DISPLAY_ACK ;NOT BEING USED LCALL COMPARE_REQUEST_ACK ;CALL TO COMPARE ACK PACKET WITH GIVEN ACK PACKET STORED IN CODE MEMORY LJMP MAIN ;============================================================================================================ ;THIS SECTION IS THE SUBROUTINES FOR SENDING THE 25 BYTE PACKET OVER THE SERIAL PORT ONCE THE BUTTON IS PUSHED, ;============================================================================================================ REQUEST_CONNECT: PUSH ACC CLR A MOV DPTR,#REQUEST_CONN ;MOVE DATA POINTER RQST_CONN TABLE MOV R0,#25 ;MOV R0 TO 25H TO ALLOW FOR THE 25 BITS IN TABLE LCALL WRITE_TABLE_SERIAL ;CALL WRITE_TABLE_SERIAL TO WRITE THE BYTES TO SBUF MOV R1,#BUF ;LET R1 = LOCATION 40 TO STORE ACK PACKET MOV R2,#25 ;LET R2 = SIZE OF PACKET TO BE COUNTED (25) CLR A LCALL READ_TABLE_SERIAL POP ACC RET ;RETURN TO CALL COMPARE ACK, ;================================================================================================= ;THIS SUBROUTINE WILL READ WHATS TRANSMITTED BACK FORM THE SERIAL PORTS (SBUF0) AND MOVE IT TO THE ACCUMULATOR ;================================================================================================= READ_SERIAL: TEST_RI: MOV A,SCON1 ANL A,#01H ;TEST RI1 FLAG TO SEE IF A BYTE IS READY TO BE READ FROM PERIPHERAL DEVICE JZ TEST_RI MOV B,SBUF1 ;MOVE VALUE IN SBUF TO B-REGISTER MOV A,SCON1 ;CLEAR RI TO RECIEVE NEXT BYTE AND RETURN FROM ROUTINE ANL A,#0FEH MOV SCON1,A CLR A RET ;=================================================================================================== ;THIS SUBROUTINE TAKES EACH VALUE READ FROM SERIAL PORT (SBUF) AND STORES IT AT LOCATION SET BY REGISTER R0 ;==================================================================================================== READ_TABLE_SERIAL: NEXT_BYTE2: LCALL READ_SERIAL ;CALL SUBROUTINE MOV @R1,B ;MOVE VALUE IN B REGISTER TO LOCATION OF R1 MOV B,#00H INC R1 ;INCREMENT R1 TO ADD NEXT RECIEVED BYTE TO MEMORY DJNZ R2,NEXT_BYTE2 ;LOOP AROUND AND DECREMENT R2 UNTIL = 0 TO RECEIVE EACH OF 25 BYTES THEN RETURN FROM SUBROUTINE RET ;THIS IS WHERE PROGRAM JUMPS TO JMP START UNEXPECTEDLY ;================================================================================================= ;HERE IS WHERE THE ACKNOWLEDGEMENT PACKET FORM THE FINGERPRINT MODULE IS READ AND STORED AT LOCATION SET BY R1, ;IT IS THEN COMPARED TO A GIVEN VALUE TO SEE IF ITS CORRECT ;================================================================================================= COMPARE_REQUEST_ACK: MOV DPTR,#REQUEST_ACK ;MOVE REQUEST_ACK PACKET TO DPTR MOV R1,#BUF ;LET R1 = LOCATION 40 MOV R2,#25 ;LET R2 = SIZE OF PACKET (25) LCALL CMP_MSG ;CALL COMPARE MESSAGE SUBROUTINE LJMP DISPLAY_5 |
Topic | Author | Date |
Serial coms, bytes not matching in serial capture | 01/01/70 00:00 | |
Couple of things at first glance... | 01/01/70 00:00 | |
Response | 01/01/70 00:00 | |
OK | 01/01/70 00:00 | |
what does the instruction spell out | 01/01/70 00:00 | |
Instruction says | 01/01/70 00:00 | |
Got it | 01/01/70 00:00 | |
have a good read | 01/01/70 00:00 | |
Nitgen FIM5360 module | 01/01/70 00:00 | |
Not familiar with the module... | 01/01/70 00:00 | |
Boot up time... | 01/01/70 00:00 | |
Response | 01/01/70 00:00 | |
Isn't boot time always time from reset or time from power-on | 01/01/70 00:00 | |
Ok | 01/01/70 00:00 | |
SCON1... | 01/01/70 00:00 | |
Jumping from RET to Jump Start | 01/01/70 00:00 | |
Please Ignore last post, issue resolved | 01/01/70 00:00 |