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
LP2:JNBTI,LP2
A3:
MOVA,#11110111B
LP3:JNBTI,LP3
A4:
MOVA,#11101111B
LP4:JNBTI,LP4
A5:
MOVA,#11011111B
LP5:JNBTI,LP5
A6:
MOVA,#10111111B
LP6:JNBTI,LP6
A7:
MOVA,#01111111B
LP7:JNBTI,LP7
END
;該程式的功能應該是:在P1口上接了8個撥碼開關,當撥上相應的開關位時,即傳送其對應的二進位制碼.程式採用的是串列埠查詢的方式工作.所以程式中的CLRES可以不要.
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可以不要.