單片機串口通信程序(方式1調(diào)試單片機給電腦發(fā)送)
ORG0000H
RESET:MOVR0,#00H
L0:DJNZR0,L0;延時指令,可以使硬件恢復(fù)到準狀態(tài)
INIT:MOVTMOD,#00100000B ;設(shè)置定時器1為工作模式2,8位自動重裝
MOVTH1,#0FDH;設(shè)置波特率,9600bps
MOVTL1,#0FDH
SETBTR1;打開T1定時器中斷
CLRSM0;設(shè)置串口傳輸模式1
SETBSM1
START:CLRTI
MOVA,#31H
MOVSBUF,A
L1:JNBTI,L1;直接尋址位為0則轉(zhuǎn)移(意思是:當TI置1后,緩存中已經(jīng)把數(shù)據(jù)發(fā)送出去了,可以發(fā)下一個了)
LCALLDELAY ;調(diào)用延時函數(shù)(可以不用,因為標志位已經(jīng)硬件置1了),可以感覺到發(fā)送的減速
CLRTI
SJMPSTART
DELAY1:MOVR1,#00H ;此延時只能延時512us時間,視覺上看不出來
L3:DJNZR1,L3
RET
DELAY:PUSHPSW ;此延時程序可以延時130ms時間,在用串口調(diào)試工具調(diào)試的時候可以明顯的感覺到
MOVR0,#00H
L4:MOVR1,#00H
L5:DJNZR1,L5
DJNZR0,L4
POP PSW
RET
END
評論