完整程序如下: #include <reg52.h> #include <stdio.h>
void main() { //定时器T1工作在方式2,波特率为9600, TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; //启动计数器T1
SM0=0; //设置SCON中各位,串口工作在方式1,允许接受信号 SM1=1; REN=1; PCON=0x00; //设置PCON
EA=1; //开总中断 ES=1; //允许串行口中断
TI=1;
while(1) { printf("Hello world!
"); } }
问题是: (1)为什么要将TI置1,一般来说,TI都是由硬件置1软件清零的,而且即使执行了"TI=1"这一句后,在 seril channel窗口中TI标志栏并未打勾,也就是说虽然软件置了1,但看上去对这一位并没有产生任何影响,为什么? (2)如果将TI=1这一句去掉,程序会死在printf()处,为什么? |