串行口接收和發(fā)送數(shù)據(jù)的過程簡述
答:在發(fā)送過程中,當執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF(99H)的指令時,串行口把SBUF中8位數(shù)據(jù)以fosc/l2的波特率從RXD(P3.0)端輸出,發(fā)送完畢置中斷標志TI=1。寫SBUF指令在S6P1處產生一個正脈沖,在下一個機器周期的S6P2處,數(shù)據(jù)的最低位輸出到RXD(P3.0)腳上;再在下一個機器周期的S3、S4和S5輸出移位時鐘為低電平時,在S6及下一個機器周期的Sl和S2為高電平,就這樣將8位數(shù)據(jù)由低位至高位一位一位順序通過RXD線輸出。并在TXD腳上輸出fosc/12的移位時鐘。在“寫SBUF”有效后的第10個機器周期的SlPl將發(fā)送中斷標志TI置位。
接收時,用軟件置REN=1(同時,RI=0),即開始接收。當使SCON中的REN=1(RI=0)時,產生一個正的脈沖,在下一個機器周期的S3P1~S5P2,從TXD(P3.1)腳上輸出低電平的移位時鐘,在此機器周期的S5P2對P3.0腳采樣.并在本機器周期的S6P2通過串行口內的輸入移位寄存器將采樣值移位接收。在同一個機器周期的S6P1到下一個機器周期的S2P2,輸出移位時鐘為高電平。于是,將數(shù)據(jù)字節(jié)從低位至高位接收下來并裝入SBUF。在啟動接收過程(即寫SCON,清RI位),將SCON中的RI清0之后的第l0個機器周期的SlPl將RI置位。這一幀數(shù)據(jù)接收完畢,可進行下一幀接收。