MOV R 0 05 CALL DELAY MOV R

  • Slides: 6
Download presentation

MOV R 0, #05 CALL DELAY: MOV R 1, #200; D 2:MOV R 2,

MOV R 0, #05 CALL DELAY: MOV R 1, #200; D 2:MOV R 2, #200; (T) D 1:DJNZ R 2, D 1; (T 1) DJNZ R 1, D 2; (T 2) DJNZ R 0, DELAY (T) RET § § 由指令表得知:MOV Rn, #direct需 1個機械週期 DJNZ Rn, rel需2個機械週期 選用外接震盪頻率為 12 MHZ所以 1個機械週期為 1 u. S; 延遲時間為: T 1=200× 1 u. S=200 u. S ; T 2=(1+T 1+2)× 200× 1 u. S=40. 6 m. S ; T=(1+T 2+2)× 5× 1 u. S=203. 015 ms ; § 因R 0=5 DEALY TIME=5*203. 015 m. S=1 sec 備註:若使用 16進位MSB為A~F記得在前面加 0,LSB後若沒有加H組譯器將 視為 10進位。

查表法 MOV DPTR, #HI_LIST MOVC A, @A+DPTR MOV HI, A MOV DPTR, #LO_LIST MOVC

查表法 MOV DPTR, #HI_LIST MOVC A, @A+DPTR MOV HI, A MOV DPTR, #LO_LIST MOVC A, @A+DPTR MOV LO, A. . . HI_LIST: DB 0, 226, 229, 232, 233, 236, 238, 240 DB 241, 242, 244, 246, 247, 248 LO_LIST: DB 0, 4, 13, 10, 20, 3, 8, 6 DB 2, 23, 5, 26, 1, 4, 3

中斷 PROG EQU 0000 h ORG PROG+0000 h JMP START ; 中斷向量表 ORG PROG+0003

中斷 PROG EQU 0000 h ORG PROG+0000 h JMP START ; 中斷向量表 ORG PROG+0003 h LCALL INT 0_ISR RETI ORG PROG+000 Bh LCALL T 0_ISRRETI ORG PROG+0013 h LCALL INT 1_ISR RETI ORG PROG+001 Bh LCALLT 1_ISR RETI ORG PROG+0023 h LCALLUART_ISR RETI ; 主程式開始 ORG PROG+0030 h START: MOV A, #0 FEH ; 將FEH寫入累加器 LOOP: MOV P 1, A ; 將FEH送到port 1 點量 1個led RR A ; 累加器值右旋 MOV R 0, #05 H ; 設定延遲 ACALL DELAY ; 呼叫延遲副程式 AJMP LOOP ; 回到LOOP無窮迴圈 ; 副程式開始DELAY: MOV R 1, #200 ;時間延遲 203. 015 ms D 2: MOV R 2, #200 D 1: DJNZ R 2, D 1 DJNZ R 1, D 2 DJNZ R 0, DELAY RET

中斷服務副程式 ; 中斷服務副程式 INT 0_ISR: … RETI INT 1_ISR: … RETI UART_ISR: … RETI

中斷服務副程式 ; 中斷服務副程式 INT 0_ISR: … RETI INT 1_ISR: … RETI UART_ISR: … RETI