;串列傳輸練習; 傳送端(註:此程式只適用於82G516) ;此程式因使用到82G516才有之暫存器, 所以須先載入82G516暫存器定義檔 ;組譯時務必把Keil uVision2中的設定Define 8051 SFR Names勾勾取消 $INCLUDE (REG_MPC82G516.inc) ;for MPC82G516 暫存器定義檔 buffer equ 30h mov scon,#01000000b ;設定串列傳輸工作於模式1, 不可接收資料 mov tmod,#00100000b ;設定TIMER1工作於模式2(自動載入模式) orl AUXR2,#01000000b ;將AUXR2暫存器中的T1X12設為1 ;也就是TIMER1之計時時脈不除以12 mov th1,#217 ;設定自動載入值為216(在石英震盪器為12MHz時, 鮑率為9600bps) setb tr1 ;啟動TIMER1 mov buffer,#0 count: mov a,buffer mov sbuf,a ;將資料送到SBUF傳送出去 jnb ti,$ ;判斷是否傳送完畢(TI=1), 否則停在此行 clr ti ;清除傳送完畢旗號 mov r5,#50 call delay inc buffer jmp count ;-------------------------------------- delay: mov r6,#200 del1: mov r7,#200 del: djnz r7,del djnz r6,del1 djnz r5,delay ret ;-------------------------------------- end