;串列傳輸練習; 雙向傳輸 buffer equ 30h org 0h jmp start org 23h ;UART中斷向量 jmp uart_int ;-------------------------------------- start: mov ie,#10010000b ;設定允許串列傳輸中斷 mov scon,#01010000b ;設定串列傳輸工作於模式1, 可接收資料 mov tmod,#00100000b ;設定TIMER1工作於模式2(自動載入模式) mov th1,#253 ;設定自動載入值為253(在石英震盪器為11.059MHz時, 鮑率為9600bps) setb tr1 ;啟動TIMER1 mov buffer,#0 count: mov a,buffer mov sbuf,a ;將資料送到SBUF傳送出去 mov r5,#50 call delay inc buffer jmp count uart_int: jnb ti,is_ri ;判斷是否為傳送完畢中斷(TI=1), 如果不是就是接收完畢中斷(RI=1) clr ti ;清除傳送完畢中斷旗號 reti is_ri: clr ri ;清除接收完畢中斷旗號 mov a,sbuf mov p2,a ;將收到資料顯示於P2 reti ;-------------------------------------- delay: mov r6,#200 del1: mov r7,#200 del: djnz r7,del djnz r6,del1 djnz r5,delay ret ;-------------------------------------- end