1 / 30

CH 2 I/O 埠輸入與輸出

CH 2 I/O 埠輸入與輸出. 中華科技大學電子工程學系 2012/09/28. RAM. A P0, P1 P2, P3 DPTR. R0,R1,R2,R3,R4,R5,R6,R7. MOV. 指令集. ( ) MOV A,#98H ( ) MOV A,#ABH ( ) MOV A,#98 ( ) MOV A,#10011000B ( ) MOV A,#100H ( ) MOV A,#255

Download Presentation

CH 2 I/O 埠輸入與輸出

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CH 2 I/O 埠輸入與輸出 中華科技大學電子工程學系 2012/09/28

  2. RAM A P0, P1 P2, P3 DPTR R0,R1,R2,R3,R4,R5,R6,R7 MOV

  3. 指令集 ( ) MOV A,#98H ( ) MOV A,#ABH ( ) MOV A,#98 ( ) MOV A,#10011000B ( ) MOV A,#100H ( ) MOV A,#255 ( ) MOV A,#30H ( ) MOV A,30H ( ) MOV 7FH,#7FH( ) MOV R3,R6 ( ) SETB 30.5H ( ) CLR 2F.7H ( ) CLR A ( ) SETB A ( ) JB 23.5H,L1 ( ) JB 33H,L1 ( ) JNB 27,3H,L2 ( ) JNB 53H,L2 ( ) MOV DPTR,#65536( ) MOV DPTR,#256 ( ) 8051所有暫存器都是八位元

  4. Immediate • Addressing (2) Direct Addressing

  5. (3) Register Addressing : 暫存器定址

  6. 直接定址與間接定址(Addressing) • 程式架構: 將30H~7FH的資料記憶體依次寫入#AAH資料 MOV A, MOV R0 , MOV R1 , MOV , INC R1 , L1 RET • MOV 30H,#0AAH MOV 31H,#0AAH :

  7. 程式記憶體 (ROM) • 存放本文程式的機械碼(machine code) • 存放程式中所需要的表格資料 MOV A,#07H (OFFSET) MOV DPTR,#SEG7_TABLE MOVC A,@A+DPTR MOV DPTR,#0FFE0H MOVX @DPTR,A SEG7_TABLE: DB: C0H,F9H,A4H,B0H,99H,92H,82H,F8H, DB: 80H,90H,88H,83H,C6H,A1H,86H,8EH 註 : 8051 指令集中三大搬移指令 MOV MOVC MOVX ROM

  8. MCS_51 時脈分析 • 振盪週期: 外部振盪器 2MHz ~ 16MHz 一個基頻時脈為一個相位 • 狀態週期: 兩個相位(P1,P2)構成一個狀態 • 機械週期: 六個狀態(S1~S6)構成一個機械週期 • 指令週期: 每執行一條指令所需機械週期 State Cycle, Machine Cycle, Instruction Cycle 12MHz 1us

  9. 模組程式之設計 EXTRN CODE(YYY) (呼叫YYY外部模組) PUBLIC XXX(宣告XXX為可供外部呼叫之模組) ROM SEGMENT CODE (共享 ROM空間) RSEG ROM XXX: (模組名稱標記) : CALL YYY : RET (模組程式結束用 RET) END (宣告結束)

  10. (1) DELAY_01MS PUBLIC DELAY_01MS ROM SEGMENT CODE RSEG ROM DELAY_01MS: MOV R3,# NOP DJNZ R3,$ DJNZ R4,DELAY_01MS RET END (1+1+2*48+2)*R4=100us*R4=0.1ms*R4

  11. (2) DELAY_10MS PUBLIC DELAY_10MS ROM SEGMENT CODE RSEG ROM DELAY_10MS: MOV R4,# DELAY1: MOV R3,# NOP DJNZ R3,$ DJNZ R4,DELAY1 DJNZ R5,DELAY_10MS RET END

  12. (3) FLOOK_TABLE PUBLIC FLOOK_TABLE ROM SEGMENT CODE RSEG ROM FLOOK_TABLE: MOV A,R1 MOVC A,@A+DPTR MOV R2,A RET END

  13. (4) BLOOK_TABLE PUBLIC BLOOK_TABLE ROM SEGMENT CODE RSEG ROM BLOOK_TABLE: MOV R1,#00H BL1: MOV A,R1 MOVC A,@A+DPTR XRL A,R2 JNZ BL2 JMP BL3 BL2: INC R1 DJNZ R3,BL1 MOV R1,#0FFH BL3: RET END

  14. 系統程式之設計 EXTRN CODE(YYY) ;RAM DEFINE LED_BUFFER EQU 30H LED_INDEX EQU 38H • ORG 00H JMP START START: LCALL YYY : JMP $ END

  15. 實作練習(一) • 控制一個七段顯示器 LED ,由 0 ~ F 輪流顯示, • 每次顯示時間延遲 1 秒。 • DELAY_10MS • FLOOK_TABLE • 撰寫系統主程式 LED_1 • ISP 線上燒錄並且進行測試

  16. P3 P2 硬體線路

  17. 程式架構 - 迴圈 for (index=0;index<count;index++) { Statement; }

  18. 查表程式架構 ;================================================ ;BASIC_1 : SEVEN SEGMENT DISPLAY FROM 0 TO F ;101/9/4 by tps COUNTER : 16 (R2) ; INDEX : 00 (R1) ;================================================ EXTRN CODE(FLOOK_TABLE) EXTRN CODE(DELAY_10MS) ORG 00H JMP START START: CLR P3.0 SETB P3.1 SETB P3.2 SETB P3.3

  19. LOOP_2: MOV R1,#00;INDEX MOV R2,#16 ;COUNTER MOV DPTR,#SEG7_TABLE LOOP_1: CALL FLOOK_TABLE MOV P1,R2 MOV R5,#100 CALL DELAY_10MS INC R1 DJNZ R2,LOOP_1 JMP LOOP_2 SEG7_TABLE: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH END

  20. 實作練習(二) • 控制一個排 LED ,進行各種霹靂燈的顯示, • 每次顯示時間延遲 1 秒。 • DELAY_10MS • FLOOK_TABLE • 撰寫系統主程式 LED_2 • ISP 線上燒錄並且進行測試 • LED 接在 P1 上

  21. 霹靂燈顯示順序

  22. 霹靂燈顯示順序 全亮閃爍三次

  23. 霹靂燈顯示順序 Repeat

  24. LED驅動方式 8051 8051 IOL=16mA IOH=400uA ON

  25. 實作練習(三) • 偵測指撥開關 DIPSW ,將相對應的訊號顯示在 • LED 上。 • DIPSW (P0 作輸入) • LED (P1作輸出) • 撰寫系統主程式 LED_3 • ISP 線上燒錄並且進行測試 ON DIP

  26. 實作練習(四) 密碼鎖設計 • 利用指撥開關 DIPSW 設定八個密碼,分別為 • 4CH, B5H, 89H, 66H, 1EH, 9AH, 15H, 73H • LED 燈將分別點亮 DS0 ~ DS8,其他的碼都是無效碼,所有LED燈都不顯示。 • DIPSW (P0 作輸入) • LED (P1作輸出) • 撰寫系統主程式 LED_4 • ISP 線上燒錄並且進行測試

  27. 程式架構 :Switch …. Case MOV A,R1 XOR A,#4CH JNZ LOOP_1 statement 1 MOV A,R1 XOR A,#0B5H JNZ LOOP_2 statement 2 MOV A,R1 XOR A,#89H JNZ LOOP_3 statement 3 LOOP_1: LOOP_2:

  28. 查表法程式架構 ;================================================ ;BASIC_4 : A Combination Lock Design ;101/9/4 by tps; ;================================================ EXTRN CODE(FLOOK_TABLE) EXTRN CODE(BLOOK_TABLE) ORG 00H JMP START START: MOV A,P0 MOV R2,A MOV DPTR,#DIP_TABLE MOV R3,#8 CALL BLOOK_TABLE

  29. 查表法程式架構 MOV A,R1 XRL A,#0FFH JNZ LOOP_1 MOV P1,#0FFH JMP START LOOP_1: MOV DPTR,#LED_CODE CALL FLOOK_TABLE MOV P1,R2 JMP START LED_CODE: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH DIP_CODE: DB 04CH,0B5H,089H,066H,01EH,09AH,015H,073H END

  30. 實作練習(五) 數學運算 Test Mathematic Module 376 (0178) + 174 (AE)= 376 - 174 = 376 x 174 = 65424 376 / 174 = 2.1609… 376 / 174 = 2…28 STEP 1: BCD_HEX (十進制 -> 16進制) STEP 2: Mathematic Operation STEP 3: HEX_BCD (16進制 ->十進制) STEP 4: Display Results on LCD Module

More Related