|
已解決
ORG 0000H
LJMP START
ORG 0003H
LJMP KEY
ORG 000BH
LJMP T0_INT
//----------------------------------
//主程序:
ORG 0030H
START: MOV IE,#83H ;CPU開中斷,T0開中斷,外部中斷0打開
CLR IT0 ;設(shè)置電平觸發(fā)
MOV R0,#00H ;個(gè)位數(shù)字
MOV R1,#00H ;十位數(shù)字
MOV R2,#00H ;判斷是否溢出標(biāo)志
MOV B,#00H
MOV P0,#0C0H ;初始
MOV P2,#03H
MOV TMOD,#02H ;T0方式2
MOV TH0,#6 ;計(jì)時(shí)器賦值
MOV TL0,#6
MOV R5,#39 ;設(shè)置循環(huán)次數(shù)
MOV R6,#100
MOV R7,#00H ;按鍵次數(shù)
MOV DPTR,#TAB_LED ;指針指向段碼
CJNE R7,#01H,$ ;等待鍵盤
RUN: SETB TR0 ;啟動(dòng)T0
LOOP: MOV A,R0 ;顯示個(gè)位
MOVC A,@A+DPTR ;
MOV P2,#02H ;
MOV P0,A ;送段碼顯示
LCALL DELAY_10MS ;動(dòng)態(tài)延時(shí)10ms
MOV A,R1 ;送十位
MOVC A,@A+DPTR ;顯示十位
MOV P2,#01H ;
MOV P0,A ;送段碼顯示
LCALL DELAY_10MS ;動(dòng)態(tài)延時(shí)10ms
CJNE R2,#00H,OVER ;判斷是否溢出
MOV A,B
CJNE A,#00H,START
NEXT: LJMP LOOP ;循環(huán)
OVER: MOV P2,#00H ;關(guān)斷
LJMP $
//----------------------------------
//共陽極段碼表:
TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
//----------------------------------
//T0中斷:
T0_INT: DJNZ R5,INT_END
MOV R5,#39
DJNZ R6,T0_INT
MOV R6,#100
INC R0 ;
CJNE R0,#10,INT_END ;判斷個(gè)位是否滿10
CLEAN1: MOV R0,#00H ;個(gè)位歸零
CLEAN2: INC R1 ;十位進(jìn)一
CJNE R1,#10,INT_END ;判斷十位是否滿10
MOV R1,#00H ;十位歸零
MOV R2,#01H ;標(biāo)志位置1
INT_END: RETI
//----------------------------------
//鍵盤輸入:
KEY: JNB P3.2,$
INC R7 ;R7加一
CJNE R7,#02H,CLEAN_R7
CLR TR0
LJMP KEY_END
CLEAN_R7: CJNE R7,#03H,KEY_END
MOV B,#01H
KEY_END: RETI
//----------------------------------
//延時(shí)10ms:
DELAY_10MS: MOV R3,#20
L1: MOV R4,#250
DJNZ R4,$
DJNZ R3,L1
RET
END
|
|