|
Press控制板之實作報告
|
| 指撥開關計時器 |
程式名稱 : timertst.zip (下載) ;動作方式 ;<1> RELAY 1 ON ;<2> 讀入第一位數指撥開關數值,放在 R0 ;<3> 延遲讀取值*0.1SEC ;<4> RELAY 1 ON ;<5> 讀入第一位數指撥開關數值,放在 R0 ;<6> 延遲讀取值*0.1SEC ;<7> 回到<1>重復執行 CHIP 80152 PP0 EQU 080H PP2 EQU 0A0H DELTIM EQU 30H DELTIM_REG EQU 31H WATCHDOG REG PP2.7 STOPBIT REG 20H.0 RUNBIT REG 20H.1 RELAY1 REG P3.4 ; P3.4 RELAY1 ;============================================================================ ORG 0H JMP AGAIN ORG 0BH ;TIMER0 中斷向量 JMP TIMER0 ;============================================================================ AGAIN: CPL WATCHDOG MOV P1,#11110000B MOV P0,#11111111B MOV TMOD,#00000001B MOV TH0,#0ECH ;TIMER0 = 65535 - 55535 = 10000 = 0.01 秒 MOV TL0,#077H ; SETB TR0 MOV IE,#10000010B ;CPU中斷致能, TIMER0中斷致能 CALL DEL ;============================================================================ MOV P1,#11110000B CLR STOPBIT CLR RUNBIT WORK: CPL WATCHDOG CLR RELAY1 ;RELAY1 ON CALL READ_DL ;讀取第一位數指撥開關 CALL DEL_TEN ;延遲讀取值*0.1SEC SETB RELAY1 ;RELAY1 OFF CALL READ_DL ;讀取第一位數指撥開關 CALL DEL_TEN ;延遲讀取值*0.1SEC JMP WORK ;============================================================================ DEL: MOV R3,#0FFH DELA: MOV R4,#0FFH DELB: CPL WATCHDOG DJNZ R4,DELB DJNZ R3,DELA RET ;============================================================================ DEL_RD: MOV R4,#20 DEL_RD2: DJNZ R4,DEL_RD2 RET ;============================================================================ ;讀入第一位數指撥開關數值,放在 R0 ;P1 = 11110001B READ_DL: MOV P1,#11110001B CALL DEL_RD MOV A,P1 CPL A SWAP A ANL A,#00001111B MOV R0,A RET ;============================================================================ ;0.1 秒計時,使用 R0 設定時間長短 ;當 STOPBIT = 1 時結束跳出 DEL_TEN: CPL WATCHDOG JNB STOPBIT,DEL_TEN0 DEL_TEN0: CJNE R0,#0,DEL_TEN2 RET DEL_TEN2: MOV A,#10 MOV DELTIM,A DEL_TEN4: CPL WATCHDOG JNB STOPBIT,DEL_TEN6 RET DEL_TEN6: MOV A,DELTIM CJNE A,#0,DEL_TEN4 DEC R0 JMP DEL_TEN0 ;============================================================================ ;0.01 秒計時,使用 Acc 設定時間長短 DELINT: MOV DELTIM,A DELINT1: CPL WATCHDOG MOV A,DELTIM CJNE A,#0,DELINT1 RET ;============================================================================ TIMER0: PUSH A PUSH PSW MOV TH0,#0ECH MOV TL0,#077H MOV A,DELTIM CJNE A,#0,TIMER0A JMP TIMER0B TIMER0A: DEC DELTIM TIMER0B: JNB RUNBIT,TIMER0C ;工作中緊急停止判斷 JB STOPBIT,TIMER0C JB STOP,TIMER0C SETB STOPBIT TIMER0C: POP PSW POP A RETI |
|
<<商標聲明>>
本網站於瀏覽者顯示器所出現之商標,皆為所屬公司之註冊商標,絕無侵犯之意。 建議使用I.E 4.0以上版本瀏覽器解析度1024*768觀看 |