智能定時(shí)插座程序
KEY_RET:
MOV A,P1
ORL A,#11110000B
CPL A
JNZ KEY_RET
RET
;****************************延時(shí)程序****************************
DELAY:
PUSH PSW
SETB RS0
MOV R7,#50
D1: MOV R6,#10
D2: DJNZ R6,D2
DJNZ R7,D1
POP PSW
RET
;***********************************************
INIT_T0:
MOV TMOD,#01H
MOV TH0,#HIGH(TMRVAR)
MOV TL0,#LOW(TMRVAR)
SETB ET0;開(kāi)T0中斷
SETB TR0;定時(shí)器T0開(kāi)始運(yùn)行
RET
;*******************************中斷程序*********************************
INT_T0:
PUSH ACC
PUSH PSW
MOV TH0,#HIGH(TMRVAR);重新裝入初值
MOV TL0,#LOW(TMRVAR)
AAA: INC TCOUNT ;軟件計(jì)數(shù)器加1
MOV A,TCOUNT
CJNE A,#TCOUNTER,INT_N2;判斷是否等于250,即是否計(jì)數(shù)到1秒。
CPL P2.6;P2.6接發(fā)光二極管,實(shí)現(xiàn)每秒閃光
MOV TCOUNT,#0
JNB STARTRUN,INT_N2;若等于0,轉(zhuǎn)移。即是否開(kāi)始運(yùn)行
DJNZ R7,AAA;實(shí)現(xiàn)分計(jì)數(shù),循環(huán)60次。1S乘以60.
MOV R7,#60
MOV A,SCOUNT2
CJNE A,#0,BBB;若小時(shí)計(jì)數(shù)器不為0,轉(zhuǎn)
JMP EEE
BBB:
MOV A,SCOUNT
CJNE A,#0,EEE;若分計(jì)數(shù)器不為0,轉(zhuǎn)
LJMP CCC
EEE: DEC SCOUNT;分計(jì)數(shù)器減1
MOV A,SCOUNT
JNZ INT_N2;若不為0,轉(zhuǎn)到顯示程序
MOV A,SCOUNT2
JNZ CCC
JMP DDD
CCC: DEC SCOUNT2;小時(shí)計(jì)數(shù)器減1
MOV SCOUNT,#59;分計(jì)數(shù)器裝載59
JMP INT_N2;轉(zhuǎn)顯示程序
;**************************報(bào)警,控制繼電器程序**************************************
DDD:
MOV R6,#10
LOOP4: CPL P3.7
CPL P3.6
MOV R5,#200
LOOP3:LCALL DELAY
DJNZ R5,LOOP3
DJNZ R6,LOOP4
LOOP5: CLR P3.4;繼電器工作。輸出低電平。
CLR P3.6
CLR EA
LJMP $
;**************************************顯示程序************************************88
INT_N2:
ORL P2,#00001111B;關(guān)所有顯示器
MOV A,Counter;取計(jì)數(shù)器值
MOV DPTR,#BitTab;將位碼地址送到DPTR
MOVC A,@A+DPTR
ANL P2,A;送位碼
JNB ACC.1,XIAOSHUDIAN;是否顯示第二位。是則轉(zhuǎn),加小數(shù)點(diǎn)處理。
MOV A,#DISPBUF
ADD A,Counter
MOV R0,A
MOV A,@R0
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
MOV P0,A;送段碼
LJMP SSS
XIAOSHUDIAN:
MOV A,#DISPBUF+1
MOV R0,A
MOV A,@R0
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
CLR C
SUBB A,#80H
MOV P0,A;送段碼
SSS: INC Counter
MOV A,Counter
CJNE A,#4,DISPEXIT;如果計(jì)數(shù)器為4,讓它回0
MOV Counter,#0
DISPEXIT:
POP PSW
POP ACC
RETI
DISPTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0到9的碼字
BitTAb: DB 0FEH,0FDH,0FBH,0F7H;位碼
END
本程序初稿完整版本下載: http://www.51hei.com/ziliao/file/chazuo1.rar
修改了部分功能后的終稿:http://www.51hei.com/ziliao/file/chazuo2.txt
效果圖:
希望大家能制作成功.
評(píng)論