;串列傳輸練習; 傳送端(以Timer2控制鮑率) ;此程式因使用到8052才有之暫存器, 所以須先載入8052暫存器定義檔 ;組譯時務必把Keil uVision2中的設定Define 8051 SFR Names勾勾取消 $INCLUDE (REG52.inc) ;for 8052 SFR definition buffer equ 30h mov scon,#01000000b ;設定串列傳輸工作於模式1, 不可接收資料 mov T2CON,#00110000b ;設定timer 2 工作於 自動重新載入模式, ;串列傳輸傳送和接收的鮑率都由Timer2所控制 mov RCAP2H,#(65536-39)/256 ;設定自動載入值為65536-39 mov RCAP2L,#(65536-39) mod 256 ;(在石英震盪器為12MHz時, 鮑率為9600bps) setb tr2 ;啟動TIMER2 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