|
我按照老师给的程序运行了下,如下。
- #include <reg52.h>
- void ConfigUART(unsigned int baud);
- void main()
- {
- EA = 1; //使能总中断
- ConfigUART(9600); //配置波特率为9600
- while (1);
- }
- /* 串口配置函数,baud-通信波特率 */
- void ConfigUART(unsigned int baud)
- {
- SCON = 0x50; //配置串口为模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1为模式2
- TH1 = 256 - (11059200/12/32)/baud; //计算T1重载值
- TL1 = TH1; //初值等于重载值
- ET1 = 0; //禁止T1中断
- ES = 1; //使能串口中断
- TR1 = 1; //启动T1
- }
- /* UART中断服务函数 */
- void InterruptUART() interrupt 4
- {
- if (RI) //接收到字节
- {
- RI = 0; //手动清零接收中断标志位
- SBUF = SBUF; //接收的数原路返回,左边是发送SBUF,右边是接收SBUF
- }
- if (TI) //字节发送完毕
- {
- TI = 0; //手动清零发送中断标志位
- }
- }
复制代码 按理来说,我按照字符类发送0,接收是十六进制,他应该给我返回的是30,结果给我返回的是B0,我按照字符类发送1,接收是十六进制,他应该给我返回的是31,结果给我返回的是B1.
按照返回的值B0转换为十进制是176,减128是48,48的ASCLL值是0.
按照返回的值B1转换为十进制是177,减128是49,48的ASCLL值是1.
我有点理解不了他为什么给我返回的不是是30而是B0,为什么为这样,求解答?
|
评分
-
查看全部评分
|