回覆列表
  • 1 # 使用者4943389245586

    ORG0000H

    LJMPTXDA;長跳轉至TXDA

    ORG50H;程式從0050H單元開始寫入

    TXDA:MOVTMOD,#20H;TXDA子程式,定時器T1工作方式2,8位自動重灌

    MOVTH1,#0FAH;裝定時器初值,設定波特率

    MOVTL1,#0FAH

    CLRET1;關定時器T1中斷使能

    SETBTR1;T1啟動

    MOVSCON,#40H;串列埠工作方式1.禁止接收

    MOVPCON,#00H;波特率不加倍

    CLRES;執行串列埠中斷

    LOOP:JNBP1.0,A0;判斷P1.0是否為0,是則跳A0,否則繼續

    JNBP1.1,A1;判斷P1.1是否為0,是則跳A1,否則繼續

    JNBP1.2,A2;

    JNBP1.3,A3;

    JNBP1.4,A4

    JNBP1.5,A5

    JNBP1.6,A6

    JNBP1.7,A7;同上

    SJMPLOOP;若沒有相應的建按下,則跳LOOP繼續掃描等待

    A0:

    MOVA,#11111110B;A送立即數11111110B

    MOVSBUF,A;傳送A中資料

    LP0:JNBTI,LP0;等待發送完成

    CLRTI;清楚傳送中斷標誌

    RET;子程式返回

    A1:;A1-A7同上,只是發生的資料部同而已.

    MOVA,#11111101B

    MOVSBUF,A

    LP1:JNBTI,LP1

    CLRTI

    RET

    A2:

    MOVA,#11111011B

    MOVSBUF,A

    LP2:JNBTI,LP2

    CLRTI

    RET

    A3:

    MOVA,#11110111B

    MOVSBUF,A

    LP3:JNBTI,LP3

    CLRTI

    RET

    A4:

    MOVA,#11101111B

    MOVSBUF,A

    LP4:JNBTI,LP4

    CLRTI

    RET

    A5:

    MOVA,#11011111B

    MOVSBUF,A

    LP5:JNBTI,LP5

    CLRTI

    RET

    A6:

    MOVA,#10111111B

    MOVSBUF,A

    LP6:JNBTI,LP6

    CLRTI

    RET

    A7:

    MOVA,#01111111B

    MOVSBUF,A

    LP7:JNBTI,LP7

    CLRTI

    RET

    END

    ;該程式的功能應該是:在P1口上接了8個撥碼開關,當撥上相應的開關位時,即傳送其對應的二進位制碼.程式採用的是串列埠查詢的方式工作.所以程式中的CLRES可以不要.

  • 中秋節和大豐收的關聯?
  • 我有一塊玉佩越來越白亮是不是真的玉?