Microcontroller › 8051 › please check this coding for me asap..
- This topic has 1 reply, 2 voices, and was last updated 13 years, 1 month ago by
Dexter.
Viewing 2 posts - 1 through 2 (of 2 total)
-
AuthorPosts
-
February 4, 2012 at 2:52 pm #4760
bidadari
ParticipantRB0 EQU 000H ; Select Register Bank 0RB1 EQU 008H ; Select Register Bank 1 …poke to PSW to useDIS_A EQU P0.2DIS_B EQU P0.3DIS_C EQU P0.4;DIS_D EQU P0.6DIS_D EQU P2.2DIS_E EQU P0.5DIS_F EQU P0.1DIS_G EQU P0.0DIS1 EQU P0.7;DIS2 EQU P2.6DIS2 EQU P0.6LIGHT EQU P2.7SEN1 EQU P1.0SEN2 EQU P1.1test EQU P1.2test2 EQU P1.3UP BIT 0HDWN BIT 1HCOUNT EQU 30HSPEED EQU 31HVALUE_1 EQU 32HVALUE_2 EQU 33HNUMB1 EQU 34HNUMB2 EQU 35HNUMB3 EQU 36HVISITOR EQU 37HSTACK EQU 50H;
==========
==========
=========
; PROCESSOR INTERRUPT AND RESET VECTORS;
==========
==========
=========
ORG 00H ; ResetJMP MAINORG 000BH ;Timer Interrupt0JMP REFRESH;
==========
==========
=========
; Main routine. Program execution starts here.;
==========
==========
=========
MAIN:MOV PSW,#RB0 ; Select register bank 0MOV SP,STACKCLR LIGHTCLR test2CLR DIS_DMOV VISITOR,#00HMOV SPEED,#00HMOV COUNT,#00HMOV VALUE_1,#15HMOV VALUE_2,#15HCLR DIS1CLR DIS2MOV TMOD,#01H ;enable timer0 for scanningMOV TL0,#00HMOV TH0,#0FFHSETB ET0SETB EASETB TR0 ;Start the TimerMOV VALUE_1,#00HMOV VALUE_2,#00HSETB SEN1SETB SEN2UPP: JNB SEN1,UP_COUNTCPL testJB SEN2,UPPMOV A,VISITOR ;DOWN COUNTINGCJNE A,#00,UAPSCLR LIGHTJNB SEN2,$CALL DELAYJB SEN1,$CALL DELAYJNB SEN1,$CALL DELAYAJMP UPPUAPS: DEC VISITORMOV A,VISITORCJNE A,#00,UAPACLR LIGHTUAPA: MOV R2,VISITORMOV R1,#00HMOV R3,#00DMOV R4,#00DMOV R5,#00DMOV R6,#00DMOV R7,#00DCALL HEX2BCDMOV VALUE_2,R3MOV VALUE_1,R4JNB SEN2,$CALL DELAYJB SEN1,$CALL DELAYJNB SEN1,$CALL DELAYAJMP UPPUP_COUNT:SETB LIGHTINC VISITORMOV A,VISITORCJNE A,#99,UPPSMOV VISITOR,#98JNB SEN1,$CALL DELAYJB SEN2,$CALL DELAYJNB SEN2,$CALL DELAYAJMP UPPUPPS: MOV R2,VISITORMOV R1,#00HMOV R3,#00DMOV R4,#00DMOV R5,#00DMOV R6,#00DMOV R7,#00DCALL HEX2BCDMOV VALUE_2,R3MOV VALUE_1,R4JNB SEN1,$CALL DELAYJB SEN2,$CALL DELAYJNB SEN2,$CALL DELAYAJMP UPP;**************************************************HEX2BCD:MOV B,#10DMOV A,R2DIV ABMOV R3,B ;MOV B,#10 ; R7,R6,R5,R4,R3DIV ABMOV R4,BMOV R5,ACJNE R1,#0H,HIGH_BYTE ; CHECK FOR HIGH BYTESJMP ENDDHIGH_BYTE:MOV A,#6ADD A,R3MOV B,#10DIV ABMOV R3,BADD A,#5ADD A,R4MOV B,#10DIV ABMOV R4,BADD A,#2ADD A,R5MOV B,#10DIV ABMOV R5,BCJNE R6,#00D,ADD_ITSJMP CONTINUEADD_IT:ADD A,R6CONTINUE:MOV R6,ADJNZ R1,HIGH_BYTEMOV B, #10DMOV A,R6DIV ABMOV R6,BMOV R7,AENDD: RET;***************************************************************************;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&; 7 SEGMENT DISPLAY ROUTINE;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&DISP:MOV R2,SPEEDCJNE R2,#00H,AAS1CLR DIS_ACLR DIS_BCLR DIS_CCLR DIS_DCLR DIS_ECLR DIS_FSETB DIS_GRETAAS1: CJNE R2,#01H,AS2CLR DIS_BCLR DIS_CSETB DIS_ASETB DIS_DSETB DIS_ESETB DIS_FSETB DIS_GRETAS2: CJNE R2,#02H,AS3CLR DIS_ACLR DIS_BCLR DIS_DCLR DIS_ECLR DIS_GSETB DIS_CSETB DIS_FRETAS3: CJNE R2,#03H,AS4CLR DIS_ACLR DIS_BCLR DIS_CCLR DIS_DCLR DIS_GSETB DIS_ESETB DIS_FRETAS4: CJNE R2,#04H,AS5CLR DIS_BCLR DIS_CCLR DIS_FCLR DIS_GSETB DIS_ASETB DIS_DSETB DIS_ERETAS5: CJNE R2,#05H,AS6CLR DIS_ACLR DIS_CCLR DIS_DCLR DIS_FCLR DIS_GSETB DIS_BSETB DIS_ERETAS6: CJNE R2,#06H,AS7CLR DIS_ACLR DIS_CCLR DIS_DCLR DIS_ECLR DIS_FCLR DIS_GSETB DIS_BRETAS7: CJNE R2,#07H,AS8CLR DIS_ACLR DIS_BCLR DIS_CSETB DIS_DSETB DIS_ESETB DIS_FSETB DIS_GRETAS8: CJNE R2,#08H,AS9CLR DIS_ACLR DIS_BCLR DIS_CCLR DIS_DCLR DIS_ECLR DIS_FCLR DIS_GRETAS9: CJNE R2,#09H,AS10CLR DIS_ACLR DIS_BCLR DIS_CCLR DIS_DCLR DIS_FCLR DIS_GSETB DIS_ERETAS10: CJNE R2,#15H,AS11 ;symbol for –SETB DIS_ASETB DIS_BSETB DIS_CSETB DIS_DSETB DIS_ESETB DIS_FCLR DIS_GRETAS11: CJNE R2,#16H,AS12 ;switch off all dispSETB DIS_ASETB DIS_BSETB DIS_CSETB DIS_DSETB DIS_ESETB DIS_FSETB DIS_GRETAS12: MOV SPEED,#00HAJMP DISP;**********************************************************; INTRRUPT ROUTINE TO REFRESH THE DISPLAY;**********************************************************REFRESH:PUSH PSW ; save current registersetMOV PSW,#RB1PUSH ACCINC COUNTMOV R4,COUNTQA1: CJNE R4,#01H,QA2MOV SPEED,VALUE_1CLR DIS2SETB DIS1CALL DISPAJMP DOWNQA2: CJNE R4,#02H,QA3MOV SPEED,VALUE_2CLR DIS1SETB DIS2CALL DISPAJMP DOWNQA3: MOV COUNT,#01HMOV R4,COUNTAJMP QA1DOWN: MOV TL0,#0FFHMOV TH0,#0F0HPOP ACCPOP PSWRETI;**********************************************************DELAY:MOV R1,#4FHREP2: MOV R2,#0FFHREP1: NOPDJNZ R2,REP1DJNZ R1,REP2RET;**********************************************************ENDFebruary 11, 2012 at 4:03 am #7149Dexter
Participanti am not so good in asm
but if u explain the working of the project
i will try to write in c
-
AuthorPosts
Viewing 2 posts - 1 through 2 (of 2 total)
- You must be logged in to reply to this topic.