|
我按照老師給的程序運(yùn)行了下,如下。
- #include <reg52.h>
- void ConfigUART(unsigned int baud);
- void main()
- {
- EA = 1; //使能總中斷
- ConfigUART(9600); //配置波特率為9600
- while (1);
- }
- /* 串口配置函數(shù),baud-通信波特率 */
- void ConfigUART(unsigned int baud)
- {
- SCON = 0x50; //配置串口為模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1為模式2
- TH1 = 256 - (11059200/12/32)/baud; //計(jì)算T1重載值
- TL1 = TH1; //初值等于重載值
- ET1 = 0; //禁止T1中斷
- ES = 1; //使能串口中斷
- TR1 = 1; //啟動(dòng)T1
- }
- /* UART中斷服務(wù)函數(shù) */
- void InterruptUART() interrupt 4
- {
- if (RI) //接收到字節(jié)
- {
- RI = 0; //手動(dòng)清零接收中斷標(biāo)志位
- SBUF = SBUF; //接收的數(shù)原路返回,左邊是發(fā)送SBUF,右邊是接收SBUF
- }
- if (TI) //字節(jié)發(fā)送完畢
- {
- TI = 0; //手動(dòng)清零發(fā)送中斷標(biāo)志位
- }
- }
復(fù)制代碼 按理來說,我按照字符類發(fā)送0,接收是十六進(jìn)制,他應(yīng)該給我返回的是30,結(jié)果給我返回的是B0,我按照字符類發(fā)送1,接收是十六進(jìn)制,他應(yīng)該給我返回的是31,結(jié)果給我返回的是B1.
按照返回的值B0轉(zhuǎn)換為十進(jìn)制是176,減128是48,48的ASCLL值是0.
按照返回的值B1轉(zhuǎn)換為十進(jìn)制是177,減128是49,48的ASCLL值是1.
我有點(diǎn)理解不了他為什么給我返回的不是是30而是B0,為什么為這樣,求解答?
|
評(píng)分
-
查看全部評(píng)分
|