tình hình là em đang làm cái mạch đèn giao thông.em debug bằng cách nhấn ctrl-f5 ,rồi nhấn f5 thì đầu tiên nó trỏ tới chương trình con khác mà ko phải là main!đáng lẽ là nó phải trỏ tới main chứ.trong khi nhấn f11 để nó thực hiện từng bước thì nó lại thực hiện theo đứng thứ tự!nạp vào mô phỏng thì tất nhiên ko chạy.bác nào biết vì sao thì chỉ giúp em với.CÁM ƠN CÁC BÁC NHIỀU.
code của em nè.các bác cop vào rồi debug thử:
CLK BIT P3.2
DAT BIT P3.3
LAT BIT P3.4
RESET BIT P3.5
TIME1 EQU 35H
TIME2 EQU 36H
TIME3 EQU 37H
COUNT1 EQU 38H
COUNT2 EQU 39H
DX1 EQU 4AH
DD1 EQU 4BH
DV1 EQU 4CH
DX2 EQU 4DH
DD2 EQU 4EH
DV2 EQU 4FH
FIRS BIT 5eh
TMP1 EQU r1
TMP2 EQU r2
ORG 00H
MAIN:
setb firs
here: call traffic_prog
call delay
jmp here
TRAFFIC_PROG:
JNB FIRS,FINALl ;NEU FIRST=0 THI QUA CHU KY CUOI
JMP FIRST_HALT ;CON KO THI QUA CHU KY DAU
JMP here
finall: jmp final
FIRST_HALT:
CLR DV1
CLR DD1
CLR DV2
CLR DX2
MOV COUNT2,TIME1
SETB DD2 ;BAT DEN DO 2
MOV R7,TIME2
CJNE R7,#-1,DENXANH1
DENVANG1:
MOV COUNT1,TIME3 ;so dem o cot den 1=time2
SETB DV1 ;BAT DEN VANG 1
CLR DX1 ;XOA DEN XANH 1
CALL XUAT_DULIEU
MOV A,TIME3
CALL GIAM
MOV TIME3,A ;giam time2
JMP END_FIRST
DENXANH1:
MOV COUNT1,TIME2
CLR DV1 ;BAT DEN XANH 1
SETB DX1 ;XOA DEN VANG 1
MOV A,TIME2
CALL GIAM
MOV TIME2,A ;giam time2
CALL XUAT_DULIEU;XUAT RA CAC LED
END_FIRST:
MOV A,TIME1
CALL GIAM
MOV TIME1,A ;giam time1
MOV R7,TIME1
CJNE R7,#0,WAITING
CLR FIRS ;KET THUC CHU KY DAU
MOV TIME1,TMP1 ;LAY LAI CAC GIA TRI TIMEi
MOV TIME2,TMP2
MOV A,TIME1
SUBB A,TIME2
MOV TIME3,A
WAITING:
JMP here
;**************************************
FINAL:
CLR DV1
CLR DD2
CLR DV2
CLR DX1
MOV COUNT2,TIME1
SETB DD2 ;BAT DEN DO 2
MOV R7,TIME2
CJNE R7,#-1,DENVANG2
DENXANH2:
MOV COUNT1,TIME2 ;so dem o cot den 1=time2
SETB DX1 ;BAT DEN XANH 1
CALL XUAT_DULIEU
MOV A,TIME2
CALL GIAM
MOV TIME2,A ;giam time2
JMP END_FINAL
DENVANG2:
MOV COUNT1,TIME3
SETB DV1 ;XOA DEN XANH 1,BAT DEN VANG 1
CLR DX1
MOV A,TIME3
CALL GIAM
MOV TIME3,A ;giam time3
CALL XUAT_DULIEU;XUAT RA CAC LED
END_FINAL:
MOV A,TIME1
CALL GIAM
MOV TIME1,A ;giam time1
MOV R7,TIME1
CJNE R7,#0,WAITING1
CLR FIRS ;KET THUC CHU KY DAU
MOV TIME1,TMP1 ;LAY LAI CAC GIA TRI TIMEi
MOV TIME2,TMP2
MOV A,TIME1
SUBB A,TIME2
MOV TIME3,A
WAITING1:
JMP HERE
;*************************************
XUAT_DULIEU:
MOV A,COUNT1
ANL A,0FH ;LAY NUA BYTE THAP CUA COUNT1
call trabang
CALL XUAT_LED ;XUAT RA LED 7 DOAN
MOV A,COUNT1
SWAP A
ANL A,0FH
call trabang
CALL XUAT_LED
MOV A,COUNT2
ANL A,0FH ;LAY NUA BYTE THAP CUA COUNT2
call trabang
CALL XUAT_LED ;XUAT RA LED 7 DOAN
MOV A,COUNT2
SWAP A
ANL A,0FH
call trabang
CALL XUAT_LED
MOV C,DX1
MOV ACC.0,C
MOV C,DV1
MOV ACC.0,C
MOV C,DD1
MOV ACC.0,C
MOV C,DX2
MOV ACC.0,C
MOV C,DV2
MOV ACC.0,C
MOV C,DD2
MOV ACC.0,C
CALL XUAT_LED
setb lat
clr lat
RET
XUAT_LED:
MOV R0,#8
CLR LAT
LOOP:
CLR CLK
JB ACC.0,HDTA
CLR DAT
JMP XCLK
HDTA: SETB DAT
XCLK:
CLR CLK
SETB CLK
RR A
DJNZ R0,LOOP
ret
TANG: ; KIEM TRA XEM NEU SO BCD TAN CUNG LA 9
MOV R0,A; THI CONG VAO HANG DON VI,NEU KO THI
ANL A,#0FH; CONG VAO HANG CHUC
CJNE A,#9,CONG_VAO_DON_VI
CONG_VA0_HANG_CHUC:
MOV A,R0
SWAP A
INC A
SWAP A
ANL A,#11110000B
RET
CONG_VAO_DON_VI:
MOV A,R0
INC A
RET
GIAM:
MOV R0,A
ANL A,#0FH
CJNE A,#0,TRU_VAO_DON_VI
TRU_VAO_HANG_CHUC:
MOV A,R0
SWAP A
DEC A
SWAP A
ORL A,#09H
RET
TRU_VAO_DON_VI:
MOV A,R0
DEC A
RET
delay:
mov r3,#10
looop1:
mov r4,#225
looop2:
mov r5,#225
looop3: djnz r5,looop3
djnz r4,looop2
djnz r3,looop1
ret
TRABANG:
INC A
MOVC A,@A+PC
RET
BANGMA: DB 252,96,218,242,102,230,190,224,254,246
END
code của em nè.các bác cop vào rồi debug thử:
CLK BIT P3.2
DAT BIT P3.3
LAT BIT P3.4
RESET BIT P3.5
TIME1 EQU 35H
TIME2 EQU 36H
TIME3 EQU 37H
COUNT1 EQU 38H
COUNT2 EQU 39H
DX1 EQU 4AH
DD1 EQU 4BH
DV1 EQU 4CH
DX2 EQU 4DH
DD2 EQU 4EH
DV2 EQU 4FH
FIRS BIT 5eh
TMP1 EQU r1
TMP2 EQU r2
ORG 00H
MAIN:
setb firs
here: call traffic_prog
call delay
jmp here
TRAFFIC_PROG:
JNB FIRS,FINALl ;NEU FIRST=0 THI QUA CHU KY CUOI
JMP FIRST_HALT ;CON KO THI QUA CHU KY DAU
JMP here
finall: jmp final
FIRST_HALT:
CLR DV1
CLR DD1
CLR DV2
CLR DX2
MOV COUNT2,TIME1
SETB DD2 ;BAT DEN DO 2
MOV R7,TIME2
CJNE R7,#-1,DENXANH1
DENVANG1:
MOV COUNT1,TIME3 ;so dem o cot den 1=time2
SETB DV1 ;BAT DEN VANG 1
CLR DX1 ;XOA DEN XANH 1
CALL XUAT_DULIEU
MOV A,TIME3
CALL GIAM
MOV TIME3,A ;giam time2
JMP END_FIRST
DENXANH1:
MOV COUNT1,TIME2
CLR DV1 ;BAT DEN XANH 1
SETB DX1 ;XOA DEN VANG 1
MOV A,TIME2
CALL GIAM
MOV TIME2,A ;giam time2
CALL XUAT_DULIEU;XUAT RA CAC LED
END_FIRST:
MOV A,TIME1
CALL GIAM
MOV TIME1,A ;giam time1
MOV R7,TIME1
CJNE R7,#0,WAITING
CLR FIRS ;KET THUC CHU KY DAU
MOV TIME1,TMP1 ;LAY LAI CAC GIA TRI TIMEi
MOV TIME2,TMP2
MOV A,TIME1
SUBB A,TIME2
MOV TIME3,A
WAITING:
JMP here
;**************************************
FINAL:
CLR DV1
CLR DD2
CLR DV2
CLR DX1
MOV COUNT2,TIME1
SETB DD2 ;BAT DEN DO 2
MOV R7,TIME2
CJNE R7,#-1,DENVANG2
DENXANH2:
MOV COUNT1,TIME2 ;so dem o cot den 1=time2
SETB DX1 ;BAT DEN XANH 1
CALL XUAT_DULIEU
MOV A,TIME2
CALL GIAM
MOV TIME2,A ;giam time2
JMP END_FINAL
DENVANG2:
MOV COUNT1,TIME3
SETB DV1 ;XOA DEN XANH 1,BAT DEN VANG 1
CLR DX1
MOV A,TIME3
CALL GIAM
MOV TIME3,A ;giam time3
CALL XUAT_DULIEU;XUAT RA CAC LED
END_FINAL:
MOV A,TIME1
CALL GIAM
MOV TIME1,A ;giam time1
MOV R7,TIME1
CJNE R7,#0,WAITING1
CLR FIRS ;KET THUC CHU KY DAU
MOV TIME1,TMP1 ;LAY LAI CAC GIA TRI TIMEi
MOV TIME2,TMP2
MOV A,TIME1
SUBB A,TIME2
MOV TIME3,A
WAITING1:
JMP HERE
;*************************************
XUAT_DULIEU:
MOV A,COUNT1
ANL A,0FH ;LAY NUA BYTE THAP CUA COUNT1
call trabang
CALL XUAT_LED ;XUAT RA LED 7 DOAN
MOV A,COUNT1
SWAP A
ANL A,0FH
call trabang
CALL XUAT_LED
MOV A,COUNT2
ANL A,0FH ;LAY NUA BYTE THAP CUA COUNT2
call trabang
CALL XUAT_LED ;XUAT RA LED 7 DOAN
MOV A,COUNT2
SWAP A
ANL A,0FH
call trabang
CALL XUAT_LED
MOV C,DX1
MOV ACC.0,C
MOV C,DV1
MOV ACC.0,C
MOV C,DD1
MOV ACC.0,C
MOV C,DX2
MOV ACC.0,C
MOV C,DV2
MOV ACC.0,C
MOV C,DD2
MOV ACC.0,C
CALL XUAT_LED
setb lat
clr lat
RET
XUAT_LED:
MOV R0,#8
CLR LAT
LOOP:
CLR CLK
JB ACC.0,HDTA
CLR DAT
JMP XCLK
HDTA: SETB DAT
XCLK:
CLR CLK
SETB CLK
RR A
DJNZ R0,LOOP
ret
TANG: ; KIEM TRA XEM NEU SO BCD TAN CUNG LA 9
MOV R0,A; THI CONG VAO HANG DON VI,NEU KO THI
ANL A,#0FH; CONG VAO HANG CHUC
CJNE A,#9,CONG_VAO_DON_VI
CONG_VA0_HANG_CHUC:
MOV A,R0
SWAP A
INC A
SWAP A
ANL A,#11110000B
RET
CONG_VAO_DON_VI:
MOV A,R0
INC A
RET
GIAM:
MOV R0,A
ANL A,#0FH
CJNE A,#0,TRU_VAO_DON_VI
TRU_VAO_HANG_CHUC:
MOV A,R0
SWAP A
DEC A
SWAP A
ORL A,#09H
RET
TRU_VAO_DON_VI:
MOV A,R0
DEC A
RET
delay:
mov r3,#10
looop1:
mov r4,#225
looop2:
mov r5,#225
looop3: djnz r5,looop3
djnz r4,looop2
djnz r3,looop1
ret
TRABANG:
INC A
MOVC A,@A+PC
RET
BANGMA: DB 252,96,218,242,102,230,190,224,254,246
END
Comment