??? 02/14/05 18:55 Read: times Msg Score: +1 +1 Good Answer/Helpful |
#87421 - Reformatted Code for readability Responding to: ???'s previous message |
Hello Ro,
I reformatted your code and corrected some errors already pointed out by Erik Malund and Mehdi. I think you have some more mistakes. It also complies OK. MCS-51 Family Macro Assembler ASEM-51 V1.3 no errors Regards, Charles Bannister ;**************************************************************************** ; Subject: FAO Eric the Great. ; Full Name: Ro Macsamhrain ; Date: 02/14/05 11:40 ; Read: 7 times ; Score: Hasn't been scored ; http://www.8052.com/forum/read.phtml?id=87403 ; I am inputting a 4 bit binary code from the mt8870 which will go to ; p3.4 p3.5 p3.6 and 3.7 with 3.4 being the least significant bit and ; so on. I am inputting the codes to control a stepper motor and some ; led's. Here is my code which is having limited success to say the least. # ; Ro. Republic of Ireland. ; Thank you for your help any body! ; ______ _________ ; | |____D0_________P3.4_| 80C51 | ; |MT |____D1_________P3.5_| | ; |8870|____D2_________P3.6_| | ; | |____D3_________P3.7_| | ; | |____DA__(???)__INT0_| | ; ------ | | ; |_________| ;**************************************************************************** ;Take in a 6 digit DTMF code ;$MOD831 ORG 000h LJMP MAINCODE org 3h ie0vec: LJMP ie0vec1 org 0bh tf0vec: reti org 13h ie1vec: reti org 1bh tf1vec: reti org 23h serial: reti ; EXTERNAL INTERRUPT ORG 30H ie0vec1: CJNE R0, #00h, DIGIT2 SETB P2.2 MOV R1, P3 MOV R0, #01h JMP EXIT DIGIT2: CJNE R0, #01h, DIGIT3 SETB P2.4 MOV R2, P3 MOV R0, #02h JMP EXIT DIGIT3: CJNE R0, #02h, DIGIT4 SETB P2.6 MOV R3, P3 MOV R0, #03h JMP EXIT DIGIT4: CJNE R0, #03h, DIGIT5 MOV R4, P3 MOV R0, #04h JMP EXIT DIGIT5: CJNE R0, #04h, DIGIT6 MOV R5, P3 MOV R0, #05h JMP EXIT DIGIT6: CJNE R0, #05h, EXIT MOV R6, P3 MOV R0, #06h EXIT: RETI ORG 50H MAINCODE: MOV P3, #0FFh mov P2, #000h MOV R0, #00H SETB EX1 SETB EA JMP WAIT REWAIT: MOV R0, #00H ;Wait for DTMF Input WAIT: SETB P2.0 CJNE R0, #06H, WAIT CLR P2.0 MOV A, R1 ANL A, #0AAH MOV R1, A MOV A, R2 ANL A, #0AAH MOV R2, A ; 1 = 00010000 ; 2 = 00100000 ; 3 = 00110000 ; 4 = 01000000 ; 5 = 01010000 ; 6 = 01100000 ; 7 = 01110000 ; 8 = 10000000 ; 9 = 10010000 ; r1,r2 Like User Password r1 = 2 r2 = 1 CJNE r1, #20H, WRONGPWD CJNE r2, #10H, WRONGPWD ; r3 and r4 are the number of steps required r3 - number of tens r4 - number of ; units ; Max of 20 ; Add r3 and r4 ; Multiply r3 by 10 MOV A, r3 CALL CONVERT MOV r3, A MOV A, r4 CALL CONVERT MOV r4, A SETB P2.2 MOV A, r3 MOV B, #0Ah MUL AB ADD A, r4 MOV r3, A ; r3 now holds number of steps MOV A, R5 ANL A, #0AAH MOV R5, A CJNE R5,#02H, TEMP SETB P2.1 JMP LOOP TEMP: CLR P2.1 LOOP: CJNE r3, #00h, STEP JMP ENDOFLOOP STEP: SETB P2.3 CALL DELAY CLR P2.3 CALL DELAY MOV A, r3 SUBB A,#01h MOV r3, A JMP LOOP ENDOFLOOP: CLR P2.2 MOV R0,#00H JMP REWAIT WRONGPWD: JMP REWAIT MOV R0,#00H ; 1mS DELAY push 07h push 06h DELAY: MOV R7, #02d rst_inner_loop: MOV R6, #250d INNERLOOP: DJNZ R6, INNERLOOP DJNZ R7, rst_inner_loop pop 06h pop 07h RET CONVERT: ANL A, #0AAh ; NOW CONVERT DTMF CODE CJNE A,#02H, NEXT1 MOV A, #01H NEXT1:CJNE A,#20H, NEXT2 MOV A, #10H NEXT2:CJNE A,#0AH, NEXT3 MOV A, #03H NEXT3:CJNE A,#20H, NEXT4 MOV A, #04H NEXT4:CJNE A,#22H, NEXT5 MOV A, #05H NEXT5:CJNE A,#28H, NEXT6 MOV A, #06H NEXT6:CJNE A,#2AH, NEXT7 MOV A, #07H NEXT7:CJNE A,#80H, NEXT8 MOV A, #08H NEXT8:CJNE A,#82H, NEXT9 MOV A, #09H NEXT9: MOV A, #00H RET END |
Topic | Author | Date |
4 bit binary input | 01/01/70 00:00 | |
Swap and Mask | 01/01/70 00:00 | |
as I read your post | 01/01/70 00:00 | |
FAO Eric the Great. | 01/01/70 00:00 | |
oops | 01/01/70 00:00 | |
Updated profile | 01/01/70 00:00 | |
It is useful! | 01/01/70 00:00 | |
already shown | 01/01/70 00:00 | |
Reformatted Code for readability | 01/01/70 00:00 | |
Neat | 01/01/70 00:00 | |
re:neat | 01/01/70 00:00 | |
risque business | 01/01/70 00:00 | |
Strobe | 01/01/70 00:00 | |
Strobe valid? | 01/01/70 00:00 | |
For any pinout![]() | 01/01/70 00:00 |