Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 4.2 LED 查表. 2 HT46R23 程式記憶體 4096 個位址 (0000-FFFFh) 256 個位置為單一程式頁 TBLP 暫存器只有 8 個位元 TABRDC [m] 指令 依據 TBLP 所示位址將目前程 式頁之內容讀出 將低 8 位元存入資料記憶體 [m] 中 其餘位元存入.

Similar presentations


Presentation on theme: "1 4.2 LED 查表. 2 HT46R23 程式記憶體 4096 個位址 (0000-FFFFh) 256 個位置為單一程式頁 TBLP 暫存器只有 8 個位元 TABRDC [m] 指令 依據 TBLP 所示位址將目前程 式頁之內容讀出 將低 8 位元存入資料記憶體 [m] 中 其餘位元存入."— Presentation transcript:

1 1 4.2 LED 查表

2 2 HT46R23 程式記憶體 4096 個位址 (0000-FFFFh) 256 個位置為單一程式頁 TBLP 暫存器只有 8 個位元 TABRDC [m] 指令 依據 TBLP 所示位址將目前程 式頁之內容讀出 將低 8 位元存入資料記憶體 [m] 中 其餘位元存入 TBLH 暫存器 TABRDL [m] 指令依據 TBLP 所示位址將程式最後 一頁 (F00-FFFh) 之內容讀出 將低 8 位元存入資料 記憶體 [m] 中 其餘位元存入 TBLH 暫存器

3 3 HT46R23 與 TBLP TABRDC [m]:@7-@0 表 TBLP 內含值 P11-P8: 表目前程式計數器高四位元

4 4 4-2 ;PROGRAM : 4-2 PROGRAM (4-2.PRJ) ;FUNCTION: DISPLAY 1 PORT LED PILI LIGHT BY STEVEN #INCLUDEHT46R23.INC.CHIPHT46R23 ;-------------------------------------------------------------------- MY_DATA.SECTION'DATA' ;== DATA SECTION == DEL1 DB ? ;DELAY LOOP COUNT 1 DEL2 DB ? ;DELAY LOOP COUNT 2 DEL3DB ? ;DELAY LOOP COUNT 3 COUNTDB ? ;-------------------------------------------------------------------- LED_PORTEQUPA;DEFINE LED PORT LED_PORTCEQUPAC;DEFINE LED PORT CONTROL REG. MY_CODE.SECTIONAT 0'CODE' ;== PROGRAM SECTION == ORG 00H ;HT-46RXX RESET VECTOR CLRLED_PORTC;CONFIG PA AS OUTPUT MODE MAIN: MOVA,TAB_PILI MOVTBLP,A;INITIAL POINTER START ADDRESS MOVA,06 MOVCOUNT,A;SET DATA COUNT OF TAB_PILI

5 5 LOOP: TABRDCLED_PORT;READ TABLE AND SEND TO PA MOVA,80 MOVDEL1,A;SET DELAY FACTOR CALL DELAY;DELAY 80*1mS INCTBLP;UPDATE TABLE POINTER SDZCOUNT;COUNT DOWN BY 1 JMPLOOP;JUMP IF NOT TABLE END JMPMAIN;RESTART TAB_PILI: DC 000000010000001B;TABLE FOR MDK02 DC000000001000010B ;"1" FOR TURN ON DC000000000100100B DC000000000011000B DC 000000000100100B DC 000000001000010B

6 6 ;******************************************************************** ; Delay about DEL1*1mS ;******************************************************************** DELAY PROC MOV A,03 MOV DEL2,A;SET DEL2 COUNTER DEL_2:MOVA,110 MOVDEL3,A;SET DEL3 COUNTER DEL_3: SDZ DEL3 ;DEL3 DOWN COUNT JMP DEL_3 SDZ DEL2 ;DEL2 DOWN COUNT JMP DEL_2 SDZDEL1;DEL1 DOWN COUNT JMPDELAY RET DELAYENDP END

7 7 4-2-1 ;PROGRAM : 4-2-1.ASM ;FUNCTION: DISPLAY 1 PORT LED PILI LIGHT (LAST PAGE) BY STEVEN #INCLUDEHT46R23.INC.CHIPHT46R23 ;-------------------------------------------------------------------- MY_DATA.SECTION'DATA' ;== DATA SECTION == DEL1 DB ? ;DELAY LOOP COUNT 1 DEL2 DB ? ;DELAY LOOP COUNT 2 DEL3DB ? ;DELAY LOOP COUNT 3 COUNTDB ? ;-------------------------------------------------------------------- LED_PORTEQUPA;DEFINE LED PORT LED_PORTCEQUPAC;DEFINE LED PORT CONTROL REG. MY_CODE.SECTIONAT 0'CODE' ;== PROGRAM SECTION == ORG 00H ;HT-46RXX RESET VECTOR CLRLED_PORTC ;CONFIG PA AS OUTPUT MAIN: MOVA,TAB_PILI MOVTBLP,A;INITIAL POINTER START ADDRESS MOVA,06 MOVCOUNT,A;SET DATA COUNT OF TAB_PILI

8 8 LOOP: TABRDLLED_PORT ;LOAD FROM LAST PAGE MOVA,80 MOVDEL1,A;SET DELAY FACTOR CALL DELAY;DELAY 80*1mS INCTBLP;TABLE POINTER+1 SDZCOUNT;END OF TABLE? JMPLOOP;NO. NEXT ENTRY. JMPMAIN;RESTART

9 9 ;******************************************************************** ; Delay about DEL1*1mS ;******************************************************************** DELAY PROC MOV A,03 MOV DEL2,A;SET DEL2 COUNTER DEL_2:MOVA,110 MOVDEL3,A;SET DEL3 COUNTER DEL_3: SDZ DEL3 ;DEL3 DOWN COUNT JMP DEL_3 SDZ DEL2 ;DEL2 DOWN COUNT JMP DEL_2 SDZDEL1;DEL1 DOWN COUNT JMPDELAY RET DELAYENDP ORGLASTPAGE;ORG 0F00H TAB_PILI: DC 000000010000001B;TABLE FOR MDK02 DC000000001000010B ;"1" FOR TURN ON DC000000000100100B DC000000000011000B DC 000000000100100B DC 000000001000010B END

10 10 4-2-2 ;PROGRAM : 4-2-2.ASM (4-2-2.PRJ) ;FUNCTION: DISPLAY 1 PORT LED PILI LIGHT (ADDM A,PCL) BY STEVEN #INCLUDEHT46R23.INC.CHIPHT46R23 ;-------------------------------------------------------------------- MY_DATA.SECTION'DATA' ;== DATA SECTION == DEL1 DB ? ;DELAY LOOP COUNT 1 DEL2 DB ? ;DELAY LOOP COUNT 2 DEL3 DB ? ;DELAY LOOP COUNT 3 COUNTDB ? INDEXDB ? ;-------------------------------------------------------------------- LED_PORTEQUPA;DEFINE LED PORT LED_PORTCEQUPAC;DEFINE LED PORT CONTROL REG. MY_CODE.SECTIONAT 0'CODE' ;== PROGRAM SECTION == ORG 00H ;HT-46RXX RESET VECTOR CLRLED_PORTC;CONFIG PA AS OUTPUT MAIN: CLRINDEX;INITIAL POINTER START ADDRESS MOVA,06 MOVCOUNT,A;SET DATA COUNT OF TAB_PILI

11 11 LOOP: MOVA,INDEX;LOAD INDEX TO Acc CALLTRANS_PILI;LOOK-UP TABLE MOVLED_PORT,A;SEND TO LED PORT MOVA,80 MOVDEL1,A ;SET DELAY FACTOR CALL DELAY;DELAY 80*1mS INCINDEX;TABLE INDEX+1 SDZCOUNT;END OF TABLE? JMPLOOP;NO. NEXT ENTRY. JMPMAIN;RESTART

12 12 Delay about DEL1*1mS ;******************************************************************** DELAY PROC MOV A,03 MOV DEL2,A;SET DEL2 COUNTER DEL_2:MOVA,110 MOVDEL3,A;SET DEL3 COUNTER DEL_3: SDZ DEL3 ;DEL3 DOWN COUNT JMP DEL_3 SDZ DEL2 ;DEL2 DOWN COUNT JMP DEL_2 SDZDEL1;DEL1 DOWN COUNT JMPDELAY RET DELAYENDP ;******************************************************************** ; LOOK-UP TABLE BY Acc AS INDEX, AND RETURN DATA IN Acc ;******************************************************************** TRANS_PILIPROC ADDMA,PCL;PCL=PCL+Acc RET A,10000001B;RETURN FROM HERE IF Acc=0 RET A,01000010B;RETURN FROM HERE IF Acc=1 RET A,00100100B;RETURN FROM HERE IF Acc=2 RET A,00011000B;RETURN FROM HERE IF Acc=3 RET A,00100100B;RETURN FROM HERE IF Acc=4 RET A,01000010B;RETURN FROM HERE IF Acc=5 TRANS_PILIENDP END

13 13 ADDM A,PCL PC 指向 RET A,10000001B 若 ACC=0, 執行 ADDM A,PCL 接著執行 RET A,10000001B 回到主程式 ACC=10000001B ALU 8 bit 系統將低 8 位元置於 PC 即 PCL


Download ppt "1 4.2 LED 查表. 2 HT46R23 程式記憶體 4096 個位址 (0000-FFFFh) 256 個位置為單一程式頁 TBLP 暫存器只有 8 個位元 TABRDC [m] 指令 依據 TBLP 所示位址將目前程 式頁之內容讀出 將低 8 位元存入資料記憶體 [m] 中 其餘位元存入."

Similar presentations


Ads by Google