你好,51微控制器固定是用T1作波特率發生器,並且工作在方式二,也就是8位定時器下,這是約定的,你想用T0或者方式1還不行呢。工作方式1是16位溢位中斷定時計數器,一般用於定時中斷。TMOD寫0x20,不需要寫T1的中斷函式。根據需求寫SCON,一般串列埠方式用方式一,也就是10位UART,所以SCON寫0x50,如果不允許資料接收的話,寫0x40。如果沒有寫PCON,或者PCON寫的0x00也就是不允許倍增,波特率為9600,那麼T1初值就為…(哎,手機端打字不方便,自己網上搜,一大堆,透過波特率和T1中斷溢位率以及晶振計算,晶振用11.0592mhz,否則計算出來不為整數),算出來就是0xfd(253),高低八位都賦這個值就好。T1每次定時都將高八位的值自動賦予低八位,由低八位參與計時(高八位不參與)。然後開啟總中斷EA=1開啟T1中斷ET1=1開啟串列埠中斷ES=1啟動定時器1 TR1=1就行了。如果是51微控制器,資料的位數恆定是8位的,因為SBUF暫存器是8位的,串列埠讀完或寫完一次SBUF,串列埠讀/寫中斷位自動置1,進入串列埠中斷函式,之後你覺得還有你要傳輸的資料,可以透過在中斷函數里清零標誌位,直接開始下一次讀/寫SBUF的。
你好,51微控制器固定是用T1作波特率發生器,並且工作在方式二,也就是8位定時器下,這是約定的,你想用T0或者方式1還不行呢。工作方式1是16位溢位中斷定時計數器,一般用於定時中斷。TMOD寫0x20,不需要寫T1的中斷函式。根據需求寫SCON,一般串列埠方式用方式一,也就是10位UART,所以SCON寫0x50,如果不允許資料接收的話,寫0x40。如果沒有寫PCON,或者PCON寫的0x00也就是不允許倍增,波特率為9600,那麼T1初值就為…(哎,手機端打字不方便,自己網上搜,一大堆,透過波特率和T1中斷溢位率以及晶振計算,晶振用11.0592mhz,否則計算出來不為整數),算出來就是0xfd(253),高低八位都賦這個值就好。T1每次定時都將高八位的值自動賦予低八位,由低八位參與計時(高八位不參與)。然後開啟總中斷EA=1開啟T1中斷ET1=1開啟串列埠中斷ES=1啟動定時器1 TR1=1就行了。如果是51微控制器,資料的位數恆定是8位的,因為SBUF暫存器是8位的,串列埠讀完或寫完一次SBUF,串列埠讀/寫中斷位自動置1,進入串列埠中斷函式,之後你覺得還有你要傳輸的資料,可以透過在中斷函數里清零標誌位,直接開始下一次讀/寫SBUF的。