|
TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。
: O& z4 w' M& q1 j
/ m& v0 U) O6 U, }0 y" d2 W1.不明白你的程序是什么意思?想表明什么问题
' G$ i( M! d) J2 B2.串口没有初始化,通信频率没有设置
" N9 e, |$ o8 J, L: c//将程序烧写到板子后要重置一下,消除串口干扰; a% G# h3 O q
#include<reg52.h>
% Q9 c \: Y" a% L2 O3 p6 Kvoid main()
: S5 z8 `8 y' R8 i# |{- l, B, D& d6 Q9 e* B$ j) g3 l n* Q
TMOD=0x20;//设置定时器1为工作方式2
% E/ |* t- e' j3 }! w' u* f TH1=0xFD; //装入初值 , 晶振11.0592MHz 通信频率9600
8 L5 ]" n' O7 w" d TL1=0xFD;: J9 V0 O. r8 P% P" a+ K5 J
TR1=1; a0 e, ]( a: c6 K5 r3 h
REN=1;! i3 q; G! q# N
SM0=0;9 u( ]( B5 M: a3 }# T- r
SM1=1;! e# H5 C. p$ L/ n! N
; c9 Z" R6 \3 e! X) n+ ]$ T while(1)
0 e, u w& t; a9 {7 D+ k {) q( ^6 K5 \3 [0 [6 b0 A! \% m
SBUF='A';
2 V+ @6 D. U; G$ ~0 D while(!TI);1 J9 }+ L- M5 A7 F ?/ V3 o `: P* y
TI=0;: x4 T7 d) j9 T% w$ k: P+ v
}
8 c# {) q. r1 T7 ]9 @+ k1 s. V. B}
2 _6 r% \2 _% G6 j" H' r- c* I5 S( u
$ x6 B; E* Q4 N% D+ M3 G B" G2 n9 M. k7 @8 t5 Y- w7 w9 Q$ O
串口程序初始化步骤:2 t* K& h' A& s H" L' m$ }3 I" M4 U
确定T1的工作方式(编程TMOD寄存器);% O+ ^) ^5 o- k( i* r" q3 q
计算T1的初值,装载TH1、TL1;/ D- |5 ] I5 C- h2 [+ z
启动T1(编程TCON中的TR1位);' o- ^: I0 w7 a6 H. ]
确定串行口控制(编程SCON寄存器);1 p& r( z" h0 F( Z+ ?$ d
如果串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。' B9 G' Q8 w" _" _% c+ i( e- {2 t5 @
|
|