國立大甲高工 電機科 單晶片微電腦控制實習 輸出埠基礎實習 廣告燈 2018年11月7日 8051 單晶片實習----E0903廣告燈
實習 9-3 廣告燈 學習「查表法」的應用要領 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
實習 9-3 廣告燈 動作情形 電路圖 流程圖 程式 習題 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
廣告燈的動作: 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
廣告燈的電路圖: 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
廣告燈的流程圖: 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
廣告燈的程式 ORG 0000H START: MOV R0,#OK-TABLE+1 MOV DPTR,#TABLE MOV R1,#00H TABLE: DB 01111110B DB 00111100B DB 00011000B DB 00000000B DB 01111110B DB 11111111B ; OK: DB 11111111B END ORG 0000H START: MOV R0,#OK-TABLE+1 MOV DPTR,#TABLE MOV R1,#00H LOOP: MOV A,R1 MOVC A,@A+DPTR MOV P1,A ACALL DELAY INC R1 DJNZ R0,LOOP AJMP START ; DELAY: MOV R5,#2 DL1: MOV R6,#250 DL2: MOV R7,#200 DL3: DJNZ R7,DL3 DJNZ R6,DL2 DJNZ R5,DL1 RET 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
載入程式碼至單晶片程式記憶體起始位址 0000H 中 指令介紹: ORG 0000H ORG 0000H 載入程式碼至單晶片程式記憶體起始位址 0000H 中 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: MOV R0,#OK-TABLE+1 START: MOV R0,#OK-TABLE+1 TABLE :資料表的起始位址 Ok :資料表的最後位址 OK-TABLE-1=資料表的長度 R0 ← 資料表的長度 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: MOV DPTR,#TABLE TABLE :資料表的起始位址 DPTR :資料指標暫存器 DPTR ← #TABLE 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: MOV R1,#00H MOV R1,#00H 將常數 00 複製至 R1 內部暫存器 #00H 中 #符號後面的數字表示為常數(資料) H表示16進制,十六進制 00H = 十進制 00 R1在此的功能是存放資料表的偏移位址 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: MOV A,R1 MOV A,R1 R1在此的功能是存放資料表的偏移位址 A存放資料表的偏移位址 將R1的內容複製至A(A←R1) R1在此的功能是存放資料表的偏移位址 A存放資料表的偏移位址 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: MOVC A,@A+DPTR MOVC A,@A+DPTR A存放資料表的偏移位址 @A+DPTR 中 資料指標暫存器 DPTR 指向資料表的起始位址 TABLE A存放資料表的偏移位址 @A+DPTR 中 A+DPTR=指向要取得資料的位址 @符號後面表示為位址內的資料 @A+DPTR表示到指定位址去取得資料 最後將取得的資料存放至累積器A 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: MOV P1,A 把累積器(A)的內容,複製一份(輸出)至輸出埠 p1 將取得的資料輸出至輸出埠 P1 MOV P1,A 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
呼叫(跳躍至)副程式的起始位址 DELAY 處去執行,等到指令 RET 後再返回主程式原ACALL的下一個指令處繼續執行主程式 指令介紹: ACALL DELAY ACALL DELAY 呼叫(跳躍至)副程式的起始位址 DELAY 處去執行,等到指令 RET 後再返回主程式原ACALL的下一個指令處繼續執行主程式 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: INC R1 把 R1 的內容加1 指向下一個資料表的偏移位址 INC R1 2018年11月7日 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: DJNZ R0,LOOP DJNZ R0,LOOP 將 R0 內部暫存器內的數字減1,再判斷是否為0 若為0,則繼續執行本指令的下一個指令 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: DJNZ R7,DL3 DJNZ R7,DL3 將 R7 內部暫存器內的數字減1,再判斷是否為0 R7 內部暫存器內的數字減1後 若為0,則繼續執行本指令的下一個指令 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
跳躍至位址標名為START處去執行下一指令 指令介紹: AJMP START AJMP START 跳躍至位址標名為START處去執行下一指令 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
副程式介紹: DELAY: MOV R5,#2 DL1: MOV R6,#250 DL2: MOV R7,#200 流程圖解說 DELAY: MOV R5,#2 DL1: MOV R6,#250 DL2: MOV R7,#200 DL3: DJNZ R7,DL3 DJNZ R6,DL2 DJNZ R5,DL1 RET 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
延時0.1秒副程式: OSC解說 副程式介紹 延遲0.2秒 時間計算: 2018年11月7日 8051 單晶片實習----E0903廣告燈 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
指令介紹: MOV R5,#2 MOV R5,#2 將常數 2 複製至 R5 內部暫存器 #2 中 #符號後面的數字表示為常數(資料) H表示16進制,十六進制 02H = 十進制 2 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
延遲0.2秒時間計算: 內廻圈 中廻圈 外廻圈 DELAY: MOV R5,#2 T1=1週 DL1: MOV R6,#250 T2=1週 執行1指令所需時間 =T4=2us 執行完內廻圈所需時間 =200XT4=400us 中廻圈 計數用內部暫存器: R6 計數初始值: R6=250 執行一廻圈(3指令)所需時間 =T3+200XT4+T5=1+400+2=403us 每執行一廻圈所需時間 =T2+250x403+T6=1+100750+2 =100753us 外廻圈 計數用內部暫存器: R5 計數初始值: R5=2 每執行一廻圈所需時間 =T1+2x100753+T7=1+201506+2 =201509us 指令執行時間=1週 DELAY: MOV R5,#2 T1=1週 DL1: MOV R6,#250 T2=1週 DL2: MOV R7,#200 T3=1週 DL3: DJNZ R7,DL3 T4=2週 DJNZ R6,DL2 T5=2週 DJNZ R5,DL1 T6=2週 RET T7=2週 指令執行時間=2週 指令執行時間=2週 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
12MHz石英晶體在MCS-51內部動作方塊圖: 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
習題: 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈
本單元完畢 電機科 製作 回程式 2018年11月7日 8051 單晶片實習----E0903廣告燈